[Cryptography] 암호화와 해싱

이민기·2022년 5월 1일
0

BlockChain & Cryptography

목록 보기
5/12
post-thumbnail

해싱

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의 기반이 되었다

𖤐 암호 해시 함수의 조건

MM : Message , H()H() : Hash function, H(M)H(M) : Digest

  • Preimage resistance (단방향성)
    y=H(M)y = H(M)일 경우 공격자가 yyH()H()를 이용하여 MM을 발견하는 것은 어려워야 한다
  • Second Preimage resistance (약한 충돌 저항성)
    MMH(M)H(M)이 주어졌을 때 MM'MM 이면서 H(M)H(M') = H(M)H(M)MM'를 찾기 어려워야 한다
    Message와 해싱된 값이 주어졌을 경우, 해싱된 값이 같으면서 다른 Message를 찾긱 어려워야 한다
  • Collision resistnace (충돌 저항성)
    H(M)H(M) == H(M)H(M')인 서로 다른 메세지 MMMM'를 찾기 어려워야 한다
    a가 해싱된 값이 0일 경우와 b가 해싱된 값이 0일 경우 b를 찾기 어려워야 한다

상용 암호 해시 알고리즘

Iterative Hashing

  1. 메시지를 nn비트 크기의 블록으로 분할하며 마지막 블록에 메세지의 길이 블록을 추가한다
  2. 메시지를 분할한 블록의 수 만큼 해싱한다
    i단계에서는 Hi1H_{i-1} , MiM_i의 값을 받아 Hashing하여 HiH_i를 생성한다
  3. 최종 생성되는 Digest 값이 최종 해싱된 값(HH)이 된다

MDC (Modification Detection Code)

변경 감지 코드라고 하며 해당 메시지가 변경되지 않았다는 것을 보장하기 위해 사용한다

무결성은 증명가능하지만 송신자를 인증 불가능하다는 단점이 있다

🖊 Message를 해싱한 MDCMessage를 보내서 검증한다

  • MAC (Message Authentication Code)

송신자와 수신자 사이에 대칭 Key를 이용해 MDC를 검증한다

송신자 인증까지는 가능하지만 Key가 노출될 위험이 있을 수 있다.

🖊 송신자는 MessageKey를 이용해 해싱한 MDCMessage를 보내며 수신자는 자신이 갖고 있는 Key를 이용해 Message와 해싱하여 받은 DMC와 수신자 본인이 해싱한 DMC가 같은 지를 검증하여 무결성과 송신자가 맞는지를 증명한다

  • HMAC (Hased Message Authentication Code)

NIST에서 사용하는 표준 MAC이다

🖊 송신자는 Message, Key, ipad를 이용해 해싱한 값을 다시한번 keyopad를 이용해 해싱한 HMDCMessage를 수신자에게 보내며 수신자는 동일한 방법으로 검증한다

profile
블로그를 옮기는 중입니다. https://min71.dev

0개의 댓글