일방향 해시함수

:임의 길이의 메시지 입력으로 고정 길이의 해시값을 출력한다.

:해시값을 고속으로 계산할 수 있다.

:일방향성을 갖는다.(해시값으로 부터 메시지를 역산할 수 없다는 성질)

:메시지가 다르면 해시값도 다르다.(무결성 확인)


충돌

:2개의 다른 메시지가 같은 해시값을 갖는 것을 충돌(Collision)이라고 한다.


충돌내성

:충돌을 발견하는 것이 어려운 성질을 가리킨다.


해시함수의 보안 요구사항

프리이미지 저항성(역상 저항성)

:주어진 임의의 출력값 y에 대해 y=h(x)를 만족하는 입력값 x를 찾는 것이 계산적으로 불가능하다.


제2프리이미지 저항성(두번째 역상 저항성, 약한 충돌 내성)

:주어진 입력값 x에 대해 h(x)=h(x'), x≠x'을 만족하는 다른 입력값 x'을 찾는 것이 계산적으로 불가능하다.


충돌 저항성(강한 충돌 내성)

:h(x)=(x')을 만족하는 임의의 두 입력값 x,x'을 찾는 것이 계산적으로 불가능하다.


전자서명에 이용되는 해시함수의 특성

:해시값을 고속으로 계산

:약 일방향성=프리이미지 저항성

:강 일방향성=제2프리이미지 저항성

:충돌 회피성=충돌 저항성


키가 없는 해시함수

블록암호 기반 해시함수

:압축함수 자리에 대칭키 블록암호를 사용

:블록암호의 암호화기능만 사용


전용 해시함수

:(SHA-1, RIPEMD, RIPEMD-128, RIPEMD-160, HAVAL) 등은 모두 MD5를 기초로 디자인

:MD5 해시값 크기 : 128 , 블록 크기: 512

:RIPEMD 해시값 크기 : 128 , 블록 크기: 512

:HAVAL 해시값 크기: 128, 160, 192, 224, 256블록 크기 : 1024

:HAS160은 한국형 전자서명 표준인 KCDSA에서 사용할 목적으로 개발 , 해시값 크기 : 160 , 블록 크기 : 512


모듈 연산 기반 해시함수

:압축함수의 기반을 모듈 연산의 반복적인 수행

:하드웨어/소프트웨어 자체에 내장된 모듈 연산을 사용

:속도가 빠르지 않고 안전성 연구에 대한 역사가 짧음


SHA(Secure Hash Algorithm)

:1993년 미국 표준 기술 연구소(NIST)에서 FIPS PUB 180 출판 -> SHA-0(표준 폐기)

:1995년 NIST에서 FIPS 180-1 출판-> SHA-1

:2002년 NIST에서 FIPS 180-2 출판-> SHA-2(SHA-256 / 224, SHA-512 / 384 ), 2004년 3DES 키 크기에 맞춰 해시값 크기를 조정한 SHA-224가 표준에 추가

:2008년 NIST에서 FIPS 180-3 출판-> SHA-3 공모 -> 2012년 Keccak이 해시 알고리즘으로 선정

구분

SHA-1

SHA-256 / 224

SHA-512 / 384

해시값 크기

160

256 / 224

512 / 384

블록 크기

512

512

1024

워드 크기

32

32

64

라운드

80

64

80

https://ko.wikipedia.org/wiki/SHA


키가 있는 해시함수

:메시지 인증 기능을 가진 함수

:함수 자체의 안전성과 키의 비밀성에 안전성을 두고 있음

:CBC모드를 이용하는 방법


해시함수 응용

-무결성점검

-소프트웨어 변경 검출

-메시지 인증 코드

-전자서명


랜덤 오라클 모델

:해시함수에 대한 이상적인 수학적 모델

:이진수로 고정된 길이의 메시지 다이제스트를 생성

:다이제스트가 존재하는 메시지가 주어지면, 오라클은 저장되어 있던 다이제스트 제공

:새로운 메시지에 대한 다이제스트는 다른 모든 다이제스트와는 독립적으로 선택될 필요가 있음


비둘기집 원리

:n+1마리의 비둘기가 n개의 비둘기집에 들어가 있다면, 적어도 1개의 비둘기 집에는 2마리의 비둘기가 들어있다는 뜻


생일 공격

:일방향 해시함수의 강한 충돌 내성을 깨고자 하는 공격

:같은 해시값을 생성하는 2개의 메시지를 구하는 것


해시함수에 대한 공격

무차별공격

:약한 충돌 내성을 깨고자 하는 공격


일치블록 연쇄공격 

:h(M)=h(M'), M≠M', 같은 해시값을 갖는 메시지(M')를 골라 사용하는 공격이다.


중간자 연쇄공격 

:전체 해시값이 아니라 해시 중간의 결과에 대한 충돌쌍을 찾는다.


고정점 연쇄공격 

:메시지 블록, 연쇄변수 쌍을 얻어 연쇄변수가 발생하는 특정한 점에서 임의의 수의 동등한 블록들을 메시지 중간에 삽입해도 전체 해시값이 변하지 않는다.


차분 연쇄공격

다중 라운드 블록암호 공격 : 다중 라운드 블록암호를 사용하는 해시함수에서, 입력값과 그에 대응하는 출력값 차이의 통계적 특성을 조사하는 기법

해시함수 공격 : 압축함수의 입출력 차이를 조사하여 0의 충돌쌍을 주로 찾아내는 방법


일방향 해시함수로 해결할 수 없는 문제

:조작과 변경을 검출할 수 있지만 거짓행세를 검출하지 못한다.

:무결성외 거짓행세를 검출하기 위해 인증이라는 절차가 필요

:해결방법(메시지 인증 코드, 전자서명)


변경 감지 코드(MDC, Modification Detection Code)

:메시지가 변경되지 않았다는 것(무결성)을 보장

:키가 없는 해시함수


메시지 인증 코드(MAC)

:무결성을 확인하고 메시지에 대한 인증을 하는 기술

:키가 있는 해시함수

:전자서명보다 빠름

:키 배송 문제가 있음


축소 MAC(nested MAC)

:해싱이 2 단계(키와 메시지를 이어 붙이는 해시 과정이 2번 있음)


HMAC(Hash MAC)

:일방향 해시함수를 이용하여 메시지 인증코드를 구성하는 방법

:RFC 2104로 출판

:TLS, IPSec, SET(Secure Electronic Transaction) 프로토콜에서 사용


CMAC(Cipher-based MAC)

:NIST는 CMAC or CBC-MAC이라 부르는 FIPS 113을 정의

:암호블록연쇄(CBC)모드와 유사한 방법, N개의 평문 블록으로 부터 N개의 암호문 블록을 만든는 것이 아님


카운터 암호 블록 연쇄 - 메시지 인증 코드(CCM, Counter with Cipher Block Chaining - MAC)

:NIST에 의해 IEEE802.11 무선랜의 보안 요구사항을 지원하기 위해서 표준화되었으나, 인증 암호를 요구하는 다양한 네트워크 응용에서 사용

:CCM의 주요 알고리즘 구성요소는 (AES 알고리즘, CTR 모드, CMAC) 이다.


MAC에 대한 공격

:재전송 공격

:키의 추측에 의한 공격(무차별 공격, 생일 공격)


재전송 공격 방어 방법

순서번호

:송신 메시지에 매회 1회씩 증가하는 번호를 붙이고 MAC 값을 계산

:통신상대마다 마지막 순서번호 기록해두어야 하는 번거로움이 있음


타임스탬프

:송신 메시지에 현재 시각을 넣고, 그 이전에 메시지가 왔을 경우에 MAC 값이 바르더라도 오류라고 판단

:송·수신자 사이에 시계를 일치시켜야 함


비표

:수신자는 송신자에게 일회용의 랜덤한 값을 줌(비표)

:비표를 포함해 MAC 값을 계산하며, 데이터의 양이 약간 증가


MAC으로 해결할 수 없는 문제

제 3자에 대한 증명 : 키를 송·수신자만 가지고 있기 때문에 제 3자를 증명할 수 없음 , 전자서명을 사용하면 제 3자에 대한 증명이 가능함 

부인 방지 : 송수신자가 송수신 사실을 부인하지 못하게 하는 것인데 MAC에서는 확인할 수 없음 , 전자서명을 사용하면 부인방지 가능


+ Recent posts