V6: 保存時における暗号化

管理目標

検証対象のアプリケーションが以下の上位要件を満たすことを確認します。

  • すべての暗号化モジュールはセキュアに失敗し、エラーは正しく処理されています。

  • 適切な乱数生成器が使用されています。

  • 鍵へのアクセスはセキュアに管理されています。

V6.1 データ分類

最も重要な資産はアプリケーションにより処理、保存、送信されるデータです。保管データのデータ保護ニーズを正しく分類するために、常にプライバシー影響評価を実施してください。

#説明L1L2L3CWE

6.1.1

個人識別情報 (Personally Identifiable Information, PII)、機密性の高い個人情報、EU の GDPR の対象となる可能性が高いと判断されたデータなど、規制されている個人データが保存時に暗号化されて保管されている。

311

6.1.2

医療記録、医療機器の明細、匿名化されていない調査記録など、規制されている医療データが保存時に暗号化されて保管されている。

311

6.1.3

金融口座、債務不履行やクレジットの履歴、税務記録、支払い履歴、受益者、匿名化されていない市場や調査記録など、規制されている金融データが保存時に暗号化されて保管されている。

311

V6.2 アルゴリズム

暗号化における近年の進歩により、以前は安全であったアルゴリズムや鍵長はもはやデータを保護するのに安全ではなく十分でもありません。したがって、アルゴリズムを変更することが可能であるべきです。

このセクションはペネトレーションテストが容易ではありませんが、L1 がほとんどの項目に含まれていなくとも、開発者はこのセクション全体を必須とみなすべきです。

#説明L1L2L3CWE

6.2.1

すべての暗号化モジュールがセキュアに失敗し、パディングオラクル攻撃を有効にしない方法でエラーが処理される。

310

6.2.2

カスタムコードによる暗号化方式の代わりに、業界で実績のある、または政府が承認した暗号化アルゴリズム、モード、ライブラリが使用されている。

327

6.2.3

[削除, 6.2.5 と重複]

6.2.4

乱数、暗号化アルゴリズムやハッシュアルゴリズム、鍵長、ラウンド、暗号方式やモード、が暗号の破壊を防ぐためにいつでも再構成、アップグレード、交換できる。

326

6.2.5

[修正] 既知のセキュアではないブロックモード (ECB など) 、パディングモード (PKCS#1 v1.5 など) 、ブロックサイズの小さい暗号 (Triple-DES, Blowfish など) 、脆弱なハッシュアルゴリズム (MD5, SHA1 など) は使用されない。

326

6.2.6

[修正, レベル L2 > L3] ナンス、初期化ベクトル、その他の使い捨て番号は複数の暗号化鍵やデータ要素ペアに使用していない。生成方法は使用されているアルゴリズムに適している必要がある。

326

6.2.7

暗号文が不正に変更されていないことを確認するために、暗号化されたデータが署名、認証された暗号モード、または HMAC によって認証されている。

326

6.2.8

情報漏洩を防ぐために、すべての暗号化操作が一定時間であり、比較、計算、リターンの際に「短絡」操作がない。

385

V6.3 乱数値

暗号論的にセキュアな疑似乱数生成 (Cryptographically secure Pseudo-random Number Generation, CSPRNG) を正しく実行することは非常に困難です。一般的に、システム内の優れたエントロピーソースは使い過ぎるとすぐに枯渇しますが、ランダム性の少ないソースは鍵や秘密が予測可能となる可能性があります。

#説明L1L2L3CWE

6.3.1

[修正] 乱数値が攻撃者に推測されないことを意図している場合、すべての乱数値、ランダムファイル名、ランダム文字列は暗号論的にセキュアな疑似乱数生成器 (Cryptographically-secure Pseudo-random Number Generator, CSPRNG) を使用して生成される。

338

6.3.2

[修正] GUID は暗号論的にセキュアな疑似乱数生成器 (Cryptographically-secure Pseudo-random Number Generator, CSPRNG) を利用する GUID v4 アルゴリズムの実装で作成されている。他のアルゴリズムを使用したり十分にセキュアではない疑似乱数生成器を使用して作成された GUID は予測可能である可能性がある。

338

6.3.3

アプリケーションに大きな負荷がかかっている場合でも乱数は適切なエントロピーで作成される、またはそのような状況ではアプリケーションが適切にデグレードする。

338

V6.4 秘密管理

このセクションはペネトレーションテストが容易ではありませんが、L1 がほとんどの項目に含まれていなくとも、開発者はこのセクション全体を必須とみなすべきです。

#説明L1L2L3CWE

6.4.1

[修正] 鍵保管庫などの秘密管理ソリューションが、サービスアカウントやサードパーティアプリケーションのクレデンシャルなどのバックエンド秘密をセキュアに作成、保存、アクセス制御、破壊するために使用されている。

798

6.4.2

[修正] 鍵マテリアルは (フロントエンドかバックエンドかに関わらず) アプリケーションに開示されておらず、代わりに暗号操作用の保管庫などの隔離されたセキュリティモジュールを使用している。

320

参考情報

詳しくは以下の情報を参照してください。

Last updated