- Published on
What is Hashing And Encryption
- Authors
- Name
- 이민기
- Github
- @mingi3442
- 해싱이란 ?
- 암호 해싱 함수
- 다양한 암호 해싱 함수
- 암호 해시 함수의 조건과 선정 기준
- 𖤐 암호 해시 함수의 조건
- 상용 암호 해시 알고리즘
- MDC (Modification Detection Code)
- MAC (Message Authentication Code)
- HMAC (Hased Message Authentication Code)
- Reference
해싱이란 ?
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 값이 최종 해싱된 값이 된다
MDC (Modification Detection Code)
변경 감지 코드라고 하며 해당 메시지가 변경되지 않았다는 것을 보장하기 위해 사용합니다.
⤷무결성은 증명가능하지만 송신자를 인증 불가능하다는 단점이 있습니다.
Message를 해싱한 MDC와 Message를 보내서 검증합니다.
MAC (Message Authentication Code)
송신자와 수신자 사이에 대칭 Key를 이용해 MDC를 검증합니다.
⤷송신자 인증까지는 가능하지만 Key
가 노출될 위험이 있을 수 있습니다.
송신자는 Message와 Key를 이용해 해싱한 MDC와 Message를 보내며 수신자는 자신이 갖고 있는 Key를 이용해 Message와 해싱하여 받은 DMC와 수신자 본인이 해싱한 DMC가 같은 지를 검증하여 무결성과 송신자가 맞는지를 증명합니다.
HMAC (Hased Message Authentication Code)
NIST에서 사용하는 표준 MAC입니다.
송신자는 Message, Key, ipad를 이용해 해싱한 값을 다시한번 key와 opad를 이용해 해싱한 HMDC와 Message를 수신자에게 보내며 수신자는 동일한 방법으로 검증합니다.