대칭 암호방식 : 암호화 키 = 복호화 키 => 비밀키를 사용하는 방식이다.

-> 이 비밀 키로 암호화, 복호화를 진행한다

=> 키 분배가 어렵다 : n명이 있으면 한 명당 키가 n-1개 존재해야 함 

-> 사용자가 1000명이면 1명당 키가 999개

비대칭 암호화 방식의 필요성 : 대칭 암호화 방식의 "키 배포"에 대한 문제에 대한 보완책키 

키 배포 : 대칭 암호화 방식에서는 비밀 키가 사전에 미리 공유되어야 한다.

 

대칭키 : 비밀 키 

C = E(KAB) (M) // 암호화

M = D(KAB) (C) // 복호화

비대칭키 : 공개 키, 개인 키

C = E(eA) (M) // 암호화

M = D(dA) (C) // 복호화

 

비대칭 암호화 방식

1. 디피-헬만 키 교환(Diffie-Hellman Key Exchange) : 1976년 처음으로 비대칭 암호화 방식 제안

-> 키 분배에서만 사용(프로토콜)

- 소수(prime)을 이용한 나머지 연산을 사용

-> 통신을 통해 미리 배포되지 않은 새로운 비밀키 s를 공유하는 것이 목표

과정 (이산대수 문제 : NP 문제 => 구하기 어려운 문제다 즉, 안전하다.)

1. 공개된 숫자 p, g 설정(원시 원소 설정)

2. 사람1가 자신의 숫자 A를 자신의 개인키 a에서 계산 A = g^a mod p

3. 사람2가 자신의 숫자 B를 자신의 개인키 b에서 계산 B = g^b mod p

4. 사람1가 사람 2가 보낸 B와 자신의 개인키 a로 비밀키 s를 계산 S = g^(a*b) mod p

S = B^a mod p = (g^b)^a mod p = g^(a*b) mod p

5. 사람2가 사람 1가 보낸 A와 자신의 개인키 b로 비밀키 s를 계산 S = g^(a*b) mod p 

S = A^b mod p = (g^a)^b mod p = g^(a*b) mod p

D-H Key Exchange

2. RSA

- 비대칭 암호화 방식 중 실질적인 산업 표준

- 1977년 Ron Rivest, Adi Shamir, Leonard Adleman 세 사람이 RSA라는 암호화 시스템을 만듦

-> 앞 글자 하나 씩 따서 R, S, A 즉, RSA 명칭을 만듦

- 암호화, 복호화뿐 아니라 전자서명 등의 다양한 기능을 제공 가능

- D-H 키 교환에서 사용된 비대칭 알고리즘에 기반을 둔 암호화 방식
공개 키 : 외부에 공개할 수 있는 키

비밀 키 : 자신만이 알고 있어야 하는 키

 

비대칭 암호화 방식 1 : 기밀성 보장

- 공개키로 암호화, 개인키로 복호화

- 암호화된 메세지는 사람 2의 개인키로만 복호화 가능 : 기밀성 보장

A

비밀리에 소유 : 

소수 : p,q

개인키 : d(a)

B

비밀리에 소유 :

소수 : p, q

개인키 : d(b)

 

전체 공개 :

공개키 : e(a), e(b)

공개 : N(합성수)

 

과정

1. 메세지 M을 선택

2. 계산 (상대방의 공개키를 사용)

A가 계산할 때 C = E(eB) (M) mod N을 B에게 보내준다.

-> M^(eB) mod N

3. 다음과 같이 복호 한다.  (자신의 개인키를 사용)

B가 복호 M = D(eB) (C)

-> C^(dB) mod N = M(eB*dB) Mod N = M^1 mod N = M mod N

 

이 방식을 사용하면 중간에 도청할 수 없고 하더라도 암호화된 메세지를 복호화할 수 없다.

 

비대칭 암호화 방식 2 : 무결성 제공

- 개인키로 암호화, 공개키로 복호화

-> A의 공개키로만 복호화 가능

-> 부인 방지 보장 + 무결성 보장

 

A

비밀리에 소유:

dA, p, q

 

B

비밀리에 소유:

dA, p, q

 

전체 공개

eA, eB 공개

N = p*q 공개

 

과정

1. 서명할 메세지 M을 선택

2. 다음과 같이 계산 (자기 자신의 개인키를 사용하여 메세지 M을 서명)

S = E(dA) (M) = M^(dA) mod N

3. 다음과 같이 복호 (상대방(A)의 공개키 사용)

M = D(eA) (S) = (M^(dA))^(eA) = M^(eA*dA) Mod N = M^1 = M

 

이는 제 3자도 복호화가 가능하며 이 메세지는 A만 암호화시킬 수 있다.(작성할 수 있다.)

 

대칭 키는 전자서명이 불가능하다.

비대칭 키를 사용하는 이유 중 하나는 전자서명을 사용할 수 있어서다.

 

RSA 암호 시스템 생성

1. 소수 (p, q)를 생성 (비밀리에 보관)

2. 다음과 같이 계산

N=p*q 공개

3. 공개키를 계산

(e, N)=1 (N, e가 서로소 : 서로 나누어지지 않는 수)

4. 다음과 같이 개인키 계산

d*e mod N-1 = 1  mod N-1

5. 다음과 같이 메세지 M 암호

C = M^e mod N

6. 다음과 같이 암호문 C를 복호

M = C^d mod N = M^(e*d) mod N = M^1 mod N = M

 

타원 곡선 암호 (ECC : Elliptic Curve Cryptosystems)

장점 :

1. RSA에 비해 크기가 작으면서도 높은 보안성 제공

ex) RSA 키 크기가 1024비트인 보안 수준 -> ECC는 160비트 정도 (RSA의 약 1/6 정도 수준)

2. 암호화 및 복호화 속도가 RSA보다 빠름

3. 자원 사용 효율성이 높음 -> 스마트카드, 휴대전화 등 작은 하드웨어에서도 잘 동작

 

엘가말

라빈

 

대칭 암호화 방식은 

암호화키 = 복호화 키

키는 비밀키로 구성 되어있으며

예시는 DES, 3DES, AES가 있다.

속도는 빠르다.

제공 서비스는 기밀성이다.

 

비대칭 암호화 방식은

암호화 키와 복호화 키가 다르며

키는 공개키, 개인키로 구성 되어있고

예시는 RSA, EDD가 있다.

속도는 느리다.

제공 서비스는 기밀성, 부인 방지 및 인증이다.

'학교수업' 카테고리의 다른 글

<시험정리> 웹 개발 기초 기말고사  (0) 2021.12.07
웹개발기초 14주차  (0) 2021.12.04
가상현실 프로그래밍 13주차  (0) 2021.12.03
가상현실 프로그래밍 12주차  (0) 2021.12.01
임베디드 기초 12주차  (0) 2021.11.30

+ Recent posts