본문 바로가기

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

정보보호론-(10) 암호화 기술 개요

정보보호론-(10) 암호화 기술 개요

<그림 1: 암호화의 원리>

암호화 알고리즘이란?
- 복호화 키가 있을 때는 쉽게 암호문(Ciphertext)으로부터 평문(Plaintext)를 구할 수 있으나 그렇지 않은 경우 평문(Plaintext)을 구하기가 계산상으로 불가능한 트랩도어(trapdoor) 함수

대칭키 암호화(Symmetric Key Encryption)
- 메시지의 송신자가 사용하는 암호화 키와 수신자가 사용하는 복호화 키가 동일한 암호화 기법

공개키 암호화(Public Key Encryption)
- 공개키(Public Key)를 일반에 공개하고 개인키(Private Key)는 개인적으로 비밀리에 보관하는 비대칭키 암호화(Asymmetric Encryption)

암호화의 기본적인 동작
- 치환(substitution), 전치(transposition)
- 암호화 = 치환 + 전치

치환(substitution)
- 평문의 문자 또는 숫자를 다른 문자 또는 숫자로 대체함으로써 평문의 내용을 숨기는 동작
- 키 : 치환표

전치(transposition)
- 평문의 문자 또는 숫자의 위치를 변경함으로써 평문의 내용을 변경하는 동작
- 키 : 전치 수열

키 공간의 크기(Key Space size)
- 암호화 키가 가질 수 있는 경우의 수의 총합

키 비트 수 : 하나의 키를 지칭하는 데 필요한 비트 수
- log2[키 공간의 크기]
- 26개의 문자로 구성된 평문의 치환표 : log2[26!]

<그림 2: 카이사르 암호(=시저 암호)>

단일 문자 치환 암호
- 평문 메시지에서 문자의 위치에 따라 치환문자를 다르게 정의하는 것.
- 대표적인 예 : 비즈네르(Vigenere) 암호

<그림 3: 비즈네르 암호표>

# 비즈네르 암호 예시
- Key : KOREA
- P : ABCDEFGH
- C : KPTHEPUY

일회용 패드(One-Time pad) 암호
- 평문의 문자를 임의의 문자로 치환
- 일회용 패드 암호 키 : 평문과 같은 길이의 치환 문자열 + 매번 다른 키를 적용
- 매번 다른 평문의 길이에 따라 그에 똑같은 길이의 키를 생성하고 배포하는 것은 현실적으로 어려워 일회용 패드 암호는 비현실적인 기법임.

암호 해독 공격
(1) 암호문 단독 공격(Ciphertext Only Attack)
- 공격자에게 암호문만이 알려진 상태에서 평문 또는 키를 해독하는 기법
- 공격자가 가진 정보 : 암호문

(2) 알려진 평문 공격(Known Plaintext Attack)
- 공격자에게 일부 알려진 평문에 대한 암호문이 알려진 상태에서 평문 또는 키를 해독하는 기법
- 공격자가 가진 정보 : (평문->암호문)

(3) 선택 평문 공격(Selective Plaintext Attack)
- 공격자가 암호기(Encryption System)에 접근할 수 있는 경우 사용하는 공격 기법
- 수많은 평문을 암호기를 통해 암호화 시켜 (P1,P2...Pn)에 대응하는 (C1,C2...Cn)을 얻는다.
- 분석하고자 하는 암호문(Cn)과 동일한 암호문(C7)을 찾음으로써 Cn의 평문은 P7임을 발견하는 원리
- 공격자가 가진 정보 : (평문->암호문)을 가능하게하는 암호기

(4) 선택 암호문 공격(Chosen Ciphertext Attack)
- 공격자가 복호기(Decryption System)에 접근할 수 있는 경우 사용하는 공격 기법
수많은 암호문을 복호기를 통해 복호화 시켜 (C1,C2...Cn)에 대응하는 (P1,P2...Pn)을 얻는다.
- 분석하고자 하는 암호문(Cn)과 동일한 암호문(C7)을 찾음으로써 Cn의 평문은 P7임을 발견하는 원리
- 공격자가 가진 정보 : (암호문->평문)을 가능하게하는 복호기

현대 대칭키 블록 암호화
블록 암호화란?
- n-비트 평문 블록을 암호화하고 n-비트 암호문 블록을 복호화하는 것
- n=64,128,256,512

블록 암호화 기본 연산
- P-Box
- S-Box
- XOR 연산

현대 암호화는 데이터를 byte단위로 관리하므로 byte단위로 암/복화할 수 있는 암호화기법인 블록 암호화를 주로 사용한다. 블록 암호화는 XOR(배타적 논리합 연산)의 연산 특성을 이용하여 Bit의 암/복호화 기능을 구현하고 P-Box, S-Box를 이용하여 치환(Substitution), 전치(Transposition)을 통해 복잡성을 늘인다.

P-Box
- 전치(Transposition) 연산의 도구
(a) 수평 전치 : input 길이 = output 길이
(b) 확장 전치 : input 길이 < output 길이
(c) 축소 전치 : input 길이 > output 길이

<그림 4: P-Box>

S-Box
- 치환(Substitution)연산의 도구

<그림 5: S-Box>

배타적 논리합 연산(XOR)
- 0 XOR 0 = 0
- 0 XOR 1 = 1
- 1 XOR 0 = 1
- 1 XOR 1 = 0

XOR 연산의 특성
- 결합 법칙의 성립
- 교환 법칙의 성립
- 항등원은 0(*항등원? 연산시 자기 자신이 결과로 나오게 하는 피연산자)
- 역원은 자기 자신(*역원? 연산시 항등원이 결과로 나오게 하는 피연산자)

대칭키 블록 암호화 기본 동작 절차
(1) Key로 생성한 랜덤 bit열과 평문을 XOR 연산
(2) (1)의 결과물을 P-Box, S-Box를 거쳐 복잡도를 증가시켜 얻어진 암호문으로부터 평문을 쉽게 추론할 수 없도록 함

Reference
1. 

제10강+암호화기술개요.pdf
1.05MB

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