리얼월드 암호학

도서명:리얼월드 암호학
저자/출판사:데이비드 웡/제이펍
쪽수:준비중
출판일:2023-01-20
ISBN:9791192469539
목차
옮긴이 머리말 xii
추천의 글 xiii
베타리더 후기 xv
시작하며 xvii
감사의 글 xxii
이 책에 대하여 xxiii
표지에 대하여 xxvii
PART I 프리미티브: 암호학의 재료
CHAPTER 1 시작하며 3
1.1 암호학은 프로토콜을 보호한다 4
1.2 대칭 암호학: 대칭 암호화란? 5
1.3 케르크호프스의 원칙: 키만은 비밀로 지키자 7
1.4 비대칭 암호학: 키 두 개가 하나보단 낫지 10
__1.4.1 비밀을 공유하는 방법, 키 교환 10
__1.4.2 비대칭 암호화, 대칭 암호화와는 다르다! 13
__1.4.3 디지털 서명: 펜과 종이의 서명과 그리 다르지 않다 15
1.5 암호학의 분류 17
1.6 이론 암호학 vs 실세계 암호학 19
1.7 이론에서 현실로: 암호학의 현실화를 위한 시뮬레이션 20
1.8 경고장 25
요약 26
CHAPTER 2 해시 함수 27
2.1 해시 함수란? 27
2.2 해시 함수의 보****속성 30
2.3 해시 함수의 보****제약 32
2.4 해시 함수의 실사용 34
__2.4.1 커밋 34
__2.4.2 서브리소스 무결성 35
__2.4.3 비트토렌트 35
__2.4.4 토르 35
2.5 표준화된 해시 함수 36
__2.5.1 SHA-2 해시 함수 37
__2.5.2 SHA-3 해시 함수 41
__2.5.3 두 가지 XOF, SHAKE와 cSHAKE 44
__2.5.4 튜플해시, 모호성을 해결하다 46
2.6 비밀번호 해시 48
요약 50
CHAPTER 3 메시지 인증 코드 51
3.1 MAC의 대표적 예, 무상태성 쿠키 51
3.2 코드 예제 54
3.3 MAC의 보****속성 56
__3.3.1 인증 태그의 위조 56
__3.3.2 인증 태그의 길이 57
__3.3.3 리플레이 공격 58
__3.3.4 주기적 인증 태그 검증 59
3.4 실세계의 MAC 61
__3.4.1 메시지 인증 61
__3.4.2 키 파생 61
__3.4.3 쿠키의 정합성 61
__3.4.4 해시 테이블 62
3.5 실무에서의 MAC 62
__3.5.1 해시 기반 MAC, HMAC 62
__3.5.2 cSHAKE 기반 MAC, KMAC 63
3.6 SHA-2와 가변 길이 공격 64
요약 67
CHAPTER 4 인증 암호화 69
4.1 암호문이란? 70
4.2 AES 블록 암호화 71
__4.2.1 AES가 제공하는 보안의 수준 72
__4.2.2 AES의 인터페이스 73
__4.2.3 AES의 내부 74
4.3 암호화된 펭귄, 그리고 CBC 모드 75
4.4 인증이 필요하면? AES-CBC-HMAC 78
4.5 올인원 구조: 인증 암호화 80
__4.5.1 AEAD 80
__4.5.2 AES-GCM AEAD 82
__4.5.3 ChaCha20-Poly1305 86
4.6 그 밖의 대칭 암호화 90
__4.6.1 키 래핑 91
__4.6.2 논스 오용 방지 인증 암호화 91
__4.6.3 디스크 암호화 91
__4.6.4 데이터베이스 암호화 92
요약 92
CHAPTER 5 키 교환 95
5.1 키 교환이란? 96
5.2 DH 키 교환 99
__5.2.1 군론 99
__5.2.2 디피-헬먼의 기반, 이산 로그 문제 103
__5.2.3 디피-헬먼 표준 105
5.3 ECDH 키 교환 106
__5.3.1 타원 곡선이란? 107
__5.3.2 ECDH 키 교환의 작동 원리 110
__5.3.3 타원 곡선 디피-헬먼의 표준 112
5.4 작은 부분군 공격과 그 밖의 보****고려 사항 114
요약 117
CHAPTER 6 비대칭 암호화와 하이브리드 암호화 119
6.1 비대칭 암호화란? 120
6.2 실전 비대칭 암호화와 하이브리드 암호화 122
__6.2.1 키 교환 및 키 캡슐화 122
__6.2.2 하이브리드 암호화 123
6.3 RSA 비대칭 암호화: 최악과 차악 127
__6.3.1 교과서 RSA 127
__6.3.2 RSA PKCS#1 v1.5를 쓰지 않는 이유 131
__6.3.3 RSA-OAEP 비대칭 암호화 133
6.4 ECIES 하이브리드 암호화 136
요약 138
CHAPTER 7 서명과 영지식 증명 139
7.1 서명이란? 140
__7.1.1 실전에서 서명하고 서명을 검증하는 방법 141
__7.1.2 서명의 주된 사용: 인증된 키 교환 142
__7.1.3 실세계의 사용 사례: 공개 키 인프라 143
7.2 ZKP: 서명의 근원 144
__7.2.1 슈노어 식별 프로토콜: 대화형 ZKP 145
__7.2.2 비대화형 ZKP로서의 서명 148
7.3 권장하는 서명 알고리즘 149
__7.3.1 불안한 표준, RSA PKCS#1 v1.5 150
__7.3.2 개선된 표준, RSA-PSS 153
__7.3.3 ECDSA 154
__7.3.4 EdDSA 157
7.4 서명 체계의 미묘한 속성 160
__7.4.1 대체 공격 160
__7.4.2 서명의 가단성 162
요약 162
CHAPTER 8 무작위성과 비밀 165
8.1 무작위성이란? 166
8.2 느린 무작위성? PRNG를 쓰세요 167
8.3 실전에서 무작위성 확보하기 171
8.4 난수 생성과 보****고려 사항 173
8.5 공개적 무작위성 175
8.6 키 파생과 HKDF 177
8.7 키 관리와 비밀 관리 181
8.8 임곗값 암호학을 통한 신뢰의 탈중앙화 183
요약 186
PART II 프로토콜: 암호학의 레시피
CHAPTER 9 보****전송 189
9.1 보****전송 프로토콜, SSL과 TLS 190
__9.1.1 SSL에서 TLS로 190
__9.1.2 실전에서 TLS 활용하기 191
9.2 TLS 프로토콜의 작동 원리 193
__9.2.1 TLS 핸드셰이크 194
__9.2.2 TLS 1.3이 애플리케이션 데이터를 암호화하는 방법 207
9.3 암호화된 웹의 현재 208
9.4 기타 전송 프로토콜 211
9.5 TLS에 대한 현대적인 대안, 노이즈 프로토콜 프레임워크 211
__9.5.1 노이즈의 다양한 핸드셰이크 212
__9.5.2 노이즈의 핸드셰이크 213
요약 214
CHAPTER 10 종단 간 암호화 215
10.1 종단 간 암호화가 왜 필요한가? 216
10.2 어디에서도 찾을 수 없는 신뢰의 근원 217
10.3 이메일 암호화의 실패 219
__10.3.1. PGP? GPG? 어떻게 작동할까? 219
__10.3.2 사용자 간의 신뢰를 확장시키는 신뢰의 웹 222
__10.3.3 진짜 이슈는 키 발견 223
__10.3.4 PGP가 아니라면, 대안은? 224
10.4 보****메시징: 시그널을 활용한 현대적 종단 간 암호화 226
__10.4.1 신뢰하되, 검증하라. WOT보다 사용자 친화적으로 227
__10.4.2 시그널 프로토콜의 핸드셰이크, X3DH 230
__10.4.3 시그널의 핸드셰이크 후 프로토콜, 더블 래칫 233
10.5 종단 간 암호화의 현재 238
요약 240
CHAPTER 11 사용자 인증 243
11.1 인증 복습하기 243
11.2 사용자 인증, 비밀번호를 없애기 위한 여정 245
__11.2.1 비밀번호의 지배자, SSO와 비밀번호 관리자 248
__11.2.2 비밀번호 노출을 막고 싶다고요? 비대칭 비밀번호 인증 키 교환을 쓰세요 249
__11.2.3 O TP는 실제 비밀번호가 아니다. 대칭 키를 사용하여 비밀번호 없이 전환하기 253
__11.2.4 비대칭 키로 비밀번호 대체하기 257
11.3 사용자 지원 인증: 사람의 도움으로 장치 페어링하기 260
__11.3.1 미리 공유된 키 261
__11.3.2 CPace를 사용한 대칭 비밀번호 인증 키 교환 263
__11.3.3 내 키 교환이 MITM 공격을 당했나? SAS를 확인하자 264
요약 267
CHAPTER 12 ‘암호화폐’의 ‘암호’? 269
12.1 BFT 합의 알고리즘에 대한 간단한 소개 270
__12.1.1 회복력의 문제: 구조를 위한 분산 프로토콜 270
__12.1.2 신뢰의 문제를 해결하는 탈중앙화 272
__12.1.3 규모의 문제: 무허가 및 검열 방지 네트워크 273
12.2 비트코인의 작동 방식 275
__12.2.1 비트코인이 사용자 잔고와 트랜잭션을 관리하는 방법 276
__12.2.2 디지털 금광 시대, BTC를 채굴한다는 것 278
__12.2.3 포크 지옥! 채굴 분쟁 해결 281
__12.2.4 머클 트리를 사용하여 블록 크기 줄이기 284
12.3 암호화폐 둘러보기 286
__12.3.1 변동성 286
__12.3.2 지연 시간 286
__12.3.3 블록체인의 크기 287
__12.3.4 기밀성 287
__12.3.5 에너지 효율 288
12.4 디엠BFT: BFT 합의 프로토콜 288
__12.4.1 BFT 합의 프로토콜의 두 속성, 안전성과 활성 288
__12.4.2 디엠BFT 프로토콜의 라운드 289
__12.4.3 프로토콜은 부정직함을 어느 정도까지 허용할 수 있는가? 290
__12.4.4 디엠BFT 투표 규칙 291
__12.4.5 트랜잭션은 언제 확정되는가? 292
__12.4.6 디엠BFM의 안전성에 숨은 직관 293
요약 295
CHAPTER 13 하드웨어 암호학 297
13.1 현대 암호학의 공격자 모델 297
13.2 비신뢰 환경의 구원자, 하드웨어 299
__13.2.1 화이트박스 암호학 300
__13.2.2 스마트 카드와 보****요소 300
__13.2.3 은행이 사랑한 HSM 303
__13.2.4. 보****요소의 훌륭한 표준화, TPM 305
__13.2.5 TEE를 이용한 보****컴퓨팅 308
13.3 어떤 솔루션을 고를까? 309
13.4 누출 저항 암호학, 그리고 사이드채널 공격 방어법 311
__13.4.1 상수 시간 프로그래밍 313
__13.4.2 마스킹과 블라인드 315
__13.4.3 결함 공격 대처법 316
요약 316
CHAPTER 14 양자 컴퓨터 시대의 암호학 319
14.1 양자 컴퓨터가 뭐길래? 320
__14.1.1 작은 것에 대한 탐구, 양자역학 320
__14.1.2 양자 컴퓨터의 탄생으로부터 양자 우위까지 323
__14.1.3 그로버와 쇼어의 알고리즘 324
__14.1.4 양자 컴퓨터에 맞서는 양자 후 암호학 326
14.2 해시 함수만 있으면 된다! 해시 기반 서명 326
__14.2.1 램포트 서명을 통한 OTS 327
__14.2.2 WOTS와 작은 키 329
__14.2.3 XMSS와 SPHINCS+를 통한 다회 서명 330
14.3 격자 기반 암호학을 사용한 더 짧은 키 및 서명 333
__14.3.1 격자란? 333
__14.3.2 오류를 통한 학습 335
__14.3.3 격자 기반 키 교환, 카이버 337
__14.3.4 격자 기반 서명 체계, 다이리튬 339
14.4 양자 컴퓨터는 공포인가? 340
요약 342
CHAPTER 15 차세대 암호학 345
15.1 함께할수록 좋은 MPC 346
__15.1.1 PSI 347
__15.1.2 범용 MPC 348
__15.1.3 MPC의 현재 350
15.2 FHE, 그리고 암호화 클라우드의 미래 350
__15.2.1 RSA 암호화와 동형 암호화의 예 351
__15.2.2 다양한 동형 암호화 351
__15.2.3 FHE의 열쇠, 부트스트래핑 352
__15.2.4 오류를 통한 학습 기반 FHE 체계 354
__15.2.5 어디에 사용할까? 356
15.3 범용 ZKP 357
__15.3.1 zk-SNARK의 작동 원리 359
__15.3.2 증거의 일부를 숨기는 동형 커밋 360
__15.3.3 동형 커밋을 개선하는 쌍선형 페어링 361
__15.3.4 간결성은 어디에? 361
__15.3.5 프로그램을 다항식으로 362
__15.3.6 프로그램은 컴퓨터를 위한 것. 우리에게 필요한 것은 산술 회로 363
__15.3.7 R1CS 산술 회로 364
__15.3.8 R1CS에서 다항식까지 364
__15.3.9 지수에 숨은 다항식을 계산하기 365
요약 367
CHAPTER 16 암호학의 끝 369
16.1 알맞은 암호학 프리미티브 또는 프로토콜을 찾는 지루한 작업 370
16.2 암호학 프리미티브 및 프로토콜을 사용하는 법? 표준과 형식 검증 371
16.3 좋은 라이브러리는 어디에? 374
16.4 개발자가 적? 암호학의 오용 376
16.5 사용이 편한 보****377
16.6 암호학은 섬이 아니다 378
16.7 암호학 실무자의 책임: 자신의 암호학을 시험하지 말자 379
요약 381
연습 문제 정답 383
찾아보기 388