🔒 Cryptography

20200502

권기웅

Table Of Contents

  • 암호란 무엇일까요
  • 암호를 알기 위한 사전 지식
  • 암호의 역사
  • 고대 암호학
  • 근대 암호학
  • 현대 암호학

🔒 Cryptography

암호란 무엇일까요?

비밀을 유지하기 위하여 당사자끼리만   있도록 꾸민 약속 기호.

🔒 Cryptography

암호란 무엇일까요?

우리가 아는 암호: 비밀번호

 

→ 비밀번호는 나와 내 상대방만 진짜 정보를 알 수 있다

→ 비밀번호는 나와 상대방만 알 수 있는 비밀스러운 것

🔒 Cryptography

암호란 무엇일까요?

비밀번호 486은 모르는 사람을 알 수 없도록 Encrypt 됨

🔒 Cryptography

암호를 위한 사전 지식

암호를 공부하기 위해 알아야 할 몇 가지 용어를 정리해 보겠어요 📚

🔒 Cryptography

암호를 위한 사전 지식

Plain Text

Cipher Text

Encryption

Sender

Receiver

Entity

Adversary

Key

Key Space

Cryptographic Algorithm

Hash

Symmetric-Key Algorithm

Asymmetric-Key Algorithm

PseudoRandom Number

🔒 Cryptography

암호를 위한 사전 지식

Plain Text; 평문 - 암호화 되지 않고 의미를 가지는 것

Cipher Text; 암호문 - 암호화 되고 정보 자체로는 의미가 없는 것

Encryption; 암호화 - 의미를 알 수 없는 형식(암호문)으로 변환하는 것

Decryption; 복호(화) - 암호화(encryption, encipherment) 과정의 역과정                                           암호 알고리듬에 의하여 암호문을 평문으로 바꾸는 과정

Key; 키 - 암호를 풀 수 있도록 사전에 약속된 정보 (자물쇠의 열쇠)

🔒 Cryptography

암호를 위한 사전 지식

실제로 많은 암호학 관련 책에서 통용되는 이름입니다

🔒 Cryptography

암호를 위한 사전 지식

 Key Space; 키 공간 - 암호 키에 대한 가능한 값의 범위

 

e.g,. 단일 치환 암호의 키 공간은 26! 이다

🔒 Cryptography

암호를 위한 사전 지식

여기서 다루지 않은 내용은 나중에 나옵니다요

🔒 Cryptography

암호의 역사 - 고대 암호학

고대 암호학

🔒 Cryptography

암호의 역사 - 고대 암호학

누구나 비밀은 있다

🔒 Cryptography

암호의 역사 - 고대 암호학

RUSQHUVKBVEHQIIQIYDQJEH

🔒 Cryptography

암호의 역사 - 고대 암호학

BE CAREFUL ASSASINATOR

🔒 Cryptography

암호의 역사 - 고대 암호학

시저 암호

 

A-Z 를 1부터 26에 대응하여 약속된 만큼 앞/뒤로 이동하여 다른 문자로 치환하는 암호

🔒 Cryptography

암호의 역사 - 고대 암호학

시저 암호의 키 공간

 

c = E(p, k) = (p + k) mod 26

E: encrypt, p: plaintext, k: key, c: cipher

🔒 Cryptography

암호의 역사 - 고대 암호학

키가 26개라고? 다 해보면 되겠네

🔒 Cryptography

암호의 역사 - 고대 암호학

단일 치환 암호의 키 공간

 

알파벳 26문자를 무작위로 나열한 집합과 원래의 26문자를

서로 1대1 대응시켜 암호문을 생성하는 방법

(송/수신자는 치환표를 공유해야 한다)

🔒 Cryptography

암호의 역사 - 고대 암호학

단일 치환 암호의 키 공간

 

26! (알파벳으로만 한정했을 경우)

(1초에 키 10억개를 조사해도 120억년이 걸림)

🔒 Cryptography

암호의 역사 - 고대 암호학

엥 근데 왜 이거 안쓰죠?

🔒 Cryptography

암호의 역사 - 고대 암호학

빈도 분석, 패턴 유추 등 다양한 방법으로 털림

자세한 내용은 이 슬라이드를...

🔒 Cryptography

암호의 역사 - 고대 암호학

요약하자면, Cipher Text 는 그 자체가 가지는 의미가 없어야 하는데, 문자만 치환 (Substitution) 되었을 뿐 의미는 존재할 수 있음

🔒 Cryptography

암호의 역사 - 고대 암호학

스테가노그래피

 

Stegano; 감춰진 + graphy; 글

= 암호이지만 암호가 아닌척 하는 것

🔒 Cryptography

암호의 역사 - 고대 암호학

최초의 스테가노그래피는...

머리카락이 없으면 암호도 못숨기는거임 엌...

🔒 Cryptography

암호의 역사 - 고대 암호학

🔒 Cryptography

암호의 역사 - 고대 암호학

스테가노그래피를 쓰면

 

1. 암호가 아닌 척 할 수 있어 안티멀웨어 프로그램을 우회할 수 있음

2. 등잔밑이 어두움

🔒 Cryptography

암호의 역사 - 고대 암호학

스테가노그래피를 써도

 

1. 나와 동일한 정보를 이미 가지고 있는 사람은 쉽게 발견할 수 있음

2. 디지털 파일의 Checksum 확인

🔒 Cryptography

암호의 역사 - 고대 암호학

🔒 Cryptography

암호의 역사 - 근대 암호학

다중 치환 암호

 

암호문에서 패턴을 없애기 위해 모든 문자를 동일한 빈도로 치환하자

🔒 Cryptography

암호의 역사 - 근대 암호학

다중 치환 암호

 

비장느르 암호, 에니그마 기계, 일회용 암호표

🔒 Cryptography

암호의 역사 - 근대 암호학

다중치환 암호는 무작위 속성에 근거하여 생성됨

🔒 Cryptography

암호의 역사 - 근대 암호학

사람이 완벽한 무작위를 만들어 낼 수 있을까요?

🔒 Cryptography

암호의 역사 - 근대 암호학

무작위 동전 던지기의 결과가 구분되나요?

🔒 Cryptography

암호의 역사 - 근대 암호학

에니그마 (Enigma); 수수께끼

 

독일의 세르비우스가 20세기 초에 발명한

암호화/복호화를 수행하는 기계

🔒 Cryptography

암호의 역사 - 근대 암호학

에니그마 (Enigma) 의 두뇌; 로터

 

26개의 순열을 가진 기어 3개가 입력할 때 마다

각각이 맞물려 회전한다

🔒 Cryptography

암호의 역사 - 근대 암호학

🔒 Cryptography

암호의 역사 - 근대 암호학

🔒 Cryptography

암호의 역사 - 근대 암호학

가능한 조합의 수

 

6x26x26x26x26x26x26 = 1,853,494,656

로터의 위치 변경, 각각의 순열, 임의의 설정 등

🔒 Cryptography

암호의 역사 - 근대 암호학

하지만 코드북이 털려서 앨런 튜링에게 정벜...

🔒 Cryptography

암호의 역사 - 근대 암호학

다음 시간엔 일회용 패드, DES 에 대해...

🔒 Cryptography

암호의 역사 - 근대 암호학

근대 암호학

🔒 Cryptography

암호의 역사 - 근대 암호학

암호 알고리즘과 암호 키

🔒 Cryptography

암호의 역사 - 근대 암호학

암호 알고리즘

시저 암호

단일 치환 암호

에니그마 (통신키)

에니그마 (통신문)

문자 수를 약속만큼 평행이동한다

평행이동할 문자 수

치환표에 따라 알파벳을 변환

치환표

치환표에 따라 알파벳을 변환

로터순서, 각도, 플러그보드 연결선

치환표에 따라 알파벳을 변환

로터의 각도

🔒 Cryptography

암호의 역사 - 근대 암호학

자물쇠 설계도는 대부분 공개 특허로 등록되어 있다

= 암호 알고리즘은 반복사용하고, 키(자물쇠 열쇠)는 서로 다르게

비트열 암호화와 XOR 연산

🔒 Cryptography

XOR 연산

🔒 Cryptography

XOR 연산

비트의 XOR 연산은 다음과 같은 법칙이 있죠

 

0 + 0 = 0

1 + 1 = 0

...

1 + 0 = 1

0 + 1 = 1

🔒 Cryptography

XOR 연산

다음과 같은 수를 XOR 연산하면 어떻게 될까요?
 

   10110010

⊕ 10110010

                   ?

🔒 Cryptography

XOR 연산

A: 10110010

B: 11001110

A ⊕ B ⊕ B = ?

 

B ⊕ B = 00000000

A ⊕ 00000000 = A

 

앗 뭔가 그럴싸하네요?

🔒 Cryptography

XOR 연산

A 👉🏻 Plaintext, B 👉🏻 Key 라고 가정하면

C=Eʙ(A), P=Dк(C) 와 같이 암복호화를 할 수 있네요

🔒 Cryptography

XOR 연산

흑백 그림의 각 점을 0, 1로 생각한다면 아래와 같은 마스킹이 되겠네요

원본

AND 연산

OR 연산

XOR 연산

🔒 Cryptography

One-Time Pad

XOR 을 활용한 절대 해독 불가능한 암호 맨들기

One-Time Pad (일회용 패드)

🔒 Cryptography

One-Time Pad

결과인 'ygwhmaqtn' 을 해독하려면

Brute-force 방법밖에 존재 하지 않네요

그리고 일회용 패드가 절대 해독불가한 이유가

여기에 있습니다

🔒 Cryptography

One-Time Pad

2¹¹ = 2048 가지의 패턴을 모두 도출해야 하는데

답이 'Takagisan', 'Nishitaka' 인지

또 다른 11글자인 'anniversary', 'forgiveness' 인지 알수가 없다는 점입니다 🤔

🔒 Cryptography

One-Time Pad

일회용 패드는 해독할 수 없고 무조건 안전하다는것이

1949년 섀논에 의해 수학적으로 증명되었습니다

 

엥? 근데 이거 왜 안씀?

🔒 Cryptography

One-Time Pad

암호문은 안전해 졌는데...

이제는 키를 지켜야 하는 상황이 생겼습니다

 

키가 없으면 절대 다시 복호화 할 수 없으니까요

🔒 Cryptography

One-Time Pad

키를 안전하게 보관할 수 있는 방법이 있다면

애초에 평문을 안전하게 보관할 수 있는데?

 

= 평문을 지킨다 👉🏻 평문과 같은 길이의 키를 지킨다

🔒 Cryptography

One-Time Pad

이래서 킹냥이를 키워야 합니다

 이거 완전 주객전도...

🔒 Cryptography

One-Time Pad

키 보존, 키 전달 = 평문과의 주객 전도

키 동기화 = 평문이 길면 키도 길어짐

키 생성 = 완전한 난수를 구현해야 함

실제로 컴퓨터는 완전한 난수를 생성할수는 없습니다

의사난수, 시드 등등을 찾아보시길 🙇🏻‍♂️

🔒 Cryptography

One-Time Pad

키 보존, 키 전달 = 평문과의 주객 전도

키 동기화 = 평문이 길면 키도 길어짐

키 생성 = 완전한 난수를 구현해야 함

실제로 컴퓨터는 완전한 난수를 생성할수는 없습니다

의사난수, 시드 등등을 찾아보시길 🙇🏻‍♂️

🔒 Cryptography

One-Time Pad

🔒 Cryptography

암호의 역사 - 현대 암호학

현대 암호학

🔒 Cryptography

암호의 역사 - 현대 암호학

대칭키 알고리즘: DES, AES

비대칭키 알고리즘: RSA

🔒 Cryptography

DES

DES (Data Encryption Standard)

🔒 Cryptography

DES

64비트 평문을 64비트 암호문으로 암호화 하는 대칭 암호 알고리즘

대칭암호 알고리즘은 동일한 키를 공유해야 한다는거 이제는 아시죠?

🔒 Cryptography

DES

평문이 64비트가 넘어가면 암호화를 못하나요? 🙋🏻‍♀️

👉🏻 블록 암호를 사용하면 됩니다

🔒 Cryptography

DES

🔒 Cryptography

DES

Feistel Network의 1 Round

 

0. 첫 라운드 시작 전 Initial Permutation 을 거친다

1. 입력을 L/R로 분기한다

2. R을 그대로 R로 보낸다

3. R을 라운드 함수 F로 보낸다

4. F(R, K₁) 을 통해 랜덤 비트열을 생성 (K₁ = 서브키)

5. 4에서 생성된 비트열과 L을 XOR 연산한다. 그 결과를 L로 보낸다

6. 다음 라운드에서는 L과 R을 교환하여 라운드를 수행한다

 암호화 되지 않은 R은 다음 라운드에서 암호화 된다

🔒 Cryptography

DES

암호 알고리즘 설계의 기본원칙

Confusion(혼돈) & Diffusion(확산)

Confusion: Between plain text and cipher text is obscured (or hidden)

Diffusion: The influence of one each plain text bit is spread over many cipher text bits

🔒 Cryptography

DES

S-box(Substitution), P-Box (Permutation)

비트열을 Shuffling 하는 방법으로 Diffusion 과 Confusion 을 만족하기 위한 절차

🔒 Cryptography

DES

라운드 함수 F

 

0. R의 입력 32비트를 48비트로 확장(Expansion)한다

1. 키 스케쥴러에서 생성된 라운드별 Subkey(48bits) 와 XOR 연산 수행

2. S-box 를 거쳐 다시 32비트로 돌아옴

👉🏻 이 때 값의 48비트와 32비트간의 연관성이 없어도 됨

🤔 지금 끄덕이시면 됩니다...

🔒 Cryptography

DES

Scheduled Key Generator

 

0. Initial Key 를 기준으로 PC1 (Permute Choice 1, 64bit) 을 생성

1. 8bit 의 Parity bits 를 제거하고 28bit 로 양분

2. 각 라운드별로 지정된 만큼 좌측으로 Shift (우리가 아는 비트 시프트 연산입니다)

3. 다음 라운드는 다시 PC2 를 생성하고 1~2를 반복

🤔 지금 끄덕이시면 됩니다...

🔒 Cryptography

DES

Initial Permutation

 

초기 평문을 순열치환하는 과정. 비트열을 셔플링하여 Diff/Conf 를 만족시키기 위함

모든 라운드가 끝난 마지막에도 수행 (Final Permutation, FP는 IP⁻¹ (IP의 역치환))

🔒 Cryptography

DES

DES 의 전체적인 흐름

🔒 Cryptography

DES

이렇게만 보면 어떻게 해독하나 싶은데... 이미 다털림

 

97년 DES Challenge: 96일

98년 DES Challenge: 41일

98년 DES Challenge: 56시간

99년 DES Challenge: 22시간 15분

🔒 Cryptography

DES

DES 알고리즘 대한 공격

 

차분 해독법: 평문과 암호문관계를 조사 (RSA 만든 사람이...)

선형 해독법: 평문과 암호문 비트를 몇 개 정도 XOR 해서 0이 되는 확률을 조사하는 해독 방법

 

차분 공격에 대한 글 (40분 읽고 5%도 이해 못한 제가 레전드)

🔒 Cryptography

DES

그래서 이거 말고 대안은...?

 

3-DES: DES 를 3번 수행함 (키의 길이를 156bits 로 늘려 전수조사를 힘들게 함)
DES 를 3번 수행하는 만큼, 암/복호화 속도가 느림

 

AES: 128bits 블록 암호. DES의 대안으로 현재도 널리 사용 중

🔒 Cryptography

DES

3번 해도 똑같은 취약점...

🔒 Cryptography

DES

그럼에도 얼마전에 TDES 인증키를 처리했었죠

아직 일부 금융권에서는 사용 중

🔒 Cryptography

AES

AES (Advanced Encryption Standard)

🔒 Cryptography

AES

나아지지 않으면 발전할 수 없다고 생각합니다

🔒 Cryptography

AES

DES를 Brute Force로 해독 가능해지면서

새로운 표준 암호 알고리즘이 필요

🔒 Cryptography

AES

미국 표준화 기구 NIST 에서 공모

다음의 조건을 만족하는 대칭 암호 알고리즘일 것

🔒 Cryptography

AES

  1. 설계 규격과 프로그램을 공개할 것
  2. 전 세계에서 아무 제한 없이 (무료로) 사용가능할 것
  3. 속도가 빠를 것
  4. 단순하고 구현하기 쉬울 것
  5. 최대한 하드웨어에 구애받지 않을 것

🔒 Cryptography

AES

🔒 Cryptography

AES

???: 만들었는데요

🔒 Cryptography

AES

사실 레인달 알고리즘 말고도 후보는 총 15개 였는데, 4년간 여러번의 학회를 거쳐 Rijndael 알고리즘이 채택됨

🔒 Cryptography

AES

  1. 대칭키 암호화 알고리즘 중 가장 널리 사용됨
  2. 키 길이를 선택적으로 활용 가능 (128/196/256)
  3. 대부분의 연산이 XOR, Shift 로 이루어져 빠름
  4. 설계가 공개되어 있음

🔒 Cryptography

AES

Substitution - Permutation Network

128 bit 를 4x4 행렬로 나타내어 암호화

병렬 연산이 가능

별도의 복호화 모듈이 필요함 (역함수)

🔒 Cryptography

AES

하나의 블럭의 상태를 4x4 행렬로 표현

AES 연산 단위는 8비트(1바이트)

🔒 Cryptography

AES

1. SubByes

최초의 상태를 S-Box를 통해 치환한다

하나의 원소를 전/후 4bit로 나누어 처리

전방향/역방향 S-Box가 존재

Confusion 증가의 역할

🔒 Cryptography

AES

2. Shift Rows

각 Row 별로 0~3바이트 만큼 Left Shift 한다

decryption 시에는 거꾸로 shift 한다

🔒 Cryptography

AES

3. Mix Columns

그냥 섞는다는것만 알아주세요...

행렬곱/역행렬곱을 사용합니다

곱셈 법칙은 GF(2^8)에서 이루어집니다

🔒 Cryptography

AES

4. Add Round Key

AES Key Schedule 알고리즘으로 생성된

SubKey와 XOR 연산한다

🔒 Cryptography

AES

1. 128bit의 Key를 4개의 32비트 워드로 치환

2. 마지막 워드는 1바이트 Left Shift

3. 2의 결과를 전방향 S-box로 치환

4. 라운드상수(n) 과 XOR 연산

5. 2~4를 수행한 결과로 첫 워드 생성

6. 다음 워드는 2~4 반복

7. 2~6을 키 길이만큼의 라운드를 반복하여 키 생성

🔒 Cryptography

AES

Decryption

 

역방향 S-box

XOR의 역원

역행렬

역함수

...

등을 사용하여 복호화 모듈을 구현한다

🔒 Cryptography

AES

AES 및 암호 알고리즘을 이해하는 수학적 배경지식

 

Galois Field (Finite Field)

 

https://www.youtube.com/watch?v=x1v2tX4_dkQ&t=1982s

https://freshrimpsushi.tistory.com/820

...

🔒 Cryptography

AES

AES 암호화 알고리즘은 다양한 분야에서 사용됩니다

👉🏻 MacOS FileVault

👉🏻 TLS

👉🏻 VPN

👉🏻 마스터 패스워드

👉🏻 사용자 간 메시지 암호화

 

... 등등

🔒 Cryptography

Modulo

드디어 비대칭키 를! 하기 전에 Modulo 연산부터 알아봐요

합동과 동치관계

모듈로 덧셈/뺄셈

모듈로 곱셈

모듈로 거듭제곱

모듈로 역수

🔒 Cryptography

Modulo - 합동/동치

두 a, b의 숫자가 n을 modular한 결과 값이 같다면, 이를 모듈러 합동관계라고 한다

a\mod n = b\mod n \newline a\equiv b\mod n

🔒 Cryptography

Modulo - 합동/동치

따라서 다음의 식은 동등하다는 것을 이해해야 합니다

A\mod\equiv B\pmod C \newline A\mod C = B\mod C \newline C \ |\ (A - B) \newline A = B + K * C\ (K는 정수)

🔒 Cryptography

Modulo - 합동/동치

동치관계가 중요한것은 다음의 특성 때문입니다

반사성: A와 B가 관계가 있음

대칭성: A와 B가 관계있다면, B도 A와 관계가 있음

추이성: A와 B가 관계있다면, A와 C도 관계가 있음

🔒 Cryptography

공개키 암호화

키 배송의 문제

대칭암호 알고리즘은 다음의 문제가 발생합니다

 

1. 앨리스와 밥 사이를 도청하는 이브가 존재

2. 앨리스는 키로 암호화된 암호문을 밥에게 전송

3. 이브는 중간에서 암호문을 도청

4. 앨리스는 밥에게 복호화 할 수 있는 키를 보내야 함

5. 키를 보내면, 이브가 도청하여 복호화 가능

🔒 Cryptography

공개키 암호화

키 배송의 문제를 해결하기 위해서는...

 

1. 키를 사전에 배포한다

2. 키 배포 센터를 운영한다

3. Diffie-Hellman 키 교환을 사용한다

3. 공개 키 암호를 사용한다

🔒 Cryptography

공개키 암호화

🔒 Cryptography

공개키 암호화

이 방법을 수학적으로 적용할 수 있으면 좋겠다!

 

이산로그 문제

🔒 Cryptography

공개키 암호화

🔒 Cryptography

RSA 암호화

색을 통한 암호화를 이해하셨다면

이 방법을 계산으로 옮겼다고 볼 수 있습니다

m^e\mod N\equiv ? \newline ?^e\mod N\equiv c

🔒 Cryptography

RSA 암호화

m^e\mod N\equiv ? \newline ?^e\mod N\equiv c \newline c^d\mod N\equiv m \newline m^e*m^d\mod N\equiv m

🔒 Cryptography

RSA 암호화

🔒 Cryptography

RSA 암호화

🔒 Cryptography

RSA 암호화

🔒 Cryptography

RSA 암호화

🔒 Cryptography

RSA 암호화

🔒 Cryptography

RSA 암호화

암호화할 때에는 마음대로

해독할 때는 안됨을 기본으로 하는 공개키 암호체계

 

Ron Rivest, Adi Shamir, Leonard Adleman

🔒 Cryptography

RSA 암호화

양자 컴퓨터 시대가 오면 소인수 분해를 납득가능한 시간내에 풀이할 수 있겠지만... (쇼어 알고리즘)

 

https://www.ibs.re.kr/cop/bbs/BBSMSTR_000000000901/selectBoardArticle.do?nttId=14100&pageIndex=1

🔒 Cryptography

RSA 암호화

그렇다고 엄청나게 안정적인 것은 아닙니다

 

RSA-768bit 까지는 Cracked 된 상태

🔒 Cryptography

RSA 암호화

용두사미로 끝났네요... 감사합니다

Cryptography 101

By Doon Doon

Cryptography 101

암호에 대한 전반적인 얕은 지식을 다룹니다

  • 1,003