SECTION 05 해시함수와 응용
1. 일방향 해시함수
■개념 및 특징
○임의의 길이를 갖는 메시지를 고정된 길이의 해시 값(해시코드)로 출력하는 함수
○고속으로 계산
○일방향성(One-Way)으로 해시 값으로부터 원본 메시지를 역산 할 수 없음.
○입력 메시지의 1bit 바뀌어도 해시 값이 다름
○무결성을 확인하기 위해 사용
○2개의 다른 메시지가 같은 해시 값을 같은 것을 충돌(Collision)이라 하고, 일방향 해시함수는 충돌내성을 가질 필요가 있음
■해시함수의 분류와 보안요구사항
○프리이미지 저항성(역상 저항성)
○y = h(M)일 때, 공격자가 출력값 y에 대해 입력값 M를 찾아내는 것이 매우 힘들어 야 한다는 성질
○제 2프리이미지 저항성(두번째 역상 저항성, 약한 충돌 내성)
-메시지를 쉽게 위조할 수 없도록 해야 한다.
-공격자가 메시지 M에 대한 결과 값 h(M)을 가로 채고, h(M)과 동일한 결과 값을 만드는(h(M)=h(M’)의 성질을 만족하는) 메시지 M’를 찾는 것이 계산적으로 불가능 해야 함
○충돌 저항성(충돌 회피성, 강한 충돌 내성)
-h(M)=h(M’)을 만족하는 임의의 두 값 M과 M’를 찾는 것이 계산적으로 불가능 해야함.
■전자서명에서 해시함수의 특징 (★★★★)
○고속으로 계산할 수 있어야 함.
○약 일방향성 : y=h(M)일 때, y로부터 메시지 M을 찾는 것이 불가능
○강일방향성 : 서명문 M과 해시값 y=h(M)이 주어졌을 때, h(M’) = y 가 되는 M’를 찾는 것이 불가능
○충돌회피성 : h(M) = h(M’)가 되는 쌍을 찾는 것이 계산상 불가능
■키가 없는 해시함수와 키를 사용하는 해시
○해시 연산에 따른 분류
-전용 해시함수
-블록 암호를 기초로 한 해시함수
-모듈 연산을 기초로 한 해시함수
■전용 해시함수
○SHA-1, RIPEMD/128/160, HAVAL 등
○메시지 다이제스트(Message Digest)
-MD2 -> MD4 -> MD5로 발전
-MD5 : 메시지를 512비트로 된 블록들로 나누고 128비트 다이제스트를 출력
-현재 128bit는 너무 짧다고 알려져서 사용하지 않음
○SHA(Secure Hash Algorithm)
-해시 값이 각 256, 384, 512 비트임.
-SHA-1과 하부구조가 동일하며, 모듈러 연산과 논리적 2진 연산을 이용
-2005년 SHA-1은 강한 충돌 내성이 깨졌다는 것을 접수하고 SHA-3을 제정함.
○RIPEMD-160
-160bit 메시지 다이제스트를 생성
○Tiger
-64bit 시스템에서 해시 함수를 수행하기 위해 설계, MD5, SHA-1보다 속도가 빠름
-HAVAL
-128, 160, 192, 224, 256 bit인 메시지 다이제스트를 출력하고, 사용하는 블록크기는 1024비트
■블록암호 기반 해시 함수
○해시 함수 안에 사용하는 압축 함수 자리에 대칭키 블록 암호를 상용 할 수 있음
■모듈 연산에 기반을 둔 함수
○압축 함수의 기반을 모듈 연산의 반복적인 수행에 두고 있는 해시함수
○소프트웨어 자체에 내장된 모듈 연산을 사용할 수 있다는 장점은 있으나 속도가 빠르지 않고 안전성에 대한 역사가 짧음
■키를 사용하는 해시 함수
○키를 사용하는 해시함수는 메시지 인증 기능을 가진 함수
○해시 함수 자체이 안전성과 키의 비밀성까지 안전성을 두고 있음.
■암호학적 해시함수 응용
○무결성 검증
-메시지 혹은 문서의 무결성을 검증하기 위해 사용
-새로운 메시지 다이제스트는 이전의 메시지 다이제스트와 비교하여 검증
○소프트웨어 변경 검출
-입수한 소프트웨어가 변경되었는지 확인하는 방법
-소프트웨어를 입수 한 후, 그것을 직접 해시 하여 나온 값을 오리지널 사이트에서 제공하는 해시 값과 비교
○메시지 인증 코드
-일반적으로 메시지 인증은 키가 있는 해시함수로 알려진 메시지인증 코드 (MAC, message Authentication Code)를 사용
-상호간에 교환되는 정보를 인증하기 위해서 사용
○전자서명
-현실사회의 서명(사인)에 해당하는 행위(내가 했음을 증명)임
■일방향 해시함수에 대한 공격
○무차별 공격
-Sha-1의 경우 해시값이 160비트 이므로 2^160회를 시행하면 원하는 메시지가 발견됨
○일치블록 연쇄 공격
-메시지 M을 다양하게 만들어 놓았다가 공격하고자 하는 메시지M의 해시값 h(M)과 같은 해시 함수를 갖는 것을 골라서 사용하는 공격
○중간자 연쇄 공격
-전체 해시 값이 아니라, 해시 중간의 결과에 대한 충돌 쌍을 찾음.
○고정점 연쇄 공격
-메시지 블록과 연쇄변수 쌍을 얻게 되면, 연쇄 변수가 발생하는 특정한 점에서 임의의 수의 동등한 블록들 x를 a시지 중간에 삽입해도 전체 해시값이 변하지 않음
○차분 연쇄공격
-다중 라운드 블록암호의 공격 : 입력값과 그에 대응하는 출력 값 차이를 통계적 특성을 조사하는 방법
-해시함수의 공격 : 압축 함수의 입출력 차이를 조사하여 0의 충돌 쌍을 주로 찾아내는 방법
■일방향 해시함수로 해결할 수 없는 문제
○조작과 변경을 검출할 수 있지만, 거짓행세를 검출하지 못함.
○파일의 무결성을 조사하는 것 뿐 아니라, 이 파일이 정말 앨리스의 것인가를 확인하고 싶은 경우 무결성 외에 인증 절차(메시지 인증코드, 전자서명)가 필요
2. 랜덤 오라클 모델과 해시함수에 대한 공격
■랜덤 오라클 모델
○개념
-1993년 소개된 해시함수에 대한 이상적인 수학모델
-임의의 길이를 갖는 메시지에 오라클은 0과 1로 이루어진 난수 스트링인 고정된 길이의 메시지 다이제스트를 생성해서 제공
-이미 다이제스트가 존재하는 메시지가 주어지면, 오라클은 저장되 있던 다이제스트를 제공
-새로운 메시지에 대한 다이제스트는 다른 모든 다이제스트와 독집적으로 선택될 필요가 있고, 다이제스트를 만들이 위해 공식이나 알고리즘을 사용해서는 안됨
■비둘기 집 원리
○만약에 n+1마리의 비둘기가 n개의 비둘기집에 들어가 있다면, 적어도 한 비둘기 집에는 두 마리의 비둘기가 들어가 있다는 뜻
■생일문제(생일 공격)
○특정 해시 값을 생성하는 메시지를 구하는 것이 아니라, 해시값은 뭐든지 괜찮으며 어쨌든 같은 해시 값을 생성하는 2개의 메시지를 구하는 것
○생일 패러독스(Birthday Paradox)
-랜덤으로 선택한 N명의 그룹을 생각한다. N명 중 적어도 2명의 생일이 일치할 확률이 2분의 1이상이 되도록 하기 위해서는 N이 최저 몇 명이 되어야 할까?
-정답 : N = 2
-즉 23명만 있으면 확률이 0.507297이 됨
-계산법 : N명 전원의 생일이 일치하지 않을 확률을 구하고, 그것을 1에서 빼낸다 1명째는 365일 중생일이 언제라도 괜찮고, 2명째는 1명의 생일을 제외한 364일이 괜찮다. 3명짼 363, 4명짼 362, N명째는 365-(N-1)=365-N+1
3. 암호학적 해시함수의 예
■SHA-512
○다중-블록 메시지로부터 512bit의 다이제스트를 생성
○각 메시지 블록은 1024 bit의 길이를 가지고, 메시지의 총 길이는 2^128bit를 넘지 않는다..
○메시지의 길이가 2^128 bit보다 작은 경우, 패딩을 붙임
○패딩에는 원래 메시지의 길이를 표시함.
○공격자가 해시 값이 같으면서, 입력 값이 다른 메시지를 찾는 것을 어렵게 하는 보안 요소
■SHA-3
○이론적으로 공격 방법이 알려져 버린 SHA-1을 대신하여 새로운 표준이된 일방향 해시 알고리즘
○2012년 KECCAK를 SHA-3으로 선정.
4. 메시지 인증코드(MAC)
다음에.. 계속 추가해기..
'기타 > 공부하기' 카테고리의 다른 글
[정보보안기사] SECTION 08 접근통제 개요 (0) | 2018.03.06 |
---|---|
[정보보안기사] SECTION 07 키, 난수 (0) | 2018.03.06 |
[정보보안기사] SECTION 04 비대칭키 암호 (0) | 2018.03.06 |
[정보보안기사] SECTION 03 대칭키 암호 (0) | 2018.03.06 |
[정보보안기사] SECTION 02 암호학 개요 (0) | 2018.03.06 |