본문 바로가기
Major/#정보보호(Data protection)

해시함수의 안전성 (security of hash function)

by Bright_Between 2023. 4. 24.
반응형

해시 함수(Hash function)는 임의의 길이의 데이터를 고정된 길이의 데이터로 변환하는 함수입니다. 이러한 해시 함수는 데이터를 식별하기 위한 키(Key) 값으로 사용됩니다. 하지만, 이러한 해시 함수가 안전한지에 대한 문제는 매우 중요합니다. 이번에는 해시 함수의 안전성에 대해 설명하겠습니다. 

 


1. 역상 저항성 (Preimage resistance)

해시 함수에서 역상 저항성은 입력값의 해시 값으로부터 입력값을 찾아내는 것이 어려워야 한다는 것을 의미합니다. 즉, 한번 해시된 값을 이용해서 입력값을 찾아내는 것이 매우 어렵다는 것입니다. 이러한 성질을 만족하면, 해시 함수는 역상 저항성을 갖는다고 합니다. 

예를 들어, 해시 함수가 H(x) = y 라면, 역상 저항성은 y 값을 알고 있을 때 x 값을 찾는 것이 어려워야 한다는 것입니다. 이러한 성질이 충족되지 않는다면, 해시 함수는 보안에 취약해집니다. 

 

역상 저항성 (출처: https://velog.io/@donggni0712/%EC%83%A4%EB%94%A9)


2. 제2역상 저항성 (Second preimage resistance)

제2역상 저항성은 주어진 해시값 y와 같은 해시값을 갖는 다른 입력값 x'을 찾는 것이 어렵다는 것을 의미합니다. 즉, 같은 해시값을 갖는 입력값을 찾아내는 것이 어려워야 합니다. 

예를 들어, 해시 함수가 H(x) = y 라면, 제2역상 저항성은 x 값을 알고 있을 때, H(x)와 같은 값을 갖는 다른 x'를 찾는 것이 어려워야 한다는 것입니다. 이러한 제2역상 저항성은 역상 저항성을 만족한다면 자연스럽게 충족됩니다. 

 

제2역상저항성 (출처: https://velog.io/@donggni0712/%EC%83%A4%EB%94%A9)


3. 충돌 저항성 (Collision resistance)

충돌 저항성은 서로 다른 두 입력값 x, x'에 대해 H(x) = H(x')이 되는 경우를 찾는 것이 어려워야 한다는 것을 의미합니다. 즉, 다른 입력값에 대해 같은 해시 값을 갖는 경우를 찾아내는 것이 매우 어려워야 합니다. 

예를 들어, 해시 함수가 H(x) = y 라면, 충돌 저항성은 다른 입력값 x와 x'가 존재할 때, H(x) = H(x')이 되는 경우를 찾아내는 것이 어려워야 한다는 것입니다. 

 

충돌 저항성 (출처: https://velog.io/@donggni0712/%EC%83%A4%EB%94%A9)


 해시 함수는 다양한 분야에서 사용됩니다. 데이터의 무결성 검증, 암호화, 디지털 서명 등에 사용됩니다. 따라서, 해시 함수의 안전성은 매우 중요합니다. 

하지만, 모든 해시 함수가 안전한 것은 아닙니다. 일부 해시 함수들은 충돌 저항성을 만족하지 못하거나 역상 저항성과 제2역상 저항성이 부족해 보안에 취약합니다. 예를 들어, MD5, SHA-1 등은 현재는 안전하지 않은 해시 함수로 알려져 있습니다. 

따라서, 안전한 해시 함수를 선택하기 위해서는 충돌 저항성, 역상 저항성, 제2역상 저항성 등의 보안 요소를 고려해야 합니다. 이를 위해서는 널리 인정받는 안전한 해시 함수들을 사용하는 것이 좋습니다. 

 

SHA-256 (출처: https://www.cast-inc.com/security/encryption-primitives/sha-256)



예를 들어, SHA-256, SHA-384, SHA-512 등은 현재 매우 안전한 해시 함수들로 알려져 있습니다. 이러한 안전한 해시 함수들은 보안 취약점이 발견되면 보완되어 업데이트되기도 하며, 보안 전문가들에 의해 검증되었기 때문에 안전하다고 평가됩니다. 

따라서, 안전한 해시 함수의 선택은 보안성을 확보하는 데 매우 중요한 역할을 합니다. 보안성을 고려하지 않고 해시 함수를 선택하면 악의적인 공격에 취약해질 수 있으므로, 안전성을 고려한 적절한 해시 함수를 선택해야 합니다.

반응형

댓글