'크랙'에 해당되는 글 1건

  1. 2007.08.07 한글 2.x의 암호 크랙 사건 개요
필요에 의하여 자료 검색을 하다가..
흥미있는 글이 있어서 올립니다... ㅎㅎ..

아래 내용은 지금 한글 최신판과는 무관합니다..
(한글 2004 버전부터는 RSA 암호화를 지원한다고 합니다.. )

아래 글의 발견처는 KLDP 이며,
출처는...
"파워해킹테크닉" 이란 책의 417~418페이지 중간 ,422~423페이 까지 내용입니다.
라고 그 글에 나와 있더군요..;; (쿨럭쿨럭..;; )




한글 2.x의 암호 크랙 사건 개요

한글의 암호체계의 대해서 한글과 컴퓨터사는 다음과 같이
말한 적이 있다. " 문서잠금 안호기능이 42억 9천 4백 96만
7천 2백 95개의 숫자를 조합해 만든 것이깅 어떤 전문가도
감히 풀수 없다. 이를 푸어 내려면 슈퍼컴퓨터로도 130
년이 걸린다."

이러한 말 때문에 암호 해독의 주인공인 이승욱씨는 언론의 초
점이 되고 세인의 관심이 집중했다. 이승욱씨는 전통적인 암호
해독법, 즉 컴퓨터를 이용한 코드 자동입력 소프트웨어를 쓴다는
것은 불가능하다는 것을 잘 알고 있었다. 이 방법은 42억9천4백96만7천2백95개의 숫자를 조합해 만든 한글의 암호체계에는 그다지 큰 의미가 없었기 때문이다.

그래서 이승욱씨는 다른 방법을 생각한 결고, 한글 문서파일의
'hwp2.1..xxxxxx.로 시작되는 머리 부분(헤더)에 암호가 들어
가며 이어 <ENTER>키 코드가 들어가고 본문 내용은 그 뒤에
따라온다는 사실을 알았다. 그는 문서 파일의 이 같은 규칙성에
주목했다. '만일 프로그램이 문서 파일에 처음 나오는 <ENTER>
키 코드 값(16진법으로 0D)을 찾아내 이것 이전 부분에 있는
숫자나 문자(즉 암호)는 무시하고 그 뒷부분만 읽어들이면 원래
의 암호는 해독할 필요조차 없어질 것이다'라고 생각했던 것이다.

즉 암호 자체를 해독하는 것이 아니라 암호를 체크하지 못하도록 하는 것이다. 이러한 것은 진정한 의미에서의 암호 해독이라고는 할
수 없지만 대부분의 암호화 방법이 역으로 추적하는 수법들이 통하지 않도록 만들어져 있기 때무에 사용할 수 있는 마지막 무기 라고 할수 있다.

한글 2.5의 암호체게
실제는 이미 오래전에 크랙되었다고 알려졌다. 단지 이승욱씨에
대한 관심은 언론의 스타 만들기였다라는 생각이 짙다.

한글 암호체계의 구멍
한글과 컴퓨터사에서는 한글 2.1의 암호체계는 32BIT 암호체계
이며, 그에 따라 키를 무작위로 만들어 풀어 보는 방식으로는
2^32인 약 4억 2천 번의 계산 을 거쳐야 한다고 주장했다.
그러나 비교 코드 16BIT에 해독 코드 16BIT가 있다고
암호가 32BIT 라는 계산한 것은 잘못이다. 실제로 암호를
푸는 데 있어서는 해독 코드만 필요한 것이다.
그러면 무작위로 대조해서 푸는 최악의 방법으로푼다 하더라도
2^16인 약 6만 5천 번의 계산이면 되는 것이다. 6만 5천
번이면 엄청나게 많은 횟수라 생각될 수 있으나 그렇지 않다.
컴퓨터란 말 그대로 계산기이며 엄청나게 빠른 계산을 할
수 있다.
그리고 위에서 알아보았듯이 한글의 암호를 해독하는 데 사용되는
연산은 비트회전 이나 AND 등 덧셈 계산보다 기계가 빨리 할 수 있는 연산에 +.*,/가 약간 섞인 정도 이다. 게다가 계산되는 수 역시
2바이트 정수형 이어서 하드웨어적으로 16BIT XT 이상이면
몽땅 연산이 가능한 수이다. 이렇게 되었을 때 어셈블리어로
일일이 대입해 보는 프로그램을 짠다고 하면 짧게는 몇십 초
길어도 몇 분이면 암호가 풀리게 될 것이다.

어떻게 한글 암호를 풀 수 있는가?
위에서 말했던 결점을 이용하면 암호체계를 풀릴 수 있을
것이다. 그러나 또 하나의 관문이 있다. 한글에서는 해독
코드를 입력 받아서 암호를 푸는 것이 아니다. 암호 문자열을
받아 연산을 거쳐 비교 코드를 만든 후에 비교 코드와 비교하고
그 후에 해독 코드로 문서를 풀게 되어 있어서 해독 코드만 알게
되면 비교 코드를 모르게 되어 암호가 틀렸다는 메시지를 받을
것이고 비교 코드만 알게 된다면 해독 코드로 풀 때 문서가 잘못 풀
어져 '문서가 손상 되었습니다.'라는 에러가 나오게 될 것이다.
또한 두 코드를 한번에 모두 구한다고 했을 땐느 4억 2천 번을
모두 돌겨 봐야 구할 수가 있는 것이다.
그러나 이 문제 역시 생각을 어느 정도 해보면 해결이 가능하다.
우선 해독코드를 구하게 되었을때 문자열을 어떻게든 간에
무작위로 만들어서 그 문자열로 해독 코드를 구했을때 맞아
떨어지는 문자열을 기억한 후, 그 문자열을 이용해 비교 코드를
계산으로 구하여 한글 파일의 헤더 부분의 비교 코드가 있는
곳에 써 넣으면 되는 것이다. 그런 후에 한글에서 문서를 읽을
때 앞서 구한 문자열을 입력하면 암호는 풀리게 되는 것이다.
또는 문서 부분을 아예 프로그램상에서 풀어 암호없이 저장하는
방법도 있을 수 있다.

그런데 해독 코드를 구하는 것 역시 문제가 있을 수 있다.
해독 코드를 일일이 만들어 문서 데이터를 풀어나갈 때
풀린 문서의 데이터가 맞는 것인지를 알아낼 방법이 없는
것이다. 이것 또한 생각을 해보면 알 수 있다. 한글의 정
상적인 코드는 한글일때 조합형 코드를 뒤바꾼 코드라는 것을
앞에서 언급했다. 문서 파일의 대부분의 첫 부분에는 한글이
있을 것이고 코드를 풀었을 때 조합형 한글 코드가 되는
코드가 몇 퍼센트가 있는지 세어서 어느 기준 이상이면
맞다고 치고 대부분의 문서가 풀리게 된다. 조합형 한글
코드가 되는지 알아보는 방법은 조합형 한글의 원리만 알면
쉽게 알 수 있다. 그러나 문서 중에는 앞부분에 표 또는 그림
외국어 등이 많이 있는 경우가 있다. 이 경우 는 전자의 방법
으로 풀 수는 없다. 이경우 한글 문서 파일의 문서 데이터
영역의 구조를 알야 한다. 해독 코드가 틀렸을 경우 전체적
으로 틀리게 번역되므로 그 구조 또한 오류가 발생하게
된다. 이것을 알아보는 것이 가장 확실하나 한글 파일의
구조는 공개되어 있지 않으므로 구조를 알아내는 작업을
해야 할 것이다.

'Study.. > etcs..' 카테고리의 다른 글

NP problem  (0) 2007.10.03
문제를 푸시면 기념품을 드립니다. ^0^/  (0) 2007.09.12
ARM processor 란...  (0) 2007.09.04
일반물리 강의록....  (0) 2007.07.13
2007년 토익 일정...  (0) 2007.03.30
Posted by Yoons...
,