제1장 암호학 1.1 정보화 사회와 암호학 ... 15 1.2 암호의 역사 ... 16 1.2.1 고대 암호 ... 17 1.2.2 근대 암호 ... 18 1.2.3 현대 암호 ... 19 1.3 암호 방식 ... 20 연습문제 ... 22 참고문헌 ... 23 제2장 수학적 배경 2.1 정수 집합 ... 25 2.1.1 연산의 기본 성질 ... 25 2.2 약수와 배수 ... 27 2.2.1 유클리드 호제법(Euclidean algorithm) ... 28 2.3 소수 ... 29 2.4 합동식 ... 30 2.4.1 법 m에 관한 잉여계 ... 31 2.4.2 Euler의 정리 ... 33 2.5 원시근 ... 36 2.5.1 위수 ... 36 2.5.2 윈시근 ... 37 2.5.3 이산 대수 ... 38 2.6 함수 ... 40 2.6.1 중국인의 잉여 정리 ... 40 2.6.2 Euler의 ø 함수 ... 42 2.7 이차 잉여 ... 43 2.8 군과 환 ... 45 2.8.1 군 ... 45 2.8.2 환 ... 46 2.9 유한체 ... 47 2.9.1 갈로아 체(Galois Field) ... 47 2.9.2 확대 갈로아 체(Extension Galois Field) ... 50 2.10 계산 복잡도 이론 ... 52 2.10.1 Class P ... 54 2.10.2 Class NP ... 54 2.10.3 Class NP-comlete와 NP-hard ... 56 연습문제 ... 58 참고문헌 ... 59 제3장 관용 암호 방식 3.1 환자 암호 ... 61 3.1.1 시프트 암호 ... 61 3.1.2 단순 환자 암호 ... 64 3.1.3 Affine 암호 ... 67 3.1.4 동음이의 환자 암호 ... 68 3.1.5 다표식 환자 암호 ... 70 3.1.6 철자 환자 암호 ... 72 3.2 전치 암호 ... 76 3.2.1 단순 전치 암호 ... 76 3.2.2 Nihilist 암호 ... 78 3.3 적 암호 ... 79 3.3.1 ADFGVX 암호 ... 79 3.4 Feistel 암호 ... 81 3.4.1 Feistel 암호의 구조 ... 82 3.4.2 Feistel 암호 방식의 복호화 ... 83 3.5 스트림 암호 ... 85 3.6 암호 해독 ... 88 3.6.1 환자 암호의 해독 ... 89 연습문제 ... 94 참고문헌 ... 96 제4장 상용 관용 암호 방식 4.1 DES ... 97 4.1.1 암호화 과정 ... 98 4.1.2 f 함수 ... 105 4.1.3 키 생성 ... 104 4.1.4 복호화 과정 ... 110 4.2 DES 암호 방식의 규칙성 ... 112 4.2.1 보수 특성 ... 112 4.2.2 취약키 ... 112 4.2.3 유사 취약키 ... 113 4.3 DES 암호 방식의 안전성 문제 ... 114 4.3.1 DES 키의 소모적 공격 ... 114 4.3.2 2중 DES 암호 방식의 사용 ... 115 4.3.3 DES 암호 방식의 트랩도어 ... 116 4.4 SEED ... 117 4.4.1 암호화 과정 ... 117 4.4.2 f 함수 ... 119 4.4.3 G 함수 ... 120 4.4.4 S-Box ... 121 4.4.5 보조키 생성 알고리즘 ... 125 4.5 AES ... 126 4.5.1 개요 ... 127 4.5.2 암호화 과정 ... 128 4.5.3 복호화 과정 ... 135 4.5.4 키 확장(Key Expansion) ... 138 4.6 운용 모드 ... 139 4.6.1 ECB 모드 ... 140 4.6.2 CBC 모드 ... 141 4.6.3 CFB 모드 ... 143 4.6.4 OFB 모드 ... 141 연습문제 ... 146 참고문헌 ... 147 제5장 공개키 암호 방식 5.1 공개키 암호 방식의 개요 ... 149 5.2 RSA 암호 방식 ... 149 5.2.1 RSA 암호 방식의 안전성 ... 155 5.2.2 RSA 암호 방식의 해독 ... 156 5.2.3 RSA 암호 방식의 반복법에 의한 공격 ... 157 5.3 ElGamal 암호 방식 ... 159 5.3.1 이산 대수 문제 ... 159 5.3.2 ElGamal 암호 방식 ... 160 5.4 Merkle-Hellman의 Knapsack 암호 방식 ... 162 5.4.1 Merkle-Hellman Ⅰ형 Knapsack 암호 방식 ... 163 5.4.2 Merkle-Hellman Ⅱ형 Knapsack 암호 방식 ... 167 연습문제 ... 167 참고문헌 ... 168 제6장 디지털 서명 6.1 디지털 서명의 개요 ... 173 6.2 중재 서명 방식 ... 174 6.3 공개키 암호 방식을 이용한 디지털 서명 방식 ... 176 6.3.1 RSA 암호 방식을 이용한 디지털 서명 ... 176 6.3.2 ElGamal 디지털 서명 ... 178 6.3.3 디지털 서명 표준(DSS) ... 181 6.3.4 Nyberg-Rueppel의 디지털 서명 방식 ... 184 6.3.5 KCDSA 표준안 ... 187 6.3.6 일회용 디지털 서명 방식 ... 191 연습문제 ... 195 참고문헌 ... 196 제7장 특수 디지털 서명 방식 7.1 부인 방지 서명 ... 199 7.2 의뢰 부인 방지 서명 ... 207 7.3 수신자 지정 서명 ... 214 7.4 은닉 서명 ... 220 7.5 위임 서명 ... 224 7.5.1 보증 부분 위임 방식 ... 226 7.5.2 위임 서명자 비보호 보증 부분 위임 서명 ... 228 7.5.3 위임 서명자 보호 위임 서명 ... 229 7.6 다중 서명 ... 235 연습문제 ... 238 참고문헌 ... 239 제8장 해쉬 함수 8.1 디지털 서명과 메시지 압축 ... 243 8.2 해쉬 함수 ... 245 8.3 생일 공격 ... 246 8.4 MD5 ... 247 8.5 SHA ... 252 8.6 RIPEMD-160 ... 257 8.7 대칭 암호 방식을 이용한 해쉬 함수 ... 262 8.7.1 Meyer-Matyas 해쉬 방식 ... 264 8.7.2 Miyaguchi-Ohta-Iwata 해쉬 방식 ... 265 8.7.3 Davies-Meyer 해쉬 방식 ... 266 연습문제 ... 267 참고문헌 ... 268 제9장 인증 9.1 사용자 인증 ... 271 9.1.1 일방향 함수를 이용한 인증 ... 272 9.1.2 사전 공격과 Slat ... 273 9.1.3 관용 암호 방식을 이용한 인증 방식 ... 273 9.1.4 공개키 암호 방식을 이용한 인증 방식 ... 274 9.2 메시지 인증 ... 275 9.2.1 메시지 암호화 방식 ... 276 9.2.2 해쉬 함수 방식 ... 279 9.2.3 MAC ... 281 연습문제 ... 283 참고문헌 ... 284 제10장 개인 식별 10.1 개인 식별 ... 287 10.2 Schnorr의 개인 식별 방식 ... 289 10.3 T.Okamoto의 개인 식별 방식 ... 291 10.4 Guillou-Quisquater의 개인 식별 방식 ... 295 10.5 Fiat-Shamir의 개인 식별 방식 ... 297 10.6 Ohta의 개인 식별 방식 ... 300 10.7 상호 개인 식별 방식과 키 분배 ... 302 10.8 대칭 암호 방식을 이용한 해쉬 함수 ... 304 연습문제 ... 305 참고문헌 ... 306 제11장 키 분배 및 관리 11.1 암호키 분배 ... 307 11.2 Blom 방식 ... 308 11.3 중앙 집중식 키 분배 ... 310 11.3.1 커버러스 ... 310 11.3.2 Diffie-Hellman의 키 사전 분배 방식 ... 312 11.3.3 공개키 분배 ... 314 11.4 키 공유 방식 ... 317 11.4.1 Diffie-Hellman의 키 교환 ... 317 11.4.2 Matsumoto-Takashima-Imai 키 공유 방식 Ⅰ ... 319 11.4.3 Matsumoto-Takashima-Imai 키 공유 방식 Ⅱ ... 322 11.4.4 Okamoto-Nakakamura 키 공유 방식 ... 325 11.5 이동 통신에서의 키 분배 ... 327 11.5.1 Tatebayashi의 이동 통신 키 분배 방식 ... 327 11.5.2 Park의 이동 통신 키 분배 방식 ... 331 연습문제 ... 337 참고문헌 ... 338 제12장 비밀 분산 12.1 비밀 분산 ... 343 12.2 Lagrange Interpolating Polynomial Scheme ... 343 12.3 기하학을 이용한 비밀 분산 ... 345 12.4 Pinch의 비밀 분산 방식 ... 346 12.4.1 이산 대수 문제를 이용하는 방식 ... 336 12.4.2 소인수 분해 문제를 이용하는 방식 ... 337 연습문제 ... 349 참고문헌 ... 350 제13장 난수 생성 13.1 의사 난수 ... 353 13.2 선형 합동 난수열 발생 ... 354 13.3 선형 궤환 시프트 레지스터 ... 355 13.3.1 선형 궤환 시프트 레지스터의 비선형 결합 ... 360 13.4 암호 방식을 이용한 난수 생성 ... 261 13.4.1 반복 암호에 의한 난수 생성 ... 361 13.4.2 DES의 OFB 모드를 이용한 난수 발생 ... 362 13.4.3 ANSI X9.17 의사 난수 발생기 ... 363 13.5 Blum Blum Shub의 난수 발생기 ... 364 연습문제 ... 366 참고문헌 ... 367 제14장 영지식 증명 방식 14.1 영지식 대화형 증명 방식 ... 369 14.1.1 대화형 증명 방식 ... 372 14.1.2 평방 비잉여 문제를 이용한 대화형 증명 방식 ... 373 14.1.3 영지식 대화형 증명 ... 374 14.1.4 평방 잉여 문제를 이용한 대화형 증명 방식 ... 375 14.1.5 이산 대수 문제를 이용한 영지식 대화형 증명 ... 377 14.2 영지식 대화형 증명의 종류 ... 379 14.3 Bit commitment ... 381 14.3.1 이산 대수 문제를 이용한 비트 commitment ... 382 연습문제 ... 384 참고문헌 ... 385 제15장 암호응용 프로토콜 15.1 통신망 상에서 동전 던지기 ... 387 15.2 Oblivious transfer ... 390 15.3 Mental poker protocol ... 391 참고문헌 ... 394 찾아보기 ... 396