오늘 끝나면
해시 함수
- ✓해시 함수의 핵심 문제를 한 문장으로 설명한다
- ✓오른쪽 실습에서 해시이 어떻게 움직이는지 관찰한다
- ✓다음 강의와 이어지는 한계를 말할 수 있다
실습 미션
데이터의 지문 — 한 글자만 바꿔도 통째로 달라짐 이 문장이 실제로 무슨 뜻인지 실습에서 한 번 손으로 확인한다.
성공 조건
- □실습의 기본값을 먼저 관찰
- □입력값이나 모드를 한 번 이상 바꿔 결과 비교
- □왜 결과가 바뀌었는지 한 문장으로 설명
암호 & 보안 · 09
해시
데이터의 지문
아무 데이터나 넣어도 고정 길이 지문이 나옴. 한 글자만 바꿔도 통째로 달라짐.
아무거나 넣어도 길이는 똑같음
해시 함수는 입력을 정해진 길이로 뭉개는 것임. 한 글자를 넣든 책 한 권을 넣든 나오는 값의 길이는 늘 같음.
이 고정 길이 값을 지문이라 함. 데이터를 짧게 대표하는 표식임. 원본은 길어도 지문은 한 줄임.
약속 하나. 같은 입력이면 늘 같은 지문이 나옴. 매번 굴려도 안 변함. 그래서 두 데이터가 같은지는 지문만 비교하면 됨.
한 글자만 바꿔도 통째로 달라짐
오른쪽에서 직접 쳐보셈. 글자를 딱 1개만 고쳐도 지문이 와르르 바뀜. 바뀐 자리는 파란 칸으로 표시됨.
이걸 아발란치(눈사태)라 함. 산 위 눈 한 줌이 미끄러지면 산사태가 됨. 입력의 작은 차이가 출력 전체로 번지는 것.
왜 좋음? 살짝 닮은 입력끼리도 지문은 전혀 안 닮게 만들기 때문임. 지문만 보고는 원본이 비슷했는지조차 못 짐작함. 위·변조 잡는 힘이 여기서 나옴.
같은 입력은 늘 같은 지문임(결정적). 이제 글자를 1개만 바꿔보셈 — 파란 칸이 와르르 생김.
지문에서 원본은 못 돌아감
해시는 일방향임. 원본 → 지문은 한순간인데, 지문 → 원본은 못 돌아감.
고기를 갈면 다짐육이 됨. 근데 다짐육 보고 원래 부위는 복원 못 함. 뭉갠 정보는 사라짐. 해시도 똑같이 되돌릴 단서를 안 남김.
유일한 방법은 전부 대입해보기뿐임. 근데 경우의 수가 천문학적이라 현실적으로 불가능함. 그래서 지문은 공개해도 원본은 안전함.
다짐육 → 원래 고기? 못 돌림. 정보가 사라짐.
그래서 어디에 쓰나
지문 한 줄이 이 세 가지를 떠받침. 무결성 검사 · 비밀번호 저장 · 블록체인의 핵심 부품임.
무결성은 받기 전후 지문을 비교하는 것 / 같으면 한 글자도 안 바뀐 거임(아발란치 덕분). 비밀번호는 원문 말고 지문만 저장하는 것 / 털려도 원문은 못 알아냄(일방향 덕분).
블록체인은 블록마다 앞 블록 지문을 품는 것 / 과거 하나 고치면 이후 지문이 전부 깨져 즉시 들통남. 다음 강(10강) 인증서도 결국 이 지문 위에서 신뢰를 쌓음.
받기 전후 지문 비교 → 안 바뀌었나
원문 말고 지문만 저장 → 털려도 안전
앞 블록 지문을 품음 → 고치면 들통
해시 = 데이터의 지문
정리하면 셋임. 고정 길이로 뭉갬 · 1글자 차이가 전체를 바꿈 · 되돌리기 불가.
이 세 성질 덕분에 해시는 “데이터가 그대로인가”와 “같은 데이터인가”를 싸고 빠르게 판정함. 원본 안 들춰도 됨.
그래서 무결성·비번·블록체인이 다 같은 부품 하나에 기댐. 짧은 지문 한 줄이 신뢰의 기초가 됨.
Q. 해시로 원본을 복원할 수 있나?
없음. 해시는 일방향이라 지문만 보고 원본은 못 되돌림. 정보를 뭉개서 단서를 안 남기기 때문임. 그래서 비밀번호 저장에 씀 — 원문 말고 지문만 저장하면 털려도 원문은 못 알아냄.| 고정 길이 | 아무 입력 → 같은 길이 지문 |
| 아발란치 | 1글자 차이 → 출력 통째로 변화 |
| 일방향 | 지문 → 원본 복원 불가 |