5. 정보보안/보안기술(암호화)

해쉬 알고리즘(Hash Algorithm)의 특성 및 종류

SWExpert 2022. 8. 12. 15:24

 

1. 해쉬 함수의 개념

해쉬함수 또는 해쉬알고리즘은 다양한 크기를 갖는 임의의 데이터로부터 고정된 길이의 짧은 해쉬값(해쉬코드)를 출력하는 수학적 함수이다. 

해쉬함수는 임의의 길이를 갖는 입력 비트열을 고정된 짧은 길이로 함축하는 기능이라고 볼 수 있다. 

예를 들어 HAS-160(Hash Algorithm Standard 160), SHA-1의 경우 160비트의 결과를 출력한다. 

 

2. 해쉬 알고리즘(Hash Algorithm)의 특성

해쉬함수는 동작 알고리즘이 간단하기 때문에 함수 h와 입력 x가 주어졌을 때, H(X)를 계산하는 것이 용이하며, 상대적으로 CPU, 메모리 같은 시스템 자원을 덜 소모하는 특성이 있다. 또한 안정성 측면에서 해쉬함수는 기본 성질을 만족하여야 한다. 

특성 설명
충돌저항성 같은 결과 B가 나오는 A가 단일하지 않고 중복되는 또 다른 A2를 발견하는 것이 계산적으로 어려운 성질,2역상저항성의 외부효과(부수효과,Side effect)이자 부분집합
역상저항성 출력된 값으로 입력된 값을 찾을 수 없다.
2역상저항성 입력값A, 출력값B주어졌을때 같은 출력값 B를 반환하는 A2를 찾을 수 없다.

단방향 암호화 원본A, 암호화된 B로 다시 원본 A를 역산할 수 없다.
압축효과 암호화 해시함수가 반환하는 일정한 길이의 작은 해시값만으로 크기가 거대한 데이터의 무결성을 보장할 수 있는 외부효과, 예를 들어 SHA-256의 경우 100GB의 파일도 단 256bit해시값으로 그 내용의 무결성을 보장할 수 있다.

 

해쉬함수는 해쉬 값을 이용하여 원래의 문장을 복원할 수 없다는 특징 때문에 보안 분야에서 널리 활용된다. 즉, 해쉬값을 통해 원문을 복원하는 것은 계산적으로 불가능하다. 

따라서 패스워드와 같은 민감한 자료들을 안전하게 저장할 때 주로 사용하지만, 서로 다른 두 개의 입력값에 대한 동일한 결과를 출력하는 해쉬 충돌을 이용한 우회적 공격이 가능하다. 

 

3. 해쉬 알고리즘(Hash Algorithm)의 종류

 

 

구분 알고리즘 설명
MDC
(Modification Detection Code)
MD5
(Message Digest)
128비트 암호화 해시함수 (결과값이 16개 문자열)
MD4 대체목적
1996년 설계상 결함 발견
최근 보안용도로 사용 안함
SHA-1
(Secure Hash Algorithm)
160비트 암호화 해시함수
1993년 미국 NIST에 의해 개발
가장 많이 사용되고 있음
인터넷 Default 해시 알고리즘
HAVAL MD를 변형하여 만든 해시함수
129비트에서 256비트까지 다양한 크기의 해시 코드를 만들 수 없음
Tiger 64비트 프로세서에 최적화
매우 빠른 해싱기능
32비트에서도 빠르게 동작
MAC
(Message Authentication Code)
HMAC MD5, SHA-1 등 반복적인 암호화 해시기능을 비밀 공용키와 함께 사용
체크섬을 변경하는 것이 불가능하도록 한 키 기반의 메시지 인증 알고리즘 (메시지 위변조 방지)

 

 

4. 해쉬함수의 활용

해쉬함수의 활용    
무결성 검증방식 md5 순환중복검사의 확장
md2~4의 보완
128비트 해쉬 함수
SHA-1 사용 추천
SHA-1 MD5 대체 및 확장
보안 프로토콜, 프로그램에서 사용
SHA-2 SHA256~512를 통칭
SHA1에 대한 공격법 존재
파일의 무결성   커널 수준에서 실시간 탐지가 가능한 무결성 기법 도입
무결성 검사는 최초 1회에만 수행, 이후 해당 파일이 실행되거나 메모리에 적재될 때마다 검사, 실시간으로 파일 변조 여부를 검사하는 방식
지속적인 CPU 부하가 발생하지 않으며 변조된 실행 파일이 메모리에 적재되는 것을 차단할 수 있다. 
전송과정에서의 무결성   송신자의 신분에 대한 인증이 필요없고 데이터가 전송중 변조되지 않았다는 무결성만 필요한 경우, 해쉬함수를 메시지 인증코드(MAC, Message Authentication Code)라는 형태로 사용할 수 있다. 
송신자가 메시지를 입력하여 해쉬값을 계산하면 메시지 인증 코드가 된다. 
메시지와 함께 이 메시지 인증코드를 함께 보내면 수신자는 메시지가 통신 도중 변조되지 않았다는 확신을 가질 수 있다. 
패스워드를 기초로 한 암호화 PBE Password Based Encryption
패스워드와 솔트(난수생성기를 이용하여 생성한 난수)를 결합한 결과를 해쉬함수에 입력하여 얻은 해쉬 값을 암호화 키로 사용한다. 

전자서명   서명자가 특정 문서에 자신의 개인키를 이용하여 해쉬 연산을 함으로써 데이터의 무결성과 서명자의 인증성을 함께 제공하는 방식
메시지 전체에 대해 직접 서명하는 것은 공개키 연산을 모든 메시지 블록마다 반복해야 하기 때문에 매우 비효율적이며 따라서 메시지에 대한 해쉬 값을 계산한 후 이것에 대해 서명함으로써 매우 효율적으로 전자서명을 생성할 수 있다. 
서명자는 메시지 자체가 아니라 해쉬 값에 대해 서명을 하였지만 같은 해쉬값을 가지는 다른 메시지를 찾아내는 것이 어렵기 때문에 이 서명은 메시지에 대한 서명이라고 인정된다. 

'5. 정보보안 > 보안기술(암호화)' 카테고리의 다른 글

PKI(Public Key Infrastructure)  (0) 2022.08.11
접근 통제 보안 모델  (0) 2022.08.11