해쉬 함수 특징은 5가지가 있다.

첫 번째는 키를 사용하지 않는다는 것이다. 키를 사용하지 않고 알고리즘만 사용하므로 유연하다는 장점이 있다.

두 번째는 해쉬 함수 자체는 비밀이 아니고 오픈되어 있다는 것이다. 해쉬 함수 자체보다는 해쉬 값을 포함한 암호가 더 중요하다.

세 번째는 에러 탐색 능력을 제공한다는 것이다. 에러 탐색을 통해 무결성을 유지할 수 있다.

네 번째는 입력 값의 한 비트의 값이 바뀌면 전체 결합 값의 반에 가까운 값이 바뀐다는 것이다. 이러한 효과를 쇄도효과라고 한다.

마지막은 해쉬 코드의 사용 방법이 다양하다는 것이다.

 

해쉬 함수의 요구조건은 6가지가 있다.

첫 번째는 어떤 크기의 메시지에도 적용이 가능해야 한다는 것이다. 메시지 양이 커도 어느 정도의 비트만 나와야 한다는 것이다.

두 번째는 H512, 1024 비트 등으로 고정된 크기의 해쉬 코드를 만들어야 한다는 것이다.

세 번째는 H(M)은 주어진 M에 대해서 계산하는 것이 쉬워야 한다는 것이다. 계산이 복잡하고 오래 걸리면 해쉬 함수를 사용하는 의미가 없기 때문이다.

네 번째는 일방향(one-way) 성질이어야 한다는 것이다. 일방향 성질은 h를 찾는 것은 쉽지만 H(x) = hx를 찾는 것이 어려워야 한다는 것이다.

다섯 번째는 약한 충돌 회피성을 가져야 한다는 것이다. 주어진 x에 대해 H(y) = H(x)y를 찾는 것이 어려워야 한다는 것이다. , 다른 입력으로 동일한 결과 값을 같도록 하는 y를 찾는 것이 어려워야한다.

마지막은 강한 충돌 회피성을 가져야 한다는 것이다. 공개되지 않은 x, y에 대해 H(y) = H(x)(x,y) 쌍을 찾는 것이 계산적으로 어려워야 한다는 것이다.

 

해쉬 함수와 암호 기법을 사용해 제공할 수 있는 서비스에는 블록 체이닝 기법이 있다. Cipher Block Chaining(CBC) 암호화 기법으로 암호화 할 때 Initialization VectorPlaintextXOR하여 Block Cipher Enccryption하는 과정을 반복하는데 이 때 Block Cipher Enccryption를 여러 암호시스템으로 사용할 수 있다. DES 시스템을 사용하는 경우 Cipher text의 길이가 64비트가 되기 때문에 생일 공격에 취약하다. CBC 기술 해쉬 함수의 강도는 전수 공격에 대해서 해쉬 코드의 길이에 의존하므로 코드의 길이가 충분히 길어야 한다.

현재 사용되는 대부분의 해쉬 함수 구조는 다음과 같다. 메시지와 메시지의 길이 값와 나머지 부분은 Padding 값으로 구성한 후 이 전체 값을 메시지M의 배수값으로 만들어 M으로 나눈다. Initialization Vector와 나눈 값으로 Compression function에 넣고 연산을 진행해 Message digest를 생성한다.

SHA-512Message digest 생성 과정은 다음과 같다. 전체 값은 1024비트의 배수로 블록을 만들고 1024비트 단위로 나눈다. 이 나눈 비트와 Initial value값으로 Compression function에 넣어 나온 결과 값을 다시 다음 블록과 함께 Compression function에 넣는다. 이 과정을 반복하여 Message digest을 얻는다. 해쉬 함수는 이처럼 단순해야 한다.

 

 

* 위의 글은 www.kocw.net/home/search/kemView.do?kemId=1320013 10주차 강의를 보고 제가 작성한 내용입니다.

'시스템보안(이론)' 카테고리의 다른 글

KDC (키 배분 센터)  (0) 2020.08.18
디지털 서명  (0) 2020.08.17
메시지 인증  (0) 2020.08.14
AES  (0) 2020.08.11
DES 2  (0) 2020.08.11