모두를 위한 소프트웨어 보안 설계와 구현 (취약점 분석부터 위협 모델링과 완화 전략, 보안 패턴, 암호화까지 안전한 소프트웨어의 모든 것)

모두를 위한 소프트웨어 보안 설계와 구현 (취약점 분석부터 위협 모델링과 완화 전략, 보안 패턴, 암호화까지 안전한 소프트웨어의 모든 것)

$32.43
Description
소프트웨어 개발에 종사하는 모든 엔지니어가 읽어야 할 보안 실천 가이드!
MS와 구글에서 현대 보안 기술을 선도하고 디지털 인증서를 창시한 저자의 20년노하우!
공개 키 인증서 개념을 최초로 만들고 마이크로소프트에서 위협 모델링 STRIDE 개념을 창안한 현대 보안 기술의 선구자인 로렌 콘펠더가 집대성한 책!
저자 로렌 콘펠더가 20여 년 동안 보안 업계에서 겪은 경험을 간결하고 세련되게 집약한 소프트웨어 보안 가이드로서, 소프트웨어 아키텍트, 디자이너, 개발자, IT 관리자를 비롯한 광범위한 소프트웨어 전문가를 위한 책이다. 저자는 소프트웨어 설계 초기부터 보안을 내재화하고 전체 팀이 함께 프로세스에 참여할 것을 강조한다.
핵심 보안 개념인 신뢰, 위협, 완화, 보안 설계 패턴, 암호화를 설명하며 1부를 시작한다. 2부에서는 보안을 염두에 두고 소프트웨어를 설계하고 검토하는 과정을 다룬다. 마지막 3부에서는 C와 파이썬으로 작성된 다양한 코드 예제를 활용해 취약점이 만들어지는 코딩 결함에 대해 자세하게 살펴본다.
소프트웨어의 미래에 대한 현대적이고 실용적인 모범사례, 통찰, 아이디어가 담겨 있으므로, IT 분야에 종사하는 누구나 읽어야 하는 필독서다.

| 이 책에서 다루는 내용 |
- 시스템에서 중요한 자산, 공격 표면, 신뢰 경계 식별
- 다양한 위협 완화 조치에 대한 효과 평가
- 잘 알려진 완화 조치와 보안 설계 패턴을 통한 작업
- 크로스 사이트 스크립팅과 크로스 사이트 요청 위조, 메모리 결함 등의 취약점
- 보안 테스팅을 이용한 코드 취약점의 사전 식별
- 보안 결함을 찾기 위한 소프트웨어 설계의 객관적 평가

| 이 책의 대상 독자 |
- 보안에 초보인 사람들, 특히 보안을 어렵다고 느끼는 사람들
- 보안에 관심이 있지만 지식은 많지 않은, 보안에 대한 인식이 있는 독자들
- 보안 분야를 주도하는 보안 전문가들
저자

로렌콘펠더

저자:로렌콘펠더(LorenKohnfelder)
50여년전에프로그래밍을시작했다.MIT학부생시절졸업논문으로제출한「실용적인공개키암호화시스템을향해(TowardsaPracticalPublic-KeyCryptosystem)」는사상처음으로디지털인증서와공개키인프라(PKI)의기초를설명한논문이었다.
펀치카드,디스크컨트롤러작성,링킹로더,비디오게임,2차례의일본근무부터반도체연구소의장비제어소프트웨어에이르기까지다방면의프로그래밍작업을아우르는소프트웨어경력을자랑한다.마이크로소프트에재직할당시인터넷익스플로러(IE)팀의보안업무로복귀했으며,이후닷넷(.NET)플랫폼보안팀에서업계최초의사전예방적보안프로세스방법론에기여한바있다.
최근에는구글에서보안팀소프트웨어엔지니어로일했으며,개인정보보호팀의창립멤버로서대규모상용시스템에대한보안설계리뷰를100회이상수행했다.

역자:김영기
삼성전자네트워크사업부SE그룹에서소프트웨어개발과관련한다양한업무를수행하고있다.주요이력으로는지능망(IN)과모바일자바애플리케이션개발,정적분석과소프트웨어구조분석등이있다.현재는형상관리와SW개발전략을담당하고있으며소프트웨어개발과관련조직구조와개발문화,애자일과데브옵스,인프라자동화,데이터사이언스등에관심이많다.보안과관련해5G통신장비보안인증인NESAS인증을위한사업부TF멤버로도활동했다.『프로메테우스,오픈소스모니터링시스템』(책만,2019),『만들면서배우는헥사고날아키텍처설계와구현』(위키북스,2022)등을번역하며기술번역가로도활동하고있다.

역자:박기성
IT업계와게임업계에서기획자,설계자,PD,개발총괄임원,창업자,대표이사로서오랜기간활동하며다양한프로젝트를수행했다.SK㈜를거쳐,직접창업하고대표이사를맡았던엔플레이등에서근무했으며,가장최근에는게임빌,컴투스의개발담당임원으로일했다.
게임외에도IT업계에대한다양한관심을바탕으로경력중간틈틈이(때로는필명으로활약하며)20여권에달하는게임및IT분야도서를번역해왔다.대표번역서로는『알고리즘으로세상을지배하라』(이하에이콘출판,2016),『닌텐도는어떻게세계를정복했는가』(2015)가있으며『인더플렉스:0과1로세상을바꾸는구글』(2012)을번역감수했다.

목차


1부l안전한소프트웨어를위한기본개념

1장보안의기초
보안에대한이해
신뢰
__신뢰감
__비트는눈에보이지않는다
__능숙함과불완전성
__신뢰는스펙트럼이다
__신뢰결정
__암묵적으로신뢰할수있는컴포넌트
__제품신뢰도높이기
고전적인원칙
__정보보안의C-I-A원칙
__황금표준
__개인정보보호

2장위협모델링
적대적인관점
4가지질문
위협모델링
__모델기반작업
__자산식별
__공격표면식별
__신뢰경계식별
__위협식별
__위협완화
개인정보보호고려사항
어디에나존재하는위협모델링

3장보안위협의완화
위협처리
구조적완화전략
__공격표면최소화
__좁은취약점창
__데이터노출최소화
접근정책과접근제어
인터페이스
통신
스토리지

4장보안설계패턴
설계속성
__설계의경제성패턴
__투명한설계
노출최소화
__최소권한
__최소정보
__안전이기본
__차단목록보다허용목록
__예측가능성방지
__안전한실패
강력한집행
__완전한중재
__최소공통메커니즘
중복성
__심층방어
__권한분리
신뢰와책임
__신뢰에대한저항
__보안책임수용
안티패턴
__혼동된대리인
__신뢰의역류
__서드파티훅
__패치불가능한컴포넌트

5장보안을위한암호화기법
암호화도구
난수
__의사난수
__암호학적으로안전한의사난수
메시지인증코드
__변조방지를위한메시지인증코드사용
__재전송공격
__안전한MAC통신
대칭암호화
__일회용패드
__고급암호화표준
대칭암호화사용
비대칭암호화
__RSA암호체계
디지털서명
디지털인증서
키교환
암호화사용

2부l안전한소프트웨어설계

6장보안설계원칙
설계에보안통합
__설계가정의명시화
__범위정의
__보안요구사항설정
__위협모델링
완화의구현
__인터페이스설계
__데이터처리설계
소프트웨어설계에개인정보보호통합
전체소프트웨어수명주기계획
트레이드오프처리
설계단순성

7장보안설계리뷰
보안설계리뷰의실행계획
__수행목적
__수행시기
__문서화는필수적이다
보안설계리뷰프로세스
__검토
__질문
__식별
__협력
__작성
__후속조치
설계보안평가
__4가지질문을지침으로사용하라
__좀더파고들어본다면
__개인정보보호리뷰
__업데이트리뷰
이견관리
__재치있게소통하라
__사례연구:어려운리뷰
__의견불일치의조정
실습,실습,실습

3부l보안구현

8장안전한프로그래밍
안전한프로그래밍이어려운이유
__악의적인영향
__취약점은버그다
__취약점체인
__버그와엔트로피
__경계심
사례연구:gotofail취약점
__코드한줄의취약점
__풋건을조심하라
__gotofail의교훈
코딩취약점
__원자성
__시차공격
__직렬화
유력한용의자

9장로우레벨코딩의취약점사례
산술적취약점
__고정너비정수취약점
__부동소수점정밀도취약점
__예제:부동소수점언더플로
__예제:정수오버플로
__안전한연산
메모리접근취약점
__메모리관리
__버퍼오버플로
__예제:메모리할당취약점
__사례연구:하트블리드보안대참사

10장신뢰할수없는입력의보안위협
입력유효성검사
__유효성결정
__검사기준
__잘못된입력거부
__잘못된입력수정
문자열취약점
__문자열길이문제
__유니코드문제
인젝션취약점
__SQL인젝션
__경로탐색
__정규표현식
__XML의위험성
인젝션공격의완화조치

11장웹보안
프레임워크기반구축
웹보안모델
__HTTP프로토콜
__디지털인증서와HTTPS
__동일출처정책
__웹쿠키
일반적인웹취약점
__크로스사이트스크립팅(XSS)
__크로스사이트요청위조(CSRF)
기타취약점과완화방법

12장보안테스팅
보안테스팅이란무엇인가
gotofail취약점에대한보안테스팅
__기능테스트
__취약점을갖는기능테스팅
__보안테스트케이스
__보안테스팅의한계
보안테스트케이스작성
__입력유효성검사테스팅
__XSS취약점테스트
퍼즈테스팅
보안회귀테스트
가용성테스팅
__리소스소비
__임계치테스트
__분산서비스거부공격(디도스공격)
보안테스팅모범사례
__테스트주도개발
__통합테스팅활용
__보안테스팅따라잡기

13장안전한개발모범사례
코드품질
__코드관리습관
__예외및오류처리
__보안문서화
__보안코드리뷰
의존성
__보안컴포넌트선택
__인터페이스보안
__보안도구를재발명하지말라
__레거시보안과의경쟁
취약점분류
__DREAD평가
__작동하는공격코드제작
__분류결정
안전한개발환경유지
__운영환경과개발환경의분리
__개발도구보안
__제품출시

14장끝나지않는보안의여정
실천하고행동할것
__보안은모두의일이다
__보안의내재화
보안의미래
__소프트웨어품질향상
__복잡성관리
__투명성최소화에서최대화로
__소프트웨어의진본성,신뢰,책임감개선
라스트마일:마지막한걸음완수
마치며

부록A소프트웨어설계문서샘플
부록B용어집
부록C생각해볼문제
부록D핵심요약자료

출판사 서평

[이책에서다루는내용]
이책은14개장으로구성돼있으며,전체내용은개념,설계,구현을다루는3개부로나뉘어있다.
[1부,안전한소프트웨어를위한기본개념]
1부에서는이책에대한개념적기반을제공한다.1장‘보안의기초’는정보보안과개인정보보호기본사항을개괄한다.2장‘위협모델링’에서는위협모델링을소개하고공격표면과신뢰경계에대한핵심개념을자산보호맥락에서구체화한다.이어지는3개장은안전한소프트웨어를구축하기위해독자들이이용할수있는귀중한도구들을소개한다.3장‘보안위협의완화’에서는식별된위협을방어적으로완화하기위해일반적으로사용되는전략을설명하고,4장‘보안설계패턴’에서는여러가지효과적인보안설계패턴을제시하고피해야할안티패턴몇가지를살펴본다.5장‘암호화기법’에서는일반적인위험을완화하기위해표준암호라이브러리를사용하는방법을설명하는복합적기법을다루되,기반이되는수학까지는다루지않는다(실제로거의필요하지않기도하다).

[2부,안전한소프트웨어설계]
2부에서는가장독특하면서도이책의대상독자들에게가장도움이될만한내용을다룬다.6장‘보안설계원칙’과7장‘보안설계리뷰’에서는안전한소프트웨어설계와이를달성하기위한실제기법에대한가이드를제공하며,각각설계자와리뷰어관점에서주제에접근한다.이를통해소프트웨어설계초기부터보안을내재화하는것이왜중요한지도설명한다.
2부에서는1부에서살펴본아이디어를보안설계에통합시키기위한구체적인방법론을알아본다.리뷰방법론은나의업계경험에바탕을둔것으로,여러분의작업에적용할수있는단계별프로세스도다룬다.이런아이디어를실행에옮기는방법의예로서부록A의샘플설계문서를함께살펴보자.

[3부,보안구현]
8장에서14장까지는구현단계에서의보안을다루며배포,운영,수명종료단계를살펴본다.안전한설계이후의단계로서,이책의3부에서는취약점의추가적인발생을방지하면서소프트웨어를개발하는방법을알아본다.3부의각장에는코드가포함되어있으며,취약점이코드에침투하는방식과취약점을방지하는방법을설명한다.
8장‘안전한프로그래밍’에서는프로그래머가직면하게될보안문제와실제취약점이코드에서는어떻게보이는지를소개한다.9장‘로우레벨코딩의취약점사례’에서는컴퓨터산술의약점과동적메모리할당에대한C언어스타일의명시적인관리가보안을어떻게훼손하는지를다룬다.10장‘신뢰할수없는입력의보안위협’과11장‘웹보안’에서는오랫동안잘알려져있지만,여전히해결되지않은다양하고도일상적인버그(인젝션공격,경로탐색,XSS,CSRF취약점등)를다룬다.12장‘보안테스팅’에서는제대로활용되고있지는않지만,코드안전성을보장해줄수있는테스트기법들을다룬다.13장‘안전한개발모범사례’는몇가지모범사례와흔히빠지기쉬운함정을다룸으로써안전한구현가이드를마무리한다.
3부에서다루는코드부는일반적으로피해야하는취약점을보여준후,뒤이어이코드를안전하게만드는방법을보여주는패치버전을제시한다(각각‘취약한코드’와‘수정된코드’로표시된다).따라서이책에있는코드는운영환경의소프트웨어에바로복사해서사용하라고만든것이아니다.심지어수정된코드라도환경이달라지면다른문제가생겨취약점이생길수있기때문에,이책에제시된코드가모든애플리케이션에서안전하다고생각해서는안된다.
마지막으로,14장‘끝나지않는보안의여정’에서는이책이긍정적인영향을미치게될것으로기대하는몇가지방안에대해설명한다.이책에서다뤄진핵심포인트를요약하고미래까지전망해본다.아울러,이책이어떤식으로소프트웨어보안향상에기여할수있는지그비전을설명하는것으로시작해서,소프트웨어보안을점진적으로개선하는데도움이될만한실험적인아이디어까지이야기한다.

[부록]
부록A는실제보안을고려한설계를보여주는샘플설계문서다.부록B는이책전반에걸쳐쓰인소프트웨어보안용어를정리한용어집이다.부록C에는의욕적인독자들이기꺼이연구해볼만한개방형연습문제와질문몇가지가들어있다.부록D는핵심개념과과정을요약한자료모음이다.