Chapter 02. 대칭 암호와 메시지 기밀성
2.4 스트림암호와 RC4
□ 스트림 암호 구조
ㅇ 전형적인 스트림 암호는 한 번에 평문 1Byte(8bit)씩 암호화
- 의사 랜덤 바이트 생성기에 하나의 키(K)를 입력으로 사용한다.
- 의사 랜덤 바이트 생성기는 랜덤 함수 키스트림(k)을 생성한다.
- 평문 메시지는 생성된 키스트림과 한 바이트 씩 XOR 연산된다.
[Example]
<암호화> (평문) 11010100 ⊕ (키스트림) 01001010 = (암호문) 10011110
<복호화> (암호문)10011110 ⊕ (키스트림) 01001010 = (평문) 11010100
ㅇ 스트림 암호 설계 시 고려사항
- 암호열의 주기*가 길어야 한다.
- 키스트림은 반드시 진성랜덤스트림의 특성에 가능하면 근사하도록 해야 한다.
- 키 길이는 충분히 길어야 한다. 최소 128bit 이상이어야 한다.
* 암호열의 주기 : 의사 랜덤 수 생성기에서 사용하는 함수는 궁극적으로는 반복적으로 나타나는 비트스트림을 생성해내는데 그 반복되는 주기를 말한다.
o 스트림 암호의 장점
- 속도가 블록 암호보다 빠르다.
- 블록 암호에서 사용하는 코드보다 적은 양의 코드를 사용하여 구현할 수 있다.
- 동등한 길이의 키를 사용할 경우 블록암호만큼의 보안성을 유지할 수 있다.
o 스트림 암호의 단점 : 키를 재사용할 수 없다.
- 두 개의 평문을 동일한 키를 사용하여 암호화 하는 경우 손쉽게 복호화 가능하다.
- 두 개의 암호문 스트림을 XOR 시키면 평문간의 XOR 값과 같아진다.
P1⊕K = C1, P2⊕K = C2
C1⊕C2 = P1⊕K⊕P2⊕K = P1⊕P2
o 스트림 암호와 블록 암호의 쓰임새
- 데이터 통신 채널이나 브라우저/웹 링크와 같이 데이터스트림을 암·복호화 시 스트림암호가 적절
- 파일 전송,
□ RC4
- SSL/TLS 표준 및 무선네트워크 암호화(WEP, WPA) 사용
- 길이가 1바이트 ~ 256바이트인 다양한 키를 사용하여 상태 벡터 S를 치환하여 초기화한다.
o RC4 알고리즘 구조
<S의 초기화>
① S벡터를 S[0] ~ S[255]에 0~255까지 같은 값을 오름차순으로 정렬한다.
② 임시벡터 T를 생성한다.
③ 키 입력값 K를 입력받는다. K의 길이가 256이 아니라면 키의 길이를 Keylen 바이트라고 한다.
④ K를 keylen 만큼 T가 채워질 때까지 집어넣는다.
ex) K = 234 T[0]=2 T[1]=3 T[2]=4 T[3]=2 T[4]=3 T[5]=4 . . . T[256]=3 |
⑤ T를 사용해서 아래 코드와 같이 S의 초기 치환을 만든다.
for i = 0 to 255 j = j + S[i] + T[i] Swap(S[i], S[j]) |
S에 사용된 수식은 오직 치환이기 때문에, 0~255 숫자를 모두 다 가졌으며 순서만 바뀐 초기 S 값이 완성되었다.
<스트림 생성>
S벡터가 초기화 된 후에는 입력키 K는 더 이상 필요하지 않다.
다음 코드와 같이 k 값을 구한다.
i=(i+1)mod256 j=(j+S[i])mod256 Swap(S[i], S[j]) t= (S[i] + S[j])mod256 k=S[t] |
<바이트 XOR>
k를 평문의 다음 바이트와 XOR 하여 암호화한다.
복호화 시에는 k를 암호문의 다음 바이트에 XOR 한다.
'네트워크보안에센셜' 카테고리의 다른 글
Chapter 02. 대칭 암호와 메시지 기밀성 - 복습문제 (0) | 2020.09.15 |
---|---|
Chapter 02. 대칭 암호와 메시지 기밀성 - 2.5 암호 블록 운용 모드 (0) | 2020.09.15 |
2.2 대칭 암호 알고리즘, 2.3 랜덤넘버와 의사랜덤넘버 (0) | 2020.09.09 |
Chapter 02. 대칭 암호와 메시지 기밀성 - 2.1 대칭 암호 원리 (0) | 2020.09.09 |
네트워크 보안 에센셜 - Chapter 01. 개요 (0) | 2020.09.06 |