본문 바로가기

Software

해시(Hash) 이해하기: 개념, 특징 및 응용(Understanding Hash: Concepts, Features, and Applications)

반응형

사이버(Cyber) 공간에서 보안(Security) 문제를 논할 자주 나오는 용어중의 하나가 해시(Hash)이다.  해시의 개념 그리고 사용하는 방법들을 알아봅니다.

 

The Basic Idea Behind Hash Functions in Computer Science

 

해시의 개념(The Concept of Hash)

일반적인 암호문은 복호화를 통해 원래의 평문을 만들 있습니다.  그러나 해시(Hash) 암호문을 복호화 없습니다. 이해를 돕기 위해, 예를 들어 설명합니다. 우리는 생명활동에 필요한 에너지를 얻기 위해서 음식물을 섭취합니다. 소화된 음식물은 에너지로 변합니다.  그런데, 이렇게 얻어진 에너지를 이용하여, 소화되기 이전의 상태 그대로의 음식물로 만들 수는 없습니다. 또한, 얻어진 에너지를 분석하여 음식물의 종류를 알아내는 것도 불가능합니다.

 

이러한 원리를 이용하여, 데이터를 해시 처리하여, 일정한 형식으로 구성된 전혀 다른 형태의 데이터를 생성합니다.  그러면, 새롭게 생성된 다른 형태의 데이터를 이용하여, 원래의 데이터를 복원할 수도 없고, 또한 원래의 데이터를 추론하는 것도 불가능합니다. 이것이 바로 해시(Hash) 개념입니다. , 원본 데이터를 암호화(해시함수 이용)하여 암호문을 생성합니다. 이렇게 만들어진 암호문을 복호화 하여 원본 데이터를 만들 수가 없습니다.  그리고, 원본을 유추하는 것도 불가능합니다.

 

아래 도표에서 "해시 생성기", "해시 발생기" 를 이용하여, 해시처리 이전의 원본과 처리 후의 해시 값을 비교합니다. SHA-2 256 해시 함수 사용. 참고: SHA-2 Hash Generator Online Tool (codebeautify.org

 

원본 데이터의 길이에 관계없이 해시 값의 길이가 모두 같다.

 

해시의 특징

1. 해시는 단방향 암호화 기법이다. , 암호화는 되고, 복호화는 안된다.

 

2. 산출된 해시 (암호문) 평문의 용량이나 크기에 상관없이 일정한 크기를 가집니다. , 원래의 데이터가 글자 이어도, 페이지 이어도, 권의 이어도, 결과물인 해시 value 항상 같은 크기입니다. 위에 있는 도표 참고.

 

3. 원 데이터가 미세하게 변해도, 산출된 해시 값은 이전의 해시 값과는 전혀 다릅니다.

해시의 용도

해시는 여러 용도로 사용되지만, 여기서는 자주 사용되는 가지만 소개합니다.

1. 파일의 무결성(Integrity) 검증

무결성이란, 파일이 변조되지 않았다는 것입니다. 파일을 배포하면서, 특정한 해시 함수를 사용하여, 파일에 대한 해시 값도 같이 배포합니다. 파일을 받은 사용자는, 동일한 해시 함수를 사용하여, 자신도 새로운 해시 값을 산출합니다. 그런 다음, 자신이 직접 산출한 해시 값과 배포 받은 해시 값을 비교합니다. 값이 동일하면 배포 받은 파일의 무결성이 검증된 것입니다. 이때, 만약 값이 서로 다르면 파일은 변조된 것입니다. 즉, 원본 파일이 조금이라도 변조되면, 새로 계산된 해시값은, 그 파일을 배포할 때 계산된 해시값과는 전혀 다릅니다.

 

2. 공인 인증서(Certificate) 디지털 서명: 인증서의 진위 여부 확인에 사용

인터넷으로 은행을 이용할 필수적으로 사용하는 공인 인증서의 진위 여부를 확인 사용합니다. 이러한 과정은 컴퓨터에 설치된 엣지(Edge) 크롬(Chrome) 브라우저가 자동으로 처리하여, 사용자의 수고를 덜어줍니다. 

 

공인 인증서의 진위 여부 검증 과정 간단하게 설명하면 다음과 같습니다.

 

   A. 공 인증서를 발급해 주는 기관(금융결제원), 발급해 인증서를 해시처리한 산출된 해시 값을 기관의 개인키(Private Key)로 암호화하여 인증서의 디지털 서명란(Digital Signature) 추가한 , 인증서를 발급합니다. 

 

   B. 사용자가, 인터넷 뱅킹을 사용하면, 해당 은행은 제출된 인증서를 사용하여 자체적으로 해시 값을 계산한다. 

 

   C. 은행은 인증서 발급기관의 공개키(Public Key)로, 제출된 인증서에 포함된 디지털 서명을 복호화 하여 제출된 인증서의 원본 해시 값을 구한다. 

 

   D. 은행은, 위의 과정에서 생성된 해시 값을 비교하여, 인증서의 진위 여부를 검증한다. 

추가적으로, 해시는 가상화폐 거래의 핵심인 블록체인에도 사용됩니다.

 

인증서(Certificate) 내용 중의 디지털 서명인 Thumbprint

 

해시함수의 종류

과거에 많이 사용되었던 MD5(Message Digest Version 5) 보안 문제로(Collision Attacks 취약), 이상 사용되지 않는다. 현재 가장 보편적이고 신뢰하는 해시함수는 SHA-2 이다. 새로운 버전인 SHA-3 사용되고 있다.

반응형