오래 못 할 짓 하지 않기

[ 컴퓨터 보안 ] 12. Cryptography : Asymmetric Key ( 비대칭키 ) 본문

3학년 2학기/컴퓨터 보안(Computer Security)

[ 컴퓨터 보안 ] 12. Cryptography : Asymmetric Key ( 비대칭키 )

쫑알bot 2024. 11. 1. 12:01
728x90

📌 대칭키의 문제

 

- Number of Keys

- Key distribution

 

➡️ 사용자가 많아지는 경우, 같은 Key를 쓴다면

       A유저가 B유저에게로 가는 메시지를 훔쳐서 Key로 악의적으로 사용할 수 있다.

 

이런 상황을 피하려고 계속 키를 만들다보면

n명에 대해서 우리는 n(n-1)/2 개의 Key가 필요하다.

 


Asymmetric Key

: Private Key + Public Key

 

 

Bob 의 Public Key로 Encrypt 했으면

Bob의 Private Key로 Decrypt 해야한다.

 

 

 

1. Customer들은 은행으로부터 받은 Public Key를 가지고 데이터를 Encrypt한다. ( Public Key는 모두가 가지고 있다.)

2. 은행은 Customer로부터 받은 데이터를 Private Key를 가지고 Decrpyt한다.     ( Private Key는 은행만 가지고 있다.)

 

 

 

Q. 그럼 비대칭키가 더 보안적으로 안전하니까 이것만 쓰면 되는가?

A. 대칭키와 비대칭키는 서로 보완적인 관계다. 상황에 따라 맞게 대칭키/비대칭키를 사용하면 된다.

 

 

📌작동 방식

1. Sender가 Data 를 Symmetric Key를 가지고 Cipher Text로 변환한다.

2. Symmetric Key를 Input으로, Public Key를 가지고 암호화한다.

3. Sender가 Receiver에게 [ Plain text + Symmetric을 Public key로 Decrypt한 값 ] 을 Envelop 해서 보낸다.

4. Decrypt 알고리즘에서는 Enveloped 정보와 Private Key를 가지고 Symmetric Key를 얻는다.

5. Enveloped 된 정보에서 Cipher Text를 방금 구한 Symmetric Key를 가지고 Decrypt한다.

 

 

위와 같은 사진에서,, 

[ 위에서 오는 걸 Input 으로 ] [ 아래에서 들어오는 걸 Key로 ] 사용하여 알고리즘을 돌린다고 생각하자.

 

1. Sender가 Data 를 Symmetric Key를 가지고 Cipher Text로 변환한다.

 

 

 

Symmetric Key. 즉, Cipher text를 복호화 시키기 위해서 필요한 Key를 한 번 B-Public Key를 가지고 돌린다.

 

2. Symmetric Key를 Input으로, Public Key를 가지고 암호화한다.

 

그렇다면 지금 상황을 보면

1) Plain Text를 얻기 위해서는 Symmetric Key가 있어야 하고
2) Symmetric Key를 갖기 위해서는 Private Key가 있어야 한다. ( Public 으로 Encrypt한 건 Private으로 Decrypt )

 

 

3. Sender가 Receiver에게 [ Plain text + Symmetric을 Public key로 Decrypt한 값 ] 을 Envelop 해서 보낸다.  

 

Symmetric Key를 Public Key로 Encrypt한 걸 다시 Decrypt하려고 한다.

4. Decrypt 알고리즘에서는 Enveloped 정보와 Private Key를 가지고 Symmetric Key를 얻는다.

 

 

 

 

5. Enveloped 된 정보에서 Cipher Text를 방금 구한 Symmetric Key를 가지고 Decrypt한다.

 


RSA Algorithm

📌 작동 방식

1. (엄청 큰) 두 소수 P,Q를 고른다.

2.  N = P x Q

3. Public Key  E ➡️ (P-1) 이나 (Q-1)의 약수가 아니어야

4. Private Key  D ➡️ (D*E) % [ (P-1)* (Q-1) ] = 1 이어야함  

 

[ 전송 과정 ]

5. Cipher Text = (Plain text)^E  % N

6. 전송

7. Plain Text = (Cipher text)^D % N

 

‼️ P랑 Q는 최소 512bits 여야 한다. = N은 최소 1024bits 

 

예시

 

A = 1

B = 2 라고 할 때 우린 F를 보낼 것이다.

F=6 

 

1. P,Q를 구한다 

  > P=7 , Q=17

 

2. N을 구한다 = 7*17 =119

 

3. Public Key E를 구한다. 

   > E=5  ==> 6(7-1)이나 16(17-1) 의 약수가 아니다.

 

4. Private Key D를 구한다.

   > D=77 ==> 77*5  % 7*16 = 1

 

5. Encryption 

 > Cipher Text = 6^E  % mod N

                         = 6^5  % mod 119

                         = 41

 

7. Decrpytion

> Plain Text = 41^D  % mod N

                         = 41^77  % mod 119

                         = 6 = F

 

 


그 밑에 수학적인 거 다 할 줄 알아야 함

 

 

(출처)

한동대학교 고윤민교수님 - 컴퓨터 보안