3학년 겨울방학을 알차게 보내기 위해서 동아리에서 진행하는 암호 스터디를 신청하였다!!

책 이름은 "Serious Cryptography 처음 배우는 암호화"이다.

모든 챕터마다 간단하게 요약정리해서 글로 남기기로 했다.


암호화를 위해서는 알고리즘(암호) + 비밀 값(키 or 열쇠) 필요!

1) 대칭 암호화(symmetric encryption) : 암호화에 사용하는 키=복호화(decryption)에 사용하는 키

- 장점 : 빠르다.

- 단점 : 키를 주고받을 때 안전하지 않을 수 있다.

2) 비대칭 암호화(asymmetric encryption), 공개 키 암호화(public-key encryption) : 암호화에 사용하는 키 != 복호화에 사용하는 키

- 장점 : 키를 주고받지 않아도 안전하게 통신할 수 있다.

- 단점 : 느리다.

1.1 기초

평문(plaintext) ---(암호화)---> 암호문(ciphertext)

평문(plaintext) <---(복호화)---​ 암호문(ciphertext)

암호문 C = E( K , P )으로 표기

복호문 P = D( K , C )으로 표기

** 암호문이 평문보다 짧은 암호는 없다!!

1.2 고전암호(classical cipher)

고전암호에는 대표적으로 시저암호비즈네르 암호가 있다.

1.2.1 시저 암호(Caesar cipher)

: 각 글자에서 3자리 뒤로 순환 이동 ( ex) A -> D ) -> 키가 3이라는 뜻!

: 복호화 하기 위해서는 3자리 앞으로 이동하면 됨 -> 깨기 쉬움

1.2.2 비즈네르 암호(Vigenere cipher)

: 시저 암호와 비슷, but 키가 일련의 글자로 이루어져 있음.

ex) 키가 DUH라고 가정하면, D는 A와 3차이, U는 20차이, H는 7 차이 -> 평문을 3자리씩 잘라서(키의 길이만큼) 3,20,7씩 이동

평문 : CRYPTO

키 : DUH

암호문 : FLFSNV ( C가 3만큼 뒤로 이동하면 F, R이 20만큼 뒤로 이동하면 L 이런 식으로 암호화 )

: 암호를 깨기 위해서는

1) 키의 길이 알아내기

- 예를 들어 암호문이 ABCJKIDJEABC 라고 치면 같은 패턴(ABC)이 9자리 간격으로 생김. 그러면 키의 길이를 9의 약수 중 하나라고 추론하는 것

2) 도수분석 ( frequency analysis; 또는 빈도분석 )

- 암호문에서 문자들의 빈도를 분석해서 제일 많은 문자를 E가 암호화되었다고 생각한다. ( 영어에서 가장 흔히 쓰이는 글자가 E, T, A, O, I 순이기 때문에 )

↓ english letter frequency ranking

 

Frequency Table

 

pi.math.cornell.edu

 

1.3 암호의 작동 방식

암호의 주된 구성요소 = 치환 ( permutation ) , 운영모드 ( mode of operation; 운용 방식 )

- 치환 : 주어진 한 항목을 변환하는 함수 ( 조건 : 고유한 역원 존재해야 함 )

- 운영모드 : 치환을 이용해서 임의의 길이의 메시지를 처리하는 데 쓰이는 알고리즘

1.3.1 치환

고전암호는 대입 ( substitution ; 대체 )을 수행. -> substitution은 한 문자를 다른 문자로 바꿔서 confusion의 목적을 둠

암호를 위한 대입은 반드시 치환이어야 한다. -> 각 글자에 정확히 하나의 역원이 존재해야 한다.

"안전한 치환 ( secure permutation )" -> permutation은 문장 순서를 바꿔서 diffusion의 목적을 둠

1) 치환은 반드시 키로 결정되어야 함.

2) 키가 다르면 치환도 다름.

3) 무작위 해 보여야 함.

1.3.2 운영 모드

만약 평문에 BANANA와 같이 특정 패턴이 있어버리면 암호문에도 이것이 드러나게 된다.

운영모드를 사용하여 중복 글자 패턴이 드러나는 문제를 완화한다.

ex) ECB, CBC, CFB, OFB, CTR

1.4 OTP ( One Time Pad )

가장 안전한 암호 : 키가 엄청나게 길고 한번 쓰고 버림

bitwise XOR 연산을 통해서 암호화, 복호화를 한다.

키는 평문의 길이와 같으며 키를 위한 또 다른 공간이 존재해야 해서 활용하기 불편. ( 공간상의 낭비 )

완벽한 보안성을 달성하려면 키가 평문보다 짧아서는 안된다.

1.5 암호의 보안성

어떠한 시스템이 안전하다? 보안개념(security notion) 을 서술해야 함.

보안 개념은 보안목표 - 공격 모형 형태로 나타냄.

1.5.1 공격 모형

- 케르크호프스의 원리 ( Kerckhoffs's principle ) : 한 암호의 보안성은 오직 키의 비밀성에만 의존해야 한다. -> 적이 암호시스템 훔쳐 가도 문제가 되어서는 안된다. --> 모든 모형이 공통적으로 두는 가정

1) 공격 모형 - 블랙박스 모형

- COA ( ciphertext-only attackers ) : 공격자가 불리한 공격 , 암호문만 알뿐 해당 평문 알지 못함. 암호화 질의 X, 복호화 질의 X

- KPA ( known-plaintext attackers ) : 암호문에 대응하는 일부 평문을 알 수 있다, 암호문과 평문과의 관계로부터 키와 전체 평문을 추정하여 해독, 암호화 질의 X, 복호화 질의 X

- CPA ( chosen-plaintext attackers ) : 암호화 질의 O

- CCA ( chosen-ciphertext attackers ) : 암호화 질의 O, 복호화 질의 O

2) 공격 모형 - 그레이박스 모형

: 암호의 구현( implementation) 에 접근 가능

: 시스템에 물리적으로 접근해서 알고리즘 내부를 건드릴 수 있다.

- 부채널 공격(side-channel attack) : 공격자는 아날로그 특성을 관찰, 측정만 하여 구현의 무결성을 훼손 X

- 침습적 공격(invasive attack) : 암호 구현을 강하게 공격 , 구현의 무결성을 훼손할 수도 있다.

+ 공격 모형에 화이트박스 모형도 있음ㅎㅎ

1.5.2 보안 목표

- 비구별성(indistinguishability, IND) : 암호문은 무작위 문자열과 구분할 수 없어야 안전하다.

- 비가소성(non-malleability, NM) : 어떤 평문에 대한 암호문을 안다고 해서, 다른 평문에 대한 암호문을 얻을 수 없어야 안전하다.

1.5.3 보안 개념

- 의미론적 보안 IND-CPA

목적 : 키의 비밀이 유지되는 한 공격자가 암호문으로부터 평문에 관해 그 어떤 정보도 알아내지 못해야한다.

-> 이를 위해 무작위 암호화 ( randomized encryption ) 사용 , 이때 DRBG(결정론적 무작위 비트 발생기) 사용

** 보안 개념들의 함의 관계 -> 교수님께 여쭤보기 ㅜㅜ

1.6 비대칭 암호화

- 키가 2개 사용

- 암호화할 때는 receiver의 공개키를 사용

- 복호화할 때는 receiver의 개인키를 사용

- 공개키를 가지고 있는 사람이면 누구나 암호화 질의를 수행할 수 있다. -> 기본 공격 모형 : CPA

* 하이브리드 암호시스템 ( 대칭 암호화와 비대칭 암호화의 조합 )

-> 대칭 암호화의 장점 : 빠르다.

-> 비대칭 암호화의 장점 : 키를 안 주고 받아도 된다.

하이브리드 암호시스템의 암호화 과정

1.7 암 · 복호화 이외의 암호의 용도

1) 인증 암호화 ( Authenticated encryption, AE )

: 암호화하면 인증값 T 을 같이 돌려준다.

- AEAD ( Authenticated encryption with associated data )

: 흔히 평문 헤더와 암호화된 페이로드 ex) 네트워크 패킷들을 전송하기 위해서 목적지 주소는 평문이어야한다.

2) 형태 보존 암호화 ( format - preserving encryption, FPE )

: 평문과 같은 형태의 암호문을 생성!! ex) IP주소를 IP주소로 암호화, ZIP 코드( 미국의 우편번호 )를 ZIP코드로 암호화

3) 완전 준동형 암호화 ( fully homomorphic encryption, FHE )

: 암호문을 복호화하지 않고 또 다른 암호문으로 바꿈

: 느리다!!

4) 검색 기능 암호화 ( searchable encryption )

: 암호화된 데이터베이스에 대한 검색 가능

: 검색 질의 자체를 암호화해서 검색어 유출 방지

ex) 내가 클라우드에 고객들의 정보를 저장한다고 했을 때, '김포렌' 라는 고객의 정보를 알고 싶어서 쿼리를 날리면 검색 기능 암호화를 지원하면 '김포렌'를 암호화해서 암호화된 데이터베이스에 접근하여 정보를 나에게 다시 보내주고 우리는 그것을 복호화 해서 보면 된다. -> 마음 놓고 클라우드 서비스를 이용할 수 있다. ( 안전하기 때문 )

5) 조율 가능 암호화 ( tweakable encryption, TE )

: 조율값(tweak)이라고 부르는 추가적인 매개변수 있다.

: 주된 용도는 디스크 암호화 -> 저장 장치의 내용을 암호화 하는 데 쓰임. ( 무작위 암호화 같은 경우는 자료의 길이가 길어지기 때문에 사용할 수 없음, 암호화때문에 길이가 길어지면,,, 납득 불가! )

: 암호화되는 자료의 위치( 디스크 내의 섹터 번호, 블록 색인 )에 의존하는 조율값 활용