暗号化に関するその他の情報
ここでは、InterSystems IRIS® データ・プラットフォームでの暗号化に関するその他の情報を紹介します。
キー・ファイル暗号化情報
データベース暗号化の管理者名は、キー・ファイルに平文で保存されています。データベース暗号化の管理者パスワードは保存されていません。パスワードを入力すると、他のデータと共にそれを使用してキー暗号化キーが生成されます。有効なパスワードを第三者が推測できる場合、そのパスワードのポリシーは脆弱すぎます。キー暗号化キーは、512 ビットの salt と 65,536 回の反復処理を使用する PBKDF2 アルゴリズムを使用して生成され、ディクショナリおよび総当り攻撃を実行不可能にします。
暗号化、ハッシュ、およびその他のキー関連操作を実行するための呼び出しについて
InterSystems IRIS では、%SYSTEM.EncryptionOpens in a new tab クラスのさまざまなメソッドを使用して、データ暗号化、Base64 エンコーディング、ハッシュ、およびメッセージ認証コードの生成に関連するアクションを実行できます。これには、AES 暗号化、各種の RSA アルゴリズム、SHA-256 ハッシュ関数などを呼び出すメソッドが含まれます。いくつかの呼び出しを以下に示します。
-
$System.Encryption.AESCBCManagedKeyEncryptOpens in a new tab および $System.Encryption.AESCBCManagedKeyDecryptOpens in a new tab
-
$System.Encryption.AESKeyWrapOpens in a new tab および $System.Encryption.AESKeyUnwrapOpens in a new tab
-
$System.Encryption.Base64EncodeOpens in a new tab および $System.Encryption.Base64DecodeOpens in a new tab
-
$System.Encryption.RSASHASignOpens in a new tab および $System.Encryption.RSASHAVerifyOpens in a new tab
-
$System.Encryption.RSAEncryptOpens in a new tab および $System.Encryption.RSADecryptOpens in a new tab
RSAEncrypt および RSADecrypt の使用例
以下に、RSAEncrypt および RSADecrypt の呼び出しの使用例を示します。これは以下を前提としています。
-
コードは Windows で実行されます。
-
使用可能な証明書、秘密鍵、および認証機関 (CA) 証明書があります(この例を試すには、これらを入手する必要があります)。
-
これら 3 つのアイテムはすべて C:\Keys\ ディレクトリにあります。
処理の詳細は、例の中のコメントを参照してください。
set dir = "C:\Keys\"
// certificate for the instance performing encryption and decryption
// and private key associated with that above certificate
set cert = dir_"test.crt"
set key = dir_"test.key"
// certificate for the CA of the instance
set cacert=dir_"ca.crt"
set data = "data to be encrypted"
// create a local set of X.509 credentials with the
// certificate and private key
set credentials = ##class(%SYS.X509Credentials).%New()
set credentials.Alias="TestCreds"
write credentials.LoadCertificate(cert)
write credentials.LoadPrivateKey(key)
write credentials.Save(),!
// encrypt the data using the public key in the certificate, write it
// to the display, and display error information, if there is any
set ciphertext=$System.Encryption.RSAEncrypt(data,credentials.Certificate,cacert)
write ciphertext,!
write $System.Encryption.RSASHA1GetLastError()
// decrypt the data using the private key, write it to the display,
// and display error information, if there is any
write "now decrypting -=-=-=-=-=-=-=-=-=-=-",!
set cleartext=$System.Encryption.RSADecrypt(ciphertext,credentials.PrivateKey)
write cleartext,!
write $System.Encryption.RSASHA1GetLastError()