스트림 암호 (Stream Cipher)

정보보안학
한 줄 정의: 데이터를 비트 또는 바이트 단위로 순차적으로 암호화하는 대칭키 암호 방식입니다.

쉽게 풀면

스트림 암호는 물이 흐르듯 데이터가 들어오는 순서대로 한 글자씩 즉시 암호화하는 방식입니다. 키로부터 만들어진 임의의 비트 흐름을 원본 데이터와 겹쳐서 암호문을 만들어냅니다. 블록 단위로 모아서 처리하는 블록 암호와 달리 데이터를 기다릴 필요가 없어 실시간 처리에 유리합니다. 대신 같은 키 흐름을 두 번 사용하면 심각한 보안 문제가 발생할 수 있습니다.

왜 중요한가

스트림 암호는 지연 시간에 민감한 음성 통화나 영상 스트리밍처럼 실시간성이 중요한 서비스에서 유용하게 쓰입니다. 정보보안학 연구에서는 키 스트림 생성기의 예측 불가능성과 안전성을 분석하는 것이 중요한 과제로 다루어집니다. 무선 통신 환경처럼 처리 자원이 제한적인 상황에서도 스트림 암호가 활용됩니다.

논문에서는 이렇게 쓰입니다

"본 연구는 무선 센서 네트워크 환경에 적합한 경량 스트림 암호의 성능을 실험적으로 비교하였다."

연산 자원이 부족한 환경에서 스트림 암호가 대안으로 고려되고 있음을 보여줍니다.

"동일한 키 스트림이 재사용될 경우 스트림 암호의 기밀성이 심각하게 훼손될 수 있음을 실험으로 확인하였다."

스트림 암호에서 키 스트림 재사용이 얼마나 위험한지를 다루는 전형적인 보안 분석 사례입니다.

조금 더 깊게 보면

스트림 암호는 내부적으로 유사난수 생성기를 이용해 키 스트림을 만들며, 이 값을 평문과 XOR 연산하여 암호문을 생성하는 방식이 일반적입니다. 대표적인 예로 RC4나 ChaCha20 계열이 있으며, 각각 안전성과 성능 측면에서 차이를 보입니다.

주의할 점

스트림 암호는 동일한 키와 초기값 조합을 두 번 이상 사용하면 안전성이 크게 훼손되므로 초기값 관리가 매우 중요합니다.

관련 용어