보안

스트림 암호와 일회용 패드

bestinu 2021. 10. 6. 21:38
728x90

스트림 암호와 블록암호

스트림 암호 : 입력되는 요소를 연속적으로 처리하여 지속적으로 한 번에 한 요소씩 배출하는 암호시스템

스트림 암호는 예를 들어 abcd 라는 평문을 스트림 암호를 사용해서 암호화하면, a -> y , b -> u, c -> p, d -> l 와 같이 한 요소씩 암호화가 된다.


스트림 암호에서는 암호화 시에 XOR 연산을 주로 이용하는데, XOR 연산이란 비트연산 중 하나로 두 개의 비트를 XOR 연산한다고 하면 두 비트가 서로 달라야 1이 되고, 같으면 0이 된다.

 

스트림 암호에서 유명한 암호로는 로널드 라이베스트가 만든 RC4가 있다.

 

A와 B를 XOR 연산하고, 그 값을 다시 B로 XOR 연산하면 A의 값이 나오는 걸 볼 수 있다.
이러한 성질을 이용해 XOR로 암호화를 할 수 있는 것이다. 평문 A를 키 B로 암호화해서 암호문을 얻고, 암호문 A XOR B를 키 B로 복호화해서 평문 A를 얻는 원리인 것이다.

 

XOR을 이용한 암호화 방식은 그림 mask, 일회용 패드(One Time Pad), 스트림암호 등이 있다.

 

일회용 패드 : 평문과 랜덤한 비트열과의 XOR 연산만을 취하여 암호화
일회용 패드의 특징은 단순하지만 해독 불가능한 암호라는 것이다.

일회용 패드의 암호화 과정은 다음 그림과 같다.


복호화는 암호화의 역계산을 해주면 된다.

아무리 임의 크기의 키 공간 전체를 순식간에 계산할 수 있는 무한대의 계산력을 가진 컴퓨터가 발명된다 하더라도, 일회용 패드 암호는 해독할 수 없는데 그 이유는 평문으로서 가능한 모든 패턴이 등장하기 때문에 어느 것이 바른 평문인지를 판단할 수가 없기 때문이다.

 

하지만 일회용 패드는 매우 사용하기 어려운 암호이기 때문에 실제로는 거의 사용되고 있지 않다. 그 이유로는 키의 길이가 평문의 길이와 같기 때문인데, 키의 길이가 평문의 길이와 같을 경우 5가지의 문제점이 있다.

  • 키의 배송 : 키를 안전하게 보내는 방법이 있다면 대신 평문을 보내면 된다.
  • 키의 보존 : 평문 길이의 키를 보존하는 데에 어려움이 있다.
  • 키의 재이용 : 키는 한번만 써야 한다.
  • 키의 동기화 : 송신자와 수신자의 키는 정확히 일치해야 한다. 한 비트라도 달라지면 전혀 다른 평문이 나온다.
  • 키의 생성 : 길고 안전한 키의 생성이 어렵다.

블록 암호 : 고정된 크기의 블록 평문을 입력으로 하여 동일한 크기의 블록 암호문을 생성해내는 암호시스템

블록 암호는 스트림 암호와 반대로 abcd라는 평문을 입력하면 yupl과 같이 동일한 크기의 블록 암호문을 한번에 생성한다.

728x90