"스트림 암호"의 두 판 사이의 차이
(새 문서: 500픽셀|섬네일|오른쪽|스트림 암호: 암호키는 보통 컴퓨터가 생성한 의사난수열이다. '''스트림 암호'''(stream cipher)...) |
(차이 없음)
|
2020년 1월 7일 (화) 14:12 판
스트림 암호(stream cipher)는 이진 수열로 변환된 평문을 비트 단위로 암호화하는 암호이다. 스트림 암호(stream cipher)는 대칭 키 암호의 구조 중 하나로, 유사난수를 연속적(스트림)으로 생성하여 암호화하려는 자료와 결합하는 구조를 가진다. 일반적인 스트림 암호는 유사난수를 1비트 단위로 생성하고, 생성된 값과 암호화하려는 각 값을 XOR하여 1비트의 암호화된 자료를 얻는다.
스트림 암호는 일회용 난수표(OTP)를 유사난수로 대체한 것으로 볼 수 있다.
스트림 암호는 하드웨어 구현이 간편하며 속도가 빠르기 때문에 무선 통신 등의 환경에 주로 사용된다. 대표적으로 RC4가 널리 사용되며, 이외에도 A5/1, A5/2 등의 알고리즘이 존재한다.
개요
스트림 암호는 블록 단위로 암호화·복호화되는 블록암호와는 달리 이진화된 평문 스트림과 이진 키스트림의 배타적 논리합(XOR) 연산으로 암호문을 생성하는 방식이다. 이러한 스트림 암호는 키스트림이 평문과 관계없이 생성되어 동기식으로 사용해야만 하는 동기식 스트림 암호, 키스트림이 평문 혹은 암호문의 함수관계에 의해 생성되기 때문에 복호화 시 동기가 흐트러졌더라도 스스로 동기화가 이루어져서 복호화가 가능한 자기 동기식 스트림 암호가 있다.
1970년대부터 유럽을 중심으로 발달한 스트림 암호는 주기, 선형복잡도 등 안전성과 관련된 수학적 분석이 가능하고, 알고리즘 구현이 쉬워 군사 및 외교용으로 많이 사용되고 있다. 또한 구현 여건이 제약되는 이동통신 환경에서도 구현이 용이하여 이동통신 등의 무선데이터 보호에 많이 사용된다.
종류
스트림 암호의 안정성은 키스트림이 어떻게 생성되는지에 따라 전적으로 결정된다.
스트림 암호의 난수열을 암호화할 입력값과 독립적으로 생성하는 경우를 동기식(synchronous) 스트림 암호로 부른다. 반대로 입력값이 난수열 생성에 영향을 끼치는 경우 비동기식(asynchronous) 혹은 자기 동기(self-synchronizing) 스트림 암호로 부른다.
동기식 스트림 암호
동기식 스트림 암호는 난수열을 생성하기 위해 내부 상태(internal state)를 유지하며, 이전 내부 상태에서 새로운 내부 상태와 유사난수를 얻는다. 문자열의 암호화 및 복호화는 생성된 유사난수열과 입력값을 XOR하는 방식으로 이루어진다.
동기식 스트림 암호에서는 암호화 및 복호화할 문자열에서 특정 위치 비트를 변경할 경우 암호화된 결과에서도 같은 위치 비트가 변경되며, 다른 위치의 비트는 변경되지 않는다. 따라서 암호화 문자열을 전송할 시에 특정 비트가 다른 값으로 손상되었어도 복호화 시 다른 비트에는 영향을 미치지 않는다. 하지만 전송 오류에서 비트가 사라지거나 잘못된 비트가 추가되는 경우 오류가 난 시점 이후의 복호화가 실패하게 되며, 따라서 전송 시에 동기화(synchronize)가 필요하다.
또한, 같은 암호화 키로 여러 입력값을 사용할 수 있으면 이를 이용한 암호공격(cryptanalysis)이 가능하다.
동기식 스트림 암호의 한 예는 RC4가 있다.
자기 동기 스트림 암호
자기 동기 스트림 암호는 난수열을 생성할 때 암호화 키와 함께 이전에 암호화된 문자열 일부를 사용한다.[1] 이 암호의 내부 상태는 이전 내부 상태에 의존하지 않는다. 따라서 암호화 문자열을 전송할 시에 일부 비트가 값이 바뀌거나, 혹은 비트가 사라지고 추가되는 오류가 발생하여도, 일부분만이 복호화에 실패하며 그 이후에는 다시 정상적인 복호화 값을 얻을 수 있는 자기 동기성을 가진다.
자기 동기 스트림 암호의 한 예는 블록 암호에 CFB 운용 모드를 결합한 것이다.
참고자료
같이 보기