스트림 암호와 블록암호
스트림 암호 : 입력되는 요소를 연속적으로 처리하여 지속적으로 한 번에 한 요소씩 배출하는 암호시스템
스트림 암호는 예를 들어 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과 같이 동일한 크기의 블록 암호문을 한번에 생성한다.
'보안' 카테고리의 다른 글
공개 키 암호(Public-Key Cryptography)와 RSA (0) | 2021.11.03 |
---|---|
AES(Rijndael)와 국내개발 블록 암호 (0) | 2021.10.12 |
DES와 트리플 DES (0) | 2021.10.12 |
블록 암호 (0) | 2021.10.06 |
브루트포스 공격(Brute Force Attack)과 빈도 분석 (0) | 2021.10.06 |