해싱이란? 해시 함수의 완전한 설명
빠른 답변
해싱은 단방향 함수를 사용하여 모든 입력을 고정 크기 출력(해시)으로 변환합니다. 동일한 입력은 항상 동일한 해시를 생성합니다. 서로 다른 입력은 서로 다른 해시(충돌 저항)를 생성합니다. 해싱은 데이터 무결성, 비밀번호 저장 및 디지털 서명에 사용됩니다. 무료 해시 생성기를 사용하여 브라우저에서 SHA-256, SHA-1 및 MD5 해시를 계산하세요.
소개
해싱은 모든 크기의 입력 데이터를 해시 또는 다이제스트라고 하는 고정 크기 출력으로 변환하는 프로세스입니다. 해시 함수는 이러한 변환을 수행하는 알고리즘입니다. 암호화 해시 함수에는 데이터 무결성, 비밀번호 저장, 디지털 서명 및 콘텐츠 주소 지정에 유용한 특수 속성이 있습니다. 암호화와 달리 해싱은 단방향입니다. 즉, 해시에서 입력을 복구할 수 없습니다. 일반적인 해시 함수에는 SHA-256(Bitcoin 및 TLS에 사용됨), SHA-3, 이전 MD5 및 SHA-1(현재 보안 용도로 인해 중단됨)이 포함됩니다.
단계별
-
해시 함수 속성 이해
암호화 해시 함수에는 네 가지 주요 속성이 있습니다. (1) 결정적 — 동일한 입력은 항상 동일한 출력을 제공합니다. (2) 계산이 빠릅니다. (3) 단방향 — 해시에서 입력을 복구하는 것이 불가능합니다. (4) 충돌 방지 — 동일한 해시를 사용하여 두 개의 서로 다른 입력을 찾는 것이 불가능합니다. (5) 눈사태 효과 - 작은 입력 변화로 인해 출력이 크게 변경됩니다.
-
일반적인 알고리즘 알아보기
SHA-256(256비트 출력, 64개의 16진수 문자)은 비트코인, TLS 및 디지털 서명에 사용되는 최신 표준입니다. SHA-512는 더 안전하지만 속도가 느립니다. SHA-3은 최신 제품군입니다. MD5(128비트) 및 SHA-1(160비트)은 충돌 방지를 위해 손상되었으므로 보안을 위해 사용해서는 안 됩니다.
-
해싱과 암호화 구별
해싱은 단방향이므로 되돌릴 수 없습니다. 암호화는 양방향입니다. 키를 사용하여 해독할 수 있습니다. 해싱은 무결성과 검증을 위한 것입니다. 암호화는 기밀 유지를 위한 것입니다. 복구해야 하는 데이터를 저장하기 위해 해시를 사용하지 마십시오.
-
해싱을 올바르게 사용하십시오.
데이터 무결성을 위해 데이터를 해시하고 알려진 양호한 해시와 비교하십시오. 비밀번호의 경우 너무 빠르고 무차별 공격에 취약한 원시 SHA-256이 아닌 고유한 솔트가 있는 느린 키 확장 해시(bcrypt, scrypt, Argon2)를 사용하십시오.
예
SHA-256 해시
입력: Hello, World!
산출: dffd6021bb2bd5b0af676290809ec008dfca50a8d29e6ac0a52c2d7e9f0a3b0c
눈사태 효과
입력: 안녕하세요, 월드! (대 안녕하세요, 세계?)
산출: 한 문자 변경에도 불구하고 완전히 다른 해시
MD5 해시(손상됨, 레거시에만 해당)
입력: Hello, World!
산출: ed0760733d7505e9ceacf8af225020ac
일반적인 문제
- 보안을 위해 MD5 또는 SHA-1을 사용합니다. 둘 다 충돌 방지를 위해 손상되었습니다. 보안 목적으로 SHA-256 이상을 사용하세요.
- 솔트 없이 비밀번호 해싱 - 동일한 비밀번호는 동일한 해시를 생성하여 레인보우 테이블 공격을 가능하게 합니다. 고유한 솔트와 함께 bcrypt, scrypt 또는 Argon2를 사용하세요.
- 해싱과 암호화를 혼동함 - 해싱은 단방향입니다(되돌릴 수 없음). 암호화는 양방향입니다(키로 해독 가능).
- 해시가 고유할 것으로 예상 - 충돌은 이론적으로 가능하지만 보안 알고리즘에서는 실제로 실행 불가능합니다(SHA-256에는 2^256개의 가능한 출력이 있음).
팁
- 데이터 무결성 확인, 콘텐츠 주소 지정 및 디지털 서명을 위해 SHA-256을 사용하세요.
- 비밀번호 저장의 경우 원시 SHA-256이 아닌 bcrypt, scrypt 또는 Argon2를 사용하십시오. 이러한 알고리즘에는 무차별 대입에 저항하기 위한 키 확장 기능이 있습니다.
- 해싱은 단방향이므로 복구해야 하는 데이터를 저장하는 데 사용하지 마십시오. 기밀 데이터에는 암호화를 사용하세요.
- 해시 생성기를 사용하여 브라우저에서 SHA-256 및 기타 해시를 즉시 계산하세요.