실용 암호학 [보안 실무자를 위한 정보 보호와 암호화 구현]
- 원서명Cryptography Engineering: Design Principles and Practical Applications (ISBN 9780470474242)
- 지은이닐스 퍼거슨, 브루스 슈나이어, 타다요시 쿄노
- 옮긴이구형준, 김진국, 김경신
- ISBN : 9788960771970
- 30,000원
- 2011년 04월 29일 펴냄 (절판)
- 페이퍼백 | 448쪽 | 188*245mm
- 시리즈 : 해킹과 보안
판매처
- 현재 이 도서는 구매할 수 없습니다.
책 소개
암호학의 이론적 배경에 기반을 두고 동작 원리를 설명한다. 또한 실무에서 암호학을 어떻게 적용할 수 있는지에 초점을 맞춘 실전 암호학 가이드다. 보안 실무자와 실제 암호를 구현하는 개발자 모두를 위한 필수 지침서로서, 단순 이론을 배우는 데 그치지 않고 실용적 측면에서 암호학을 이해할 수 있는 최고의 암호학 서적이다.
[ 소개 ]
실세계에서 작동하는 암호 프로토콜 설계 방식을 알려준다.
카메라의 동작 방식을 안다고 해서 좋은 사진가가 되지는 않는다. 암호 설계가 무엇인지 암호 프로토콜이 어떻게 작동하는지 안다고 해서 암호를 잘 이용하는 것 또한 아니다. 무엇보다도, 암호학자처럼 생각해야만 한다. 이 책의 내용이 바로 그것이다. 암호 프로토콜을 세부적으로 깊숙한 부분까지 다루며, 어려운 부분을 인지하고 극복하는 법을 알려주는 이 책은 학교 교재나 독학용으로 모두 적합하며, 실세계 시스템에서 암호를 효율적으로 사용할 수 있게 인도한다.
[ 이 책에서 다루는 내용 ]
● 암호 프로토콜 설계의 이해
● 사람, 경제학, 하드웨어, 소프트웨어, 윤리, 정책 등 주변 시스템과 암호학 간의 상호작용 이해
● 주변 시스템 내에서 약점을 찾기 위한 보안 프로토콜
● 공격자의 사고 방식을 간파한 공격 방어
● 신규 보안 솔루션 내 암호 설계 구현 방법 습득
[ 소개 ]
실세계에서 작동하는 암호 프로토콜 설계 방식을 알려준다.
카메라의 동작 방식을 안다고 해서 좋은 사진가가 되지는 않는다. 암호 설계가 무엇인지 암호 프로토콜이 어떻게 작동하는지 안다고 해서 암호를 잘 이용하는 것 또한 아니다. 무엇보다도, 암호학자처럼 생각해야만 한다. 이 책의 내용이 바로 그것이다. 암호 프로토콜을 세부적으로 깊숙한 부분까지 다루며, 어려운 부분을 인지하고 극복하는 법을 알려주는 이 책은 학교 교재나 독학용으로 모두 적합하며, 실세계 시스템에서 암호를 효율적으로 사용할 수 있게 인도한다.
[ 이 책에서 다루는 내용 ]
● 암호 프로토콜 설계의 이해
● 사람, 경제학, 하드웨어, 소프트웨어, 윤리, 정책 등 주변 시스템과 암호학 간의 상호작용 이해
● 주변 시스템 내에서 약점을 찾기 위한 보안 프로토콜
● 공격자의 사고 방식을 간파한 공격 방어
● 신규 보안 솔루션 내 암호 설계 구현 방법 습득
목차
목차
- 1부 개요
- 1장 암호학의 배경
- 1.1 암호학의 역할
- 1.2 가장 약한 연결 고리 속성
- 1.3 대립적 설정
- 1.4 전문가적 편집증
- 1.4.1 광범위한 혜택
- 1.4.2 공격에 대한 토론
- 1.5 위협 모델
- 1.6 암호학≠해결책
- 1.7 어려운 암호학
- 1.8 암호학에서의 쉬운 부분
- 1.9 일반적인 공격
- 1.10 보안과 기타 설계 기준
- 1.10.1 보안과 성능
- 1.10.2 보안과 기능
- 1.10.3 보안과 발전하는 시스템
- 1.11 참조 자료
- 1.12 보안 편집광을 위한 훈련
- 1.12.1 보안 시사 문제 훈련
- 1.12.2 보안성 검토 훈련
- 1.13 연습문제
- 2장 암호학 소개
- 2.1 암호화
- 2.1.1 커코프 원칙
- 2.2 인증
- 2.3 공개키 암호
- 2.4 전자 서명
- 2.5 공개키 기반 구조
- 2.6 공격
- 2.6.1 암호문 단독 모델
- 2.6.2 알려진 평문 모델
- 2.6.3 선택 평문 모델
- 2.6.4 선택 암호문 모델
- 2.6.5 특정 공격 목표
- 2.6.6 다른 형태의 공격
- 2.7 자세히 살펴보기
- 2.7.1 생일 공격
- 2.7.2 Meet-in-the-Middle 공격
- 2.8 보안 수준
- 2.9 성능
- 2.10 복잡성
- 2.11 연습문제
- 2.1 암호화
- 2부 메시지 보안
- 3장 블록 암호
- 3.1 블록 암호란
- 3.2 공격 유형
- 3.3 이상적인 블록 암호
- 3.4 블록 암호의 안전에 관한 정의
- 3.4.1 순열 패리티
- 3.5 실제 블록 암호
- 3.5.1 DES
- 3.5.2 AES
- 3.5.3 Serpent
- 3.5.4 Twofish
- 3.5.5 기타 AES 최종 후보
- 3.5.6 블록 암호 선택
- 3.5.7 키 크기
- 3.6 연습문제
- 4장 블록 암호 모드
- 4.1 패딩
- 4.2 ECB
- 4.3 CBC
- 4.3.1 고정 IV
- 4.3.2 카운터 IV
- 4.3.3 랜덤 IV
- 4.3.4 넌스로 생성된 IV
- 4.4 OFB
- 4.5 CTR
- 4.6 암호화와 인증의 결합
- 4.7 사용할 모드 선택
- 4.8 정보 유출
- 4.8.1 충돌의 확률
- 4.8.2 유출을 다루는 법
- 4.8.3 수학에 관해
- 4.9 연습문제
- 5장 해시 함수
- 5.1 해시 함수의 안전성
- 5.2 실제 해시 함수
- 5.2.1 간단하지만 안전하지 않은 해시 함수
- 5.2.2 MD5
- 5.2.3 SHA-1
- 5.2.4 SHA-224, SHA-256, SHA-384, SHA-512
- 5.3 해시 함수의 취약점
- 5.3.1 길이 확장
- 5.3.2 부분 메시지 충돌
- 5.4 취약점 개선
- 5.4.1 단기적 개선 방법
- 5.4.2 효율성을 높인 단기 개선 방법
- 5.4.3 다른 개선 방법
- 5.5 해시 함수의 선택
- 5.6 연습문제
- 6장 메시지 인증 코드
- 6.1 MAC의 역할
- 6.2 이상적인 MAC과 MAC의 안전성
- 6.3 CBC-MAC과 CMAC
- 6.4 HMAC
- 6.5 GMAC
- 6.6 MAC의 선택
- 6.7 MAC의 사용
- 6.8 연습문제
- 7장 보안 채널
- 7.1 보안 채널의 특성
- 7.1.1 역할
- 7.1.2 키
- 7.1.3 메시지와 스트림
- 7.1.4 보안 속성
- 7.2 인증과 암호화 순서
- 7.3 보안 채널 설계: 개요
- 7.3.1 메시지 번호
- 7.3.2 인증
- 7.3.3 암호화
- 7.3.4 프레임 포맷
- 7.4 설계 세부 사항
- 7.4.1 초기화
- 7.4.2 메시지 전송
- 7.4.3 메시지 수신
- 7.4.4 메시지 순서
- 7.5 대안
- 7.6 연습문제
- 7.1 보안 채널의 특성
- 8장 구현 이슈(1)
- 8.1 올바른 프로그램 작성법
- 8.1.1 명세서
- 8.1.2 테스트와 수정
- 8.1.3 태만한 자세
- 8.1.4 진행 방법
- 8.2 안전한 소프트웨어 작성법
- 8.3 기밀 유지
- 8.3.1 상태 삭제
- 8.3.2 스왑 파일
- 8.3.3 캐시
- 8.3.4 메모리 내 데이터 잔존
- 8.3.5 외부 접근
- 8.3.6 데이터 무결성
- 8.3.7 해야 할 일
- 8.4 코드 품질
- 8.4.1 간결화
- 8.4.2 모듈화
- 8.4.3 어서션
- 8.4.4 버퍼 오버플로우
- 8.4.5 테스팅
- 8.5 부채널 공격
- 8.6 다루지 못한 것
- 8.7 연습문제
- 8.1 올바른 프로그램 작성법
- 3부 키 협상
- 9장 난수 생성
- 9.1 실제 난수
- 9.1.1 실제 난수 데이터 사용 시의 문제점
- 9.1.2 의사 난수 데이터
- 9.1.3 실제 난수 데이터와 의사 난수 생성기
- 9.2 PRNG에 대한 공격 모델
- 9.3 Fortuna
- 9.4 생성기
- 9.4.1 초기화
- 9.4.2 Reseed
- 9.4.3 블록 생성
- 9.4.4 난수 데이터 생성
- 9.4.5 생성기 속도
- 9.5 누산기
- 9.5.1 엔트로피 소스
- 9.5.2 풀
- 9.5.3 구현 시 고려 사항
- 9.5.4 초기화
- 9.5.5 난수 데이터 얻기
- 9.5.6 이벤트 추가
- 9.6 시드 파일 관리
- 9.6.1 시드 파일 생성
- 9.6.2 시드 파일 업데이트
- 9.6.3 시드 파일 읽기/쓰기 시기
- 9.6.4 백업과 가상 머신
- 9.6.5 파일 시스템 업데이트의 원자성
- 9.6.6 초기 부트
- 9.7 난수 요소의 선택
- 9.8 연습문제
- 9.1 실제 난수
- 10장 소수
- 10.1 가분성과 소수
- 10.2 작은 소수 생성
- 10.3 모듈로 소수의 계산
- 10.3.1 덧셈과 뺄셈
- 10.3.2 곱셈
- 10.3.3 군과 유한체
- 10.3.4 GCD 알고리즘
- 10.3.5 확장된 유클리드 호제법
- 10.3.6 모듈로 2의 동작
- 10.4 큰 소수
- 10.4.1 소수 판별법
- 10.4.2 멱의 계산
- 10.5 연습문제
- 11장 디피-헬만
- 11.1 군
- 11.2 기본 DH
- 11.3 중간자 공격
- 11.4 함정
- 11.5 안전한 소수
- 11.6 작은 부분군 사용
- 11.7 p의 크기
- 11.8 실용 규칙
- 11.9 잘못될 수 있는 것
- 11.10 연습문제
- 12장 RSA
- 12.1 소개
- 12.2 중국인의 나머지 정리
- 12.2.1 가너의 공식
- 12.2.2 일반화
- 12.2.3 사용
- 12.2.4 결론
- 12.3 모듈로 n 곱셈
- 12.4 RSA 정의
- 12.4.1 RSA 전자 서명
- 12.4.2 공개 지수
- 12.4.3 개인키
- 12.4.4 n의 크기
- 12.4.5 RSA 키 생성
- 12.5 RSA 위험
- 12.6 암호화
- 12.7 전자 서명
- 12.8 연습문제
- 13장 암호 프로토콜 소개
- 13.1 역할
- 13.2 신뢰
- 13.2.1 위험
- 13.3 인센티브
- 13.4 암호 프로토콜에서의 신뢰
- 13.5 메시지와 단계
- 13.5.1 전송 계층
- 13.5.2 프로토콜과 메시지 식별
- 13.5.3 메시지 인코딩과 구문 분석
- 13.5.4 프로토콜 실행 상태
- 13.5.5 에러
- 13.5.6 재생과 재시도
- 13.6 연습문제
- 14장 키 협상
- 14.1 설정
- 14.2 첫 번째 시도
- 14.3 프로토콜의 영원한 삶
- 14.4 인증 규칙
- 14.5 두 번째 시도
- 14.6 세 번째 시도
- 14.7 최종 프로토콜
- 14.8 프로토콜의 다양한 관점
- 14.8.1 앨리스의 관점
- 14.8.2 밥의 관점
- 14.8.3 공격자의 관점
- 14.8.4 키 손상
- 14.9 프로토콜의 계산 복잡도
- 14.9.1 최적화 비법
- 14.10 프로토콜 복잡도
- 14.11 가벼운 경고
- 14.12 패스워드 기반의 키 협상
- 14.13 연습문제
- 15장 구현 이슈(2)
- 15.1 큰 정수 연산
- 15.1.1 Wooping
- 15.1.2 DH 연산 체크
- 15.1.3 RSA 암호화 체크
- 15.1.4 RSA 서명 체크
- 15.1.5 결론
- 15.2 빠른 곱셈
- 15.3 부채널 공격
- 15.3.1 대응 방법
- 15.4 프로토콜
- 15.4.1 보안 채널상의 프로토콜
- 15.4.2 메시지 수신
- 15.4.3 타임아웃
- 15.5 연습문제
- 15.1 큰 정수 연산
- 4부 키 관리
- 16장 클록
- 16.1 클록 사용
- 16.1.1 만료
- 16.1.2 특정 값
- 16.1.3 단조성
- 16.1.4 실시간 트랜잭션
- 16.2 실시간 클록 칩 사용
- 16.3 보안 위험
- 16.3.1 클록 되돌리기 공격
- 16.3.2 클록 중지하기 공격
- 16.3.3 클록 앞으로 돌리기 공격
- 16.4 신뢰성 있는 클록 생성
- 16.5 동일 상태 문제
- 16.6 시간
- 16.7 마무리 추천
- 16.8 연습문제
- 16.1 클록 사용
- 17장 키 서버
- 17.1 기본 원리
- 17.2 커버로스
- 17.3 간단한 해결책
- 17.3.1 보안 연결
- 17.3.2 키 설정
- 17.3.3 키 재설정
- 17.3.4 기타 속성
- 17.4 선택의 문제
- 17.5 연습문제
- 18장 이상적인 PKI
- 18.1 PKI의 간단한 개요
- 18.2 PKI 예제
- 18.2.1 범용 PKI
- 18.2.2 VPN 접근
- 18.2.3 전자 금융
- 18.2.4 정유 센서
- 18.2.5 신용카드 조직
- 18.3 추가적인 세부 사항
- 18.3.1 다단계 인증
- 18.3.2 유효 기간
- 18.3.3 독립된 등록 권한
- 18.4 정리
- 18.5 연습문제
- 19장 PKI의 현실
- 19.1 이름
- 19.2 인가
- 19.3 신뢰
- 19.4 간접 인가
- 19.5 직접 인가
- 19.6 자격 증명 시스템
- 19.7 수정된 구상
- 19.8 폐기
- 19.8.1 인증서 폐기 목록
- 19.8.2 빠른 만료
- 19.8.3 온라인 인증서 검증
- 19.8.4 인증서 폐기의 필요성
- 19.9 PKI를 사용하기 좋은 곳
- 19.10 PKI 타입과 키 서버 타입
- 19.11 연습문제
- 20장 PKI 실현 가능성
- 20.1 인증서 형식
- 20.1.1 권한 언어
- 20.1.2 루트 키
- 20.2 키의 생명주기
- 20.3 키의 교체 이유
- 20.4 정리
- 20.5 연습문제
- 20.1 인증서 형식
- 21장 비밀 정보 저장
- 21.1 디스크
- 21.2 인간의 기억
- 21.2.1 솔트 사용과 확장
- 21.3 이동식 저장 매체
- 21.4 보안 토큰
- 21.5 보안 UI
- 21.6 바이오메트릭
- 21.7 싱글 사인온
- 21.8 손실 위험
- 21.9 비밀 공유
- 21.10 비밀 삭제
- 21.10.1 종이
- 21.10.2 자성 매체
- 21.10.3 고체 상태의 저장 장치
- 21.11 연습문제
- 5부 기타
- 22장 표준과 특허
- 22.1 표준
- 22.1.1 표준화 과정
- 22.1.2 SSL
- 22.1.3 AES: 경쟁에 의한 표준화
- 22.2 특허
- 22.1 표준
도서 오류 신고
정오표
정오표
[p.219 : 아래서 10행]
모슨 소수들을
->
모든 소수들을