
1. 해시의 정의
해시란 데이터 입력받아 요약하고, 고정된 크기의 출력값을 만드는 알고리즘을 뜻합니다.
예시)
"Hello" → 185f8db32271fe25f561a6fc938b2e264306ec304eda518007d1764826381969
2. 해시 생성 과정 (SHA 256 기준)
(1) 입력값을 아스키 코드로 변환 -> 이진수로 변환
(2) Padding : 입력값을 512비트로 늘린다.
- 입력값의 이진수를 앞에서 부터 추가
- 그 뒷 자리 부터는 1을 추가 후, 64비트 전까지는 0을 추가
- 마지막 64비트에는 입력값의 비트 길이를 추가
(3) 8개의 초기 해시값 설정 (공식ㅇ로 지정 되어있음)
(4) 512비트 블록을 32비트 메시지 워드로 16등분을 한다.
(5) 반복연산 64번 반복
- 메시지 워드 + 고정된 상수 + 초기값을 조합
- 비트 연산 진행 (비트 쉬프트, AND, OR, XOR)
- 초기값을 갱신하며 64번 반복
- 무작위성을 만드는데 가장 중요한 과정
(6) 마지막으로 나온 값으로 최종 해시 값을 만들어낸다.
3. 해시의 특징
- 고정된 길이
- 빠른 계산
- 충돌 저항성 (이론상 충돌이 가능하지만, 현실적으로 불가능)
- 역산 불가능
- 민감성 (1비트만 달라도 완전히 다른 해시값 나옴)
- 데이터 무결성
4. 블록체인에서의 해시 활용
(1) 블록의 구조
- 블록 버전
- 이전 블록의 해시값
- 머클 루트 : 이 블록의 거래들을 해시값 하나로 요약한 값
- 타임 스탬프 : 블록 생성 시간
- 난이도 : 블록 체굴 난이도 (보통 10분에 1개 생성 되도록 난이도가 자동 조정)
- 논스: 채굴자가 조정하는 숫자
- 블록 바디 : 트랜잭션(거래정보)들이 기록되는 곳
(2) 해시 활용
- 블록 끼리의 연결 : 블록의 거래 내용을 무단으로 수정시, 모든 블록의 해시값이 바뀌어, 조작 불가능
- 채굴 난이도 조절 : 채굴자는 블록 헤더 + 논스 값을 조합해, 목표값 이하의 해시 값이 나와야 블록 생성이 가능하다. (현재 기준 0이 18개 필요하다.)
- 머클 루트 : 거래들 각각의 해시 값들을 두개 씩 묶어 다시 하나의 해시로 만드는 과정을 반복하여, 하나의 해시만을 남긴다.
5. 해시의 중요성
블록체인의 핵심 가치인 불변성과 보안은 해시 덕분입니다.
해시 알고리즘이 만든 "수학적 신뢰" 는 중앙시스템 없이도 금용 거래를 가능케한 핵심적인 기술 입니다.
'공부 내용 정리' 카테고리의 다른 글
| 머클 트리란? (0) | 2025.04.25 |
|---|---|
| 트랜잭션이란? (2) | 2025.04.25 |
| 디지털 서명이란? (2) | 2025.04.24 |
| 비트코인의 탄생 스토리 (0) | 2025.04.23 |
| 닉슨 쇼크의 장기적 영향 (0) | 2025.04.22 |