it-swarm-korea.com

암호 블록이있는 초기화 벡터

데이터 블록을 암호화하는 데 사용되는 초기화 벡터는 항상 정적입니까, 동적입니까? 동적 인 경우 키와 함께 IV를 수신자에게 보내야합니까? 이것은 일반적으로 발생하지 않습니다.

6
user1184

IV는 실제로 데이터를 암호화하는 데 사용되지 않습니다. 연결 모드에서 -1 블록으로 사용됩니다.

특정 모드의 블록 암호 (예 : CBC , 암호는 일반적으로 다음 블록을 암호화하기 전에 일반 텍스트와 XOR 처리하여 이전에 암호화 된 블록의 출력을 다음 블록으로 공급합니다. 이는 추가 확산을 허용하고 동일한 일반 텍스트 블록을 인식하는 것을 방지합니다.

그러나 첫 번째 블록에 대해 XOR) 할 수있는 "이전 블록"출력이없는 첫 번째 블록에 대해 어떻게해야합니까?
이것은 IV가 들어오는 곳입니다. 기본적으로 고유 한 임의의 데이터 비밀 이 아니라 첫 번째 블록에 공급할 수 있습니다.
이 역시 첫 번째 블록과 일반 텍스트 세트간에 확산을 제공합니다. 동일한 일반 텍스트를 두 번 암호화하는 경우 암호문에서 동일하다는 것을 명백히 원하지 않습니다.
따라서 IV가 고유하고 (적어도 다른) 무작위 적이어야합니다.

그리고 예, IV 자체는 비밀이 아니며 암호문과 함께 전송해야합니다. 잊지 마세요. 사용시 무작위로 사용되어야합니다.

3
AviD

IV는 역동적입니다. 암호화하는 모든 메시지에 대해 달라야합니다. (일부 모드의 경우 IV가 무작위 일 수 있고 다른 모드의 경우 예측 가능하지만 각 메시지마다 다를 수 있습니다.)

수신자는 복호화하려면 IV를 알아야합니다. 사용하는 암호화 라이브러리에 따라 IV를 수신자에게 명시 적으로 보내야 할 수도 있고 그렇지 않을 수도 있습니다. 메시지를 암호화 할 때 많은 암호화 라이브러리에는 암호 텍스트의 일부로 IV가 포함됩니다. 이 경우 암호화 라이브러리를 호출하여 메시지를 암호화하고 결과 암호문을 수신자에게 전송하면 수신자는 이미 IV를 얻게됩니다. 그래서, 당신은 당신의 삶을 더 쉽게 만들기 위해 암호화 라이브러리가 당신을 위해 그것을 암호문에 유용하게 묶었 기 때문에 당신이 그것을하고 있다는 것을 깨닫지 못한 채 IV를받는 사람에게 보낼 수 있습니다.

1
D.W.

CBC 모드에서는 결과로 생성되는 암호 텍스트가 훨씬 더 예측 가능하고 사전 공격에 취약 해집니다. 여러 데이터 스트림을 암호화하는 데 사용되는 경우 스트림에 공통된 시작 시퀀스가 ​​있으므로 사전 공격이 가능합니다.

0
Gaurav Kasliwal