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면 최신.