[TIL] Missing Semester #6: Security & Cryptography

2026. 04. 13.Yeji Kim
missing-semester

Claude와 함께 MIT Missing Semester 강의를 실습하며 정리한 내용입니다.

들어가며

이번 강의는 엔트로피, 해시, 대칭/비대칭 암호화 등 보안의 기초를 다룬다.

핵심 개념

엔트로피 (Entropy)

비밀번호 강도를 비트(bit)로 측정하는 단위.

  • 동전 던지기 = 1비트 (2가지)
  • 4자리 PIN = ~13비트 (10,000가지)
  • 8자리 영소문자 = ~38비트
  • 8자리 영대소문자+숫자+특수 = ~52비트

40비트 이하는 약함, 80비트 이상이면 강력. 비밀번호 길이를 늘리는 게 복잡하게 만드는 것보다 효과적.

해시 함수

임의 길이 입력 → 고정 길이 출력. 세 가지 핵심 속성:

  • 결정적 - 같은 입력이면 항상 같은 출력
  • 비가역 - 출력에서 입력을 역추적 불가
  • 충돌 저항 - 같은 출력을 내는 다른 입력을 찾기 어려움
bash
echo "hello" | shasum -a 256
echo "hello!" | shasum -a 256

한 글자만 추가해도 해시가 완전히 달라진다 (눈사태 효과).

사용처: Git 커밋 해시, 파일 다운로드 무결성 검증, 비밀번호 저장 (원문 대신 해시 저장).

KDF (Key Derivation Function)

해시를 일부러 느리게 만든 것. bcrypt, scrypt, PBKDF2.

왜 느리게? 공격자가 수백만 개의 비밀번호를 빠르게 시도하는 걸 막기 위해. 한 번 계산에 0.1초면, 1000만 개 시도에 12일 걸린다.

대칭 암호화

하나의 키로 암호화/복호화. 같은 키를 양쪽이 알아야 한다.

bash
openssl aes-256-cbc -salt -in secret.txt -out secret.enc    # 암호화
openssl aes-256-cbc -d -in secret.enc -out secret.txt       # 복호화

문제: 키를 어떻게 안전하게 전달하지?

비대칭 암호화

공개키 + 개인키 한 쌍으로 해결:

  • 공개키로 암호화 → 개인키로만 복호화
  • 개인키로 서명 → 공개키로 검증

공개키는 말 그대로 공개해도 안전. SSH가 이 원리.

SSH 키

bash
ssh-keygen -t ed25519 -C "<email>"
  • ssh-keygen - SSH 키 생성 도구
  • -t ed25519 - 알고리즘 지정 (RSA보다 빠르고 키도 짧고 보안도 강함)
  • -C - 키에 붙이는 주석 (식별용, 보안에 영향 없음)

생성 결과:

  • ~/.ssh/id_ed25519 - 개인키 (절대 공유 금지)
  • ~/.ssh/id_ed25519.pub - 공개키 (GitHub에 등록하는 것)

디지털 서명

개인키로 서명 → 공개키로 "이 사람이 진짜 서명한 게 맞는지" 검증. Git 커밋 서명, 소프트웨어 배포 검증 등에 사용.

실습 기록

해시 함수 체험

shasum -a 256으로 문자열과 파일의 해시를 생성. 한 글자만 바꿔도 완전히 다른 해시가 나오는 눈사태 효과를 확인.

SSH 키 확인

ls -la ~/.ssh/file ~/.ssh/id_*로 현재 키 알고리즘 확인. rsa면 구형, ed25519면 최신.


레퍼런스