본문 바로가기

Malware Analysis/- Knowledge storage

해시(hash) vs 암호화(encryption)

해시(hash)란?

해시 함수는 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수이다. 해시의 대표적인 종류로는 MD5, SHA 계역 해쉬함수가 있으며 비암호적 해시함수로는 CRC32등이 있다. 해시변환 테스트를 원하면 구글에 'online hash' 키워드로 접근하면 쉽게 찾을 수 있다. 이제 해시 함수의 특징에 대해 알아보자.

 

1). 단방향성  

- 예를들어, 바나나 우유가 해시라고 한다면 바나나는 원래의 정보이다. 바나나(원래의 정보)를 믹서기에 갈아서 바나나 우유(해시)를 만들면 다시 바나나로 만들기는 거의 불가능하다. 이처럼 얻어진 결과값(해시)을 가지고 원래의 정보를 알아내기란 현재의 컴퓨터 기술로는 매우 어렵다. 따라서 해시는 password로 많이 사용된다. 본인외에는 해시값을 모른다면 그 누구도 원정보를 알기 힘들기 때문이다

 

2). 민감성

- 원정보에 아주 조금의 변화라도 발생한다면, 해시값은 전혀 다른 값이 되어버린다. 다시말해서, 원정보가 완전히 같지 않다면 동일한 해시값을 얻을 수 없다. 이를 이용해서 정확한 검색이나 데이터의 이동 등을 파악할 수 있다. 60기가의 파일을 복사한다고 할때 1바이트의 내용만 달라도 해쉬값이 달라지기 때문이다. 양쪽의 최종 데이터의 해시를 비교했을때 같다면 완전히 복사가 된것을 확인한 것이다.

 

3). 해시값의 모양

- 해시값은 정보의 양과 종류에 상관없이, 일정한 길이로 산출된 임의의 알파벳과 숫자의 조합의 모양을 갖는다.

 

 

++ base64 encoding??

-64개의 문자를 이용하여 바이너리 데이터를 아스키 텍스트 데이터로 표현하기 위해 사용된다.  8bit의 데이터를 6bit의 크기로 표현하는데, 24bit의 단위로 하여 3개의 문자에서 4개의 문자를 얻게 된다. 24단위이기때문에 단위에 맞지않으면 '='로 채워준다.

 

 

암호화(Encryption)이란?

수학적 과정을 통해 어떤 정보를 의미 없는 문자의 나열로 바꾸는 것을 뜻한다. 오늘날 아주 다양한 암호화 기법이 있는데 대표적으로는 RSA, DS, Caesar, enigma 등 이 있다. 모든 암호는 두 가지 성질을 갖는다. 첫째로는 혼돈인데 이는 메시지 원문의 내용을 짐작하기 어렵게 만들고 둘째로 확산 성질은 암호화 알고리즘의 패턴 추론을 어렵게 만드는 것이다. 그렇다면 암호화의 특징은 무엇이 있을까?

키 값의 종류에는 비밀키와 공개키가 있다. 비밀키는 송신자와 수신자 모두 동일한 암호화 키를 알고 있어야 한다. 암호문을 받은 수신자는 동일한 암호화 키 값을 역으로 대입해 역처리하여 암호문을 해독할 수 있다.  공개키 암호화는 서로 다른 두 개의 키, 공개키와 개인키를 사용하여 암호화하고 복호화한다. 공개키로는 암호화를하고 개인키로는 해독을한다. 공개키는 말그대로 공개된 키지만 개인키를 가진 사람만이 공개키를 통해 암호화된 메시지를 해독할 수 있다. 해시와의 차이를 살펴보자. 해시는 어떠한 평문을 넣어도 해시된 값의 길이는 똑같았지만 암호화는 평문의 길이가 길어지면 암호화된 길이도 길어진다. 또 해시는 평문이 같으면 결과 값도 같았지만 암호화는 평문의 내용이 같아도 키값이 다르다면 전혀 다른 암호가 나온다.

 

 

 

 

 

 

'Malware Analysis > - Knowledge storage' 카테고리의 다른 글

win32 API  (0) 2018.03.10
Remote deburger  (0) 2018.03.04
adc, sbb, carry flag, overflow flag 이해하기(+cmp)  (0) 2018.02.01
JSON??  (0) 2018.01.30
malwares,virustotal python script  (0) 2018.01.30