서브메뉴

본문

처음 배우는 암호화 (기초 수학부터 양자 컴퓨터 이후까지, 암호학의 현재와 미래)
처음 배우는 암호화 (기초 수학부터 양자 컴퓨터 이후까지, 암호학의 현재와 미래)
저자 : 장필리프 오마송
출판사 : 한빛미디어
출판년 : 2018
정가 : 29000, ISBN : 9791162240977

책소개


흥미진진한 모던 암호학 실용 가이드

이 책은 딱딱하게만 느껴지는 암호학의 근본 개념과 최신 논의를 흥미롭고 체계적으로 알려준다. 크게는 기초 수학부터 양자 컴퓨팅 이후의 암호학까지 폭넓은 주제를 다루며, 각 장은 실제 사례를 기초로 한 일반적인 구현 실수와 이러한 함정을 피하는 방법까지 자세히 설명한다. 이제 막 현장에 뛰어든 초심자에게는 친절한 가이드가, 숙련된 종사자에게는 최신 암호화와 그 응용에 대한 풍부한 정보를 제공하는 필독서가 되어줄 것이다.

목차


1장. 암호화
1.1 기초
1.2 고전암호
__1.2.1 시저 암호
__1.2.2 비즈네르 암호
1.3 암호의 작동 방식
__1.3.1 치환
__1.3.2 운영 모드
__1.3.3 고전암호가 안전하지 않은 이유
1.4 완벽한 암호화: 일회용 패드(OTP)
__1.4.1 일회용 패드를 이용한 암호화
__1.4.2 일회용 패드가 안전한 이유
1.5 암호의 보안성
__1.5.1 공격 모형
__1.5.2 보안 목표
__1.5.3 보안 개념들
1.6 비대칭 암호화
1.7 암·복호화 이외의 암호의 용도
__1.7.1 인증 암호화
__1.7.2 형태 보존 암호화
__1.7.3 완전 준동형 암호화
__1.7.4 검색 가능 암호화
__1.7.5 조율 가능 암호화
1.8 문제 발생 요인들
__1.8.1 약한 암호
__1.8.2 잘못된 모형
1.9 더 읽을거리

2장. 무작위성
2.1 무작위 대 비무작위
2.2 확률분포로서의 무작위성
2.3 엔트로피: 불확실성의 측도
2.4 난수 발생기(RNG)와 의사난수 발생기(PRNG)
__2.4.1 PRNG의 작동 방식
__2.4.2 보안 관련 문제
__2.4.3 포르투나: Microsoft의 PRNG
__2.4.4 암호학적 PRNG와 비암호학적 PRNG
__2.4.5 통계적 검정의 쓸모 없음
2.5 실제로 쓰이는 PRNG들
__2.5.1 Unix 기반 시스템에서 무작위 비트 생성
__2.5.2 Windows의 CryptGenRandom() 함수
__2.5.3 하드웨어 기반 PRNG: 인텔 마이크로프로세서의 RDRAND 명령
2.6 문제 발생 요인들
__2.6.1 불충분한 엔트로피원
__2.6.2 시동 시점의 엔트로피 부족
__2.6.3 비암호 PRNG
__2.6.4 무작위성은 강하지만 표본 추출에 문제가 있는 사례
2.7 더 읽을거리

3장. 암호학적 보안
3.1 불가능의 정의
__3.1.1 이론적인 보안성: 정보 보안성
__3.1.2 실용적인 보안성: 계산 보안성
3.2 보안성의 정량화
__3.2.1 비트수를 척도로 한 보안성의 측정
__3.2.2 전방위 공격 비용
__3.2.3 보안 수준의 선택과 평가
3.3 보안의 달성
__3.3.1 증명 가능 보안성
__3.3.2 발견법적 보안성
3.4 키 생성
__3.4.1 대칭 키 생성
__3.4.2 비대칭 키 생성
__3.4.3 키의 보호
3.5 문제 발생 요인들
__3.5.1 부정확한 보안성 증명
__3.5.2 하위 호환성을 위한 짧은 키
3.6 더 읽을거리

4장. 블록 암호
4.1 블록 암호란 무엇인가?
__4.1.1 보안 목표
__4.1.2 블록 크기
__4.1.3 코드북 공격
4.2 블록 암호 구성
__4.2.1 블록 암호의 라운드
__4.2.2 슬라이드 공격과 라운드 키
__4.2.3 대입-치환 네트워크
__4.2.4 파이스텔 방안
4.3 AES(고급 암호화 표준)
__4.3.1 AES의 내부
__4.3.2 AES의 사용 예
4.4 AES의 구현
__4.4.1 테이블 기반 구현
__4.4.2 전용 기계어 명령
__4.4.3 AES는 안전한가?
4.5 운영 모드
__4.5.1 전자 코드북(ECB) 모드
__4.5.2 암호 블록 연쇄(CBC) 모드
__4.5.3 CBC 모드에서 임의의 길이의 메시지를 암호화하는 방법
__4.5.4 카운터(CTR) 모드
4.6 문제 발생 요인들
__4.6.1 중간값 일치 공격
__4.6.2 채움 오라클 공격
4.7 더 읽을거리

5장. 스트림 암호
5.1 스트림 암호의 작동 방식
__5.1.1 상태 있는 스트림 암호와 카운터 기반 스트림 암호
5.2 하드웨어 지향적 스트림 암호
__5.2.1 FSR(되먹임 자리이동 레지스터)
__5.2.2 Grain-128a
__5.2.3 A5/1
5.3 소프트웨어 지향적 스트림 암호
__5.3.1 RC4
__5.3.2 Salsa20
5.4 문제 발생 요인들
__5.4.1 논스 재사용
__5.4.2 잘못된 RC4 구현
__5.4.3 하드웨어로 구현된 약한 암호
5.5 더 읽을거리

6장. 해시 함수
6.1 보안 해시 함수
__6.1.1 다시 등장한 비예측성
__6.1.2 역상 저항성
__6.1.3 충돌 저항성
__6.1.4 충돌 찾기
6.2 해시 함수의 구축
__6.2.1 압축 기반 해시 함수: 머클-담고르 구성
__6.2.2 치환 기반 해시 함수: 스펀지 함수
6.3 SHA족 해시 함수
__6.3.1 SHA-1
__6.3.2 SHA-2
__6.3.3 SHA-3 공모전
__6.3.4 Keccak (SHA-3)
6.4 BLAKE2 해시 함수
6.5 문제 발생 요인들
__6.5.1 길이 연장 공격
__6.5.2 저장증명 프로토콜 속이기
6.6 더 읽을거리

7장. 키 있는 해싱
7.1 메시지 인증 코드(MAC)
__7.1.1 보안 통신에 쓰이는 MAC
__7.1.2 위조 공격과 선택된 메시지 공격
__7.1.3 재전송 공격
7.2 의사난수 함수(PRF)
__7.2.1 PRF의 보안성
__7.2.2 PRF가 MAC보다 강한 이유
7.3 키 없는 해시로 키 있는 해시 구축
__7.3.1 비밀 값 전위 구성
__7.3.2 비밀 값 후위 구성
__7.3.3 HMAC 구성
__7.3.4 해시 기반 MAC에 대한 일반적 공격 방법 하나
7.4 블록 암호로 키 있는 해시 구축: CMAC
__7.4.1 CBC-MAC에 대한 공격
__7.4.2 CBC-MAC 고치기
7.5 전용 MAC 설계
__7.5.1 Poly1305
__7.5.2 SipHash
7.6 문제 발생 요인들
__7.6.1 MAC 검증에 대한 타이밍 공격
__7.6.2 물 새는 스펀지
7.7 더 읽을거리

8장. 인증 암호화
8.1 MAC을 이용한 인증 암호화
__8.1.1 암호화 및 MAC
__8.1.2 MAC 후 암호화
__8.1.3 암호화 후 MAC
8.2 인증 암호
__8.2.1 AEAD(연관 자료가 있는 인증 암호화)
__8.2.2 논스 관련 예측 가능성 방지
__8.2.3 좋은 인증 암호의 요건
8.3 AES-GCM: 인증 암호의 표준
__8.3.1 GCM의 내부: CTR과 GHASH
__8.3.2 GCM의 보안성
__8.3.3 GCM의 효율성
8.4 OCB: GCM보다 빠른 인증 암호
__8.4.1 OCB의 내부
__8.4.2 OCB의 보안성
__8.4.3 OCB의 효율성
8.5 SIV: 가장 안전한 인증 암호?
8.6 치환 기반 AEAD
8.7 문제 발생 요인들
__8.7.1 AES-GCM과 약한 해시 키
__8.7.2 AES-GCM과 짧은 인증값
8.8 더 읽을거리

9장. 난해한 문제들
9.1 계산 난해성
__9.1.1 실행 시간 측정
__9.1.2 다항 시간 대 초다항 시간
9.2 복잡도 부류
__9.2.1 비결정론적 다항 시간
__9.2.2 NP-완전 문제
__9.2.3 P 대 NP 문제
9.3 인수분해 문제
__9.3.1 큰 수의 인수분해의 실제
__9.3.2 인수분해는 NP-완전 문제인가?
9.4 이산 로그 문제
__9.4.1 군이란 무엇인가
__9.4.2 난해성의 근원
9.5 문제 발생 요인들
__9.5.1 인수분해가 생각보다 쉬운 경우
__9.5.2 난해한 문제라도 규모가 작으면 풀기 어렵지 않다
9.6 더 읽을거리

10장. RSA
10.1 RSA에 깔린 수학
10.2 RSA 트랩도어 치환
10.3 RSA 키 생성과 보안성
10.4 RSA를 이용한 암호화
__10.4.1 교과서 RSA 암호화의 가소성 악용
__10.4.2 강한 RSA 암호화: OAEP
10.5 RSA를 이용한 서명
__10.5.1 교과서 RSA 서명의 취약점
__10.5.2 PSS 서명 표준
__10.5.3 FDH 서명
10.6 RSA 구현
__10.6.1 빠른 거듭제곱 알고리즘: 제곱 후 곱하기
__10.6.2 작은 지수를 이용한 공개 키 연산 속도 높이기
__10.6.3 중국인의 나머지 정리
10.7 문제 발생 요인들
__10.7.1 RSA-CRT에 대한 벨코어 공격
__10.7.2 개인 지수나 법의 공유
10.8 더 읽을거리

11장. 디피-헬먼
11.1 디피-헬먼 함수
11.2 디피-헬먼 문제
__11.2.1 디피-헬먼 계산 문제
__11.2.2 디피-헬먼 결정 문제
__11.2.3 그 밖의 디피-헬먼 문제들
11.3 키 합의 프로토콜
__11.3.1 비 DH 키 합의 프로토콜의 예
__11.3.2 키 합의 프로토콜에 대한 공격 모형들
__11.3.3 성능
11.4 디피-헬먼 프로토콜
__11.4.1 익명 디피-헬먼
__11.4.2 인증 디피-헬먼
__11.4.3 메네즈스-취-밴스톤(MQV)
11.5 문제 발생 요인들
__11.5.1 공유 비밀에 해싱을 적용하지 않는 경우
__11.5.2 TLS의 구식 디피-헬먼
__11.5.3 안전하지 않은 군 매개변수
11.6 더 읽을거리

12장. 타원곡선
12.1 타원곡선이란?
__12.1.1 정수에 관한 타원곡선
__12.1.2 점의 덧셈과 곱셈
__12.1.3 타원곡선 군
12.2 ECDLP 문제
12.3 타원곡선에 관한 디피-헬먼 키 합의
__12.3.1 타원곡선을 이용한 디지털 서명
__12.3.2 타원곡선을 이용한 암호화
12.4 곡선의 선택
__12.4.1 NIST 곡선
__12.4.2 Curve25519
__12.4.3 그 밖의 곡선들
12.5 문제 발생 요인들
__12.5.1 ECDSA와 무작위성의 결여
__12.5.2 다른 곡선으로 ECDH 깨기
12.6 더 읽을거리

13장. TLS
13.1 응용 대상과 요구조건
13.2 TLS 프로토콜 모음
__13.2.1 TLS와 SSL 프로토콜들의 간략한 역사
__13.2.2 TLS의 개요
__13.2.3 인증서와 인증기관
__13.2.4 레코드 프로토콜
__13.2.5 TLS 핸드셰이크 프로토콜
__13.2.6 TLS 1.3의 암복호화 알고리즘들
13.3 TLS 1.2에 비한 TLS 1.3의 개선점
__13.3.1 다운그레이드 보호
__13.3.2 단일 왕복 악수 과정
__13.3.3 세션 재개
13.4 TLS 보안의 강도
__13.4.1 인증
__13.4.2 순방향 비밀성
13.5 문제 발생 요인들
__13.5.1 침해된 인증기관
__13.5.2 침해된 서버
__13.5.3 침해된 클라이언트
__13.5.4 구현의 버그
13.6 더 읽을거리

14장. 양자 컴퓨터와 양자 후 암호
14.1 양자 컴퓨터의 작동 방식
__14.1.1 양자 비트
__14.1.2 양자 게이트
14.2 양자 속도 향상
__14.2.1 지수 속도 향상과 사이먼의 문제
__14.2.2 쇼어 알고리즘의 위협
__14.2.3 쇼어 알고리즘으로 인수분해 문제 풀기
__14.2.4 쇼어 알고리즘으로 이산 로그 문제 풀기
__14.2.5 그로버 알고리즘
14.3 양자 컴퓨터를 만드는 것이 어려운 이유
14.4 양자 후 암복호화 알고리즘
__14.4.1 부호 기반 암호학
__14.4.2 격자 기반 암호학
__14.4.3 다변량 암호학
__14.4.4 해시 기반 암호학
14.5 문제 발생 요인들
__14.5.1 불확실한 보안 수준
__14.5.2 미래 상상: 만일 우리의 대응이 너무 늦다면?
__14.5.3 구현 문제
14.6 더 읽을거리