SwiftでのDES・3DES暗号化

SwiftでのDES・3DES暗号化

説明

DESと3DESはブロックサイズが小さく、設計も古いため、現在の機密情報の保護には適していません。

想定される影響

  • 暗号解析や総当たり攻撃のリスク増加
  • 機密データを復元される可能性の増加
  • 古い暗号方式への依存による、適用要件への不適合

対処方法

  1. DESや3DESを、AES-GCMなどの認証付き暗号に置き換えてください。
  2. 旧方式との互換経路を機密データの処理から分離し、段階的に廃止してください。
  3. 鍵、IV、Nonceは、安全な乱数と鍵管理方針に基づいて生成してください。

例

変更前

変更前はCryptoSwiftのDES設定、変更後はCryptoKitのAES-GCM呼び出しの抜粋です。ライブラリのインポートや鍵の準備は省略しており、key の型も異なります。

swift
let des = try DES(key: key, blockMode: CBC(iv: iv), padding: .pkcs7)

変更後

swift
let sealedBox = try AES.GCM.seal(data, using: key)

解説:

  • 変更前: 機密データの暗号化にDESを選択しています。
  • 変更後: CryptoKitの SymmetricKey でAES-GCMを使います。DESの鍵を再利用せず、新しい鍵と保存形式へ移行してください。

参考資料