Top

실용 암호학 [보안 실무자를 위한 정보 보호와 암호화 구현]

  • 원서명Cryptography Engineering: Design Principles and Practical Applications (ISBN 9780470474242)
  • 지은이닐스 퍼거슨, 브루스 슈나이어, 타다요시 쿄노
  • 옮긴이구형준, 김진국, 김경신
  • ISBN : 9788960771970
  • 30,000원
  • 2011년 04월 29일 펴냄
  • 페이퍼백 | 448쪽 | 188*245mm
  • 시리즈 : 해킹과 보안

책 소개

암호학의 이론적 배경에 기반을 두고 동작 원리를 설명한다. 또한 실무에서 암호학을 어떻게 적용할 수 있는지에 초점을 맞춘 실전 암호학 가이드다. 보안 실무자와 실제 암호를 구현하는 개발자 모두를 위한 필수 지침서로서, 단순 이론을 배우는 데 그치지 않고 실용적 측면에서 암호학을 이해할 수 있는 최고의 암호학 서적이다.


[ 소개 ]

실세계에서 작동하는 암호 프로토콜 설계 방식을 알려준다.

카메라의 동작 방식을 안다고 해서 좋은 사진가가 되지는 않는다. 암호 설계가 무엇인지 암호 프로토콜이 어떻게 작동하는지 안다고 해서 암호를 잘 이용하는 것 또한 아니다. 무엇보다도, 암호학자처럼 생각해야만 한다. 이 책의 내용이 바로 그것이다. 암호 프로토콜을 세부적으로 깊숙한 부분까지 다루며, 어려운 부분을 인지하고 극복하는 법을 알려주는 이 책은 학교 교재나 독학용으로 모두 적합하며, 실세계 시스템에서 암호를 효율적으로 사용할 수 있게 인도한다.


[ 이 책에서 다루는 내용 ]

● 암호 프로토콜 설계의 이해
● 사람, 경제학, 하드웨어, 소프트웨어, 윤리, 정책 등 주변 시스템과 암호학 간의 상호작용 이해
● 주변 시스템 내에서 약점을 찾기 위한 보안 프로토콜
● 공격자의 사고 방식을 간파한 공격 방어
● 신규 보안 솔루션 내 암호 설계 구현 방법 습득

저자/역자 소개

[ 저자 서문 ]

대부분의 서적은 암호화가 무엇인지, 암호학적 설계의 발전 방향이나 SSL/TLS 같은 기존 암호화 프로토콜의 방법을 다룬다. 브루스 슈나이어(Bruce Schneier)가 집필했던 『Applied Cryptography』도 그랬다. 이런 책은 암호 분야에 종사하는 사람들에게 귀중한 참고 자료가 된다. 그러나 안타깝게도 실제 암호 기술자나 보안 기술자에게는 큰 도움이 되지 못하며, 보안 실무자들에게는 암호 프로토콜의 동작 원리보다 사용 방법을 알려줄 필요가 있다.

우선 암호 사용 방법을 암호학자처럼 생각해야만 한다. 이 책은 이런 목표를 이루는 데 도움을 주기 위해 작성했으므로 집중해서 읽기 바란다. 암호학에서 사용하는 다양한 프로토콜보다 특정 프로토콜의 설계와 분석을 세밀하게 살펴볼 것이다. 또한 암호 프로토콜을 설계해가는 방법을 함께 차근히 알아본다. 여러 사람과 함께 특정한 설계를 결정한 이유를 공유하고, 그에 따른 잠재적인 문제점을 지적한다.

암호학자처럼 생각해봄으로써 암호화 기법을 좀 더 현명하게 사용하는 방법을 배운다. 기존 암호 도구들을 살펴보고 핵심 기능을 이해하고 사용 방법을 익히게 된다. 그리고 암호와 관련된 문제점을 이해하고 잘 극복해나갈 수 있을 것이다.

또한 이 책은 컴퓨터 보안을 학습하는 데 관문 역할을 할 것이다. 컴퓨터 보안은 여러모로 암호의 상위 집합이다. 컴퓨터 보안과 암호는 모두 공격자가 있을 경우 특정 방식으로 행동하는 개체(시스템 또는 알고리즘)들을 설계하고 평가하는 것이다. 이 책은 암호학의 맥락에서 공격자에 대해 생각하는 방법을 알려준다.


[ 저자 소개 ]

닐스 퍼거슨 (Niels Ferguson)
암호 공학자로 평생을 바쳤다. 아인트호벤 대학에서 수학을 공부한 후 디지캐쉬(DigiCash)에서 사용자의 프라이버시 보호를 위해 전자 결제 시스템을 분석, 설계, 구현하는 일을 했으며, 이후 카운터페인(Counterpane)과 맥퍼거스(MacFergus)에서 암호 컨설턴트로 일하면서 수백 개의 시스템을 분석, 설계했다. 투피쉬(Twofish) 블록 암호 설계 팀의 일원으로 AES에 대한 가장 좋은 초기 분석을 선보였으며, 현재 와이파이(WiFi)에 사용되는 암호 시스템을 공동 설계했다. 2004년부터 마이크로소프트에서 비트로커BitLocker 디스크 암호화 시스템 설계와 구현을 도왔으며, 현재는 윈도우 운영체제와 기타 마이크로소프트 제품의 암호 구현을 책임지는 윈도우 암호 팀에 근무 중이다.

브루스 슈나이어 (Bruce Schneier)
국제적으로 저명한 보안 전문가로「더 이코노미스트」지에 의해 ‘보안 구루(security guru)’라는 별칭을 얻기도 했다. 그는 베스트셀러인 『Beyond Fear: Thinking Sensibly about Security in an Uncertain World, Secrets and Lies, and Applied Cryptography』 등 8권의 책을 집필했으며, 100여 편의 논문과 에세이를 국내와 국제 간행물에 게재했고, 그보다 더 많은 수의 논문을 발표했다. 그의 소식지 ‘Crypto-Gram’과 블로그 ‘Schneier on Security’는 25만 명이 넘는 사람들이 구독할 만큼 영향력이 있고, TV와 라디오에 초대 손님으로 자주 등장해 보안과 프라이버시 관련 이슈를 보도할 때 자주 인용된다. 또한 의회에서 몇 차례의 법정 증언을 하기도 했으며, 정부 기술위원회에서도 활동했다. 현재는 BT의 최고 보안 기술자CSO다.

타다요시 쿄노 (Tadayoshi Kohno)
위싱턴대학 컴퓨터과학과 조교수로 재직 중이며, 현 시대의 보안과 프라이버시의 향상, 미래의 기술에 관심이 많다. 2003년, Diebold AccuVote-TS 전자투표 기기 소스코드의 초기 분석을 수행했으며, 그 후 이식 가능한 무선 심박조절기와 제세동기에서부터 클라우드 컴퓨팅 등 최신 보안 기술에도 눈을 돌려 연구를 진행 중이다. 국가과학재단(National Science Foundation)의 CAREER Award와 Alfred P. Sloan Research Fellowship을 수상한 바 있으며, 응용암호학에서의 공로를 인정받아 2007년에는 세계 35세 이하의 최고 혁신가들에게 수여하는 상인 MIT Technology Review TR-35 Award를 수상했다. 샌디에고의 캘리포니아대학에서 컴퓨터과학으로 박사학위를 받았으며, 공저자인 닐스, 브루스와 함께 NIST의 SHA-3 대회에서 경쟁력 있는 해시 중 하나인 Skein 해시를 설계했다.


[ 옮긴이의 말 ]

정보통신 기술이 고도로 발전하면서 점차 IT가 융합되고 대부분 산업 분야에 복합적인 정보통신 기술이 활용되는 추세다. 이와 비례해 정보보호의 중요성은 점차 커지고 IT에 종사하는 전문가는 물론 인증서 등 디지털 데이터로서 개인 정보를 다루는 일반인들에 이르기까지 정보보호에 관심이 많다.

정보보호는 이제 정보통신 기술뿐만 아니라 정보통신과 타 산업 간의 융합 기술에 이르기까지 IT를 활용한 모든 곳에서 중요한 위치를 차지한다. 신문과 뉴스 등 대중 매체에서 디도스(DDoS), 악성 코드 같은 보안 용어를 어렵지 않게 접할 수 있음은 정보보호의 위상이 점차 높아지는 증거라고 봐도 무방할 것이다.

이 책 『실용 암호학』은 원서의 제목인 『Cryptography Engineering』에서 알 수 있듯 암호 전반에 관해 단순 이론가의 입장보다는 공학자의 입장에서 알기 쉽게 다룬다.

지금까지 암호학을 다룬 많은 서적이 암호학의 역사적 흐름과 이론적 배경을 중심으로 전개했다면, 이 책은 현재 사용하는 실용 암호에 직접 접근하는 방식을 택했다. 설명 방식 역시 이론적 배경만을 심도 있게 파헤치기보다는 실제 암호 시스템이 어떻게 동작하는지를 알려주는 데 초점을 맞췄기 때문에 수학적 배경 지식이나 암호 이론에 지식이 깊지 않은 독자라도 어렵지 않게 이해할 수 있다. 이론을 깊게 공부하고자 하는 독자에게는 암호 시스템의 전체적인 구성을 살피는 데 도움이 될 것이고, 암호에 대해 실무적으로 접근하고자 하는 독자에게는 이론과 응용을 균형 있게 익히는 데 도움을 줄 수 있을 것이다.


[ 옮긴이 소개 ]

구형준
고려대학교 정보보호대학원에서 디지털 포렌식을 전공했고, EnCE, CHFI 자격을 보유하고 있다. 현재 삼성 SDS 보안기술 부서에서 근무 중이며, 네트워크 보안, 시스템 보안, 웹 애플리케이션 보안, 보안 제품 평가 등 다년간 여러 보안 관련 업무를 담당했다. 최근 많은 이슈가 되고 있는 내부자 위협, 포렌식, 암호학, 악성 코드 등 분야에 관심이 많다.

김진국
고려대학교 정보보호대학원에서 디지털 포렌식을 전공했다. 다수의 암호 관련 프로젝트를 수행했으며, EnCE 자격증을 보유하고 있다. 현재 다양한 기관에서 디지털 포렌식과 모의 해킹에 대해 강의를 진행하며, 국내 디지털 포렌식 커뮤니티인 ‘forensic-proof(http://forensic-proof.com)’를 운영 중이다.

김경신
고려대학교 정보보호대학원에서 암호 프로토콜을 전공했다. 스마트폰 관련 보안 기술, 위험 관리 관련 프로젝트를 진행했으며, 특히 개인정보 보호, 암호, 인증 분야에 관심이 많다. 현재 한국방송통신전파진흥원 정보보호 PM실에서 근무 중이다.

목차

목차
  • 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부 메시지 보안
  • 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 연습문제
  • 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 연습문제
  • 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 연습문제
  • 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 연습문제
  • 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 연습문제
  • 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 연습문제
  • 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 특허

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안

정오표

정오표

[p.219 : 아래서 10행]
모슨 소수들을
->
모든 소수들을