CryptoKey。暗号化、復号化、署名、検証!

Deeplからの自動翻訳

4Dソリューションは、常に安全で安定しています。これは、4Dがセキュリティ機能の開発とアップデートに多大な投資を行っているためです。4D は、4D v18 R4 でこのフォーカスを継続し、セキュリティツールキットをさらに強化する新機能を提供します。一般的な暗号操作を実行するためのメソッド群を提供する新しいクラスが利用可能になりました。CryptoKeyクラスです。

HDI 署名と検証

暗号化関数

暗号関数は、プライバシーや認証などのセキュリティ機能を実装するために使用することができます。CryptoKeyクラスは、以下の暗号関数を提供します。

  • sign() および verify() :電子署名の作成と検証を行います。
  • encrypt()およびdecrypt():データの暗号化および復号化

これらの操作に加えて、CryptoKey クラスでは、新しい RSA または ECDSA 鍵を生成したり、PEM 定義から既存の鍵ペアを読み込んだりすることも可能です。

署名と検証

sign() およびverify()関数を使用すると、メッセージの署名を署名および検証することができます。これにより、デジタル・メッセージや電子文書の真正性を証明することができます。

デジタル署名は、以下の機能を提供します。

  • メッセージの認証:既知の送信者がメッセージを作成し、署名したことを証明します。
  • メッセージの完全性:署名後にメッセージが変更されていないことの証明
  • 否認防止:署名者は、署名が作成された後、文書への署名を否定することができない

メッセージは秘密鍵で署名され、署名は対応する公開鍵で検証される。

以下は、4Dの新しいCryptoKeyクラスのメソッドによって、メッセージの署名をどのように署名し、検証できるかを示すコードスニペットです。

ボブ側

// Create the message
$message:="hello world"
Folder(fk desktop folder).file("message.txt").setText($message)

// Create a key
$type:=New object("type";"RSA")
$key:=4D.CryptoKey.new($type)

// Get the public key and save it
Folder(fk desktop folder).file("public.pem").setText($key.getPublicKey())

// Get signature as base64 and save it
Folder(fk desktop folder).file("signature").setText($key.sign($message;$type))


/*Bob sent the message, the public key and the signature to Alice*/

アリス側

// Get message, public key & signature
$message:=Folder(fk desktop folder).file("message.txt").getText()
$publicKey:=Folder(fk desktop folder).file("public.pem").getText()
$signature:=Folder(fk desktop folder).file("signature").getText()

// Create a key
$type:=New object("type";"PEM";"pem";$publicKey)
$key:=4D.CryptoKey.new($type)

// Verify signature
If ($key.verify($message;$signature;$type).success)

// The signature is valid

End if 

暗号化と復号化

暗号化と復号化は、鍵のペアを用いて行われます。暗号化プロセスは元の情報を認識できない形に変換し、復号化プロセスは暗号化されたデータを人間またはコンピュータが読んで理解できる形に変換します。

効果的なセキュリティには、以下のことが必要です。

  • 秘密鍵が秘密であること
  • 公開鍵は、セキュリティを損なうことなく、一般に配布することができる。

blank

例えば、”hello world “を暗号化するとします。その方法は以下の通りです。

$encrypted:=$key.encrypt("hello world")

そして復号化の方法です。

$status:=$key.decrypt($encrypted)

より詳細な情報については、ドキュメントをご覧ください。

次回のブログでは、このクラスでどこまでできるのか、そして洗練されたアプリケーションを作るための可能性を紹介します。それまでは、4Dフォーラムであなたの暗号体験を共有してください。

David Azancot
- 4D for iOS プロダクトオーナー - David Azancotは、2017年にプロダクトオーナーとして4Dプロダクトチームに参加しました。プロダクトオーナーとして、ユーザーストーリー(ユーザーが期待する新機能とその使用法)を書き、それを具体的な機能仕様に変換することを担当しています。また、実装された機能が顧客のニーズを満たしているかどうかを確認することも彼の役割です。DavidはLeonard De Vinci Instituteでマーケティング、インターネット、モビリティのMBAを取得し、2011年にモバイルスタートアップ企業でキャリアを開始。この企業は後にモバイルマーケティンググループのMadvertiseに買収されました。モバイルインターフェースに情熱を注ぐ彼は、2015年、同グループのインタラクティブなモバイル広告フォーマットの開発に抜擢されました。並行して、Davidは2012年から彼独自のiOSおよびAndroidアプリケーションを開発しています。