Stream Ciphers
스트림 암호
\(\mathrm{Plaintext} \; \oplus \; \mathrm{Random \; Number} \; \to \; \mathrm{Ciphertext}\)
- 여기서 Random Number는 암호화 과정에서 Key 역할(Key String)을 한다.
- Plaintext, Random Number, Ciphertext 모두 8-bits Binary Code이다.
- \(\oplus\)는 XOR 연산을 의미한다.
- 연속적으로 입력되는 Plaintext(Data)와 크기가 같은 Pseudo Random Number(Key String)와 XOR 연산을 취해
Byte 단위로 암호화한다.
- Computer의 Deterministic한 성질로 인해 Computer는 완전한 무작위 난수를 생성할 수 없어
이 성질을 이용한 공격에 취약할 수 밖에 없기 때문에
스트림 암호 체계에서는 온전한 난수 키를 생성하는것이 중요하다.
- 암호 전송 중, 일부가 누락되어도 인접한 부분들을 통해 복원할 수 있기 때문에
스트림 암호가 통신 네트워크 분야에서 아직까지도 사용되고 있다.
- 아래는 대표적인 스트림 암호 체계들이다.
- A5/1
- RC4
How to Generate Random Bit (난수 생성법)
- 공통적으로, Non-Deterministic한 성질을 가진 패턴을 난수화하여 비결정적인 난수를 생성한다.
- Non-Deterministic한 패턴은 통계적으로 편향되어 있지 않아
통계적 특성으로 추론하는 방식의 공격에 Break되지 않는다.
- Hardware Random Bit Generator
- Reverse Biased Diode, Unstable Oscillator, Geiger Counter 등을 통해
Thermal Noise를 증가시켜 이를 난수로 이용하는 방법이다. - High-Resolution Timing of User Behavior
- 사용자의 Key Stroke나 Mouse Movement 등을 난수로 이용하는 방법이다. - High-Resolution Timing of Peripheral Hardware Response Times
- Hardware 장치들에서 발생하는 응답신호를 난수로 이용하는 방법이다.
- Linux의 Entropy Mechanism이 여기에 해당된다. - Noise from Analog/Digital Converters
- Analog/Digital Convert에서 발생하는 노이즈를 난수로 이용하는 방법이다. - Network Packet Timing and Content
- 네트워크를 경유하는 패킷의 도착 시간이나 내용을 난수로 이용하는 방법이다. - High-Resolution Time
- 시간을 난수로 이용하는 방법이다.
A5/1
- 온전히 Hardware-Based로 생성된 난수를 Key로 활용하여 암호화하는 암호 체계이다.
RC4 (Rivest's Cipher)
- 1987년 Ronald Rivest가 설계한 스트림 암호 체계이다.
- SSL, TLS, WEP 등의 여러 Network Security Protocol에 사용되는 암호 체계이다.
- 암호화 속도가 빠르고 효율적이다.
- Self-Modifying Lookup Table 메커니즘을 암호화에 활용한다.
RC4 Algorithm
// S[] : Permutation of 0 ~ 255 (This is Self-Modifying Lookup Table)
// key[] : Contains N bytes of key
for (i=0 to 255)
S[i] = i
K[i] = key[i (mod N)]
j = 0;
for (i=0 to 255)
j = (j + S[i] + K[i]) mod 256
swap(S[i], S[j]);
i = j = 0;
i = (i + 1) mod 256;
j = (j + S[i]) mod 256;
swap(S[i], S[j]);
t = (S[i] + S[j]) mod 256
keyStreamByte = S[t]
Reference: Information Security: Principles and Practice 2nd Edition
(Mark Stamp 저, Pearson, 2011)
Reference: 2022학년도 1학기 홍익대학교 네트워크 보안 강의, 이윤규 교수님