전자 부호표(ECB, Electric Code Book) 모드
평문 블록을 그대로 암호화가 가장 간단하고 기밀성이 낮은 모드이다. 각 동작이 병행 수행이 가능하고 오류전파가 되지 않는 장점이 있지만 메시지가 길 경우 쉽게 깨어지기 때문에 짧은 메시지에 적합하고, 블록사이즈보다 작은 데이터는 동작이 안 되며, 각 블록이 분리되어 공격받을 수 있는 문제점이 있어 권고되지 않는 암호화 방식이다.
평문 블로고가 암호문 블록이 일대일의 관계를 유지하고, 모든 평문 블록이 각각 개별적으로 암호화되고, 복호화 때에는 개별적으로 복호화가 가능하다. 암호문을 분석하면 평문 속에 패턴의 반복이 있다는 것을 알게 되며, 이것을 실마리로 암호 해독 가능하다. 평문 블록 1, 2의 내용이 같다면 암호문 블록 1, 2의 내용도 같아진다.
암호 블록 연쇄 모드(CBC, Cipher Block Chaining mode)
앞의 암호문 블록과 다음 평문 블록을 XOR하여 체인이 형성된 것처럼 암호화를 수행하는 방식이다. ECB 모드의 약점을 회피하여 평문 블록 1과 2의 내용이 같은 경우라도 암호문 블록 1과 2의 값이 다르게 나올 수 있다. 최초 동작을 위해서는 초기화 벡터(IV)가 필요하다.
생성되는 각각의 암호문 블록은 단지 현재 평문블록 뿐만 아니라 그 이전의 평문 블록들의 영향도 받게 된다. 장점으로는 긴 메시지에도 효과적으로 사용이 가능하나, ECB와 같이 블록사이즈에서만 동작할 수 있고, 체인구조상 모든 동작은 순차적으로 이루어져야 한다.
체인 구조로 인해 암호문 블록이 전송 중에 1개가 파손되었다면, 이때 암호문 블록의 길이가 바뀌지 않는다면 복호화했을 때 2개의 평문 블록에 영향을 미친다.
암호 피드백 모드(CFB, Cipher-FeedBack mode)
1단계 앞의 암호문 블록을 암호 알고리즘의 입력으로 사용한다. 여기서 피드백이라는 것은 암호화의 입력으로 사용한다는 것을 의미한다.
스트림 모드이기 때문에 블록보다 작은 크기의 데이터에서도 동작 가능하며 구조는 일회용 패드와 비슷하다. 평문 블록과 암호 알고리즘의 출력을 XOR 해서 암호문 블록을 만든다. 복호화를 수행할 경우, 블록 암호 알고리즘 자체는 암호화를 수행하고 있다는 것에 주의한다. 키 스트림은 암호화에 의해 생성되는 것이다. 재전송 공격이 가능하다.
출력 피드백 모드(OFB, Output-FeedBack mode)
IV를 암호화 하여 이를 평문과 XOR 하여 동작하며 전체적인 구조는 CFB 모드와 비슷하다. 평문 블록은 암호 알고리즘에 의해 직접 암호화되고 있는 것은 아니라 IV를 먼저 암호화하기 때문에 병렬처리가 가능하고 스트림 형식으로 암호문이 생성될 수 있다. OFB 모드의 단점은 IV의 암호화 시에 오류가 발생할 경우 이는 전체 암호문에 영향을 끼칠 수 있다.
카운터 모드(CTR, CounTeR mode)
1씩 증가해 가는 카운터를 암호화해서 키 스트림을 만들어 내는 스트림 암호화 방식이다. 블록을 암호화할 때마다 1씩 증가해 가는 카운터를 암호화해서 키 스트림을 작성한다. 즉, 카운터를 암호화한 비트열과 평문 블록과의 XOR을 취한 결과가 암호문 블록이 된다. 카운터의 초기 값은 암호화 때마다 다른 값(Nonce, 비표)을 기초로 해서 만든다.
OFB 모드에서는 암호화의 출력을 입력으로 피드백하고 있지만, CTR 모드에서는 카운터의 값이 암호화의 입력이 된다. 암호화와 복호화는 완전히 같은 구조이므로, 프로그램으로 구현하는 것이 매우 간단하고 블록을 임의의 순서로 암호화/복호화할 수 있다. 통신 오류와 기밀성에 관해서 OFB 모드와 거의 같은 성질을 가지고 있다.
암호문 블록에서 1비트의 반전이 발생했을 경우 복호화를 수행하면, 반전된 비트에 대응하는 평문 블록의 1비트만이 반전되고, 오류는 확대되지 않는다. OFB 모드에서는 키 스트림의 1블록을 암호화한 결과가 암호화 전의 결과와 우연히 같아졌다고 하면 그 이후 키 스트림은 완전히 같은 값의 반복이 되지만 CTR 모드에서는 그렇지 않다.
'IT' 카테고리의 다른 글
비대칭 알고리즘에 대해 알아보자 (0) | 2023.03.11 |
---|---|
대칭 알고리즘의 종류와 설명 (0) | 2023.03.11 |
컴퓨터 암호학의 역사 (0) | 2023.03.11 |
스푸핑 공격의 정의와 유형 (0) | 2023.03.11 |
정보보안 계획 및 인적보안 (0) | 2023.03.11 |
댓글