2010-01-27 2 views
2

AES (또는 대부분의 암호)를 사용할 때 주어진 키에 초기화 벡터 (IV)를 재사용하는 것은 바람직하지 않습니다. 예를 들어, CBC (Cipher Block Chaining) 모드를 사용하여 주어진 IV로 데이터 청크를 암호화한다고 가정합니다. 다음 데이터 청크의 경우 IV가 변경되어야합니다 (예 : nonce가 증가 할 수도 있음). 그렇긴하지만, 청크의 처음 4 바이트가 증가하는 것을 보장 할 수 있다면 같은 IV가 사용된다면 얼마나 많은 보안 위험이 있는지 궁금합니다. 즉, 두 개의 데이터 청크 암호화 할 생각입니다AES, 암호 블록 체인 모드, 정적 초기화 벡터 및 데이터 변경

같은 IV 데이터의 두 덩어리에 사용되는 경우
0x00000000someotherdatafollowsforsomenumberofblocks 
0x00000001someotherdatathatmaydifferormaynotfollows 

, 얼마나 많은 정보가 유출 될 것인가?

답변

3

이 특별한 경우에는 괜찮습니다 (어쨌든하지 마십시오). "유효 IV"는 첫 번째 암호화 된 블록이며, 블록 암호 연산이 bijection이기 때문에 각 메시지에 대해 다른 것으로 보장됩니다 (한 번만 같은 키 아래에서 한 번만 반복하지 않는 한). "IV"를 변경하는 것과 동시에 키를 변경하는 한 예측할 수 없습니다. 완전히 예측 가능한 입력을 사용해도 공격자는 블록 암호의 출력을 예측할 수 없어야합니다 (블록 암호는 의사 무작위 함수).

그러나 이것은 매우 약합니다. 환경 친화적 인 목초지로 이동 한 후에이 프로토콜을 오래 유지하는 사람은 보안이 nonce가 아닌 nonce에 크게 의존한다는 것을 잘 이해하지 못하고 "최적화"할 수 있습니다. 그 하나의 여분의 메시지를 실제 IV에 대한 각각의 메시지를 보내는 것은 정말로 당신이 감당할 수없는 오버 헤드입니까?

+0

입력 해 주셔서 감사합니다. 그리고 저는 "그렇게하지 마십시오"라는 정서에 분명히 동의합니다. 나는 좋은 아이디어처럼 보이지만 아무도 권장하지 않는 것을 이해하기 위해 암호화에 대해서만 알고 있습니다. 거의 확실하게 나쁜 생각입니다.사실, 현재 작업중인 프로젝트에는 CTR 모드가 필요합니다. CTR 모드는 새로운 IV가 필요하며 데이터 자체의 변경으로 인해 얻지 못할 것입니다. –

+0

CBC 모드에서 IV에 대한 요구 사항은 고유성 * 및 * 예측 불가능 성을 모두 포함합니다. 예측 가능한 IV는 [선택된 평문 공격]을 허용합니다 (http://stackoverflow.com/a/3008544/99646). 이 특별한 경우에는 예측 가능한 IV가 있으므로 가장 확실하게 * 괜찮지는 않습니다. –

1

음, 암호화 알고리즘의 블록 크기에 따라 다릅니다. 64 바이트의 일반적인 블록 크기에 대해서는 그다지 차이가 ​​없다고 생각합니다. 첫 번째 비트는 블록 암호를 입력하기 전에 여러 블록에서 동일하지만 결과에는 인식 할 수있는 패턴이 없습니다. 블록 크기가 < 인 경우 4 바이트 (그럴 것이라고 생각하지는 않습니다)는 첫 번째 블록이 항상 동일하고 패턴에 대한 정보가 누출되므로 차이가 발생합니다. 그냥 내 의견.

편집

발견

"CBC와 CFB 내용은 정맥 주사를 재사용하는 첫번째 블록의 평문 대한 정보를 누설하고, 두 메시지가 공유 한 공통 프리픽스 정보"

출처 : 내 대학교 강의 :

2

마크, 설명하는 내용은 Appendix C of NIST SP800-38a에서 제안한 내용과 거의 같습니다.

  1. 무작위로 각 메시지에 대해 새로운 IV를 생성 : 특히 는 정맥 주사를 생성하는 방법은 두 가지가 있습니다.
  2. 각 메시지마다 새로운 고유 한 nonce (카운터 일 수 있음)를 사용하고 nonce를 암호화 한 다음 결과를 IV로 사용합니다.

두 번째 옵션은 제안하는 것과 매우 유사합니다.

관련 문제