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

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

HDI: CryptoKey クラスを使った署名と検証

暗号関数

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

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

 

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

署名と検証

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

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

  • メッセージの真正性: 既知の送信者がメッセージを作成し、署名したことを証明
  • メッセージの完全性: 署名後にメッセージが改ざんされていないことの証明
  • 否認防止: 署名者は、署名が作成された後、文書への署名をしなかったことにはできない

 

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

例題

以下は、4D の新しい CryptoKey クラスのメソッドによって、メッセージの署名をどのように付与し、検証するかを示すサンプルコードです:

Bob側

// メッセージを作成します
$message:="hello world"
Folder(fk desktop folder).file("message.txt").setText($message)

// キーを作成します
$type:=New object("type";"RSA")
$key:=4D.CryptoKey.new($type)

// 公開鍵を取得して保存します
Folder(fk desktop folder).file("public.pem").setText($key.getPublicKey())

// 署名を base64 形式で取得して保存します
Folder(fk desktop folder).file("signature").setText($key.sign($message;$type))


/*Bob はメッセージと公開鍵、署名を Alice に送信します*/

Alice側

// メッセージと公開鍵、署名を取得します
$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()

// キーを作成します
$type:=New object("type";"PEM";"pem";$publicKey)
$key:=4D.CryptoKey.new($type)

// 署名を検証します
If ($key.verify($message;$signature;$type).success)

// 署名は有効です

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アプリケーションを開発しています。