2010.06.21 18:47 WarGame

http://www.vnsecurity.net/2010/03/codegate-2010-challenge7-weak-ssl-cracking/


*이 풀이는 위 두 사이트에서 참조하여 정리하였음을 알려드립니다 




문제의 패킷을 열어보면 , 192.168.100.2 와 192.168.100.4 간의 SSL 통신이 있었음을 알 수 있습니다

패킷의 상세 정보를 보면 RSA 로 암호화 되어 있는 것을 볼 수 있죠

RSA는 대표적인 공개키 알고리즘으로 공개키와 개인키가 모두 있어야만 받은 데이터를 해석 할 수 있습니다



RSA에도 여러 버전이 있는데, 그 버전을 알아야 풀이가 가능하겠죠

지난 번에 포스팅 했던 글에서 공개키의 생성 부분을 잠시 다시 살펴보겠습니다
 
[+] 키의 생성

  1. p \,와 q \, 라고 하는 두 개의 서로 다른 (p \ne q소수를 고른다.
  2. 두 수를 곱하여 N = p q \, 을 찾는다.
  3. \varphi(N) = (p-1)(q-1) \, 를 구한다.
  4. \varphi(N) 보단 작고, \varphi(N)와 서로 소인 정수 를 찾는다.
  5. 유클리드 호제법을 이용하여 d e \equiv 1 \pmod{\varphi(N)} 을 만족시키는 를 구한다.

A의 공개키는 위에서 구한 두 개의 숫자로 이루어진 <Ne>이고, 개인키는 이다. A는 <Ne>만을 B에게 공개하고, B는 이 공개키를 사용하여 자신의 메시지를 암호화하게 된다. 여기서 와 의 보안은 매우 중요하다. 이를 가지고 와 의 계산이 가능하기 때문이다. 그리하여 공개키와 개인키가 생성이 된 후에는 이 두 숫자를 지워버리는 것이 안전하다.



p와 q의 보안은 매우 중요하다고 하였으나

상당 수의 RSA는 p와 q 값이 공개된 상태입니다. 물론 자의적으로 공개한건 아니고

타의적으로 공개되었겠죠 :D



아무튼, p와 q 값을 알기 위해서는 N 값을 알아내서 버전에 맞는 RSA 를 찾아내야 합니다

혹은 패킷에서 추출한 파일을 openssl 로 분석하는 방법이 있겠는데요

Python 코드를 통해 추출하도록 하겠습니다



도출한 N과 e 값을 통해서 p,q 값을 찾습니다

RSA-768 이군요

p , q 값에 확장된 유클리드 호제법을 적용합니다

값이 음수로 나오지만 조건

 d e \equiv 1 \pmod{\varphi(N)} 는 만족하는 것을 확인 하실수 있습니다

이를 통해서, ,개인키 정보를 담은 파일을 만들수 있는데요


이 개인키 파일을 이용해서 ssl 이 적용된 패킷의 정보를 복호화할 수 있습니다



WireShark 를 이용해서 복호화 시켜보면..



쨘-

공개키 구조를 사용한다고 무조건 안전한게 아니군요

하긴 n 값에서 p, q 값을 찾아내리라고 생각지도 못했을 것 같은데 말이죠

이렇게 값이 밝혀진 것을 factor 되었다고 표현하더라구요

RSA 768 같은 경우는 2009년 12월에 factor 되었고..

현재 뚫리지 않은 것 역시 언젠가는 factor 되겠죠

정말이지 보안 분야는 창과 방패의 끝없는 대결같군요 :D

'WarGame' 카테고리의 다른 글

[ CodeGate 2010 ] Challlenge 15 풀이  (0) 2010.07.06
[ CodeGate 2010 ] Challenge 8  (0) 2010.06.22
[ CodeGate 2010 ] Challenge 7 풀이  (2) 2010.06.21
[ Python Challenge ] level 15  (0) 2010.06.08
[ CodeEnge Malware Analysis ] level 8  (0) 2010.05.30
[ CodeEnge Malware Analysis ] level7  (0) 2010.05.30
Posted by LinkC

블로그 이미지
LinkC

태그목록

Tistory Cumulus Flash tag cloud by BLUEnLIVE requires Flash Player 9 or better.

공지사항

Yesterday48
Today25
Total328,667

달력

 « |  » 2019.5
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  

최근에 받은 트랙백

글 보관함


. .