본문 바로가기

정보보호/금융부문 암호기술 활용 가이드(금융보안원)

금융부문 암호기술 - (4) 블록 암호화 운영 모드(Block Cipher Mode)

금융부문 암호기술 - (4) 블록 암호화 운영 모드(Block Cipher Mode)

블록/공개키 암호화 패딩 기법
- 암호화 운영모드를 적용하기 전에 아래와 같은 목적으로 패딩 기법이 적용된다.
(1) 평문과 암호문의 관계성을 낮추기 위함
(2) 블록 크기를 맞추기 위함
- 블록 암호의 경우 빈자리 만큼 0비트를 붙이거나 1을 추가한 후 0비트를 덧붙이는 방식이 존재
- 공개키 암호에서는 PKCS#1에 나타난 내용으로 패딩처리하는 것이 일반적

대칭키 블록 암호 알고리즘 운영모드
# 블록암호 운영모드의 목적
(1) 암호 알고리즘에 의해 생성된 블록 간에 연관성을 주는 것(각 블록이 동일한 암호문을 생성한다면 암호문에서 평문을 추론하기 쉬우므로 각 블록간 연관성을 주어 이를 방어하는 것. ECB와 CBC를 보면 됨)
(2) 초기벡터를 추가하여 출력값으로부터 입력값을 유추하기 어렵게 만듦

NIST에서 승인된 대칭키 블록 운영모드

용도 대칭키 블록 운영모드 금융권 이용분야 구체적 예시
기밀성 ECB, CBC, CFB, OFB, CTR, XTS-AES 거래내용 암호화 SEED128-CBC
인증 CMAC 신용카드 결제 AES, SEED128-CMAC
기밀성/인증 CCM, GCM, KW, KWP 교통카드 지불 AES, SEED128-CCM

- 각 대칭키 블록 운영모드에 따라 목적이 다르다(기밀성, 인증, 기밀성/인증)
- 가장 많은 국가에서 권고하고 다양한 분야에 사용되는 운영보드는 CBCCTR이다.
- 금융권에서 주로 이용되는 운영모드는 CBC방식이다. CBC 운영모드는 초기벡터를 제 2의 키로 사용할 수 있다는 점에서 보안성이 높아 다른 운영모드에 비해 안전한 것으로 알려졌다. 하지만 암호화 시 블록을 병렬로 처리하는 것이 불가능하고 암호문이 블록의 배수가 되기 때문에 복호화 후 평문을 얻기 위해 패딩해야 한다는 단점이 있다.
- 최근에 CBC모드를 사용할 경우 평문이 일부 해독될 수 있는 취약점이 발견되어 CTR 모드 사용을 권함
- 통신 프로토콜에서는 CBC모드가 암호블록의 무결성을 보장하지 않는다는 점이 알려지면서 CBC 대신 GCM운영모드 사용이 권장됨

공개키 블록 암호 알고리즘 운영모드
- 현 금융권에서는 공개키 암호 알고리즘으로 주로 RSA를 사용함

공개키 암호 운영모드

용도 공개키 암호 운영모드 금융권 이용분야 예시
전자서명 RSASSA-PSS 키 전송 시 서명 계좌이체 부인방치
RSASSA-PKCS#1(v1.5) 거래내용 전자서명 거래내용에 대한 PKCS#7 SignedData 전자생성문 생성
KCDSA - 행정전자서명인증서에 사용
ECDSA, EC-KCDSA 키패드 보안 상호인증 ECDSA
키 교환 및 암호화용 DH, ECDH 스마트 뱅킹 가상 키 패드에서 ECDH 사용
VPN 키 교환
RSAES-OAEP 세션키 교환 증권 시스템

- RSA는 같은 평문을 암호화 하는 경우 항상 동일한 암호문을 출력하는 특성때문에 암호문으로 쉽게 평문을 추측할 수 있다. 따라서 메시지에 난수를 넣어 같은 평문을 암호화해도 매번 다른 암호문을 출력하도록하는 OAEP 패딩기법을 적용해야 한다. OAEP 기술은 규격화되어 PKCS#1와 RFC2437에 표준화 되어 있다
- EMC가 제정한 RSA 암호 표준에 의하면 데이터 암/복호화에 사용되는 운영모드로 RSAES-PKCS#1(v1.5)와 RSAES-OAEP를 이용할 수 있는데 국내 환경에선 RSAES-OAEP를 권장한다.
- 전자서명용도로는 RSASSA-PKCS#1(v1.5), RSASSA-PSS, KCDSA, ECDSA, EC-KCDSA를 권장
- 금융권에서 키 전송 시 사용하는 공개키 암호 운영모드 : RSA-OAEP
- 금융권에서 키 전송 과정의 전자서명 시 사용되는 암호 운영모드 : RSASSA-PSS
- 보안관리자를 인증하거나 거래 내용에 대한 전자서명 시 사용하는 암호 운영모드 : RSASSA-PKCS#1