본문 바로가기

정보보호/정보보호론(박승철)

정보보호론-(12) 블록 암호 동작 모드와 중앙 집중형 키 분배

정보보호론-(12) 블록 암호 동작 모드와 중앙 집중형 키 분배

블록 암호 동작 모드란?
- 암호학에서 블록 암호 운용 방식(block cipher modes of operation)은 하나의 키 하에서 블록 암호를 반복적으로 안전하게 이용하게 하는 절차를 말한다. 블록 암호는 특정한 길이의 블록 단위로 동작하기 때문에, 가변 길이 데이터를 암호화하기 위해서는 먼저 이들을 단위 블록들로 나누어야 하며, 그리고 그 블록들을 어떻게 암호화할지를 정해야 하는데, 이때 블록들의 암호화 방식을 운용 방식으로 부른다.
- 즉, 가변 길이 input 데이터를 블록으로 나눠 암호화하는 블록 암호화 기법을 적용하는데 그 때 그 블록들을 어떤 방법으로 암호화 할 것인지에 대한 것

블록 암호 동작 모드
- ECB(Electronic CodeBook)
- CBC(Cipher Block Chaning)
- CFB(Cipher FeedBack)
- OFB(Output FeedBack)
- CTR(Counter)

ECB(Electronic CodeBook) 모드
- 평문을 m개의 블록으로 나눔
- 각 블록에 대해 동일한 키(Key)를 적용함.

<그림 1: ECB 모드>

- 각 블록의 암호화 과정이 다른 블록 암호화 과정과 독립적이므로 암호 연산을 병렬화 시킬 수 있다.
- 그러나, 평문(A)에 대한 암호문(A')은 항상 동일하게 나타날 것이므로 암호 블록 교체 공격에 취약하다.

암호 블록 교체 공격?
- 금융권 데이터 송/수신 형식을 송금자/수신자/금액이라고 가정하고 ECB 모드를 적용시켜 암호화 했다고 하자.
ECB 암호의 결과 : A'/B'/C'. 해커는 암호문을 스니핑하여 수신자에게 A'/B'/C' 대신 B'/A'/C'과 같이 송/수신자를 서로 바꾸어 공격할 수 있는 것.
- 즉, ECB는 동일한 평문(A)에 대해서는 항상 똑같은 암호문(A')이 나오는 것이 문제임

CBC(Cipher Block Chaning) 모드
- 평문 블록을 암호화하기 전에 직전의 암호문 블록과 XOR 연산을 수행
- 각 블록의 암호화하는데 사용하는 키는 모두 동일함

<그림 2: CBC 모드>

- P(1)이후의 평문 P(2), P(3)...P(N)은 P1의 암호문에 영향을 받음.(의존적인 관계, dependent)
- 즉, ECB 모드에서 평문(A)는 항상 동일한 암호문(A')으로 암호화됐지만 CBC 모드에서는 해당 평문이 어디에 위치했느냐(순서)에 따라 산출되는 암호문이 다름.
- 그러나, 위와 같은 의존적 관계 때문에 한 개의 블록 파손(=비트 변경)이 여러개의 블록에 영향을 미침

<그림 3: C(1)이 손상된 CBC 모드>

- C(1)이 손상된 상태에서 C(1)을 복호화하면 손상된 평문 P'(1)을 얻게 된다.
- 그러나, 이전 암호문과 의존적인 CBC 모드에서는 C(2)를 복호화할 때 C(1)과 XOR 연산을 수행하므로 이 때 얻어지는 평문, P(2)가 손상되어 진다.
- 하지만 C(2)는 손상되지 않았기 떄문에 그 이후의 복호화 C(3) -> P(3)에는 영향을 주지 않는다.

<그림 4: P(1)이 손상된 CBC 모드>

- P(1)이 손상되었으므로 이를 암호화한 C(1)도 손상된 결과를 얻는다.
- 그런데, CBC 모드에서는 평문을 암호화할 때 이전 암호문과 XOR하므로 P(2)를 암호화 할때 손상된 C(1)과 XOR연산을 하게 되어 최종적으로 C(2)도 손상된다.
- 손상된 C(2)로 말미암아 손상된 C(3)...C(N)까지 그 이후의 모든 암호화과정이 손상된다.

CTR(CounTeR) 모드
- 카운터(Counter)를 사용하여 랜덤성이 보장되는 n-비트 블록을 생성하여 대칭키 블록 암호화에 입력한다.
- 블록 암호화 기반의 스트림 암호 방식이다.
- 병렬처리가 가능하다

<그림 5: CTR 모드>

 

중앙집중형 대칭키 분배 방법, Kerberos
- 대칭키 암호화 방식은 사용자간 동일한 대칭키를 소유하고 있어야 하므로 최초 키 분배과정이 주요한 문제이다.
- 이를 해결하는 기법 중 하나가 '중앙집중형 대칭키 분배 방법, Kerberos' 이다.

세션 키(Session Key)
- 통신 세션이 게시될 때 할당되고 세션이 종료되면 폐기되는 동적인 대칭 키

키 분배 센터(KDC, Key Distribution Center)
- 중앙에 신뢰할 수 있는 키 분배 센터
- 사용자는 자신의 식별자(ID)와 대칭키를 KDC에 등록한다.

<그림 6: KDC>
<그림 7: KDC 프로토콜 동작 방법>

- 사용자(A)는 사용자(B)와 통신하기 위해 KDC에게 세션키(Session Key, S(AB))를 요청한다.
- KDC는 사용자(A)의 대칭키 K(A)를 사용하여 세션키,S(AB),와 E(K(B),A,S(AB))를 암호화한 암호문을 전달한다.
- 사용자(A)는 수신한 암호문을 자신의 대칭키 K(A)를 사용하여 복호화 할 수 있어 세션키 S(AB)를 획득하였고  사용자(B)에게는 E(K(B),A,S(AB))를 전달한다.
- 사용자(B)는 자신의 대칭키 K(B)를 사용하여 수신한 암호문을 복호화 할 수 있어 통신하고자 하는 대상이 A인것을 확인할 수 있고 이때 사용되는 세션키가 S(AB)임을 확인할 수 있다.
- 이후 사용자(A)와 사용자(B)는 세션키 S(AB)를 사용한 암/복호화를 통한 데이터 송/수신을 진행한다.

KDC 프로토콜의 취약점
- 그러나 KDC 프로토콜은 재현 공격(Replay Attack)에 취약하다.
- 세션키는 일회성이므로 이것이 상대적으로 관리가 취약한점을 이용한 중간자 공격이 가능하다
- 공격자는 네트워크 상 암호문인 E(K(A),  S(AB), E(K(B),A,S(AB))를 보관한다.
- 즉, 공격자는 사용자(A)가 KDC로 사용자(B)간의 통신을 위한 세션키 할당을 요청할 때 자신이 KDC를 가장한 중간자 공격을 통해 사용자(A)가 이전에 요청받았던 동일한 E(K(A),  S(AB), E(K(B),A,S(AB)) 를 전달한다.
- 사용자(A)와 사용자(B)는 세션키 S(AB)를 이용한 통신을 진행하지만 공격자는 관리가 허술한 S(AB)값을 알고 있으므로 통신 내용이 공격자에게 노출된다.

KDC 프로토콜의 재현 공격 해결책
- 사용자와 KDC간 통신할 때 임의의 값(=challenge)를 섞는 해결책, challenge/response 프로토콜을 사용한다.
- 공격자가 암호문을 스니핑해서 얻더라도 추후에 재현 공격을 하더라도 임의의 값(=challenge)가 매번 달라져 사용자는 공격자가 보낸 패킷이 재현 공격임을 알아챌 수 있음

<그림 8: challenge/response 방식>

- R(A) : 임의의 값(=challenge)

Reference
1.

제12강+블록암호동작모드와중앙집중형키분배.pdf
0.65MB

2. https://www.youtube.com/watch?v=vNaiVydjOt4