web-dev-qa-db-ja.com

AES暗号化を使用してMACを生成(および認証/完全性を提供)

認証と整合性の保証を提供するためのはるかに優れた標準的なアプローチがあることを無視して、MACを生成するためにAES(AES/CBC/PKCS7Padding)暗号化に依存する以下に概説するシステムにはどのような弱点がありますか?

plaintext = 12345678 | 2018-09-18T00:43:27 + 00:00(uniqueID + timestamp)

MAC = aes256(sha256(plaintext))

MACを確実に復号化してから、出力をプレーンテキストのハッシュと比較して、整合性/認証を証明してください。 MACが共有秘密鍵を持つ信頼できるソースによって生成されたと仮定します。

また、攻撃者が多数のプレーンテキストとMACのペアにアクセスできると想定します。

ありがとう

1
joedoe

signature は秘密の秘密鍵で作成され、公開鍵で検証されます。あなたが話しているのは、作成されて検証された [〜#〜] mac [〜#〜] です。同じキーで。

AESでMACを作成する場合は、そのための標準アルゴリズムがすでに存在します。これは CBC-MAC と呼ばれ、基本的にはCBCモードを使用してプレーンテキストを暗号化し、最後のブロックをMACとして使用します(ただし pitfalls に注意してください)。

SHA-256のようなハッシュを使用してMACを作成する場合は、 [〜#〜] hmac [〜#〜] を使用する方がはるかに便利です。これは、provableセキュリティプロパティ(ハッシュについて特定のことを前提としていますが、HMACで使用した場合でもMD5でも非常に安全です)。

aes(sha256(plaintext))might大丈夫ですが、- 自分でロールしないでください ! HMAC-SHA256は標準であり、SHA-256のセキュリティのみに依存しているのに対し、それで何か問題がある場合は、それが非標準であり、AESとSHA-256の両方のセキュリティに依存していることを指摘してみてください。 。

1
AndrolGenhald