설계부터 개발까지 직접 만들면서 배우는 보안 개발 시리즈 - Security School
시리즈 소개
• 리눅스 환경에서 동작하는 보안 솔루션을 개발하며 기본 구조를 이해할 수 있습니다.
• 백신 개발을 시작으로 시스템 보안과 네트워크 보안까지 개발합니다.
• 다 만들어진 코드를 설명하는 게 아니라 기획/설계/구현하는 방법을 이야기합니다.
• 보안 개발을 처음 시작하는 학생과 직장인을 대상으로 합니다.
• 최대한 쉽게 구현합니다.
• 누구나 보안 개발자가 될 수 있다는 꿈과 희망을 선사합니다.
주요 특징
• UML 실용 설계 - UML을 효과적으로 사용하는 방법으로 간결한 코드만으로도 모든 요구사항을 만족시킬 수 있습니다.
• 현실주의 - 현업에서 실제로 일어나는 일들과 그에 맞는 개발 프로세스를 이야기합니다.
• 모듈식 구성 - 원하는 목적에 맞춰 골라 읽을 수 있습니다.
• 손 안에 기술서 - 한 권의 내용을 1주에서 2주 정도면 정독할 수 있는 분량으로 짧게 구성합니다.
사전 지식(권장)
• C 언어
• 간단한 소켓 프로그래밍
• 리눅스 커널의 역할 이해(단, 커널 개발 경험은 없어도 됩니다.)
• UML과 VMWare 사용의 이해
IoT 시대가 이제 열렸다고 하지만, 우리는 이미 IoT 시대에 살고 있습니다. 아침을 알리는 스마트워치, 등교길 버스 요금 단말기, 강의 노트용 태블릿, 점심시간 편의점 계산 단말기, 인기 드라마를 보여주는 스마트TV, 친구와 즐기는 게임기, 자기 전 보는 전자책, 시도 때도 없이 보는 스마트폰 등 생김새는 다르지만, 우리는 모두 연결된 컴퓨터 시스템을 아침부터 밤까지 이용하고 있습니다. 그런데 이것 중 보안 기술이 적용된 것은 몇 개나 될까요?
모두가 보안이 중요하다고 말합니다. 하지만 관련 인력이 부족한 게 현실입니다. 이는 프로그래밍을 시작한 사람들에게 보안이 어려워 보이는 주제이기 때문입니다.
그래서 이 책을 썼습니다. C 프로그래밍은 가능한데 임베디드 개발 경험도 없고 리눅스 커널도 잘 모른다고요? 그래도 괜찮습니다. 이 책의 내용을 그대로 따라 해보세요. 차근차근 따라 하다 보면 UML을 이용한설계 방법도 알게 되고, 리눅스 커널도 약간 수정하다 보면 어느덧 간단한 백신의 실시간 감시 기능까지 구현하게 됩니다.
이 책은 취업을 앞둔 대학생이 소프트웨어 공모전을 위해 간단한 IoT용 백신을 VMware 환경에서 개발하는 이야기입니다. 현업에서 사용하는 기초적인 개발 프로세스를 기반으로 백신을 설계하고 구현하는 과정을 그리고 있습니다. 따라서 주제는 백신 개발이지만, 현장의 개발 과정을 체험하면서 실용적인 소프트웨어 설계 방법(UML 실용 설계)을 배울 수 있습니다.
이 책은 고등학생, 대학생, 사회 초년생을 대상으로 집필했습니다. 어려운 지식이 전달이 아니라, 호기심을 충족시키며 보안 개발자가 되는 길에 희망을 드리고자 쓴 책입니다. 그러니 부담 없이 읽어보세요. 누구나 처음은 있습니다.
- 서자 서문에서 발췌
보안 기업 AhnLab에서 10년 동안 PC용 V3 방화벽과 침입차단 시스템 엔진, 웹 보안 솔루션을 개발했다. 이후 삼성전자에서 스마트TV 보안 강화 설계, SDL(Security Development Lifecycle) 적용, 임베디드 보안 프레임워크를 설계했고, 현재는 삼성 스마트TV 통합 보안 솔루션인 ‘스마트 시큐리티’를 담당하며 임베디드 백신, 코드 서명, 방화벽을 개발하고 있다.
하나의 보안 기술만으로 컴퓨터 시스템을 안전하게 만들 수 없다. 따라서 개발 기술뿐만 아니라 프로세스와 조직 문화까지 보안과 관련된 것이라면 무엇이든 공부하고 있다.
들어가며(시리즈 소개)
_“저도 백신을 만들 수 있을까요?”
_“Security School에 오신 것을 환영합니다.”
_“여러분이 준비할 것과 얻을 것입니다.”
1장 백신 개발 프로젝트 Airplane 시작
_1.1 보안 개발 입문기
_1.2 프로젝트 준비
2장 요구사항
_2.1 요구사항 수집
_2.2 요구사항 분석
3장 프로토타입
_3.1 개발 환경 만들기
_3.2 리눅스 커널 수정과 모듈 만들기
_3.3 백신의 실행 파일 실시간 감시
_3.4 리눅스 커널 소켓 프로그래밍
_3.5 프로토타입 정리
4장 설계
_4.1 설계 범위 정하기
_4.2 정적 설계 시작
_4.3 동적 설계로 완성하는 정적 설계
_4.4 모듈 설계
_4.5 배치도 작성하기
_4.6 정리
5장 구현
_5.1 구현 준비
_5.2 공통 소스 구현
_5.3 백신 업데이트 서버 구현
_5.4 백신 필터 구현
_5.5 정리
6장 테스트
_6.1 테스트 케이스 준비
_6.2 테스트 케이스 수행
_6.3 QA 리포트
7장 뫼비우스의 띠
_7.1 개선할 부분
_7.2 응용할 수 있는 부분
_7.3 끝이 없는 해킹과 보안의 싸움