SHA-256은 어떻게 동작하는가
SHA-256은 현대 인터넷에서 가장 널리 사용되는 해시(Hash) 알고리즘 중 하나다.
현재:
- HTTPS 인증서
- JWT
- 블록체인
- Git
- 파일 무결성 검증
- 전자서명
등 엄청 많은 시스템이 SHA-256 위에서 동작한다.
그렇다면 SHA-256은 실제로 어떻게 동작할까?
1. SHA-256의 목적
SHA-256의 목표는 단순하다.
아무 길이의 입력 데이터를
항상 256bit 고정 길이 값으로 변환
하는 것.
즉:
입력 → 256bit fingerprint
를 만드는 알고리즘이다.
예:
SHA256("hello")
결과:
2cf24dba5fb0a30e26e83b2ac5b9e29...
2. 핵심 특징
SHA-256은:
- 같은 입력 → 항상 같은 결과
- 입력 조금만 바뀌어도 결과 완전히 변경
- 복호화 불가능
- 충돌 찾기 매우 어려움
을 목표로 설계되었다.
3. SHA-256은 단순 암호화가 아니다
많이 헷갈리는 부분인데:
SHA-256은 암호화가 아니라 해시 함수
다.
즉:
- 복호화 키 없음
- 원본 복원 목적 없음
- 무결성 검증 목적
이다.
4. SHA-256 전체 흐름
SHA-256은 크게 보면:
1. 입력 전처리(Padding)
2. 블록 분할
3. 반복 압축 연산
4. 최종 Hash 생성
과정으로 동작한다.
5. STEP 1 — Padding(패딩)
SHA-256은 데이터를:
512bit 단위 블록
으로 처리한다.
그래서 먼저 데이터를 특정 규칙으로 늘린다.
예:
hello
입력.
뒤에:
- 1
- 여러 개의 0
- 원래 길이 정보
를 붙인다.
왜냐면 SHA-256은:
입력 길이까지 포함해 계산
하기 때문.
6. STEP 2 — 블록 분할
패딩된 데이터는:
512bit 블록들
로 나뉜다.
예:
BLOCK_1
BLOCK_2
BLOCK_3
...
큰 파일도 결국:
512bit 조각들
로 쪼개서 처리한다.
7. STEP 3 — 내부 상태 초기화
SHA-256은 내부적으로:
8개의 32bit 상태값
을 가진다.
보통:
A B C D E F G H
로 표현.
초기값은 SHA-256 명세에 고정돼 있다.
8. STEP 4 — 압축 함수 반복
이게 핵심이다.
각 블록마다:
- 비트 회전
- XOR
- 덧셈(mod 2³²)
- 비선형 연산
을 엄청 반복한다.
대표 연산:
Σ0(x)=ROTR2(x)⊕ROTR13(x)⊕ROTR22(x)\Sigma_0(x)=ROTR^2(x)\oplus ROTR^{13}(x)\oplus ROTR^{22}(x)
이런 식의:
- 회전(rotation)
- XOR
을 계속 섞는다.
9. 왜 이렇게 복잡하게 섞나?
목표는:
입력 변화가 결과 전체로 퍼지게 만드는 것
이다.
즉:
hello
와
hellp
가 완전히 다른 hash를 만들도록.
이걸:
Avalanche Effect
라고 한다.
10. 각 블록 처리 후 상태 갱신
각 512bit 블록을 처리하면:
A~H 상태값 갱신
된다.
그리고 다음 블록 처리 시:
이전 결과를 이어서 사용
한다.
즉 전체 데이터가 체인처럼 연결된다.
11. 마지막 결과 생성
모든 블록 처리 완료 후:
A~H 값 합침
→ 최종 256bit hash 생성.
즉 최종 결과는:
32byte = 256bit
고정 길이.
12. SHA-256이 안전한 이유
SHA-256은 현재까지:
실용적 충돌 공격
이 발견되지 않았다.
즉:
같은 hash를 만드는
서로 다른 입력 생성
이 현실적으로 매우 어렵다.
13. 왜 복호화가 안되나?
SHA-256은:
정보를 압축하면서
원본 일부를 잃는다
.
즉:
256bit 결과만으로
원본을 복원 불가능
하게 설계됨.
14. SHA-256이 실제 사용되는 곳
HTTPS/TLS
인증서 서명.
JWT
HS256
같은 서명 알고리즘.
Git
파일 무결성 관리.
블록체인(Bitcoin)
블록 연결 및 작업증명(PoW).
Docker
이미지 digest.
15. SHA-256의 핵심 본질
SHA-256은 단순 문자열 변환기가 아니다.
실제로는:
입력 데이터를
비가역적이고 예측 불가능한 fingerprint로 만드는 알고리즘
이다.
그리고 현대 인터넷은 사실상:
SHA-256 같은 해시 알고리즘의 신뢰성 위에서 동작
한다고 봐도 될 정도로 중요하다.
'system_fundamentals > security_cryptography' 카테고리의 다른 글
| 무결성이란 무엇인가 (0) | 2026.05.13 |
|---|---|
| Argon2 vs bcrypt (0) | 2026.05.13 |
| MD5는 왜 위험해졌는가 (0) | 2026.05.13 |
| 해시는 왜 복호화가 안될까 (0) | 2026.05.13 |
| 현대 인터넷은 어떻게 신뢰를 만드는가 (0) | 2026.05.13 |
댓글