1. 블록 단위 암호화 처리 방식, 블록 암호 모드의 개념
• 지정된 특정 bit 수 단위의 집합(block)을 기준단위로 한번에 처리하는 암호 알고리즘 방식.
• 긴 평문을 블록으로 나누어 암호화 진행, 각 블록에 암호 알고리즘을 반복해서 사용하여 긴 평문 전체를 암호화 진행.
DES or 3DES : 64bit
AES : 126bit, 192bit, 256bit
• 모드란? => 방식 의미
– 각 블록에 암호 알고리즘을 반복해서 사용하여 긴 평문 전체를 암호화
– 블록 하나 하나를 암호화 하는 암호화 알고리즘, 블록 들의 집합을 암호화하는 암호 모드
블록암호 주요 모드
• ECB 모드 : Electric CodeBook mode(전자 부호표 모드)
• CBC 모드 : Cipher Block Chaining mode(암호 블록 연쇄 모드)
• CFB 모드 : Cipher-FeedBack mode(암호 피드백 모드)
• OFB 모드 : Output-FeedBack mode(출력 피드백 모드)
• CTR 모드 : CounTeR mode(카운터 모드)
2. ECB 모드(electronic codebook, 전자코드북)
- 평문 블록을 그대로 암호화함
- 암호화하려는 메시지를 여러 블록으로 나누어 각각 암호화하는 방식으로 되어 있다.
* 패딩(Padding) : 마지막 평문 블록이 블록 길이에 미치지 못할경우 추가하여 블록 길이가 되도록 맞춘다.
전자 코드북(ECB)는 모든 블록이 같은 암호화 키를 사용하기 때문에 보안에 취약하다.
만약 암호화 메시지를 여러 부분으로 나누었을 때 두 블록이 같은 값을 가진다면, 암호화한 값 역시 같다.
=> 반복공격(Brute-Froce Attack, Dictionary ATtack)에 취약
3. CBC 모드(cipher block chaining, 암호 블록 체인 방식)
- 암호문 블록을 마치 체인처럼 연결시키기 때문 에 붙여진 이름
- 각 블록은 암호화되기 전에 이전 블록의 암호화 결과와 XOR되며, 첫 블록의 경우 초기화 벡터(IV)가 사용된다.
- 초기화 벡터가 같은 경우 출력 결과가 항상 같기 때문에, 매 암호화마다 다른 초기화 벡터를 사용해야 한다.
CBC방식은 널리 사용되는 운용 방식중 하나이며, CBC는 암호화 입력 값이 이전 결과에 의존하기 때문에 병렬화가 불가능하다. 하지만 복호화의 경우 각 블록을 복호화한 다음 이전 암호화 블록과 XOR하여 복구할 수 있기 때문에 병렬화가 가능하다.
IV(Initialization Vector)가 필요하며 패딩(padding)처리가 진행되어야 한다.
복호화시에는 IV값, 패딩값, 암호화 키가 필요하다
단 모든 블록이 XOR연산에 서로 연관되어 있기에 중간의 일부 블록이 파손, 누락시 그 이후 모든 블록에 영향을 미친다.
[참고] IV (Initialization Vector)
CBC mode 에서 최초 평문 블록 암호화를 위한 피트열, 모든 블록은 그 이전 블록의 XOR 연산을 진행해야한다, 최초 1단계 블록은 이전 블록이 존재하지 않음으로 이때 사용되는 비트열인 한개의 블록이 필요하다. (랜덤값)
[참고] 패딩 오라클 (Padding Oracle)
블록암호에 활용되는 패딩(padding)을 이용한 공격, 공격자는 패딩의 내용을 조금씩 변화시키며 송신 수신측은 복호화 하지 못한 오류값을 회신하는데 이때 오류를 분석하여 평문정보를 취득하는 방식.
4. CFB 모드(cipher feedback, 암호 피드백)
- CBC의 변형으로, 블록 암호를 자기 동기 스트림 암호로 변환한다.
- 암호 피드백 모드, 피드백은 암호화 입력의 사용을 의미하며 IV의 값을 암호 알고리즘의 입력값으로 사용하는 방식이다.
- 재전송 공격 (Replay Attack) 에 취약하다, 공격자가 일부 블록을 탈취 후 재전송 시 탈취한 블록으로 일부를 치환하여 전송시 수신자는 잘못된 내용을 복호화하여 확인하게 된다.
- IV값이 필요하며 패딩은 필요하지 않는다. CBCmode 와 유사하나 가장 큰 차이점은 IV 를 암호화 하는 여부가 가장 큰 차이점이다.
- 재전송 공격 (Replay Attack) 에 취약하다, 공격자가 일부 블록을 탈취 후 재전송 시 탈취한 블록으로 일부를 치환하여 전송시 수신자는 잘못된 내용을 복호화하여 확인하게 된다.
5. OFB 모드(output feedback, 출력 피드백)
- 블록 암호를 동기식 스트림 암호로 변환한다.
- XOR 명령의 대칭 때문에 암호화와 복호화 방식은 완전히 동일하다.
출력 피드백 모드, 암호 알고리즘의 출력을 암호 알고리즘화 CFB와 비슷한 모습을 취한다.
- IV 값이 필요하며 CFB 방식과 유사하나 가장 큰 차이는 첫번째 XOR 연산의 입력값을 다음 블록에 영향을 미치는지, 출력값을 다음 블록에 영향을 미치는지가 가장 큰 차이점이다
6. CTR 모드(Counter, 카운터)
- 카운터 모드,CFB와 OFB의 장점을 모두 가지고 있는 방식, 1씩 증가하는 카운터를 암호화하여 키 스트림을 만들어 내는스트림암호, 블록을 암호화할때마다 1씩 증가해가는 카운터를 암호화 하는게 가장 큰 특징이다. 또한 다른 mode와 달리 이전 단계의 블록과 영향을 받지않는다.
- IV 및 패딩값이 필요하지 않다, 한번에 모든 블록을 동시에 암호화함으로 매우 빠른 속도를 자랑하며, 최근에 가장 많이 사용되는 mode이다 암,복호화 과정이 완전히 같은 구조이며 프로그램 구현도 매우 간단하다.
카운터 만드는 법
카운터의 초기값은 암호화 때마다 다른 값(비표)을 기초로 해서 만든다. 블록 길이가 128bit인 경우 카운터의 초기값은
아래와 같다.
66 1F 98 CD 37 A3 8B 4B(비표) 00 00 00 00 00 00 00 01(블록 번호)
7. Block cipher mode 정리
모드 | 장점 | 단점 | 권장여부 |
ECB | 간단, 고속 병렬처리 가능 (암호화/복호화 양쪽) |
평문 속의 반복이 암호문에 반영된다. 암호문 블록의 삭제나 교체에 의한 평문의 조작이 가능 비트 단위의 에러가 있는 암호문을 복호화하면 대응하는 블록이 에러가 된다. 재전송 공격이 가능 |
X |
CBC | 평문 반복은 암호문에 반영되지 않는다. 병렬처리 가능 (복호화만) 임의의 암호문 블록을 복호화할 수 있다. |
비트 단위의 에러가 있는 암호문을 복호화하면, 1블록 전체와 다음 블록의 대응하는 비트가 에러가 된다. 암호화에서는 병렬 처리를 할 수 없다. |
O |
CFB | 패딩이 필요 없다, 병렬처리 가능 (복호화만) 임의의 암호문 블록을 복호화 할 수 있다. |
암호화에서는 병렬처리를 할 수 없다. 비트 단위의 에러가 있는 암호문을 복호화하면, 1블록 전체와 다음 블록의 대응하는 비트가 에러가 된다. 재전송 공격이 가능 |
X |
OFB | 패딩이 필요 없다. 암호화/복호화의 사전 준비를 할 수 있다. 암호화와 복호화가 같은 구조를 하고 있다. 비트 단위의 에러가 있는 암호문을 복호화하면, 평문의 대응하는 비트만 에러가 된다. |
병렬 처리를 할 수 없다. 적극적 공격자가 암호문 블록을 비트 반전시키면 대응하는 평문 블록이 비트 반전된다. |
X |
CTR | 패딩이 필요 없다. 암호화/복호화의 사전 준비를 할 수 있다. 암호화와 복호화가 같은 구조를 하고 있다. 비트 단위의 에러가 있는 암호문을 복호화하면, 평문의 대응하는 비트만 에러가 된다. 병렬처리 기능 (암호화/복호화 양쪽) |
적극적 공격자가 암호문 블록을 비트 반전시키면, 대응하는 평문 블록이 비트 반전된다. |
O |
* 참고 사이트
1) https://jae1590.tistory.com/112
'메가노트 > 토픽과제(정리)' 카테고리의 다른 글
DDOS 공격(문경숙) (0) | 2022.10.01 |
---|---|
APT(안혜진) (0) | 2022.10.01 |
NFT 특성과 마켓 플레이스 취약점(문경숙) (0) | 2022.09.24 |
DRM vs. DLP(황선환) (0) | 2022.09.24 |
디지털포렌식 증거수집방법(배준호) (0) | 2022.09.24 |