RSA기법은 먼저 소수인 p와 q를 선택을 하는데 예전에는 10^100정도의 소수를 사용했다. 최근에는 컴퓨터의 계산속도가 급격히 빨라져서 10^200정도의 소수를 사용한다. n을 소인수분해 하여 암호값을 찾기 때문에 n은 p, q로 이루어진 합성수여야 한다. e(개인키)는 GCD(e, Φ(n)) = 1 인 값을 사용한다. 따라서 d(공개키)는 e * d = 1 mod Φ(n)인 값을 선택한다. e와 d는 mod Φ(n)에서 곱셈에 대한 역원관계이다. 하지만 e와 n을 알더라도 Φ(n)을 계산하기 힘들기 때문에 d를 알수없다. 이것이 수학적인 난제이다.
이때 주의해야 할 점은 0을 제외하고 최소 26개의 잉여계를 가져야 알파벳을 사용해서 암호화가 가능하다.
실습 : 문장을 기술하고 공개키가 14일때 개인키를 구하고 암호문과 선언문을 작성해라
비밀키를 분배함에 있어서 문제점은 기밀성과 무결성이 있다. 기밀성은 어떻게 하면 안전하게 키를 분배할까에 관한 문제고, 무결성은 키의 주인이 맞는지 인증에 대한 문제이다.
따라서 제 3자인 키분배센터를 이용해 키를 분배한다. 키 분배하는 일차 도메인 컨트롤러(서버)는 인증을 수행한다. 이차 도메인 컨트롤러(서버)는 리소스를 제공하는 곳이다. 삼차 도메인 컨트롤러는 없다.
참고로 인터넷은 client-server통신 방식을 사용하는데 peer-to-peer통신 방식을 사용하지 않는 이유는 기술적이거나 한 문제가 아니라 통제가 불가능 하기 때문에 peer-to-peer통신 방식을 사용하지 않는다.
KDC를 이용한 키분배방식에서 KDC는 1차 도메인 컨트롤러, 수신측을 2차 도메인 컨트롤러라고 한다.
전제조건은 송신측A와 수신측B가 등록되어야 한다. 다른말로 A와 KDC, B와 KDC는 사전에 비밀키를 나눠가져야 하며 이 키는 마스터키라고 한다. 따라서 KDC는 가입자 수만큼 마스터 키를 가지고 있고, 가입자들은 각자 KDC와의 마스터키 1개를 가지고 있다.
(1) Request || ID(A), A,B // ID(A)가 A임을 확인하고, A가 B와 통신하고 싶다고 요청하는 것이다.
(1) EKA[SK, ID(B), T] // EKA는 A의 마스터키로 암호화 하는 것이고 SK는 A와 B가 통신하기 위한 세션키이다. ID(B)는 통신을 할 대상인 B에 대한 정보이고 T는 B임을 확인하는 난수이다.
EKB[SK, ID(A), T] // EKB는 B의 마스터키로 암호화 하는 것이고 SK는 A와 B가 통신하기 위한 세션키이다. ID(A)는 통신을 할 대상인 A에 대한 정보이고 T는 A임을 확인하는 난수이다.
(3) ESK[ID(A), T] // ESK A와 B가 가진 세션키로 암호화를 하는 것이고, ID(A)는 A에서 보내는 것이라는 식별정보이다. T는 서로 간 확인할 2차 검증인 난수이다.
(4) ESK[ID(B), T+1] // ESK는 A와 B가 가진 세션키로 암호화를 하는 것이고, ID(B)B에서 보내는 것이라는 식별정보이다. T+1는 서로 간 확인할 2차 검증인 난수이다. 여기서 T대신 T+1을 사용하는 이유는 같은 난수를 사용한다면, 네트워크에 중복된 난수가 사용되어 유추가 가능해 지기 때문에 SK를 분배할때 미리 정해진 다음 난수를 사용한다.
요약하면 (1)에서는 통신 요청 (2)에서는 송신자와 수신자를 위한 키 분배 (3)에서는 수신자가 송신자를 식별 (4)에서는 송신자가 수신자를 식별하는 것이다. 이 과정이 끝나고 나면 비로소 통신이 이루어지고 세션키를 이용한 통신은 통신이 종료될때까지 지속된다. 통신이 종료된다면 즉시 세션키를 폐기한다.
여기서 Request하는 서식이나 식별정보인 ID(*), 난수 T는 시스템마다 달라서 알 수 없다.
'교육 > 암호학' 카테고리의 다른 글
Day 45 (암호학) (0) | 2020.01.21 |
---|---|
Day 44 (암호학) (0) | 2020.01.20 |
Day 41 (암호학) (0) | 2020.01.15 |
Day 40 (암호학) (0) | 2020.01.14 |
Day 39 (암호학) (0) | 2020.01.13 |