본문 바로가기

교육/암호학

Day 44 (암호학)

반응형
참조 : <비밀키 분배를 이용한 통신 방식>

공개키 기관을 이용한 세션키 분배방식의 전재조건은 공개키 기관이 상호 신용 가능한 기관인지 여부와 송신측 A와 수신측 B가 공개키 기관에 가입자여야 한다. 공개키 기관이 상호 신용 가능하지 않다면 개개인끼리 공개키를 서로 보고 사용해도 공개키 올라간 레파짓토리에 등록된 공개키가 진짜 B의 공개키 인지를 확인할 수 없이 잘못 된 통신을 할 수 없기 때문이다. 

송신측 A와 수신측 B의 공개키가 공개키 기관에 등록이 되어야하며 공개키 기관의 공개키를 가지고 있어 공개키기관으로부터 A나 B의 정보를 받았을 경우 근원지 증명이 가능해 진다.

 

공개키 기관을 이용한 세션키 분배 방식의 과정

(1) Request || Time1 // A에서 공개키 기관으로 B의 공개키를 요청한다. 여기서  Time은 공개키 요청 시간이다. 만약 A가 B의 공개키를 요청하고 받은 후에 B와 통신하기 전 B가 공개키를 변경했을 경우 통신이 불가능해지기 때문이다.

(2) EKRau[KUb || Request || Time1] // EKRau는 공개키 기관의 개인키로 암호화 하여 A로 송신한다는 것이다. 이는 서명문으로써 공개키를 이용해 다른 사람들도 내용을 확인할수있지만 공개키 기관이 보냈음을 확실하게 입증할 수 있다. KUb는 B의 공개키 이다.

(3) EKUb[IDA || N1] // A가 공개키 기관으로부터 얻은 B의  공개키로 암호화 하여 송신측인 자신의 신원정보와 난수 N1을 송신한다. 난수 N1은 기밀성은 없고 근원지 증명에만 사용한다.

(4) Request || Time2 // B가 A와 통신하기위해 공개키 기관에 A의 공개키를 요청한다.

(5) EKRau[KUb || Request || Time2] // 공개키 기관이 공개키 기관의 개인키로 서명문을 생성하여 B에게 송신한다.

(6) EKUa[N1||N2] // B가 A의 공개키로 암호화 하여 자신이 B이기 때문에 A에서 보낸 난수 N1을 확인했다는 내용과 다시 A를 검증하기 위한 난수 N2를 송신한다.

(7)EKUb[N2]  // 자신이 A가 맞음을 입증하기 위해 B의 공개키로 받은 난수 N2를 암호화 하여 송신한다.

(8) EKUb[EKRa [KS]] // 통신을 위한 세션키를 보내기 위해 B는 A의 공개키를 알고 있기 때문에 A의 공개키로 암호화 하고  그것을 다시 B만이 확인 가능하도록 B의 공개키로 암호화한다.

 


 

해시함수는 단순히 무결성 확인만을 위해 수행하고, 인증하는 용도로만 사용된다. 

따라서 원문이 무엇인지를 알 필요가 없으므로 원문값을 확인하지 않는다.

 

 

해시함수에는 Message인 M이 어떤 크기라도 적용이 가능하며 고정된 크기의 Message Digest가 생성된다. 실제로는 한계가 있지만 그 값이 너무 크기 때문에 모든 크기에도 적용이 가능하다고 생각할 수 있다.

또한 H(M)이 계산되는 것은 매우 빠르기 때문에 일반 텍스트를 사용하는 속도나 H(M)을 계산하는 속도나 크게 차이가 없다.

H(M)은 One-way Function이기때문에 주어진 hash code h에 대해 M을 다시 찾는 것이 불가능 하다.

정해진 길이의 h가 생성되므로 어떤 주어진 블록 M과 M'를 넣었을 경우 같은 h가 생성될 가능성이 있다. 이것이 해쉬코드의 단점이다. 하지만 H(M)=H(M')인 쌍을 찾는 것은 사실상 불가능하다. 이를 Collision-free라고 한다.

 

가장 단순한 해쉬함수는 메시지를 n비트 블록으로 m개 나누어 m*n행렬을 생성하고 1행부터 내려가며 각 열 별로 XOR연산을 수행하는 것이다.

반응형

'교육 > 암호학' 카테고리의 다른 글

Day 46 (암호학_Kerboros)  (0) 2020.01.22
Day 45 (암호학)  (0) 2020.01.21
Day 42 (암호학)  (0) 2020.01.16
Day 41 (암호학)  (0) 2020.01.15
Day 40 (암호학)  (0) 2020.01.14