4Dソリューションは、常に安全で安定しています。これは、4Dがセキュリティ機能の開発とアップデートに多大な投資を行っているためです。4D は、4D v18 R4 でこのフォーカスを継続し、セキュリティツールキットをさらに強化する新機能を提供します。一般的な暗号操作を実行するためのメソッド群を提供する新しいクラスが利用可能になりました。CryptoKeyクラスです。
暗号化関数
暗号関数は、プライバシーや認証などのセキュリティ機能を実装するために使用することができます。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
暗号化と復号化
暗号化と復号化は、鍵のペアを用いて行われます。暗号化プロセスは元の情報を認識できない形に変換し、復号化プロセスは暗号化されたデータを人間またはコンピュータが読んで理解できる形に変換します。
効果的なセキュリティには、以下のことが必要です。
- 秘密鍵が秘密であること
- 公開鍵は、セキュリティを損なうことなく、一般に配布することができる。
例
例えば、”hello world “を暗号化するとします。その方法は以下の通りです。
$encrypted:=$key.encrypt("hello world")
そして復号化の方法です。
$status:=$key.decrypt($encrypted)
より詳細な情報については、ドキュメントをご覧ください。
次回のブログでは、このクラスでどこまでできるのか、そして洗練されたアプリケーションを作るための可能性を紹介します。それまでは、4Dフォーラムであなたの暗号体験を共有してください。