앞썬 글에서 우리는 Perfect Secret과 OTP에 대해서 이야기 했고 이들이 구현하기에 매우 힘든 암호 알고리즘이라는 것을 알았다.
이를 보다 현실적으로 구현한 암호화 알고리즘인 RC4를 이야기해보겠다.
Stream Cipher
앞써 이야기한 OTP 처럼 Byte단위로 암호화하는 것을 Stream Cipher라고 이야기한다.
이들은 처음 Seed를 바탕으로 key를 만들어내는 Keystream generator가 존재하고 여기서 생성된 keystream이 byte단위로 적용된다.
전 글에서 이야기한 것처럼 완벽한 난수를 생성하는 문제를 Keystream generator로 해결한 것으로 알 수 있다.
하지만 이러한 Keystream을 어떻게 구현할 것인지가 알고리즘의 핵심이라고 이야기할 수 있다.
이러한 Stream Cipher의 대표주자인 RC4를 이야기해보자
RC4
RC4의 특징은 다음과 같다.
1. Variable Key-size
2. Byte-oriented stream cipher
- 알고리즘
1. 초기화 과정
S는 0부터 255까지 숫자가 들어있는 배열을 의미한다.
T는 Seed가 key의 길이만큼 block단위로 반복해서 들어가 있는 배열을 의미한다.
for i = 0 to 255
do
S[i] = i
T[i] = K[i mod keylength]
2. S에 대한 Permutation 진행
j = 0
for i = 0 to 255
do
j = (j + S[i] + T[i])(mod 256)
swap (S[i], S[j])
3. Stream Generation
i = j = 0
while
i = (i + 1)(mod 256)
j = (j + S[i])(mod 256)
swap (S[i], S[j])
t = (S[i] + S[j])(mod 256)
k = S[t]
C[i] = M[i] XOR k
- 한계점
Lack of diffusion
우리가 평문에서 암호를 XOR등의 방식으로 암호화 하는 과정을 Confusion이라고 한다.
이러한 Confusion은 글자를 바꾸는 substitution을 통해 구현될 수 있다. 하지만 Stream Cipher의 특성상 Diffusion은 약할 수 밖에 없다.
Diffusion이란 plaintext에서 한 글자가 바뀜으로써 전체적인 암호문이 얼마나 바뀌는지를 이야기한다.
Stream Cipher는 byte단위로 암호화 하기 때문에 Diffusion이 고려되지 않는다. 따라서 Chosen-plaintext attack등에 취약할 수 밖에 없다.
출처
성균관대학교 최형기 교수님 정보보호개론 강의(SWE3025)
긴 글 읽어주셔서 감사합니다.
틀린 부분이 있으면 댓글을 달아주시면 감사하겠습니다.
📧 : may3210@g.skku.edu
🔗 : https://github.com/RicardoKim
'Computer Science > Security' 카테고리의 다른 글
SSH란? (0) | 2023.06.05 |
---|---|
[보안] 암호(1) Perfect Secret과 OTP (0) | 2022.11.01 |
[보안] 디피-헬먼 키 교환 1편 (0) | 2022.10.29 |