암호학적 해시(Cryptographic Hash)란?
암호학적 해시는 어떤 입력이든 일정 길이의 지문처럼 보이고, 그 입력에 대해선 일관되게 같은 값을 만들어내는 함수입니다. 문자의 한 글자라도 바꾸면 완전히 다른 지문이 만들어집니다. 데이터를 섞는 블렌더와 같다고 생각하면 되는데, 한 번 섞인 것은 다시 분리된 재료로 되돌릴 수 없습니다.
해시를 열려고 하면 풀 수 있다고 생각할 수 있습니다. nope. 해시는 일방향 함수입니다. 두 개의 서로 다른 입력이 이론적으로 충돌할 수는 있지만, 좋은 알고리즘은 그 가능성을 천문학적으로 낮춥니다. collision이라고 부릅니다.
How Cryptographic Hash works
결제 건과 메모를 보내는 그림을 떠올려 보세요. 소프트웨어가 데이터를 해시 함수로 처리해 참조와 검증에 사용되는 컴팩트한 지문을 만듭니다. 이 지문은 blockchain의 여러 곳에서 참조 및 검증에 활용됩니다.
- Step 1: 메시지나 블록 헤더와 같은 입력 데이터가 있습니다.
- Step 2: 함수가 수학적 연산으로 이를 처리하여 예를 들어 SHA 256이 바이트를 다이제스트로 변환합니다.
- Step 3: 고정 길이의 출력이 생성되며, 종종 16진수 문자열로 표시됩니다.
- Step 4: 노드들은 출력이 기대하는 것과 일치하는지 비교합니다. 마이너 들은 선행 0의 자리를 충분히 가진 블록 해시를 찾기 위해 경쟁하고, 이는 (채굴이라고 알려진) 과정입니다.
- Step 5: 누구나 같은 입력에 대해 같은 함수를 다시 실행하여 지문이 일치하는지 빠르게 확인할 수 있습니다.
그게 전부 비결입니다.
Why Cryptographic Hash Matters
데이터를 들여다보지 않아도 신뢰할 수 있는 이유는 강력하기 때문입니다. 얻는 점은 다음과 같습니다:
- Benefit: 즉시 무결성 검사. 해시가 일치하면 데이터가 변조되지 않았다는 뜻입니다.
- Perspective: 서명, 블록 연결, 저장소의 콘텐츠 주소 지정 등에서 조용한 백본 역할을 합니다.
- Relevance: 지갑, 거래소, 그리고 분산 애플리케이션(dApps)에서도 빠른 검증이 중요한 곳에서 활용됩니다.
해시를 비교할 때는 시작 부분이 아닌 전체 문자열을 확인하세요. 공격자들은 몇 글자만 보는 것을 좋아합니다.
Key Characteristics of Cryptographic Hash
이가 유용한 이유를 만드는 특성들:
- Deterministic: 입력이 같으면 매번 같은 출력.
- Fixed: 입력 크기에 상관없이 출력 길이는 고정됩니다. 예를 들어 SHA 256의 경우 256비트.
- One way: 출력으로부터 입력으로 되돌리는 것은 불가능합니다.
- Avalanche: 아주 작은 입력 변화가 출력에 예측 불가능한 영향을 미칩니다.
- Address: 해싱은 wallet addresses와 다른 식별자를 생성하고 확인하는 데 도움을 줍니다.
Variations
다양한 알고리즘이 서로 다른 분위기와 위협 모델에 맞춰 사용됩니다:
- SHA 256: 비트코인 블록 헤더와 증명에 사용됩니다.
- SHA 3 Keccak: 스펀지 디자인의 최신 표준입니다.
- BLAKE2 and BLAKE3: 속도와 현대적 디자인으로 알려져 있습니다.
- RIPEMD 160: 다른 해시와 결합될 때 주소 인코딩에 흔히 사용됩니다.
해시 함수는 시간이 지나며 약해질 수 있습니다. 알고리즘이 약화되면 공격자가 편안해지기 전에 더 강한 것으로 마이그레이션하세요.
Example
블록체인의 각 트랜잭션은 해시가 적용됩니다, 그래서 노드들이 모든 바이트를 읽지 않고도 빠르게 참조하고 검증할 수 있습니다.
Fun Fact
Git 커밋은 해시로 이름 붙여집니다. 그래서 파일의 한 줄을 바꿔도 프로젝트 히스토리의 지문이 바뀌는 것이죠. 같은 트릭이 다른 현장에서 작동합니다.
Wrap-Up
한 줄로 요약하면: 암호학적 해시는 데이터를 누구나 빠르게 확인할 수 있는 신뢰할 수 있는 지문으로 만들어 주는 방식이며, 허가를 구하지 않아도 됩니다.