저자 소개 ... 5 옮긴이의 말 ... 6 옮긴이 소개 ... 7 들어가며 ... 21 1부 개요 ... 29 1장 암호학의 배경 ... 31 1.1 암호학의 역할 ... 32 1.2 가장 약한 연결 고리 속성 ... 33 1.3 대립적 설정 ... 35 1.4 전문가적 편집증 ... 37 1.5 위협 모델 ... 39 1.6 암호학≠해결책 ... 41 1.7 어려운 암호학 ... 42 1.8 암호학에서의 쉬운 부분 ... 43 1.9 일반적인 공격 ... 44 1.10 보안과 기타 설계 기준 ... 44 1.11 참조 자료 ... 48 1.12 보안 편집광을 위한 훈련 ... 49 1.13 연습문제 ... 52 2장 암호학 소개 ... 55 2.1 암호화 ... 55 2.2 인증 ... 57 2.3 공개키 암호 ... 60 2.4 전자 서명 ... 62 2.5 공개키 기반 구조 ... 63 2.6 공격 ... 64 2.7 자세히 살펴보기 ... 67 2.8 보안 수준 ... 70 2.9 성능 ... 71 2.10 복잡성 ... 72 2.11 연습문제 ... 73 2부 메시지 보안 ... 75 3장 블록 암호 ... 77 3.1 블록 암호란 ... 77 3.2 공격 유형 ... 79 3.3 이상적인 블록 암호 ... 80 3.4 블록 암호의 안전에 관한 정의 ... 81 3.5 실제 블록 암호 ... 85 3.6 연습문제 ... 98 4장 블록 암호 모드 ... 101 4.1 패딩 ... 102 4.2 ECB ... 103 4.3 CBC ... 104 4.4 OFB ... 107 4.5 CTR ... 109 4.6 암호화와 인증의 결합 ... 110 4.7 사용할 모드 선택 ... 110 4.8 정보 유출 ... 111 4.9 연습문제 ... 115 5장 해시 함수 ... 119 5.1 해시 함수의 안전성 ... 120 5.2 실제 해시 함수 ... 122 5.3 해시 함수의 취약점 ... 126 5.4 취약점 개선 ... 128 5.5 해시 함수의 선택 ... 131 5.6 연습문제 ... 131 6장 메시지 인증 코드 ... 133 6.1 MAC의 역할 ... 133 6.2 이상적인 MAC과 MAC의 안전성 ... 134 6.3 CBC-MAC과 CMAC ... 135 6.4 HMAC ... 138 6.5 GMAC ... 139 6.6 MAC의 선택 ... 140 6.7 MAC의 사용 ... 141 6.8 연습문제 ... 143 7장 보안 채널 ... 145 7.1 보안 채널의 특성 ... 145 7.2 인증과 암호화 순서 ... 149 7.3 보안 채널 설계: 개요 ... 151 7.4 설계 세부 사항 ... 154 7.5 대안 ... 159 7.6 연습문제 ... 161 8장 구현 이슈 (1) ... 163 8.1 올바른 프로그램 작성법 ... 164 8.2 안전한 소프트웨어 작성법 ... 168 8.3 기밀 유지 ... 169 8.4 코드 품질 ... 178 8.5 부채널 공격 ... 182 8.6 다루지 못한 것 ... 183 8.7 연습문제 ... 184 3부 키 협상 ... 185 9장 난수 생성 ... 187 9.1 실제 난수 ... 188 9.2 PRNG에 대한 공격 모델 ... 191 9.3 포르투나 ... 193 9.4 생성기 ... 193 9.5 누산기 ... 199 9.6 시드 파일 관리 ... 209 9.7 무작위 요소의 선택 ... 213 9.8 연습문제 ... 215 10장 소수 ... 217 10.1 가분성과 소수 ... 217 10.2 작은 소수 생성 ... 220 10.3 모듈로 소수의 계산 ... 222 10.4 큰 소수 ... 228 10.5 연습문제 ... 236 11장 디피-헬만 ... 237 11.1 군 ... 238 11.2 기본 DH ... 239 11.3 중간자 공격 ... 240 11.4 함정 ... 242 11.5 안전한 소수 ... 243 11.6 작은 부분군 사용 ... 244 11.7 p의 크기 ... 246 11.8 실용 규칙 ... 248 11.9 잘못될 수 있는 것 ... 250 11.10 연습문제 ... 252 12장 RSA ... 253 12.1 소개 ... 253 12.2 중국인의 나머지 정리 ... 254 12.3 모듈로 n 곱셈 ... 257 12.4 RSA 정의 ... 259 12.5 RSA 위험 ... 265 12.6 암호화 ... 266 12.7 전자 서명 ... 270 12.8 연습문제 ... 272 13장 암호 프로토콜 소개 ... 275 13.1 역할 ... 275 13.2 신뢰 ... 276 13.3 인센티브 ... 278 13.4 암호 프로토콜에서의 신뢰 ... 280 13.5 메시지와 단계 ... 281 13.6 연습문제 ... 289 14장 키 협상 ... 291 14.1 설정 ... 291 14.2 첫 번째 시도 ... 292 14.3 프로토콜의 영원한 삶 ... 294 14.4 인증 규칙 ... 294 14.5 두 번째 시도 ... 295 14.6 세 번째 시도 ... 297 14.7 최종 프로토콜 ... 298 14.8 프로토콜의 다양한 관점 ... 301 14.9 프로토콜의 계산 복잡도 ... 304 14.10 프로토콜 복잡도 ... 306 14.11 가벼운 경고 ... 307 14.12 패스워드 기반의 키 협상 ... 307 14.13 연습문제 ... 308 15장 구현 이슈 (2) ... 309 15.1 큰 정수 연산 ... 309 15.2 빠른 곱셈 ... 316 15.3 부채널 공격 ... 317 15.4 프로토콜 ... 320 15.5 연습문제 ... 323 4부 키 관리 ... 325 16장 클록 ... 327 16.1 클록 사용 ... 327 16.2 실시간 클록 칩 사용 ... 329 16.3 보안 위험 ... 330 16.4 신뢰성 있는 클록 생성 ... 332 16.5 동일 상태 문제 ... 333 16.6 시간 ... 336 16.7 마무리 추천 ... 337 16.8 연습문제 ... 337 17장 키 서버 ... 339 17.1 기본 원리 ... 340 17.2 커버로스 ... 340 17.3 간단한 해결책 ... 341 17.4 선택의 문제 ... 344 17.5 연습문제 ... 344 18장 이상적인 PKI ... 347 18.1 PKI의 간단한 개요 ... 347 18.2 PKI 예제 ... 348 18.3 추가적인 세부 사항 ... 349 18.4 정리 ... 353 18.5 연습문제 ... 353 19장 PKI의 현실 ... 355 19.1 이름 ... 355 19.2 인가 ... 358 19.3 신뢰 ... 358 19.4 간접 인가 ... 359 19.5 직접 인가 ... 360 19.6 자격 증명 시스템 ... 361 19.7 수정된 설계 ... 364 19.8 인증서 폐기 ... 364 19.9 PKI를 사용하기 좋은 곳 ... 368 19.10 PKI 타입과 키 서버 타입 ... 370 19.11 연습문제 ... 370 20장 PKI 실현 가능성 ... 373 20.1 인증서 형식 ... 373 20.2 키의 생명주기 ... 375 20.3 키의 교체이유 ... 377 20.4 정리 ... 378 20.5 연습문제 ... 379 21장 비밀 정보 저장 ... 381 21.1 디스크 ... 381 21.2 인간의 기억 ... 382 21.3 이동식 저장 매체 ... 386 21.4 보안 토큰 ... 387 21.5 보안 UI ... 388 21.6 바이오메트릭 ... 389 21.7 싱글 사인온 ... 390 21.8 손실 위험 ... 391 21.9 비밀 공유 ... 392 21.10 비밀 삭제 ... 393 21.11 연습문제 ... 395 5부 기타 ... 397 22장 표준과 특허 ... 399 22.1 표준 ... 399 22.2 특허 ... 405 23장 전문가 활용 ... 407 참고 문헌 ... 411 찾아보기 ... 427