Cryptographic Hashing & Message Authentication

xlwdn·2023년 10월 14일
0

Cryptographic Hashing

해시 함수의 일종으로, 해시 값으로부터 원래의 값을 도출하기 힘든 성질을 가진 경우를 뜻한다. 입력값의 길이에 상관없이 출력값의 길이는 고정적이다.

  • 예를 들어 256 bits 해싱일 경우 64개의 16진수 문자로 이루어진 코드 문자열로 끝난다.

조건

  • 단방향성
    • 해시 함수는 단방향성을 가지고 있어 출력값을 베이스로 입력값을 유추할 수 없어야한다.
    • 하나의 문자만 변경되어도 전혀 다른 값 출력
  • 해시 충돌
    • 해시 함수는 여러 입력값으로부터 하나의 출력값을 가질 수 있는데 이를 해시 충돌이라고 부르고, 이를 최소화하여 매우 낮은 충돌 확률을 보장해야한다.
  • 고정된 출력값의 길이
    • 항상 일정한 출력값을 보장하여 데이터 일관성과 효율적인 처리를 보장

Hash table

key-value 쌍을 저장하기 위한 저장소로써 key로부터 해시 함수를 통해 값을 출력하고 이를 value와 매핑하는 자료구조이다.

사용 예시

  • 머클 트리
    • 이진 트리와 해시 트리 구조를 결합한 것이다.
    • 여러 데이터의 집합에 대해 해싱을 수행하고 각각의 해시값에 대해 다시 두 개씩 짝지어 해싱을 수행하여 하나의 값이 나올 때까지 수행한다. 마지막 값이 머클 트리의 루트(머클루트)가 된다.
    • 위 구조를 통해 블록체인에서의 무결성을 검증하는 데에 활용한다.

SHA(Secure Hash Algorithm)

NIST에서 발표한 Cryptographic Hash Funtions의 집합이다.

SHA 함수군은 최초 SHA-0에서 시작되어 SHA-1을 거쳐 SHA-2로 통칭하는 SHA-223, SHA-256, SHA-384, SHA-512가 발표되었고 2015년에 SHA-3이 추가로 발표되었다.

  • SHA-0
    • 최초의 SHA 버전이지만 얼마 안가 수정되어 SHA-1로 넘어간다.
  • SHA-1
    • TLS, SSL, PGP, SSH, IPSec 등에 사용된다.
    • 다만 이미 공격 기법이 나와있어 더 중요한 기술에는 SHA-2 이상의 알고리즘을 권장한다.
  • SHA-2
    • 해싱 알고리즘의 표준이다.
    • 다음 알고리즘이 포함된다.
      • SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, SHA-512/256
  • SHA-3
    • 비교적 최근에 발표된 알고리즘으로써 SHA-1에 대한 공격이 성공함에 따라 비슷한 방법을 사용한 SHA-2에 대한 가능성이 지적되어 NIST에서 새롭게 공모하여 발표된 알고리즘이다.
    • SHA-1에서 SHA-2로의 완전한 마이그레이션이 2017년 12월 31일에 완료되었기에 아직 크게 사용되지 않는다.

KECCAK

SHA-3의 표준안으로써 SHA-2가 출력할 수 있는 메시지 다이제스트의 크기를 모두 출력할 수 있고 암호학적 해시 함수의 조건 3가지를 모두 갖추고 있기에 SHA-2에서 바로 마이그레이션이 가능하다.

Message Authentication

교환되는 메시지에 대한 인증을 뜻하며 메시지의 내용이 위변조되지 않았는지, 또한 올바른 송신자가 전송하였는지를 파악한다.

MDC(Message Detection Code)

원본 데이터가 손상, 또는 위변조되지 않았는지를 확인하는 방법이다.

단계

  1. 해시에 사용할 알고리즘을 선정한다.
  2. Alice → Bob으로 Message와 Message를 해시한 값을 전달한다.
    1. 이때 Message는 Insecure한 통로로, MDC는 보호된 경로로 이동한다.
  3. Bob에서 Alice로부터 수신받은 Message를 해싱하여 MDC와 비교한다.

위와 같이 MDC에서는 데이터의 무결성을 검증하지만 송신자는 검증할 수 없다.

MAC(Message Authentication Code)

원본 데이터의 무결성만 검증하는 MDC와 달리 MAC에서는 키를 추가함으로써 송신자에 대한 검증을 진행한다.

단계

  1. 별도의 채널을 통해 Alice와 Bob 사이에 키 공유
  2. Alice가 key를 통해 Message 해싱
  3. Alice가 Message와 MAC을 Bob에게 전달
  4. Bob은 수신한 Message를 해싱하여 MAC이 동일한지 검증

MDC와 달리 메시지 무결성 뿐만 아니라 메시지가 인증된 사용자로부터 왔다는 것을 보장한다.

HMAC(Hash-based MAC)

Key와 Message를 혼합하여 Hash 값을 만드는 것이다.

모든 해쉬 함수가 사용될 수 있으며 HMAC 뒤에 사용 해시 알고리즘을 표기한다.

  • HMAC-MD5
  • HMAC-SHA256
  • HMAC-SHA3-256

0개의 댓글