Hashing(해싱)은 해싱된 값을 통하여 데이터의 무결성을 증명할 수 있는 수단이다
입력 문서를 고정된 길이의 데이터로 변환하며 역으로 고정된 길이로는 입력 문서를 찾을 수 없는 단방향 속성을 갖고 있다.
MD5 : 1991년 만들어진 128비트 알고리즘
⤷충돌 저항성 ⬇
SHA-1 : 1995년 미국의 NIST에서 만들어진 160비트 알고리즘
⤷충돌 저항성 ⬇
SHA-2 : 2002년 미국 NIST에서 만들어진 알고리즘이며 해시 값의 크기에 따라 나뉜다
⤷SHA-256 , SHA-384 , SHA-512등이 있으며 SHA-256은 BitCoin에서도 사용된다
SHA-3 : 2012년 미국 NIST에서 선정되었다.
⤷SHA3-224 , SHA3-256 , SHA3-384 , SHA3-512등이 있으며
Ehtereum에서 사용하는 Keccak-256의 기반이 되었다
: Message
, : Hash function
, : Digest
- Preimage resistance (단방향성)
일 경우 공격자가 와 를 이용하여 을 발견하는 것은 어려워야 한다- Second Preimage resistance (약한 충돌 저항성)
과 이 주어졌을 때 ≠ 이면서 = 인 를 찾기 어려워야 한다
⤷Message와 해싱된 값이 주어졌을 경우, 해싱된 값이 같으면서 다른 Message를 찾긱 어려워야 한다- Collision resistnace (충돌 저항성)
== 인 서로 다른 메세지 과 를 찾기 어려워야 한다
⤷a가 해싱된 값이 0일 경우와 b가 해싱된 값이 0일 경우 b를 찾기 어려워야 한다
Iterative Hashing
- 메시지를 비트 크기의 블록으로 분할하며 마지막 블록에 메세지의 길이 블록을 추가한다
- 메시지를 분할한 블록의 수 만큼 해싱한다
⤷i단계에서는 , 의 값을 받아 Hashing하여 를 생성한다- 최종 생성되는 Digest 값이 최종 해싱된 값()이 된다
⤷무결성은 증명가능하지만 송신자를 인증 불가능하다는 단점이 있다
🖊
Message
를 해싱한MDC
와Message
를 보내서 검증한다
⤷송신자 인증까지는 가능하지만 Key
가 노출될 위험이 있을 수 있다.
🖊 송신자는
Message
와Key
를 이용해 해싱한MDC
와Message
를 보내며 수신자는 자신이 갖고 있는Key
를 이용해Message
와 해싱하여 받은DMC
와 수신자 본인이 해싱한DMC
가 같은 지를 검증하여 무결성과 송신자가 맞는지를 증명한다
🖊 송신자는
Message
,Key
,ipad
를 이용해 해싱한 값을 다시한번key
와opad
를 이용해 해싱한HMDC
와Message
를 수신자에게 보내며 수신자는 동일한 방법으로 검증한다