본문 바로가기
cryptology

Hash 란? hash 암호화란?

by jinhyuk._.c 2022. 9. 17.

 

hash 란?

hash 함수, hash 알고리즘 또는 hash 함수알고리즘은 임의의 길이의 데이터를 고정된 길이의 데이터로 변환하는 함수이고 일반적인 알고리즘을 사용하여 정보를 빠르게 인코딩하기 위해 암호학에서 사용되는 일반적인 기술입니다.일반적으로 알고리즘은 문자열에 적용되며 결과 문자열이 "해시 값"이 됩니다. 그러면 특정 해시 값 또는 결과 값이 특정 메시지를 식별하는 데 사용되므로 메시지의 "디지털 핑거프린트(지문)"가 생성됩니다. 알고리즘의 출력을 "메시지 다이제스트" 또는 "체크섬"이라고도 합니다. 해싱은 전송 중에 정보가 변경되었는지 여부를 판단하는데 유용합니다. 수신 시 해시 값이 송신 시 해시 값과 다를 경우 메시지가 변경되었음을 나타냅니다. 해시되는 데이터에 알고리즘이 적용되면 해시 함수는 고정 길이의 출력을 생성합니다. 해시함수를 통과하는 모든 것은 동일한 해시함수를 통과하는 다른 것과 동일한 길이의 결과로 출력이 됩니다. 해싱은 데이터를 압축된 메시지 다이제스트로 변환하는 데 사용되는 단방향 작업입니다. 그리고 hash 테이블이라는 자료구조에 사용되며, 매우 빠른 데이터 검색을 위한 컴퓨터 소프트웨어에 널리 사용됩니다.해시 함수는 큰 파일에서 중복되는 레코드를 찾을 수 있기 때문에 데이터베이스 검색이나 테이블 검색의 속도를 향상시킬 수 있습니다. 예를 들어서, 복잡한 패턴의 구조에서 에서 유사한 패턴을 찾는데 사용될 수도 있습니다.

해시 함수를 사용하여 디지털 서명을 확인할 수 있으므로 인터넷을 통해 문서에 서명할 때 서명이 특정 개인에게 적용됩니다. 손으로 쓴 서명과 마찬가지로 이러한 서명은 정확한 해시 코드를 사람에게 할당함으로써 검증하게됩니다.

hash 암호화란?

hash 암호화란 위의 설명과 같은 알고리즘을 통해 생성되는 값들이 암호학적인 부분에서 요구하는 역상, 제2역상, 충돌쌍 에 대하여 안정성 및 저항성을 가져야 하며 인증절차를 거쳐야 합니다. 즉 입력값과 해시 값에 대해서, 해시 값을 망가뜨리지 않으면서 입력값을 수정하는 공격에 대해 안전해야 합니다. 이러한 성질을 가지는 해시 값은 기존 입력값을 의도적으로 손상시키지 않았는지에 대한 검증장치로 사용할 수 있습니다. 그리고 암호학적 해시함수는 임의의 길이를 입력 받기는 하지만 MD Strength Padding할 때 길이정보가 입력되므로 최대 길이에 대한 제한이 있습니다. 예를 들어 패딩시 하위 8비트의 길이에 대한 정보가 입력 되는 경우에는 hash가능한 최대 길이는 0xFF가 되어 255바이트가 됩니다.

역상 안정성 및 저항성이란?

주어진 hash 값에 대해, 그 hash 값을 생성하는 입력값을 찾는 것이 계산상 어렵다는 점. 즉, 제 1 역상 공격에 대해 안전해야 한다는 것입니다. 이 성질은 단방향함수와 연관되어 있습니다.

반응형

제2역상 안정성 및 저항성이란?

입력 값에 대해, 그 데이터의 hash 값을 바꾸지 않으면서 입력을 변경하는 것이 계산상 어렵다는 점.즉 제 2 역상 공격 및 변경에 대해 안전해야 한다는 것입니다.

충돌 안정성 및 저항성이란?

hash 충돌에 대해 안전해야 한다는 의미입니다. 충돌이란 같은 해시 값을 생성하는 두 개의 입력값을 찾는 것이 계산상 어려워야 한다는 것입니다.

hash의 현실

현재까지 개발된 거의 모든 hash 함수는 해시 충돌의 문제가 확인된 상태입니다 . SHA-1와 길이만 늘어날 뿐, 알고리즘이 SHA1와 똑같은 SHA256, SHA512는 hash 충돌의 가능성이 이론적으로 제시되었습니다.(SHA는 hash알고리즘의 일종입니다.) 2014년 기준으로 문제가 없는 hash 표준으로는 SHA3가 유일합니다. 다만 여기서 이론적으로 제시되었다는 것은 지구 전체의 연산 처리 능력을 기준으로 계산적 가능성을 따지는 것입니다. 순수한 무차별 대입(Brute Force)보다 몇 천 배 정도 적은 계산 횟수로 복호화할 수 있으면 학계에서는 대체로 '깼다'라고 취급합니다. 그런데 SHA1 해시를 무차별 대입으로 깨려면 2160번의 계산을 해야 하는데, 여기서 1,000배 빨라졌다고 해 봤자 2150번의 계산이 필요합니다. 즉 현실적인 의미로는, SHA1이나 SHA2의 hash값이 불안하다고 여기기엔 다소 무리가 있습니다. 다만 2017년을 기점으로는 SHA1은 실질적인 의미로도 깨졌다고 보고 사용을 비권장하게 되었습니다.


대표적으로 MD5와 SHA 에 시리즈가 있습니다. MD5에 대한 설명은 지난 포스팅에서 설명을 드렸으니 다음 포스팅에서는 SHA 에 대해서 알아보겠습니다.

반응형

댓글