더북(TheBook)

icon 알아 두면 좋은 짤막한 지식

 

스트림 암호화와 블록 암호화

지금까지 블록 암호화만 설명했습니다. 사실 암호화7는 스트림 암호화와 블록 암호화 두 가지로 구분할 수 있습니다. 블록 암호화가 데이터를 블록 단위로 잘라 암호화 알고리즘을 거쳐 암호화하는 것과 달리 스트림 암호화는 데이터의 흐름을 순차적으로(보통 1비트씩) 어떤 값(암호화할 데이터와 길이가 같은 키 값)과 XOR 연산하여 암호화합니다.

사실 스트림 암호화는 많이 사용하지 않아서 현재는 개념만 남아 있습니다. RC4 같은 스트림 암호화 전용 알고리즘도 있기는 하지만, 블록 암호화와 비교하면 연구가 그리 활발하지는 않았습니다. 그것은 운영 모드를 사용하면 블록 암호화를 스트림 암호화처럼 구성할 수 있어 스트림 암호화 전용 알고리즘의 활용도가 낮았기 때문입니다. 앞서 배운 CFB나 OFB도 다른 관점에서 보면 난수 성질을 갖는 값을 만들고 여기에 XOR 연산을 수행하는 스트림 암호화 방식으로 볼 수 있습니다. 이 과정에서 난수를 생성하려고 블록 암호화 알고리즘을 사용한 것이고요.

스트림 암호화의 장점은 패딩(블록 암호화에서는 필요)을 하지 않아도 되는 것입니다. 블록 단위로 암호화를 할 때는 다른 블록과 크기가 다른 소위 자투리 블록에 데이터를 더해 크기를 맞추는 작업을 해야 합니다. 이를 데이터 패딩이라고 합니다. 데이터 패딩을 하면 원문보다 암호문의 길이가 늘어날 수 있어 암호화 전후 데이터 길이 변화가 문제가 되는 환경에서는 단점이 됩니다.8 스트림 암호화의 또 다른 장점은 XOR 연산을 사용하므로 복호화 알고리즘을 따로 만들지 않는다는 것입니다. 암호화 알고리즘 하나로 암호화와 복호화를 모두 수행하므로 구현과 적용이 간편합니다.

블록 암호화를 스트림 암호화처럼 사용하면 스트림 암호화의 장점을 그대로 이용할 수 있습니다. 그뿐만 아니라 공인된 블록 암호 알고리즘을 활용하면 안전성 확보와 검증도 간편합니다.

 

 


7 12장 공개 키 암호를 다루기 전까지는 암호화할 때와 복호화할 때 같은 키를 사용하는 대칭 키 암호 또는 다른 호칭으로 비밀 키 암호라고 부르는 암호화만을 의미합니다.

8 실제로는 입력 데이터가 블록 크기의 배수라서 자투리 블록이 없을 때도 무조건 데이터 패딩을 수행합니다. 암호화 전 무조건 패딩을 하면, 복호화 후 무조건 패딩을 제거하면 됩니다. 하지만 패딩을 조건에 따라 선택적으로 하면 복호화한 결과만 봐서는 패딩인지 아닌지 판단하기가 어렵습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.