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