"원리부터 파헤치는 "hack-proof" 프로그래밍 기법!"
현재 개발하고 있는 응용 프로그램의 보안 취약점을 제거하고 안전하게 실행될 수 있도록 하려면 어떻게 코드를 작성해야 할까? 복잡한 웹/네트워크 환경에서 기업, 고객의 중요한 데이터를 안전하게 전송하려면 개발자는 어떤 암호화 알고리즘을 활용해야 하는가?
이 책은 응용 프로그램이 안전하게 실행될 수 있도록 개발자가 사전에 방지할 수 있는 프로그래밍 기법을 전달하고 있으며, 이해하기도 힘든 복잡한 암호화 알고리즘을 이론적으로 설명하지 않고 보안 라이브러리의 사용 방법을 핵심 원리와 예제 중심으로 전달하고 있다. 마지막 3부에서는 개발 단계마다 점검해야 하는 프로그래밍 고려 사항을 정리하여 개발 초기 단계부터 안전한 프로그램을 개발할 수 있도록 안내하고 있다.
유닉스/리눅스 환경에서 실행되는 응용 프로그램의 보안성 강화 기법을 설명하고 있지만, 원리 이해라는 측면에서 윈도우 기반의 프로그래머도 참고할 수 있을 것이다.
이 책의 주요 내용
- 버퍼 오버플로우 발생 - 안전한 입출력 함수의 사용과 메모리 버퍼 관리
- 상위 레벨의 권한 취득 - 프로세스 생성, 동작, 소멸 과정 및 사용자 프로세스 권한 통제
- 파일과 디렉토리 조작 - 파일시스템의 사용 권한 설정 및 사용자별 허가 용량 할당
- 로컬 서비스 거부 공격 - 시스템 자원의 통제 및 운영 과정에서 생성되는 파일 관리
- 프로그램의 오동작 - 환경 변수 조작 방지와 안전한 설정, 관리
- 개발 단계별 주의 사항 - 기능 단위의 모듈화 프로그래밍
- 적합한 사용자 인증 - 비밀 번호와 OTP를 이용한 인증 모듈 적용
- 데이터의 비밀성 보장 - OpenSSL 라이브러리를 이용한 암호화 프로그래밍
- 공인 인증서 발급 - 공개 키 알고리즘을 이용한 RSA 키 생성
- 데이터의 무결성 보장 - MD5 알고리즘을 이용한 해시 생성
- 안전한 데이터 전송 통로 - 암호화 통신 채널, SSL 세션
추천평(미디어서평)
IT 비지니스에 있어서 보안은 이제 선택이 아닌 필수가 되었다. 지금까지 보안에 대한 개념과 주된 논의는 O/S 보안과 네트워크 보안이 대부분이었다. 이 책은 지금까지의 피상적인 보안 모델과 개념을 다루는 것이 아니라 개발자 입장에서 그리고 실제 코드에서 다루어야 할 보안 주제를 완벽하게 다루고 있다. 개발자로서 그리고 현업에서 종사하면서 보안에 대한 좀더 깊은 고려를 하고 좀더 완벽한 코드를 만들어내고 싶다면 주저없이 이 책을 권하고 싶다. - 강경완(하이텔 유닉스 동호회 대표시삽 , Xpert 리눅스 전문가)
최근 정보화 환경은 C/S에서 웹으로의 급속한 전환, 유무선 통합이 가속화되고 있으며, 사회 전반에 정보 시스템에 대한 의존도가 높아지고 있다. 이에 따라서 정보 시스템에 발생하는 각종 재해로 인하여 업무적, 경제적으로 막대한 손실이 발생하고 있으며, 과거와는 다르게 사회 전반에 파급 효과가 커지고 있다. 정보 시스템에 발생하는 각종 재해를 원천적으로 방지하기 위해서는 정보 시스템의 취약성에 위험 분석과 대책의 마련이 필수적이며, 이는 정보 보안에 대한 체계적인 이해와 함께, 실무의 개발에서 효과적으로 적용이 가능해야 할 것이다.
현재 이론 중심 또는 해킹 기법 중심의 보안 서적은 많이 나왔으나, 실제 개발자 입장에서 이를 적용하는 방법을 다루는 데는 많은 한계가 있었다. 이러한 면에서 본 도서는 정보 보안에 대한 체계적인 지식 습득뿐만 아니라 개발자 입장에서 보안 솔루션의 개발과 보안 대책을 수립하는 데 좋은 지침서가 될 수 있을 것이라 판단한다. - 박준우(정보 관리 기술사/정보 시스템 감리사, 법원 행정처 정보화담당관실/데이터센터 전산계장)
대부분의 개발자는 오늘도 지친 눈을 비벼가며 무수한 소프트웨어를 개발하고 있을 것이다. 몇몇은 그들의 소프트웨어에 만족할 것이고, 몇몇은 어떻게 하면 더 안정적이고 우수한 소프트웨어를 만들까 고민하고 있을 것이다. 안전하고 보안성이 강화된 소프트웨어를 만드는 것 또한 이들의 고민 중 하나가 될 것이다. 이 책에서는 보안과 관련된 주제에 대해서 개발자가 현장에서 바로 적용할 수 있는 프로그래밍 기법에 관하여 설명하고 있다. 평소 보안 프로그래밍에 관심이 있는 사람이라면 한번 읽어볼만한 주제들을 다루고 있다. - 장기현(한양대학교 정보통신대학원 미디어 통신공학 석사과정)