본문 바로가기

Computer/0x07 암호학

파크야의 암호학개론 2. 공통키암호화 기술과 MD5실습

파크야의 암호학개론 2. 공통키암호화 기술과 MD5실습




난시간에는 기초이론을 정립 하였습니다. 사실 이 암호학 시리즈 자체가 기초이지요 :)

아무튼 MD5 부터 알아보겠습니다. 간단한 실습도 곁들여서 해보겠습니다.



먼저, MD5란 무엇일까요? 

MD5는 Message-Digest algorithm 5 의 약어 이며, 128비트 암호화 해시 함수 라고 합니다.


위키백과를 참조하자면, RFC 1321로 지정되어 있으며, 주로 프로그램이나 파일이 원본 

그대로인지를 확인하는 무결성 검사 등에 사용 됩니다.


1991년에 로널드라이베스트가 예전에 쓰던 MD4를 대체하기 위해 고안했습니다.


1996년에 MD5의 설계상 결함이 발견 되었습니다. 이것은 매우 치명적인 결함은

아니었지만, 암호학자들은 해시용도로 SHA-1와 같이 다른 안전한 알고리즘을 사용할

것을 권장하기 시작했습니다.


2004년에는 더욱 심한 암호화 결함이 발견되었고 2006년에는 노트북 컴퓨터 한대의

계산능력으로 1분 내에 해시충돌을 찾을 정도로 빠른 알고리즘이 발견되기도 하였습니다.


2012년에는 MD5 알고리즘을 보안관련용도 로 쓰는 것은 권장하지 않으며 심각한

보안 문제를 야기할 수도 있습니다. 2008년 12월에 MD5의 결함을 이용해 SSL 인증서를

변조하는 것이 가능 하다는 것이 발표 되었습니다.






MD5 실습하기



md5sum.exe



위의 파일을 다운로드 하신후에 새폴더를 만드시고 거기에 메모장 1과 메모장 2를 아무내용도 쓰지않고

한폴더에 넣습니다.




이렇게 한폴더안에 넣습니다.



그리고 윈도우 윈도우마크 + R 단축키를 누르시면 실행창이 하단에 나타나는데요

CMD 라고 써서 커맨드창을 불러 옵니다.






cmd창에서 아까 넣었던 폴더로 이동합니다.

저랑 똑같이 하실려면, C드라이브에 tools 라고 폴더를 만드신후에 

cmd 명령창에서 cd tools 라고 입력하면 됩니다.


그후에 md5sum *.txt > test.md5 라고 입력 해 줍니다.

암호화 해서 저장하라는 뜻입니다.




dir 명령어를 입력하면 test.md5 의 파일 용량을 확인 할 수 있습니다.

type test.md5를 입력해서 txt.1 과 txt.2 의 암호화 값이 동일 하다는 것을 알 수 있습니다.






1.txt 파일에 아무내용이나 타이핑한후 저장하고 빠져 나옵니다.





md5sum -c test.md5 라고 입력후 보면

아까 타이핑한 1.txt 가 FAILED 라고 나옵니다. 이것은 내용이 변경 되었기 때문에 그렇습니다.

참 간단한 실습이었습니다 ㅎㅎ 




공통키 암호화 기술


공통키 암호화 기술이란, 송신자와 수신자가 하나의 키를 타인에게 알려지지 않게 사용해서 암호화 및 

복호화 하는 것입니다.


그전에 베타적 논리합에 대해서 알아보겠습니다 대표적인예로, XOR 연산이 있습니다.

짐작 하시겠지만 , 논리게이트를 공부하시는 것이 좋습니다. 정보처리시험 보면 꼭 있듯이

컴퓨터 공부의 가장 기초이자 필수적인 녀석이죠. 저도 가끔씩 헷갈린다는 ㄷㄷ ;


XOR는 별거 없습니다. A과 0 이고 B과 1이면 서로 값이 다르잖아요?

그러면 결과는 1이 됩니다. 

반대로, A와 B의 값이 똑같으면 값은 0이 되는 것이죠


그러면 암호문으로 적용해 보겠습니다.


(문제)

평문: 1101 과

암호화키: 1001 을 암호화 해보세요.


암호문: 0100 으로 풀수가 있겠군요. 처음에 헷갈리면 10번,백번 해보세요

그러면 나중에는 눈감고 머리카락(?)으로도 풀수 있게 훈련되실 것입니다.



자, 그러면 위의 경로가 0100이 암호문 이라면 그 다음 스텝으로 복호키 1001의 XOR 연산을 합니다.


암호문: 0100

복호키: 1001 


그러면 평문: 1101 이 나옵니다. 

복호화는 암호문을 평문으로 되돌리는 것입니다. 지난시간에 말씀 드렸죠?


여기서 알수 있는 사실은 암호문 + 평문 = 복호키(암호화키) 라는 것입니다.


공통키 암호의 특징은 빠르게 암호화와 보호가 이루어지기 떄문에 대량의

데이터 통신에 적합하며 효율이 좋습니다.


- 키가 알려지지 않게 보관에 주의하실 필요가 있습니다.

- 다수의 키와 그 관리가 필요하기 떄문에 불특정 다수와 통신하기에는 

좋지 않습니다.



공통키암호화 방식에는 크게 2종류나 나뉩니다.

1. 스트림암호(축자암호)

2. 블록암호


스트림암호는, 순차적으로 비트 단위의 암호화 방식을 말합니다.

블록암호는평문과 암호문의 데이터를 일정한 길이(블록)마다 구획해서 암호화

하고 복호하는 방식 입니다.