Skip to main content

カスタムアプリケーションでの暗号化の使用

学習の目的

この単元を完了すると、次のことができるようになります。

  • 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 などのアルゴリズムをサポートします。このハッシュダイジェストは、偶発的なデータ破損 (またはその他の望ましくない変更) を特定するのに役立ちます。ハッシュダイジェストの比較チェックを行うと、データの変更をすばやく検出できます。データの再計算されたダイジェストは元のダイジェストと一致しないため、データが改変されたことを確認できます。これによって、データ破損、偶発的変更、悪意のある改変といったイベントへの注意が促されます。

ハッシングアルゴリズムには、さまざまなセキュリティ強度があります。MD5 は Crypto クラスによってサポートされますが、弱いハッシングアルゴリズムと見なされているため、ハッシュダイジェストの計算には SHA1 以上を使用することをお勧めします。 

信頼性と整合性を証明するハッシュベースのメッセージ認証コード (MAC)

もう 1 つ便利な関数に、MAC を作成するのに使用できる Apex Crypto.generateMac() 関数があります。MAC をメッセージダイジェスト関数と一緒に使用して、ハッシュ化された MAC (HMAC) を設定できます。HMAC は、メッセージの送信者を認証し、メッセージが伝送中に変更 (または傍受) されないように、TLS および IPSec の両方のプロトコルで使用されます。 

Crypto.generateMac() メソッドは、HMACMD5、HMACSHA1、HMACSHA256、HMAC512 の各アルゴリズムをサポートします。HMAC 関数では、メッセージダイジェスト、および送信者と受信者が MAC の暗号化と復号化に使用する共有鍵を使用する必要があります。受信者は共有の非公開鍵を使用して MAC を復号化する必要があるので、メッセージ送信者の信頼性を確認できます。その後、メッセージダイジェストを比較して、受信者はメッセージが伝送中に (中間者攻撃により) 変更されなかったことを確認できます。 

デジタル署名の作成

デジタル署名は、メッセージの整合性と信頼性の両方を保証します。デジタル署名を生成するには、Crypto.sign() 関数を使用できます。この関数は SHA1 アルゴリズムを使用してダイジェストを作成します。その後、ダイジェストは RSA を使用して非公開鍵で暗号化されます。この設定では、メッセージ受信者が公開鍵を使用して (送信者の非公開鍵で暗号化された) メッセージを復号化でき、次に送信されたメッセージダイジェストと、受信したメッセージから生成されたダイジェストを比較して、受信者がその整合性を確認できます。 

これで、Salesforce アプリケーションに暗号化を実装する方法をご理解いただけたと思います。柔軟な Apex の使用して、事前に作成済みの関数を活用、またはカスタム暗号化関数を記述できるようになりました。 

暗号化を Apex Crypto クラスで提供される強力なプラットフォーム機能と共に使用すると、Saleforce Platform 向けに作成するアプリケーションのセキュリティを確保するのに役立ちます。そしてこの安全なアプリケーションがお客様の信頼と成功の鍵を握っています。 

リソース

無料で学習を続けましょう!
続けるにはアカウントにサインアップしてください。
サインアップすると次のような機能が利用できるようになります。
  • 各自のキャリア目標に合わせてパーソナライズされたおすすめが表示される
  • ハンズオン Challenge やテストでスキルを練習できる
  • 進捗状況を追跡して上司と共有できる
  • メンターやキャリアチャンスと繋がることができる