스트림암호

반응형


 스트림 암호는 난수열인 키스트림을 이용해서 비트 혹은 바이트 단위로 순차적으로 암호화를 다. 처음에는 초기값이 필요하다. 스트림 암호는, 동기식 스트림 암호와 비동기식 스트림 암호로 나눌 수 있다. 평문 비트 스트림을 암호문 비트 스트림으로 변경할 때 사용되는 키 비트 스트림은, 1과 0의 개수가 거의 동일해야 다. 키 스트림이 랜덤하게 나타날수록 암호문은 더 랜덤 해지며, 암호 해독은 더 어려워진다. 또한 이 키 스트림의 길이가 충분히 길어야 다.


  동기식 스트림 암호에서 키 스트림은 평문 또는 암호문 스트림과 독립적이다. 키 스트림은 평문 또는 암호문 스트림과 아무 관계없이 생성되고 사용되는 것이다. 동기식 스트림 암호 중에서 가장 안전한 암호는 OTP(One Time Pad)라고 다. OTP 암호는, 암호화를 수행할 때마다 랜덤하게 선택된 키 스트림을 사용다. OTP는 해독 불가능하다는 것이 수학적으로 증명되었기 때문에 무조건적으로 안전하다. 암호화 알고리즘과 복호화 알고리즘은 각각 배타적 논리합 연산을 사용다. 귀환 시프트 레지스터(Feedback Shift Register)는, OTP의 절충안으로서, 소프트웨어와 하드웨어 환경에서 모두 구현될 수 있지만 하드웨어 구현이 더욱 용이하다고 다. 귀환 시프트 레지스터는 시프트 레지스터와 귀환 함수로 구성이 된다. 선형 귀환 시프트 레지스터(LFSR, Linear Feedback Shift Register)는, 하드웨어로 쉽게 구현되며, 많은 스트림 암호가 LFSR을 이용한다고 다. LFSR은 선형성 때문에 공격에 취약하다. 비선형 귀환 시프트 레지스터(NLFSR, Nonlinear Feedback Shift Register)를 통해서 LFSR보다 안전한 스트림 암호를 설계할 수 있다. 비동기식 스트림 암호는 다른 말로 자기 동기식 스트림 암호라고도 다. 비동기식 스트림 암호에서 키 스트림의 각 비트는 이전의 평문이나 암호문에 종속적으로 결정된다.


  적절히 설계된 의사난수 생성기를 이용하면, 스트림 암호 또한 블록 암호만큼 안전성을 보장할 수 있다. 스트림 암호의 장점은, 블록 암호가 블록을 만드는 데 시간이 걸리는데 비해서, 빠른 속도를 갖는다는 것이다. 스트림 암호를 사용하는 RC4 같은 경우에는, 단 몇 줄의 코드로 구현할 수 있다. 그러나 AES가 도입된 이후부터는, 이러한 스트림 암호의 장점이 이전 같지는 않다고 다. AES가 소프트웨어에서 매우 효율적일뿐더러, 하드웨어 가속화 기술 또한 AES에서 사용할 수 있기 때문이다. 블록 암호의 장점은, 키를 재사용할 수 있다는 것이다. 만약 두 개의 서로 다른 평문을, 동일한 키로 스트림 암호화를 한다면, 암호해독이 상당히 쉬워질 수도 있다.

반응형

+ Recent posts