스트림 암호 공격

Stream cipher attacks

스트림 암호는 일반 텍스트 비트가 전용 또는 조작(xor)에 의해 암호 비트 스트림과 결합되는 것으로, 적절히[citation needed] 사용하면 매우 안전할 수 있다. 그러나 다음과 같은 특정 예방 조치를 따르지 않을 경우 공격에 취약하다.

  • 키를 두 번 사용해서는 안 된다.
  • 유효한 암호 해독을 사용하여 진위를 표시해서는 안 된다.

재사용 키 공격

스트림 암호는 같은 키를 두 번 이상(깊이 2개) 사용할 경우 공격에 취약하다.

우리가 같은 길이A와 B를 같은 키로 암호화해서 보낸다고 가정하자. 스트림 암호는 메시지 길이와 동일한 비트 C(K)의 문자열을 생성한다. 그러면 메시지의 암호화된 버전은 다음과 같다.

E(A) = A xor C
E(B) = B xor C

여기서 xor는 비트 단위로 수행된다.

적이 E(A)E(B)를 가로챘다고 말해라. 그는 쉽게 다음을 계산할 수 있다.

E(A) x 또는 E(B)

그러나 xor역순이며 X xor X = 0(자체 반대)의 속성을 가지고 있으므로 다음과 같다.

E(A) xor E(B) = (A xor C) xor (B xor C) = A xor B xor C = A xor B

만약 한 메시지가 다른 메시지보다 길다면, 우리의 적수는 더 긴 메시지를 더 짧은 메시지의 크기로 자르고 그의 공격은 더 긴 메시지의 그 부분만을 드러낼 것이다. 즉, 같은 키로 암호화된 두 개의 메시지를 가로채는 사람이 있으면, 키 암호 실행의 한 형태인 A xor B를 복구할 수 있다. 두 가지 메시지가 모두 알려져 있지 않더라도, 두 메시지가 모두 자연 언어로 되어 있는 한, 그러한 암호는 종이와 연필로 된 방법에 의해 종종 깨질 수 있다. 제2차 세계 대전 동안 영국의 암호 분석가틸트만은 로렌츠 암호("Tunny")로 이것을 성취했다. 평균적인 개인용 컴퓨터로는, 그러한 암호는 보통 몇 분 안에 깨질 수 있다. 한 가지 메시지가 알려지면 해결책은 사소한 것이다.

복구가 사소한 또 다른 상황은 트래픽 흐름 보안 대책으로 각 방송국이 실제 트래픽이 없을 때 null 문자(예: BaudotLTRS)를 전송하는 등 암호 비트의 연속 스트림을 전송하는 경우다. 이것은 군사 통신에서 흔히 볼 수 있는 일이다. 그럴 경우, 그리고 송신 채널이 완전히 로딩되지 않으면 암호문 스트림 중 하나가 null일 가능성이 크다. NSA는 키가 두 번 사용되는 것을 막기 위해 많은 노력을 한다. 1960년대 암호화 시스템은 종종 키를 로드하기 위해 펀치된 카드 리더를 포함했다. 이 메커니즘은 카드가 제거되면 자동으로 카드가 반으로 잘려 재사용을 막는다.[1]: p. 6

이 문제를 피하는 한 가지 방법은 클리어에 전송된 초기화 벡터(IV)를 비밀 마스터 키와 결합하여 스트림 암호에 대한 일회성 키를 만드는 것이다. 이는 WEP(Wired Equivalent Privacy), WPA(Wi-Fi Protected Access) 및 Ciphersaber를 포함하여 인기 있는 스트림 암호 RC4를 사용하는 몇 가지 공통 시스템에서 이루어진다. WEP의 많은 문제들 중 하나는 그것의 IV가 24비트로 너무 짧았다는 것이다. 이는 동일한 마스터 키(생일 공격 참조)로 몇 천 개 이상의 패킷을 전송하면 동일한 IV가 두 번 사용될 가능성이 높음을 의미하며, 중복 IV가 있는 패킷은 키 재사용 공격에 노출된다. 이 문제는 WPA에서 "마스터" 키를 자주 변경함으로써 해결되었다.

비트 플립 공격

상대가 우리의 메시지 중 하나 또는 일부의 정확한 내용을 알고 있다고 가정하자. 중간 공격이나 리플레이 공격에서 남자의 일부로서, 키 K를 모르는 사이에 메시지의 내용을 변경할 수 있다. 예를 들어, 그는 메시지의 일부를 알고 있다. 전자 펀드 전송은 ASCII 문자열 "$1000.00"을 포함하고 있다. 그는 암호문의 해당 부분을 "$1000.00" x 또는 "$9500.00" 문자열로 XOR하여 "$9500.00"으로 변경할 수 있다. 이 기능이 어떻게 작동하는지 보려면, 우리가 보내는 암호 텍스트가 C(K) x 또는 "$1000.00"에 불과하다는 점을 고려하십시오. 적이 만들고 있는 새로운 메시지는 다음과 같다.

(C(K) xor "$1000.00" xor "$9500.00") xor = C(K) xor "$1000.00" xor "$1000.00" xor "$9500.00" = C(K) xor "$9500.00"

XORed 문자열 자체에서 모든 0이 생성되고 다른 문자열로 XORed된 0 문자열이 해당 문자열을 그대로 유지한다는 점을 상기하십시오. 그 결과, C(K) x 또는 "$9500.00"은 만약 $9500이 정확한 금액이었다면 우리의 암호문이 되었을 것이다.

비트 플립 공격은 메시지 인증 코드를 포함시켜 변조 탐지 가능성을 높임으로써 방지할 수 있다.

선택-IV 공격

스트림 암호는 비밀키를 합의된 초기화 벡터(IV)와 결합하여 사이비 무작위 시퀀스를 생성하는데, 이 시퀀스는 시시각각 다시 동기화된다.[2] "초센 4" 공격은 함께 찍은 특정한 IV를 찾는 것에 의존한다. 이 공격은 아마도 비밀 키에 대한 정보를 드러낼 것이다. 일반적으로 여러 쌍의 IV를 선택하고 생성된 키 스트림의 차이를 선형 상관 관계 및/또는 대수 부울 관계에 대해 통계적으로 분석한다(미분위 암호화 분석 참조). 초기화 벡터의 특정 값을 선택하면 생성된 시퀀스에서 랜덤하지 않은 패턴이 노출되는 경우, 이 공격은 일부 비트를 계산하여 유효 키 길이를 줄인다. 그 공격의 증상은 빈번한 재동기화일 것이다. 현대의 스트림 암호는 일반적으로 많은 초기 라운드를 수행하여 비밀키를 초기화 벡터와 적절하게 혼합하는 단계를 포함한다.

참조

  1. ^ 레코드 통신 보안: TSEC/KW-26, 멜빌 클라인, NSA 역사 시리즈
  2. ^ Englund, Hakan; Johansson, Thomas; Sonmez Turan, Meltem (2007). "A Framework for Chosen IV Statistical Analysis of Stream Ciphers". Progress in Cryptology – INDOCRYPT 2007 (PDF). Lecture Notes in Computer Science. Vol. 4859 (INDOCRYPT / volume 4859 of LNCS ed.). Springer. pp. 268–281. doi:10.1007/978-3-540-77026-8_20. ISBN 978-3-540-77025-1. S2CID 18097959. Archived from the original (PDF) on 2018-10-01. Retrieved 1 October 2018.

외부 링크