블록 암호 (Block Cipher)
- 평문을 블록 단위로 암호화하는 기법
- 사이즈가 커서 사용
- Stream Cipher와 비교
- Stram Cipher란 데이터 흐름을 순차적으로 처리해 가는 알고리즘의 총체 (XOR)
- 통상적으로 1bit, 8bit, 32bit 등의 단위로 암호화 (or 워드 단위)
- 블록 크기는 사용되는 알고리즘에 따라 결정
- DES, 3DES : 64bit 단윈
- AES : 128bit 단위
- 연속된 블록을 암호화하는 방법
- 전자 코드북 모드 (ECB: Electronic Codebook Mode)
- 암호 블록 체인 모드 (CBC: Cipher Block Chain Mode)
- 출력 피드백 모드 (OFB: Output Feedback Mode)
- 암호 피드백 모드 (CFB: Cipher Feedback Mode)
- 카운터 모드 (CTR: Counter Mode)
전자 코드북 모드 (ECB)
- 각 블록을 동일한 키로 암호화
- 동일한 내용의 평문 블록 → 동일한 암호문 블록
- 코드북 : 번호+숫자 or 평문+암호문
- 제일 단순한 기법
- 잘 사용하지 않음
- 가장 기밀성이 낮음 (암호문만 가지고도 평문의 패턴 파악 가능)
- 평문으로 해독하지 않고도 암호문만 가지고 내용 조작 가능
- 평문 블록 : 암호문 블록 = 1 : 1
- If, 마지막 평문 블록이 블록 길이에 미치지 못할 경우 → 추가하여 블록 길이가 되도록 맞춤
- 암/복호화 과정
- 각각 블록으로 나눔
- 각각 암호화 (같은 키로)
- 이어 붙임
- EBC에서 발생 가능한 평문 조작 공격 예시
- Alice가 Bob에게 100만원을 송금하는 상황 가정
- 전달 메세지가 3개의 부분으로 이루어져 있어서 각각 송신자, 수신자, 금액 정보가 저장되어 있다고 가정
암호 블록 체인 모드 (CBC)
- Cipher Block Chain
- 암호문 블록을 마치 체인처럼 연결
- 평문블록과 직전에 암호화된 블록을 XOR한 결과를 암호 알고리즘에 입력으로 넣는다
- 각각의 암호 블록은 단지 현재 평문 블록 뿐만 아니라 그 이전의 평문 블록들의 영향도 받게 된다
- 첫번째 평문 블록을 암호화 할 때는 직전 암호화된 블록 자리에 사전에 약속된 IV (Initialization Vector) 값을 넣는다
- 암/복호화 과정
- 평문 블록이 서로 같아도 암호문 블록은 다를 가능성이 높으므로 패턴 파악이 어려움
- 앞이 깨지면(비트가 다르면) 뒤에도 다 깨져 복호화 불가 → 깨지는 범위가 크다는 단점 (사소함)
- CBC 모드의 특징
- 평문 블록은 반드시 "한 단계 앞의 암호문 블록" 과 XOR을 취하고 나서 암호화
- 만약 어떤 2개 평문 블록 1과 2에 대해 이 둘이 서로 같다고 하더라도 암호문 블록1과 2의 값이 같아진다고 할 수 없다
- 암호문 블록 3을 만들고 싶다면 적어도 평문 블록의 1, 2까지가 갖추어져 있어야만 한다
- ECB 모드가 갖고 있는 결점이 CBC 모드에 없다
- CBC 모드에서는 암호문 2개의 위치를 바꾸면 아예 복호화가 안된다
- 암호문 중 어느 한 블록이 한 비트라도 잘못 전송되게 되면 그 블록과 바로 다음 블록이 영향을 받는다
- ECB 모드에서 가능했던 공격은 CBC에서는 성공이 불가능
- 다른 공격 방식들
- Padding Oracle 공격 (16의 배수를 만들기 위해 덧붙이는 것)
- 초기화 벡터에 대한 공격
- 위 2개 모두 성공률이 낮은 공격들이기 때문에 CBC 모드는 많은 곳에서 활용 중
- 3DES-EDL-CBC
- AES-256-CBC
- 위의 두 기법들은 SSL/TLS에서 사용되는 모드
- Minor한 장점
- n번째 블록을 복호화 하기 위해서는 (n-1)번째 암호블럭만 추가로 필요
- 도착한대로 보여줄 수 있다
암호 피드백 모드 (CFB)
- Cipher Feedback
- 앞 단계의 암호문 블록을 암호 알고리즘의 입력으로 사용하는 모드
- 일회용 패드와 유사
- 평문 블록2 변동 → 암호문 블록 2,3,4 다 변동
CFB 모드와 CBC 모드의 비교 및 특징
- CBC vs CFB 모드
- CBC 모드 : 평문과 그에 해당하는 암호문 사이에 암호화 과정이 있음
- CFB 모드 : 그런 과정은 없고 XOR 연산만 있음
- 일회용 패드 vs CFB 모드
- 일회용 패드 : 완전히 무작위로 생성된 값과 평문이 XOR 연산
- CFB 모드 : 난수가 아닌 다른 암호문 블록과 평문 XOR 연산, 복호화 할 때도 암호화 알고리즘이 들어감
CFB 모드에 대한 재전송 공격
- Alice가 Bob에게 보냈던 메세지를 공격자가 가로챘다가, 나중에 재사용하는 공격
- 재전송 공격을 이용해서 공격자가 Alice가 Bob에게 보냈던 메세지의 일부를 다시 보낼 수 있다
- 이전에 보낸걸 keep (내용 몰라도 됨) → 나중에 다시 보냄
출력 피드백 모드 (OFB)
- Output Feedback
- 특징
- 암호화 될 때마다 IV (Initializing Vector)가 무작위 생성
- CFB와 마찬가지로 평문이 직접 암호화되는 것이 아니라 암호화된 다른 값과 평문이 XOR 연산 됨으로써 암호화가 이루어짐
- CFB와 마찬가지로 암호문을 복호화 할 때도 암호화 알고리즘 사용
- IV 의 암호화된 버전만 잘 관리할 수 있다면 미리 IV 의 암호화된 값들을 계산해 놓고 있다가 나중에 암호화 요청이 들어왔을 때 평문과 XOR 연산만 수행하여 빠르게 암호화 할 수 있음
Counter 모드 (CTR)
- 쌍방이 같은 counter 여야 함 → Synchronization O
- 카운터 초깃값
- 암호화 때마다 다른 값 (nonce, 비표(비밀로 하는 표)) 을 기초로 해서 작성
- 예시
- 앞부분은 비표로 암호화 할 때마다 다른 값을 사용해야 한다
- 뒷부분은 블록번호로 1씩 증가시켜 가면 된다
- 특징
- 데이터 암호 시 주로 사용
- 효율성 : CTR은 각 블록들을 병렬로 암호화 가능, 이전과 연관성 X
- 사전처리 : 메모리가 충분하고 보안만 잘 유지할 수 있다면 카운터의 암호화된 결과를 미리 저장 가능, 이후 실제 암/복호화 할 때 XOR 연산만 수행하면 되므로 매우 빠른 속도로 처리 가능
- 임의 접근 : 중간 블록만 복호화 가능
- 단순성 : 복호화 = 암호화 알고리즘
'Computer Science > Network Security' 카테고리의 다른 글
[CS][알기 쉬운 정보보호개론 3판] Chapter07. 하이브리드 암호 시스템 (1) | 2023.10.17 |
---|---|
[CS][알기 쉬운 정보보호개론 3판] Chapter06. 공개키 암호 (2) | 2023.10.17 |
[CS][알기 쉬운 정보보호개론 3판] Chapter04. 대칭 암호 (0) | 2023.10.16 |
[CS][네트워크보안] Chapter03. 암호의 역사 (2) | 2023.10.14 |
[CS][네트워크보안] Chapter2. 암호의 세계 (0) | 2023.10.13 |