안녕하세요! 오늘은 우리가 수학 시간에 배운 내용으로 SHA 해시 알고리즘이라는 흥미로운 기술을 설명해볼게요.
SHA는 인터넷에서 정말 많이 쓰이는 기술인데, “단방향 암호처럼 정보를 바꾸는 계산법”이에요.
그런데 이 원리를 이해할 때 우리가 이미 학교에서 배운 수학 개념이 아주 유용하답니다!
어떤 것들이 있는지 같이 살펴볼까요?
1️⃣ 함수 (Function) — 여러 입력 → 하나의 출력
수학 시간에 함수 배웠죠? f(x)=x2f(x) = x^2f(x)=x2
이렇게 입력 x
가 주어지면 출력 f(x)
가 딱 정해지죠.
같은 입력이면 항상 같은 출력이 나오는 것이 바로 함수의 기본 성질이에요.
SHA도 비슷해요: SHA(x)=어떤 고정된 코드SHA(x) = \text{어떤 고정된 코드}SHA(x)=어떤 고정된 코드
입력이 같으면 항상 같은 결과가 나와요. 그래서 파일이 바뀌었는지 확인할 때 사용돼요.
2️⃣ 다대일 대응 (Many-to-One Mapping)
또 배운 것 중에 대응 관계가 있죠.
- 일대일 대응
- 일대다 대응
- 다대일 대응 ← 여기가 SHA와 연결!
SHA는 다대일 대응이에요: 여러 개의 입력→하나의 출력\text{여러 개의 입력} → \text{하나의 출력}여러 개의 입력→하나의 출력
왜냐하면 입력은 아주아주 길 수 있지만, 출력은 딱 정해진 길이(예: 256비트)로만 나오기 때문이에요.
그래서 같은 출력을 만드는 서로 다른 입력도 있을 수 있어요.
이렇게 정보가 사라지기 때문에 거꾸로 계산하기 어렵죠.
3️⃣ 나머지 연산 (Mod 연산)
중3 수학에서 **나머지 연산(mod)**도 배우죠: amod ba \mod bamodb
예를 들어: 17mod 5=217 \mod 5 = 217mod5=2
SHA는 내부에서 이런 mod 연산을 엄청 많이 사용해요!
이런 연산은 결과만 보면 원래 값을 알아내기 어려워요: x+ymod 100=42x + y \mod 100 = 42x+ymod100=42
이런 식으로 결과가 42라면 x와 y가 무엇인지 역으로 알기가 어렵죠.
→ SHA는 이런 원리를 응용해서 거꾸로 풀 수 없게 설계돼 있어요.
4️⃣ 비선형 변화 (선형과 비선형)
중3 과정에서 **1차 함수(선형)**와 **2차 함수(비선형)**도 배우죠?
- 선형 함수 → 입력이 2배면 출력도 2배
- 비선형 함수 → 입력이 조금 바뀌어도 출력은 예측할 수 없이 바뀜
SHA는 아주 복잡한 비선형 함수처럼 작동해요.
그래서 입력에서 딱 한 글자만 바꿔도 결과가 완전히 달라져요. SHA(“abc”)≠SHA(“abd”)SHA(“abc”) ≠ SHA(“abd”)SHA(“abc”)=SHA(“abd”)
**눈사태 효과(Avalanche Effect)**라고 부르는데, 비선형 함수의 성질과 아주 비슷하죠!
📝 정리
우리가 중학교 3학년 수학 시간에 배우는:
✅ 함수 → 입력에 대응하는 출력
✅ 다대일 대응 → 많은 입력 → 하나의 출력
✅ 나머지 연산(mod) → 원래 값 복원 어려움
✅ 비선형 변화 → 작은 입력 변화 → 큰 출력 변화
이런 개념들이 모두 SHA 해시 알고리즘 속에 들어가 있어요!