×
Crocus
공부한 내용을 정리하는 블로그로 시작한
Crocus는 2014년 1월 14일 부터 시작하여
현재 월 6만명, 총 1,583,131명의 방문자 수를 기록하고 있습니다.
Donation
이제 많은 사용자들이 이용하는 만큼
더 다양한 서비스 개발/제공을 위해 후원금을 모금하고자 합니다.
후원을 해주시는 분들은 Donators 명단에 성명, 후원금을 기입해드리며
Crocus 블로그가 아닌 다른 곳에 정리해둔 저만의 내용을 공유해 드리고자 합니다.
Account
예금주 : 고관우
신한은행 : 110-334-866541
카카오뱅크 : 3333-01-7888060

👉 후원 페이지 바로가기 Donators
익명 : 5000원(Crocus응원합니다.)
busyhuman: 5000원(유용한 지식 감사합니다.)
익명 : 5000원(알고리즘 학습러)
728x90
반응형


목차


1. 공개키 암호(Public Key Cryptography)란?


2. 공개키 암호화 모델링 및 이용 방법


3. 공개키 암호의 문제점





1. 공개키 암호(Public Key Cryptography)란?



공개키 암호학이 생기기 전에는 대칭키를 이용하여 암호화를 하였다.


즉, A와 B라는 사람이 서로 같은 키를 가지고 있어야하는데, 만나서 서로 키를 교환하면 안전할 수 있지만


만나지 않고 키를 전송하는 방식으로 교환하면 C라는 사람에게 탈취를 당할 수 있게 되는 문제점도 생기고


만약 여러 사람이 있다면, 각자의 사람이 서로의 키를 교환해야 하기 때문에 결국


nC2라는 키 생성이 필요하다. (즉, 사람이 많아질수록 키가 너무 방대하게 많아져 관리하기 불편해진다.)



이러한 대칭키(비밀키) 방식을 이용하면 키의 분배, 디지털 서명이 불가능하다는 것에 대해 단점이 있긴 하지만, 


비대칭키(공개키, 비공개키)보다는 약 1000배 빠르다고 알려져있다.


하지만 속도를 감수하더라도 키의 분배의 편의성, 디지털 서명을 위해 비대칭키를 이용 할 수 있다.


즉, 공개키(비대칭키) 방식은 A자신의 공개키를 여기저기 뿌려두고 B가 A에게 정보를 전송해야할 경우가 생기면


B는 A의 공개키로 암호화 한 후 A에게 보내면 그 정보는 A만 볼 수 있게 된다.


아래 그림을 보자.



1. B의 공개키와 개인키 생성

2. B의 공개키는 공개하고 개인키는 개인이 소유

3. A는 B의 공개키로 메시지를 암호화

4. B는 자신의 개인키로 메시지 복호화

    (B의 개인키를 모르는 제 3자는 메시지 복호 불가능)




공개키 알고리즘은 이제 다음과 같이 정리 할 수 있다.


공개키 알고리즘


두개의 다른 키를 사용한다.

- 공개키 : 모든 사람이 접근 가능한 키(공개)

- 개인키 : 각 사용자 자신만이 소유하는 키(비공개)


공개키 알고리즘의 특징


- 암호 알고리즘과 암호키를 알아도 복호키 계산이 불가능하다.

- 두개의 키 중 하나는 암호에, 다른 하나는 복호에 사용된다.


관용 암호(대칭 키) 

공개키 암호(비대칭 키) 

- 암호/복호에 동일한 키와 동일한 알고리즘이 사용된다.

- 암호/복호에 동일한 알고리즘 사용하지만 서로 다른 키를 이용 

- 수신자와 송신자는 키를 교환해야 한다.

- 수신자와 송신자는 키 교환이 필요없다.(공개키 이용) 

- 공유한 키(비밀키)는 비밀로 유지 

- 키 쌍중 하나(개인키)를 비밀로 유지 

- 키 분배가 어렵다. 

- 공개키만 공개하면 된다

- 속도가 비대칭키 방식에 비해 1000배 빠르다

- 속도가 대칭키 방식에 비해 1000배 느리다




대표적인 공개키 암호방식은 다음과 같다.





2. 공개키 암호화 모델링 및 이용 방법



공개키 암호의 단순 모델은 다음과 같다.


대표적인 예로 공인인증서의 방식을 보자.



1. B의 공개키와 개인키 생성

2. B의 공개키는 공개하고 개인키는 개인이 소유

3. A는 B의 공개키로 메시지를 암호화

4. B는 자신의 개인키로 메시지 복호화

    (B의 개인키를 모르는 제 3자는 메시지 복호 불가능)




공개키 암호 시스템기밀성을가지고 있다.


- 공개키로 암호화함으로써 메시지 기밀성을 제공할 수 있다.



공개키 암호 시스템인증의 기능을 가질 수 있다.


- 개인키로 서명함으로써 송신자가 인증했음을 알 수 있다.




위의 두가지를 조합하여 공개키 암호 시스템의 기밀성과 인증의 기능 두가지를 다 이용해볼 수 있다.





3. 공개키 암호의 문제점


공격 유형


1. 전사적 공격에 취약

sol. 키의 크기를 크게 함으로써 방지(상대적으로 속도가 느려진다.)


2. 공개키로부터 개인키를 계산하는 방법

sol. 수학적으로 계산이 불가능함을 증명하지 못함(즉, 가능할 수 도 있다.)


3. 가능한 메시지 공격(메시지 길이가 작을 때)

모든 가능한 메시지를 공개키로 암호화하여 암호문과 비교

sol. 메시지에 임의의 비트를 추가함으로써 방지




공개키를 공개 발표하는경우 다음과 같은 상황이 일어날 수 있다.


1. 어떤 사용자 C가 A와 B사이의 메시지 교환 중간에서 B의 공개키를 탈취하여 C의 공개키를 보낸다.


2. A는 눈치채지 못한 채 C의 공개키로 평문을 암호화 하여 B에게 보낸다.


3. C는 C의 개인키로 복호화하여 평문을 습득하고 다시 B의 공개키로 암호화하여 B에게 보낸다.


4. B는 B의 개인키로 복호화하여 평문을 습득했지만, 이미 해킹당했다.


이를 해결하기 위해 특별 기관을 이용하거나 

다른 방식(디피 헬만 알고리즘 :: http://www.crocus.co.kr/1233)을 이용하여 공개키 또한 안전하게 교환해야 한다.







반응형
  1. KJS 2020.01.17 22:36

    1. B의 공개키와 개인키 생성

    2. B의 공개키는.....

    이 부분이 중복되어 있네요

    • 가누 2020.01.17 22:59 신고

      상관없는것으로 판단되는데 혹시 내용면으로 이상한 부분이있을까요??

  2. 정말 간단하지만 완벽한 설명이네요 2020.04.14 13:57

    감사합니다. 무릎을 3번 탁 치고 갑니다.