●비밀키 암호 방식의 문제점
열쇠배송문제 : 키를 보내지 않으면 안되는데 키를 보내서는 안 된다
●열쇠배송 문제의 해결방식
1. 열쇠의 사전공유
2. 열쇠 배포 센터
3. Diffie-Hellman의 열쇠 교환
4. 공개키 암호에 의한 해결
●N명이 통신할 때 키의 숫자를 구하는것
비밀키의 숫자는 n(n-1)/2 이고
공개키는 2n 이다
(비밀키는 대칭이고 공개키는 비대칭이라는걸 생각해보자)
●공개키 암호란
송신자에게 필요한 것은 수신자의 공개키뿐이다
수신자에게 필요한 것은 수신자의 개인키뿐이다
도청자에게 알려지면 곤란한 것은 수신자의 개인키이다
수신자의 공개키는 도청자에게 알려져도 괜찮다.
●공개키 암호의 역사
1976 Diffie 와 Hellman 의 공개키 암호 방식 이론 발표
1977 Merle 와 Hellman 의 Knapsack [배낭]암호
1978년 Rivest.Shamir의 RSA 암호가있다
●공개키 암호는
소인수분해 : RSA . Rabin
이산대수 : Elgamal
Knapsack : Knapsack 암호
타원곡선상의 이산대수 : 타원곡선 암호 로 크게 나뉜다
●공개키 암호를 사용한 흐름
밥은 공개키/개인키로 이루어진 한 쌍의 키를 만든다
밥은 자신의 공개키를 엘리스에게 보낸다
엘리스는 밥의 공개키를 써서 메세지를 암호화한다
엘리스는 암호문을 밥에게 보낸다
밥은 자신의 개인키를 써서 암호문을 복호화한다
●공개키 암호의 기초지식
1. 공개키 암호로 암호화 할때 수신자의 공개키가 필요하다
2. 공개키 암호로 암호화된 암호문을 복호화하기 위해서 공개키암호와 쌍으로 이루고 있는 개인키가 필요하다
3. 공개키 암호의 개인키는 암호화한 메세지와 함께 수신자에게 송신할 필요가 있다
4. 일반적으로 공개키 암호보다도 비밀키가 빠르다
5.소인수분해를 고속으로 푸는 방법이 발견되면 RSA도 고속으로 풀 수 있다.
+ 송신자는 수신자의 공개키를 써서 암호화하고
수신자는 자신의 개인키를 써서 복호화한다는 개념만 알아두자
RSA 암호방식
암호화와 디지털 서명 모두 수행하는 공개키 알고리즘
1978 Rivest . Adleman이 제안했다
합성수의 소인수 분해의 어려움을 이용했다
두개의 소수 p q 를 선택해서 n=pq를 계산 -> p와 q를 알고있는사람은 n을 계산하기는 쉽지만
n만 알고있는 사람은 p와q를 찾는 소인수 분해는 어렵다.
오일러 함수 : 어떤 자연수 n에, n 이하의 자연수 중 n과 서로소인 수의 개수를 대응시키는 함수
RSA 암호방식의 안전성
1.암호문으로부터 평문 구하기 C=Me mod n M을 구하려면 이산대수를 구해야함
2.전수공격 (brute force 공격) d=1024비트 이상 사용한다
3. e와 n으로 부터 d를 구하기 d를 알기위해서는 p.q를 알아야한다
4.중간자 공격 ( 공개키 암호의 취약점 ) -> 막기위해서는 인증서가 필요하다
Rabin 암호
소인수 분해의 어려움을 이용 (RSA)
암호화과정이 RSA 보다빠름
Elgamal 암호
이산대수 문제에 바탕을 둔 공개키 알고리즘
같은 평문이라도 암호화 이루어질때마다 암호문 달라진다
다른 공개키 암호 알고리즘에 비해 길이는 2배라는 단점
RSA보다 안전하지만 속도가느리다
+이산대수 문제
y=g의x제곱 mod p (g=원시원소 p=소수)
g와 x를 알때 y를 구하는것은 쉬운문제 (공개키)
g와 y를 알때 x를 구하는것은 어렵문제 (개인키) log를 사용
'IT > 암호학' 카테고리의 다른 글
(암호학) 스테가노그래피 만들기.스테가노그래피 실습하기 (0) | 2020.04.04 |
---|---|
(암호학 5회차) 메르센소수.에라토스테네스의 체.DES암호 .F함수 . 키스케줄러 (0) | 2020.04.04 |
(암호학 4회차) 현대암호.Shanon Feistel 구조. 스트림암호.Kerchhoft의 원리. 암호해독 등 (0) | 2020.04.04 |
(암호학 3회차) Playfair 암호.애너그램.단순전치암호.니힐리스트암호 .ADFGVX 암호 (0) | 2020.04.04 |
(암호학 2회차)시저암호.단순치환암호.다표식환자암호.스키테일 (0) | 2020.04.04 |