소프트웨어 보안을 위한 암호학
1. 정보보호와 암호
- 정보보호: 데이터 기밀성, 무결성, 인증, 부인방지 등 보안 목표 달성 위한 기술.
- 암호의 역할: 데이터 전송/저장 시 기밀성·무결성 확보, 분석 방해, 해킹 저항성 제공.
- 인코딩 vs 암호화:
- 인코딩: 데이터 형식 변환(가독성, 저장/전송 용이성 목적, ex: Base64)
- 암호화: 키 기반 변환, 복호화 없이는 의미 해석 불가
2. 컴퓨터 데이터와 인코딩
- 모든 데이터 = 숫자
- 문자→숫자(아스키코드, 유니코드)
- 텍스트는 바이너리의 부분집합
- hexdump:
3. 암호의 분류
- 고전암호: Caesar Cipher, Vigenere Cipher 등
- 현대 대칭키 암호: AES 등(키 공유, 고속)
- 현대 공개키(비대칭키) 암호: RSA 등(서로 다른 키, 느리지만 키교환·전자서명 가능)
4. 고전암호 원리
- 치환(Substitution) 암호:
- 약속된 테이블 기반 문자 치환(예: Caesar, Vigenere)
- Base64는 인코딩, 고전암호는 암호화
- 전치(Transposition) 암호:
- Vigenere 암호:
- 고전암호의 취약점:
- Frequency Analysis(빈도분석)로 쉽게 해독 가능
- 알파벳 ‘E’ 등 자주 쓰이는 문자의 빈도 활용