▶ 대상 독자층
현재 우리나라의 네트워크 보안수준은 현저히 낮은 상태이다. 나날이 고도화된 해킹기법과 네트워크의 취약성 문제에 있어 보안은 이제 빠질래야 빠질 수 없는 한 분야로 자리를 잡아가고 있다. 이제 시스템 관리자 뿐만 아니라 개발자도 보안에 신경 쓰지 않고 프로그래밍을 할 수 없는 예민한 상태이다. 이런 측면에서 이 책은 보안 관계자 뿐만 아니라 자바 개발자에게는 프로그래밍을 하는 데 있어 바른길을 인도해주는 책이 아닐까 한다. 물론 보안쪽 애플리케이션 뿐만 아니라 네트워크쪽으로 개발하는 사람이 필히 정독해야 할 도서인 것은 분명하다. 자바에 대해서는 아는데 자바보안에 대해서는 기초지식이 없거나, 보안에 대해 조금 알고 있는 사람도 이 책을 봄으로써 개발자가 나가야 할 방향과 기본적인 자바 보안 프로그래밍에 대해 자바다운 보안 프로그래밍 기법을 터득할 수 있을 것이다.
▶ 이 책의 주요내용과 구성
1장은 자바보안이란 무엇인가와 간략한 자바보안 모델에 대해 설명하고 있다.
2장은 기본 샌드박스와 자바보안 규칙에 대해서 개념을 설명하고 있으며, 3장부터는 샌드박스의 구현과 자바가 보안을 유지하는 방법, 자바보안 구성, 자바 언어 규칙, 메모리 사용에 대한 보호와 바이트코드 확인기에 대해 설명하고 있다.
4장은 보안 관리자와 자바 API, 파일 접근 관련 메소드, 네트워크 접근 메소드 등에 대해 나와 있으며, 5장은 시스템에서 중요한 자원을 보호해주는 접근제어 클래스에 대해 상세히 다루고 있어 매우 유용하게 쓰일 것이다.
6장은 자바 클래스 로더에 대해 단계적으로 자세히 설명되어 있어 클래스 로더에 대한 개념을 바로 잡을 수 있을 것이며, 서명한 클래스를 인식하고, 서명을 검증한 다음에 보안 관리자를 이용하여 추가 권한을 부여하는 클래스 로더를 작성하는 방법을 설명하고 있다.
7장부터 개발에 필요한 인증, 메시지 다이제스트, 전자 서명, 키, 암호에 대해 나오기 시작한다. 그래서 7장은 암호에 대한 개요를 설명하고, 8장은 보안 패키지와 엔진들을 서로 연동시켜 주는 보안 프로바이더에 대해 설명하며, 개발자가 보안 엔진과 알고리즘에 대해 무엇을 선택할 것인가 제시하고 있다.
9장은 전자 서명과 암호화에 필요한 키와 인증서에 대해 살펴보며, 공개키 기반의 비대칭키와 그 반대인 대칭키에 대해서도 설명하고 있다. 10장은 9장의 키에 대한 설명을 토대로 키에 대한 용어, 키툴, 키 관리 및 예제를 보여주고 있으며, 키에 대한 배포방식도 설명되어 있다..
11장은 보안 구조에서 중요한 전자 서명을 생성하고 검증하는 첫 단계인 메시지 다이제스트에 대해 설명하고 있고, 12장은 전자 서명에 대한 내용으로 전자 서명 된 클래스를 다루는 방법과 엔진 알고리즘을 구현하는 방법에 대해 나와 있다.
13장은 데이터를 암호화하고 복호화하는 방법을 설명하며, 14장에서는 네트워크에서 중요한 암호화 통신인 SSL과 JSSE(자바 안전 소켓 확장)을 이용하여 암호화하고 SSL을 사용하기 위한 HTTPS 프로토콜에 대해서 다루고 있다.
15장은 인증과 권한 허용여부와 보호에 대해서 설명하며, 자바 인증과 권한부여 서비스인 JAAS에 대해 프로그래밍 기법과 예제를 다루고 있다.
마지막으로 부록에서는 java.security 파일, 보안자원(버그), 신원기반 키 관리, 안전한 자바 컨테이너, JCE 보안 프로바이더 구현, 자바 보안 패키지와 클래스들의 API, 그리고 JCE 보안 프로바이더 활용 예제가 나와 있어 실전 프로그래밍을 하는 데 매우 유용할 것이다.
▶ 내용 평가
이 책은 자바보안 규칙에 대해 알기 쉽고 자세하게 설명하고 있어 보안에 대한 기본지식이 없는 자바 개발자에게는 훌륭한 보안 지침서가 될 것이며, 자바에서 보안에 최고로 취약한 애플릿에 대해 강조하고 또 강조하고 있다. 구성 또한 자바 언어 보안에서부터 자바보안 패키지에서 사용하는 암호화의 기본 알고리즘에 대한 프로바이더까지 설명하고 있다.
요즘 전자상거래에서 중요시 하고 있는 전자서명과 인증에 대해서도 다루고 있으며, 데이터를 암호화하고 복호화하는 방법과 자바 암호화 확장(JCE)에 대해서도 설명하고 있다. 그리고 네트워크에서의 중요한 암호화 통신인 SSL에 대해서도 놓치지 않고 있으며, 부록으로 표준 JCE 보안 프로바이더를 구현할 수 있는 기본적인 구현 알고리즘에 대해 살펴보고 있어 개발자에게는 크나큰 도움이 될 것이다. 또한 자바 보안 표준 API와 클래스를 찾아볼 수 있도록 해놓았다. 항상 개발자들이 주의해야 할 버그에 대한 설명이 있어 프로그래밍하는 데 참고로 쓰일 수 있을 것이다. 또한 JCE 보안 프로바이더 활용예제가 부록으로 첨가되어 있어 실전 프로그래밍하는 데 많은 도움이 될 것이다. 전체적으로 내용 및 구성이 주제단위로 짜임새 있게 구성되어 있어 독자가 쉽게 이해하고 찾아 보는 데 유용할 것이다.
▶ 번역 및 편집 상태
항상 외국서적의 문제점은 우리말 문장으로 독자들을 얼마나 쉽게 이해시키냐가 중요한 관건인데, 그러한 면에서 번역 또한 다른 책에 비해 대체적으로 매끄러운 편이어서 독자들이 읽어나가기에 별 무리가 없을 뿐더러, 편집상태 또한 기존에 나와 있는 책보다 깔끔하게 처리되어 있다. 이해를 돕기 위한 굵은 글씨 처리법은 찾고자하는 부분이 한눈에 들어오도록 가독성을 높이고 있다.
모든 설명이 RFC 문서를 토대로 하기 때문에 기술 또한 정확하게 풀이하고 있어 자바에 대한 매력을 한층 더 느낄 수 있을 것이다.
▶ 검토 의견
이 책은 전반적으로 자바보안에 대한 기초지식과 기본적인 프로그래밍 기법에 대한 흐름을 간략하게 설명하고 있다. 그렇기 때문에 실전 프로그래밍을 하기에는 약간 부족한 면이 있으므로 더 자세한 것을 알고 싶거나 공부하고 싶다면
『자바보안과 암호화』를 추천한다. 『자바 보안과 암호화』는 이 책, 『자바 시큐리티 프로그래밍』을 뒷받침 하는 암호화와 보안에 대한 내용을 상세히 다루고 있어 자바 보안 관련자에게는 많은 도움이 될 것이다.
끝으로 현실세계에서 완벽한 보안은 없다. 암호학의 대가인 브루스 슈나이어는 이렇게 말했다. “보안은 하나의 과정이다.” 이처럼 보안적인 측면은 매우 예민하면서 까다로운 것이다. 앞으로 많은 개발자들이 스스로 버그와 취약점에 발 빠르게 대처해야만 크랙과 해킹에 대해 보완하고 발전할 수 있을 것이다.
정해윤(
o2man@joeunsecurity.com)님은 보안업체 "조은 시큐리티"에서 침입탐지 시스템을 개발하는 전문 개발자로 『해킹과 보안 내가 최고』(2000, 영진.com)라는 보안 도서의 저자이기도 하십니다.