해싱이란 무엇인가요?
- 해싱은 수학적 함수를 사용해 어떤 입력값이든 고정된 크기의 출력값으로 변환하는 과정이며, 크립토와 블록체인 기술의 핵심 기반입니다.
- 암호학적 해시 함수는 충돌 저항성, 역상 저항성, 제2역상 저항성이라는 세 가지 핵심 속성을 충족해야 합니다.
- 비트코인은 채굴, 거래 검증, 주소 생성에 SHA-256을 사용하며, 이더리움은 상태 관리와 스마트컨트랙트 작업에 Keccak-256을 사용합니다.
- SHA-256과 SHA-3 같은 현대 해시 함수는 알려진 양자컴퓨팅 위협에 대해서도 여전히 안전한 것으로 평가됩니다. 완전히 새로운 알고리즘이 필요한 것이 아니라, 더 큰 출력 크기를 사용하면 충분한 보안성을 유지할 수 있습니다.
개요
해싱은 가변적인 크기의 입력값으로부터 고정된 크기의 출력값을 생성하는 과정을 의미합니다. 이는 해시 함수라고 불리는 수학적 공식에 의해 수행되며, 실제로는 해싱 알고리즘으로 구현됩니다.
모든 해시 함수가 암호학을 포함하는 것은 아니지만, 암호학적 해시 함수는 블록체인 기술과 현대 사이버보안의 핵심에 있습니다. 이러한 함수 덕분에 블록체인과 다른 분산 시스템은 높은 수준의 데이터 무결성과 보안을 달성할 수 있습니다. 해싱이 어떻게 작동하는지 이해하는 것은 크립토가 어떻게 작동하는지 알고 싶은 사람에게 유용합니다.
해시 함수는 어떻게 작동하나요?
서로 다른 해시 함수는 서로 다른 크기의 출력값을 생성하지만, 각 알고리즘은 입력값의 크기와 관계없이 항상 고정된 길이의 출력값을 생성합니다. 예를 들어 SHA-256은 항상 256비트, 즉 64자의 16진수 출력값을 생성하며, SHA-1은 160비트 다이제스트를 생성합니다.
중요한 점은 해싱이 암호화와 다르다는 것입니다. 암호화는 양방향 과정입니다. 데이터는 키를 사용해 암호화될 수 있고, 다시 원래 형태로 복호화될 수 있습니다. 반면 해싱은 단방향 함수입니다. 입력값으로부터 해시를 만들 수는 있지만, 해시값만으로 원래 입력값을 실질적으로 되돌리는 것은 불가능합니다.
한 글자만 다른 단어를 SHA-256에 입력해도 완전히 다른 출력값이 나옵니다. 첫 글자의 대소문자만 바뀌는 작은 변화도 완전히 다른 해시값을 만들어냅니다. 이러한 속성을 눈사태 효과라고 하며, 보안의 핵심 기반입니다. 또한 두 출력값은 같은 단어를 몇 번 알고리즘에 넣어도 항상 동일하게 유지됩니다. 이는 해시 함수의 결정론적 특성을 보여줍니다.
SHA 알고리즘 계열, 즉 Secure Hash Algorithms에는 여러 세대가 있습니다. SHA-0과 SHA-1은 충돌이 발견되었기 때문에 더 이상 안전한 것으로 간주되지 않습니다. 현재는 SHA-256과 SHA-512를 포함하는 SHA-2 계열과 Keccak 알고리즘 기반의 SHA-3 계열만 암호학적으로 안전한 것으로 평가됩니다.
암호학적 해시 함수
암호학적 해시 함수는 추가적인 보안 요건을 충족하는 해시 함수입니다. 이러한 속성 덕분에 디지털 서명, 데이터 무결성 검증, 블록체인 합의 같은 용도에 적합합니다. 이런 함수를 깨기 위해서는 엄청난 수의 무차별 대입 시도가 필요합니다.
암호학적 해시 함수가 안전하다고 평가되기 위해서는 세 가지 핵심 속성을 충족해야 합니다. 바로 충돌 저항성, 역상 저항성, 제2역상 저항성입니다.
충돌 저항성
충돌은 서로 다른 두 입력값이 같은 해시 출력값을 만들어내는 경우를 의미합니다. 해시 함수는 이러한 충돌을 찾는 것이 계산적으로 불가능에 가까울 때 충돌 저항성을 가진다고 평가됩니다. 수학적으로는 가능한 입력값의 집합이 무한하고 출력값은 고정 길이이기 때문에 충돌은 반드시 존재합니다.
실무적으로 충돌 저항성은 같은 해시값을 만들어내는 두 입력값을 찾는 데 수백만 년에 달하는 계산이 필요하다는 뜻입니다. SHA-256의 경우 충돌을 찾으려면 생일 경계 기준으로 약 2의 128제곱 번의 연산이 필요하며, 이는 현재의 계산 능력을 훨씬 넘어섭니다.
역상 저항성
역상 저항성은 특정 해시 출력값이 주어졌을 때, 그 출력값을 만들어낸 입력값을 찾는 것이 계산적으로 불가능에 가깝다는 뜻입니다. 이것이 해시 함수를 “단방향”으로 만드는 핵심 속성입니다. 공격자가 해시값을 보더라도 어떤 데이터가 그 해시값을 만들었는지 알아낼 수 없습니다.
이 속성은 비밀번호 저장 같은 용도에서 중요합니다. 서비스는 비밀번호 자체가 아니라 비밀번호의 해시값을 저장할 수 있습니다. 이 경우 해시 데이터베이스가 노출되더라도 원래 비밀번호는 보호될 수 있습니다.
제2역상 저항성
제2역상 저항성은 특정 입력값과 그 해시값이 주어졌을 때, 같은 해시값을 만들어내는 다른 입력값을 찾는 것이 불가능에 가깝다는 뜻입니다. 이는 충돌 저항성과 관련이 있지만, 더 표적화된 공격 시나리오를 다룹니다.
충돌 저항성을 가진 해시 함수는 제2역상 저항성도 가집니다. 제2역상을 찾는 것은 결국 충돌을 찾는 것이기 때문입니다. 다만 어떤 함수는 역상 저항성을 가지면서도 충돌 저항성은 갖지 않을 수 있습니다.
블록체인에서의 해싱
해시 함수는 블록체인 시스템에서 광범위하게 사용됩니다. 비트코인에서는 SHA-256이 작업증명을 통해 네트워크를 보호합니다. 채굴자는 특정 목표값보다 낮은 해시 출력값을 찾아야 합니다. 이 과정은 완료하기 위해 막대한 계산 노력을 요구하지만, 검증은 매우 쉽습니다. 이를 통해 비대칭적인 보안 모델이 만들어집니다.
해싱은 머클 트리를 구성하는 데도 사용됩니다. 머클 트리는 거래들을 쌍으로 해싱해나가며, 최종적으로 하나의 루트 해시가 전체 거래 블록을 요약하는 데이터 구조입니다. 이를 통해 라이트 클라이언트는 모든 거래 데이터를 다운로드하지 않고도 특정 거래가 블록에 포함되어 있는지 검증할 수 있습니다.
비트코인은 주소 생성에도 해싱을 사용합니다. 공개키는 SHA-256을 거친 뒤 RIPEMD-160을 통해 처리되어 더 짧고 관리하기 쉬운 주소 형식으로 변환됩니다. 이 방식은 추가적인 보안 계층을 제공하고, 거래에 필요한 데이터 크기도 줄입니다.
이더리움은 Keccak-256이라는 변형을 사용합니다. 이는 SHA-3 표준과 밀접하게 관련되어 있으며, 상태 관리, 스마트컨트랙트 함수 선택자, 이벤트 로깅, 주소 파생 등에 사용됩니다. 각 블록체인 플랫폼은 자신들의 보안 모델과 성능 요구사항에 따라 해시 함수를 선택합니다.
채굴과 해시레이트
비트코인 채굴의 핵심 과제는 블록 헤더의 논스 값을 바꿔가며 목표 임계값보다 낮은 SHA-256 해시값을 만들어내는 입력값을 찾는 것입니다. 목표값은 네트워크의 전체 계산 능력이 얼마나 커지든 평균 블록 시간이 10분으로 유지되도록 2,016개 블록마다 조정됩니다. 이것이 블록체인을 안전하게 만드는 구조입니다.
해시레이트는 채굴에 투입된 전체 계산 능력을 의미합니다. 2026년 초 기준, 비트코인 네트워크는 약 800~900 EH/s 수준에서 작동하고 있습니다. 이는 채굴자들이 매초 수백 퀸틸리언 번의 해시 계산을 수행한다는 의미입니다.
채굴자는 충돌을 찾을 필요가 없습니다. 현재 난이도 목표보다 낮은 해시값을 만들어내는 아무 입력값이나 찾으면 됩니다. 가능한 유효 출력값이 많이 존재하기 때문에, 이 작업은 SHA-256 자체의 약점을 이용하는 것이 아니라 계산 처리량의 문제입니다.
채굴에는 막대한 계산 비용이 들기 때문에, 채굴자들은 네트워크를 공격하려 하기보다 규칙을 따를 강한 경제적 유인을 갖습니다. 더 많은 채굴자가 참여할수록 블록체인의 보안성은 높아집니다.
포스트 양자 시대의 해싱
흔한 우려 중 하나는 양자컴퓨터가 블록체인에서 사용되는 해시 함수를 깨뜨릴 수 있는지 여부입니다. 짧게 말하면, 해시 함수는 공개키 암호 방식보다 양자 공격에 훨씬 더 강합니다.
해시 함수에 대한 가장 관련성 높은 양자 공격은 그로버 알고리즘입니다. 그러나 그로버 알고리즘은 제곱근 수준의 속도 향상만 제공합니다. 즉, 256비트 해시 함수는 양자 공격자에 대해서도 약 128비트 수준의 보안성을 제공합니다. 이는 여전히 계산적으로 깨기 불가능한 수준으로 간주됩니다. 반면 블록체인에서 사용되는 공개키 알고리즘인 ECDSA와 EdDSA는 충분히 강력한 양자컴퓨터에서 쇼어 알고리즘에 의해 완전히 깨질 수 있습니다.
2024년 8월, NIST는 SPHINCS+에서 파생된 해시 기반 디지털 서명 표준인 FIPS 205, 즉 SLH-DSA를 발표했습니다. 이 방식은 보안을 전적으로 해시 함수의 강도에 의존합니다. 이는 SHA-2와 SHA-3가 포스트 양자 세계에서도 신뢰할 수 있다는 강력한 제도적 인정으로 볼 수 있습니다.
2025년 기준 NIST, EU, 기타 표준화 기관들의 합의는 명확합니다. 새로운 “포스트 양자 해시” 알고리즘은 필요하지 않습니다. 256비트 이상의 출력을 사용하는 SHA-256과 SHA-3는 예측 가능한 미래에도 안전할 것으로 예상됩니다. 긴급한 포스트 양자 전환 노력은 해시 함수가 아니라 공개키 암호 방식을 교체하는 데 집중되어 있습니다.
비밀번호 해싱과 키 파생
SHA-256과 SHA-3는 뛰어난 범용 암호학적 해시 함수이지만, 비밀번호 저장에는 적합하지 않습니다. 이유는 속도입니다. 이 함수들은 빠르게 작동하도록 설계되어 있습니다. 따라서 공격자가 유출된 비밀번호 데이터베이스에 접근할 경우, GPU나 특수 하드웨어를 사용해 초당 수십억 개의 비밀번호 후보를 테스트할 수 있습니다.
전용 비밀번호 해싱 함수는 의도적으로 느리고 메모리를 많이 사용하도록 설계되어 이 문제를 해결합니다. 현재 권장되는 표준은 Argon2id이며, 이는 2015년 Password Hashing Competition에서 우승한 방식입니다. 그 외 널리 사용되는 선택지로는 bcrypt와 scrypt가 있습니다.
이러한 함수들은 각 비밀번호마다 고유한 무작위 “솔트”도 사용합니다. 이를 통해 공격자가 미리 계산된 조회 테이블, 즉 레인보우 테이블을 사용하는 것을 막을 수 있습니다. 계산 비용, 메모리 요구량, 솔팅이 결합되면 해시 데이터베이스가 유출되더라도 무차별 대입 공격은 경제적으로 비현실적이 됩니다.
FAQ
해싱과 암호화의 차이는 무엇인가요?
해싱은 고정된 크기의 출력값을 생성하는 단방향 함수이며 되돌릴 수 없습니다. 암호화는 키를 사용해 데이터를 변환하고, 대응하는 키를 사용해 다시 원래 형태로 복호화할 수 있는 양방향 과정입니다. 해싱은 무결성 검증과 인증에 사용되며, 암호화는 기밀성 보장에 사용됩니다.
서로 다른 두 입력값이 같은 해시를 만들 수 있나요?
네. 이론적으로는 가능하며, 이를 충돌이라고 합니다. 그러나 SHA-256 같은 안전한 해시 함수에서 이러한 충돌을 찾으려면 생일 경계 기준 약 2의 128제곱 번의 연산이 필요합니다. 이는 현재 또는 예측 가능한 미래의 기술로는 계산적으로 불가능에 가깝습니다. MD5와 SHA-1처럼 실제 충돌이 증명된 해시 함수는 깨진 것으로 간주되며, 보안 목적에 사용해서는 안 됩니다.
비트코인은 왜 SHA-256을 사용하나요?
비트코인이 SHA-256을 선택한 이유는 강한 충돌 저항성을 제공하고, 암호학 커뮤니티에서 충분히 분석되었으며, 작업증명 난이도 조정에 적합한 크기의 출력값을 생성하고, 2009년 비트코인 출시 당시 이미 널리 배포되어 있었기 때문입니다. SHA-256은 현재까지 알려진 실용적 공격 없이 여전히 안전한 것으로 평가됩니다.
양자컴퓨터가 블록체인 해싱을 깰 수 있나요?
양자컴퓨터가 해시 함수에 가하는 위험은 제한적입니다. 그로버 알고리즘은 무차별 해시 검색을 더 빠르게 만들 수 있지만, 제곱근 수준의 속도 향상만 제공합니다. 따라서 256비트 해시는 여전히 128비트 수준의 양자 보안성을 제공하며, 이는 안전한 것으로 간주됩니다. 블록체인에 대한 진짜 양자 위협은 해시 함수가 아니라 ECDSA 같은 공개키 서명 체계에 있습니다.
이더리움은 어떤 해시 함수를 사용하나요?
이더리움은 Keccak-256을 사용합니다. 이는 NIST SHA-3 표준과 밀접하게 관련되어 있지만, 패딩 방식이 약간 다릅니다. Keccak-256은 주소 파생, 상태 트라이 키 생성, 스마트컨트랙트 함수 선택자, 이벤트 토픽 해싱 등에 사용됩니다. SHA-256과 마찬가지로 Keccak-256에 대해서도 알려진 실용적 공격은 없으며, 암호학적으로 안전한 것으로 간주됩니다.
마무리
해시 함수는 현대 컴퓨터 과학과 사이버보안의 필수 구성 요소입니다. 충돌 저항성, 역상 저항성 같은 암호학적 속성과 결합될 때, 해시 함수는 블록체인 네트워크를 가능하게 하는 보안 보장을 제공합니다.
비트코인 채굴부터 이더리움 스마트컨트랙트, 포스트 양자 서명 체계에 이르기까지 해싱은 여전히 기반 기술로 남아 있습니다. 해시 함수가 어떻게 작동하는지, 핵심 보안 속성이 무엇인지, 실제로 어디에 사용되는지 이해하면 블록체인 기술에 관심 있는 누구나 이러한 시스템이 왜 안전하다고 평가되는지 더 잘 파악할 수 있습니다.