カスタムアプリケーションでの暗号化の使用
学習の目的
この単元を完了すると、次のことができるようになります。
- Apex Crypto クラスについて説明する。
- Apex Crypto クラスおよびカスタム暗号化のさまざまな使用事例を説明する。
- 各自のアプリケーションで暗号化を実装する。
Apex Crypto クラスとは?
Salesforce アプリケーションでの暗号化の実装について言えば、Apex にはカスタム暗号化関数を記述する柔軟性があり、事前に作成済みの幅広い関数を使用できます。この単元では、Apex Crypto クラスを使用して、ダイジェスト、メッセージ認証コード (MAC)、署名、暗号化と復号化の関数を作成するために提供されている Salesforce の強力な関数について学習します。
Crypto クラスには、通信を保護するために特に役立つ関数一式が用意されています。この関数を使用して、傍受者から機密データを効果的に防御し、メッセージデータが完全で変更されていないことと、送信者および受信者の信頼性を確認できます。この関数ではそれぞれ、さまざまなアルゴリズムがサポートされています。したがって、ソリューションの構成を適度に制御できるとともに、アプリケーションを保護するために必要な追加作業を最小限に抑えることができます。
暗号化と復号化による機密性の保護
暗号化と復号化は、AES128、AES192、AES256 の各アルゴリズムをサポートする Apex Crypto.Encrypt()
関数と Crypto.Decrypt()
関数を使用して、簡単かつ柔軟に処理できます。暗号化関数と復号化関数は、アプリケーションデータの機密性を確保するために必要です。独自の暗号化鍵を生成するか、Crypto.generateAESKey(Integer keylength)
メソッドを使用できます。暗号化鍵を保護するには、前の単元で学習した、保護されたカスタムメタデータ型または保護されたカスタム設定に秘密を保存する手法を使用できます。
整合性を守るハッシュダイジェスト
データの整合性を確認するのに便利なもう 1 つの関数は、Crypto.generateDigest()
関数です。このメソッドは、一方向のハッシュダイジェストを生成し、MD5、SHA1、SHA256、SHA512 などのアルゴリズムをサポートします。このハッシュダイジェストは、偶発的なデータ破損 (またはその他の望ましくない変更) を特定するのに役立ちます。ハッシュダイジェストの比較チェックを行うと、データの変更をすばやく検出できます。データの再計算されたダイジェストは元のダイジェストと一致しないため、データが改変されたことを確認できます。これによって、データ破損、偶発的変更、悪意のある改変といったイベントへの注意が促されます。
ハッシングアルゴリズムには、さまざまなセキュリティ強度があります。Crypto クラスは MD5 をサポートしていますが、弱いハッシングアルゴリズムと見なされているため、ハッシュダイジェストの計算には SHA2 以上を使用することをお勧めします。
信頼性と整合性を証明するハッシュベースのメッセージ認証コード (MAC)
もう 1 つ便利な関数に、MAC を作成するのに使用できる Apex Crypto.generateMac()
関数があります。MAC をメッセージダイジェスト関数と一緒に使用して、ハッシュ化された MAC (HMAC) を設定できます。HMAC は、メッセージの送信者を認証し、メッセージが伝送中に変更 (または傍受) されないように、TLS および IPSec の両方のプロトコルで使用されます。
Crypto.generateMac()
メソッドは、HMACMD5、HMACSHA1、HMACSHA256、HMAC512 の各アルゴリズムをサポートします。HMAC 関数では、メッセージダイジェスト、および送信者と受信者が MAC の生成と検証に使用する共有鍵を使用する必要があります。受信者は共有の非公開鍵を使用して MAC を検証する必要があるので、それによりメッセージ送信者の信頼性が示されます。その後、メッセージダイジェストを比較して、受信者はメッセージが伝送中に (中間者攻撃により) 変更されなかったことを確認できます。
デジタル署名の作成
デジタル署名では、非対称暗号を使ってメッセージの整合性と信頼性が保証されるので、非公開鍵は必要なくなります。デジタル署名を生成するには、Crypto.sign()
関数を使用できます。この関数は指定されたアルゴリズムと非公開鍵を使って、入力データの署名を作成します。この仕組みでは、メッセージの受信者が一致する公開鍵を使って署名データの整合性を検証できます。
これで、Salesforce アプリケーションにいくつかの暗号化方式を実装する方法をご理解いただけたと思います。Apex の柔軟性を生かして、事前に作成済みの関数を活用し、データのプライバシーを確保できます。
暗号化を Apex Crypto クラスで提供される強力なプラットフォーム機能と共に使用すると、Saleforce Platform 向けに作成するアプリケーションのセキュリティを確保するのに役立ちます。
リソース