AES 암호화와 알려진 키 및 일반 텍스트를 사용하여 공격자가 다른 키와 일반 텍스트를 만들어 동일한 암호문을 생성 할 수 있습니까?
간단히 말해서, AES 암호화를 사용하면 공격자가 AES key1 (plaintext1) = AES key2 (plaintext2)가 되도록 새 key2 및 plaintext2를 생성 할 수 있습니다.
그렇다면 예를 들어 AES-GCM과 같은 MAC 또는 SHA256 HMAC가있는 AES-CTR을 적용하여 해결할 수 있습니까?
용도 : 파일 암호화. 키가있는 모든 클라이언트는 파일을 해독 할 수 있습니다. 암호화 된 파일은 SHA256 해시에 의해 서버 (키를 모르고)에 의해 맹목적으로 처리됩니다. 새 클라이언트가 호스팅 된 파일과 함께 거짓 키를 넘겨 주면 잘못된 키임을 감지 할 수 있어야합니다. 결과적으로 동일한 암호화 된 파일에서 다른 (시끄러운) 바이너리를 얻지 못합니다. 거짓 키를 전달하는 공격자가 원래 키, 암호문 및 일반 텍스트에 액세스 할 수 있음을 알립니다.
(동일한 파일을 다른 키로 암호화하는 옵션이 있어야합니다. 따라서 결정적 암호화는 내 의도가 아닙니다.)
내가 생각한 또 다른 가능한 쉬운 해결책은 서버의 암호화 된 파일과 함께 비밀 키의 해시를 저장하고이를 확인하기 위해 클라이언트로 보내는 것입니다. 하지만 실제로는 잘 알려진 기본 솔루션을 사용하는 것을 선호합니다. 주어진 암호문에서 하나의 키 결과 만 보장하기에 충분한 MAC / HMAC를 적용하고 있습니다.
내 의도가 분명하고 지식이있는 누군가가 나를 올바른 방향으로 안내 할 수 있기를 바랍니다.
답변
기본 AES의 경우 이러한 방식으로 두 개의 키를 쉽게 찾을 수 있습니다. 아무거나$key1$ 과 $plaintext1$ 그리고 계산 $c=AES_{key1}(plaintext1)$. 그런 다음$key2$ 그리고 계산 $plaintext2 = AES^{-1}_{key2}(c)$. 그것은 다음과 같습니다$AES_{key1}(plaintext1) = AES_{key2}(plaintext2)$. 그러나 AES가 MAC을 사용하여 인증 된 암호화 모드로 사용되는 경우 이것이 반드시 가능하지는 않습니다. 나는 그렇지 않다는 보장이 없으며 그러한 사실이 입증되어야 함을 강조하고 싶습니다. 특히 표준 encrypt-then-MAC (다른 키 사용)를 수행 한 경우 "암호화"부분이 변경되지 않았기 때문에 동일한 방식으로 취약 할 수 있습니다. 결론적으로, 이것은 달성 가능해야하지만 확실히 보장되지 않으며 종종 전혀 유지되지 않습니다.