해시 함수는 임의의 크기의 데이터를 고정된 크기의 값으로 매핑합니다. 동일한 입력은 항상 동일한 출력을 생성합니다. 단 하나의 비트만 변경해도 출력이 완전히 바뀝니다. 이러한 특성 덕분에 해시는 무결성 검사에 유용하게 사용됩니다. 파일을 다운로드하고 해당 파일의 해시 값을 게시된 값과 비교해 보세요. 두 값이 일치하면 파일이 손상되지 않고 도착한 것이고, 일치하지 않으면 파일이 변경된 것입니다.
해시 함수는 단방향입니다. 해시 값에서 원래 데이터로 역추적할 수 없습니다. 이러한 특성 때문에 해시 함수는 비밀번호 저장에 유용합니다. 시스템은 비밀번호 자체가 아닌 비밀번호의 해시 값을 저장합니다. 로그인할 때 시스템은 사용자가 입력한 내용을 해시하여 저장된 해시 값과 비교합니다. 데이터베이스가 유출되더라도 공격자는 비밀번호가 아닌 해시 값만 얻게 됩니다. 취약한 비밀번호는 레인보우 테이블이나 무차별 대입 공격으로 여전히 해킹될 수 있으므로 솔팅이 중요합니다. 솔트는 해싱 전에 각 비밀번호에 추가되는 임의의 데이터입니다. 따라서 동일한 비밀번호라도 서로 다른 해시 값이 생성됩니다. SHA-256과 SHA-3은 널리 사용되는 암호화 해시 함수입니다. MD5와 SHA-1은 취약점이 발견되어 보안 목적으로 사용해서는 안 됩니다. 해시 함수는 블록체인, 디지털 서명, 파일 중복 제거에도 사용됩니다.
해시 함수 속성
- 결정론적 — 동일한 입력, 동일한 출력
- 빠름 — 계산 속도가 빠름
- 역상 저항성 - 되돌릴 수 없음
- 충돌 방지 — 동일한 해시값을 가진 두 입력값을 찾기가 어렵습니다.
해시는 암호화가 아니라 지문과 같습니다. 데이터의 무결성을 증명하는 것이지 데이터를 숨기는 것이 아닙니다.
Comments
No comments yet. Be the first to share a thought.
Leave a comment