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

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

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

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

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

로렌콘펠더

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

목차

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는핵심개념과과정을요약한자료모음이다.


■[옮긴이의말]
보안이란주제는다소딱딱하고어려운느낌을풍깁니다.난해한개념과어려운수학등이어우러져전문가의영역이라간주되며,모두가관심은많지만접근하기어려운영역이라여겨집니다.그러나이책은전문보안서적과는다른재미를주는책입니다.이책은보안엔지니어링에대한입문서로보안의기본개념들과소프트웨어개발에서의다양한보안사례를풍부하게다룹니다.그간보안을주제로한책들은적지않게출간됐지만보안전문가와소프트웨어개발자모두를대상으로한경우는드물었다고생각합니다.
네트워크보안과암호학분야의중요인물로공개키인프라(PKI)개념을제안하고,프레리트가그(PraeritGarg)와함께위협모델링분야의걸출한업적인STRIDE모델을개발한저자로렌콘펠더는현대적인소프트웨어개발에서보안이매우중요한요소라이야기합니다.콘펠더는이책에서소프트웨어개발자와보안전문가가소프트웨어를설계하고개발할때보안을고려하는방법에대해개념수준부터실사례까지전반적으로가이드해줍니다.어려운개념을나열하기보다는저자가현업에서실제로겪은경험이나각종사례를예로들어보안에접근할때의장벽을낮춰주므로개발실무자들에게도많은도움이될것입니다.
이책은보안개념부터시작해,보안위협과취약점분석,보안모델링부터사례연구까지보안에관련한많은분야를다룹니다.또한보안설계리뷰(SDR)같은각조직이나회사에서보안을적용할때도움이되는많은팁이담겨있습니다.따라서이책은소프트웨어개발과정에보안을통합하고싶은개발자,보안전문가,시스템아키텍트,보안관리자등보안에관련된모든이가참고자료로활용할수있습니다.더욱안전한소프트웨어를개발하는데큰도움이될책이라확신합니다.
-김영기

요즘은계정이새로운기기에서로그인됐다거나,해외에서접속됐다거나,아니면미사용중인자산이있으니빨리찾아가라는등의피싱메시지를받는것이일상이됐다.그중일부는너무나교묘해서,혹시무심코접속했다가내PC나폰이해킹되지않을까전전긍긍하는일도흔해졌다.지난여름에는크라우드스트라이크라는사이버보안회사의소프트웨어업데이트파일오류로수많은윈도우PC에블루스크린이발생하며윈도우부팅이제대로시작되지않아전세계의은행,항공사,방송국등이일대혼란을겪으며우리나라공항에서도전산마비사태를빚기도했다.사실이제이런문제는일상이되어서일일이손으로꼽기도어려울정도다.
모든것이인터넷으로연결되면서작은실수와한번의악의적인공격으로엄청난피해가초래되는세상이된것이다.그럼에도소프트웨어개발현장에서보안은여전히후순위로밀려나기일쑤다.빠르게변화하는시장과소비자의요구를따라잡기에도벅차다보니,보안은개발막바지에나고려하게되곤한다.또한아직도IT업계의많은종사자에게보안은반드시전문가들에게맡겨야할,난해하고골치아픈문제로만여겨진다.
앞으로악의적인공격은AI기술과결합해훨씬더교묘해질것이고,그로인한피해는상상을초월할수도있다.이제소프트웨어보안을더이상전문가에만맡겨둘수없는시대가됐다.진실은진즉부터그래야했던것이고,우리가그진실을외면해왔을뿐일것이다.개발자나보안전문가뿐만아니라업계의모든종사자들이보안을고려해서각자의직무를수행해야만,악의적인공격과사고로부터자신과조직,고객의소중한자산을지킬수있는시대가된것이다.
이책의주요기획의도는소프트웨어개발자들이보안을고려한안전한소프트웨어를설계하고구현하는데필요한개념과방법론을설명하는것이지만,보안의본질에대한통찰을기반으로보안에필요한마인드셋을갖추는데초점이맞춰져있어,번역을진행하면서개발자뿐만아니라모든업계종사자가보안을이해하는데더할나위없이적합한책이란생각이들었다.
이책의저자인로렌콘펠더는누구보다도보안의본질을얘기할수있는자격이있는인물이다.마이크로소프트와구글에서현대적보안기법의기반을구축했을뿐만아니라,오늘날널리사용되는암호화기술의핵심기반인디지털인증서시스템을최초로고안한보안의선구자다.20여년에걸친저자의풍부한실무경험과깊은통찰이이책곳곳에녹아들어있다.나또한이책을번역하면서,그간IT업계에오래종사하며알고있던보안에대한단편적인지식들이하나의큰그림으로맞춰져가는것을느낄수있었다.
모쪼록이책을읽을독자여러분도나와비슷한경험을하기를기대하며,자신의소프트웨어와디지털자산을안전하게지키는데도움을얻기바란다.
-박기성