Skip to content

Latest commit

 

History

History
63 lines (44 loc) · 6.97 KB

0x14-V6-Cryptography.md

File metadata and controls

63 lines (44 loc) · 6.97 KB

V6 保存時の暗号化

管理目標

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

  • すべての暗号モジュールが安全な方法で失敗し、エラーが正しく処理されること
  • 適切な乱数発生器が使用されていること
  • 鍵へのアクセスが安全に管理されていること

V6.1 データ分類

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

# 説明 L1 L2 L3 CWE
6.1.1 個人を特定できる情報(Personally Identifiable Information, PII)、センシティブな個人情報、または EU の GDPR の対象となる可能性が高いと判断されたデータなど、規制対象の非公開データが暗号化されて保管されている。 311
6.1.2 医療記録、医療機器の詳細、匿名化されていない調査記録など、規制対象の医療データが暗号化されて保存されている。 311
6.1.3 金融口座、債務不履行やクレジットの履歴、税務記録、支払い履歴、受益者、匿名化されていない市場や調査記録など、規制対象の財務データが暗号化されて保管されている。 311

V6.2 アルゴリズム

最近の暗号技術の進歩は、以前は安全だったアルゴリズムや鍵の長さが、データを保護するためにはもはや安全でも十分でもないことを意味しています。したがって、アルゴリズムを変更することは必要です。

このセクションはペネトレーションテストが難しく、ほとんどの項目で L1 が含まれていませんが、開発者はこのセクション全体を必須項目と考えてください。

# 説明 L1 L2 L3 CWE
6.2.1 すべての暗号化モジュールにおいて、処理に失敗した場合の安全対策が施されており、オラクルパディング攻撃を許さない方法でエラーが処理される。 310
6.2.2 独自実装された暗号化方式ではなく、業界で実績のある、または政府が承認した暗号化アルゴリズム、モード、およびライブラリが使用されている。 (C8) 327
6.2.3 最新の勧告を使用して、暗号初期化ベクトル、暗号設定およびブロックモードが安全に構成されている。 326
6.2.4 暗号の破壊から保護するため、乱数、暗号化またはハッシュアルゴリズム、鍵の長さ、ラウンド、暗号方式またはモードが、いつでも再構成やアップグレードもしくは入れ替えられる。 (C8) 326
6.2.5 既知の安全でないブロックモード(ECB など)、パディングモード(PKCS#1 v1.5 など)、ブロックサイズが小さい暗号(Triple-DES、Blowfish など)、および弱いハッシュアルゴリズム(MD5、SHA1 など)が、下位互換のために要求されない限り使用されていない。 326
6.2.6 ナンス、初期化ベクトル、およびその他の使い捨ての数字が、特定の暗号化鍵で複数回使いまわしされていない。生成方法は、使用しているアルゴリズムに適切となっている。 326
6.2.7 暗号化されたデータが署名、認証された暗号モード、または HMAC によって認証され、暗号文が権限のない者によって変更されない。 326
6.2.8 情報の漏洩を防ぐために、すべての暗号化操作が、比較や計算または返戻の際にショートカット操作がなく、一定時間となっている。 385

V6.3 乱数値

真の疑似乱数生成 (Pseudo-random Number Generation, PRNG) を正しく行うことは非常に困難です。一般的にシステム内のエントロピーの良いソースは使い過ぎるとすぐに枯渇してしまいますが、ランダム性の少ないソースは予測可能な鍵や秘密情報につながる可能性があります。

# 説明 L1 L2 L3 CWE
6.3.1 すべての乱数、ランダムなファイル名、ランダムな GUID、ランダムな文字列は、攻撃者が推測できないことを意図している場合、暗号化モジュールが許可する乱数生成器を用いて生成する。 338
6.3.2 ランダムな GUID が GUID v4 アルゴリズムと暗号的に安全な疑似乱数ジェネレータ(Cryptographically-secure Pseudo-random Number Generator, CSPRNG)を使用して作成されている。他の疑似乱数ジェネレータを使用して作成された GUID は予測可能な場合がある。 338
6.3.3 アプリケーションの負荷が高い状態であっても、乱数が適切なエントロピーを使って生成される、あるいはアプリケーションがそのような環境で適切にデグレードする。 338

V6.4 シークレット管理

このセクションはペネトレーションテストが難しく、ほとんどの項目で L1 が含まれていませんが、開発者はこのセクション全体を必須項目と考えてください。

# 説明 L1 L2 L3 CWE
6.4.1 鍵保管庫のような秘密情報管理ソリューションを、秘密情報の作成、保存、アクセス制御および秘密情報の破壊に使用している。 (C8) 798
6.4.2 鍵マテリアルがアプリケーションに公開されていない。代わりに暗号化操作用の金庫のように隔離されたセキュリティモジュールを使用している。 (C8) 320

参考情報

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