Computer Science/Cryptography

[Cryptography] Hash Function(해시 함수)

LeeJaeJun 2023. 12. 27. 00:29
728x90
반응형

- Hash function

임의의 크기를 가진 데이터를 고정된 크기의 해시 값로 매핑하는 함수입니다. 해시 함수는 입력 데이터에 대해 일관된 길이의 출력 값을 생성하며, 일반적으로 매우 빠르게 계산됩니다. 체크섬의 한 방법이라고 볼 수 있습니다. 이러한 특징으로 인해 해시 함수는 데이터의 고유한 식별자를 생성하거나, 데이터의 무결성을 검증(데이터가 변조, 위조가 되지 않았다고 증명)하는 데 널리 사용됩니다. 대표적으로 인증서 검증, 디지털 포렌식, 디지털 서명(Hash + PKI), 패스워드 단방향 암호화, 블록체인 등에 활용됩니다.

  • 단방향성(One-wayness, 일방향성): 해시 함수는 입력에 대해 쉽게 계산 가능하지만, 해시 값을 역산하여 입력 값을 복원하는 것은 매우 어렵습니다. 즉, 해시 함수의 출력 값을 통해 입력 값을 유추하기는 거의 불가능합니다.
  • 동일한 입력에 대해 항상 동일한 출력: 동일한 입력에 대해 항상 동일한 해시 값이 생성됩니다. 즉, 입력 값이 조금이라도 변경되면 해시 값도 완전히 다른 결과를 갖습니다. 입력 값의 약간의 변화에도 해시 값은 완전히 다른 결과를 갖습니다.
  • 충돌 저항성(Collision resistance): 서로 다른 입력에 대해 동일한 해시 값이 생성될 가능성을 최소화하는 것이 이상적입니다. 해시 함수는 가능한 한 충돌이 발생할 확률을 낮추는 것이 중요합니다. 충돌이 발생하면 서로 다른 입력이 동일한 해시 값을 갖는 것이므로, 데이터의 무결성이 훼손될 수 있습니다.
  • 결과 값 길이 고정: 입력 값의 크기와 상관없이 결과 값의 길이(혹은 크기)가 항상 일정합니다.

대표적인 Hash 알고리즘은 다음과 같습니다.

  • MD-5: MD5는 128비트 해시 함수로, 입력 데이터의 해시 값을 생성하는 알고리즘입니다. MD5는 빠르고 간단하며 널리 사용되었지만, 보안 취약점이 발견되어 현재는 안전하지 않은 해시 함수로 간주됩니다. 따라서 패스워드 단방향 암호화에 사용하지 않아야 합니다. 충돌 저항성이 낮아서 서로 다른 입력에 대해 동일한 해시 값이 생성될 가능성이 높습니다.(경우의 수가 적기 때문에 전수조사로 뜷릴 수 있음)
  • SHA-1: SHA-1은 160비트 해시 함수로, 입력 데이터의 해시 값을 생성하는 알고리즘입니다. SHA-1은 MD5와 마찬가지로 보안 취약점이 발견되어 현재는 안전하지 않은 해시 함수로 간주됩니다. 충돌 저항성이 낮아서 서로 다른 입력에 대해 동일한 해시 값이 생성될 가능성이 존재합니다. SHA는 Secure Hash Algorithm의 약어입니다.
  • SHA-128, 256, 384, 512: 숫자는 비트 수를 나타내기에 숫자가 클수록 경우의 수가 늘어나 보안성이 좋습니다. 특히, SHA-256은 SHA-2(안전한 해시 알고리즘 2) 계열에 속하는 256비트 해시 함수입니다. 입력 데이터의 해시 값을 생성하는 데 사용되며, 현재 많은 보안 프로토콜에서 널리 사용됩니다. SHA-256은 SHA-1과 MD5에 비해 더 큰 해시 값과 충돌 저항성을 제공합니다. SHA-256은 안전한 데이터 검증, 메시지 무결성 확인, 디지털 서명 등 다양한 보안 응용에서 사용됩니다.
  • BLAKE: BLAKE은 비밀번호 해시 및 메시지 인증을 위한 해시 함수입니다. BLAKE은 다양한 해시 길이를 지원하며, 고성능과 보안을 조화시키는 목표로 개발되었습니다. BLAKE은 안전한 데이터 검증, 메시지 무결성 확인, 암호화 등에 사용됩니다. BLAKE은 다른 해시 함수와는 독립적으로 개발되었으며, 현재도 보안 및 성능 면에서 평가되고 사용되고 있습니다.
728x90
반응형