이 책은 저자의 20년 교육과 연구 경험을 바탕으로 쓴 것이다. 사이버 보안의 기본 원칙을 다룬다. 이 책의 목표는 독자가 다양한 공격이 동작하는 방식, 공격의 근본적인 원인이 무엇인지, 공격을 방어하는 방법과 다양한 방어 메커니즘이 동작하는 방식을 이해하도록 돕는 것이다. 이 책의 지식을 갖춘 독자는 컴퓨터와 네트워크 시스템이 직면한 위험을 평가하고, 소프트웨어의 일반적인 취약점을 감지하고, 시스템과 네트워크를 보호하기 위한 적절한 방법을 사용하고, 공격을 차단하고 더 중요한 것은 보안 원칙을 적용하여 실제 문제를 해결하는 것이다. 이 책은 학부와 대학원 과정의 교과서로 사용할 수 있다.
저자는 "실제 해보고 얻는 학습"을 강력히 믿기 때문에 이 책은 실험, 실습 접근 방식을 취한다. 각 보안 원칙에 관해 이 책에서는 원칙을 설명하는 데 도움이 되는 일련의 실습 활동을 제공한다. 독자는 원리를 읽는 대신에 "실제 해보는" 실험을 할 수 있다. 예를 들어 보안 원칙에 공격이 포함된 경우 이 책은 독자에게 실제로 공격을 해보도록 안내한다(격리된 환경에서).
어떤 경우에는 원칙에 보안 메커니즘과 관련된 경우 이 책은 독자에게 이 메커니즘의 미니 버전을 구현하도록 안내한다. 독자는 이러한 실습 활동을 통해 더 잘 배울 수 있다.
모든 심험, 실습 활동은 작성자가 제공한 가상 머신 이미지에서 수행된다. 다음 URL에서 다운로드할 수 있다: https://seedsecuritylabs.org. 활동에 필요한 모든 것이 이미 설정되어 있다. 독자는 VM(무료)을 다운로드하고 VirtualBox를 사용하여 실행하기만 하면 책에서 다루는 활동을 즉시 수행할 수 있다. 이 책은 Ubuntu 20.04 VM 이미지를 기반으로 한다.
책에 있는 대부분의 활동은 전 세계의 강사들이 널리 사용하는 저자의 SEED Lab(버전 2.0)을 기반으로 한다. 이 Lab은 2002년부터 국립과학재단이 자금을 지원한 SEED라는 프로젝트에서 저자와 그의 학생들이 수행한 20년의 연구, 개발 및 테스트 노력의 결과이다.
저자는 모든 내용을 깊이 있게 다루었다. 강의에서 다루는 모든 주제에 대해 저자는 필요한 만큼 철저하게 다루고 싶었다. 저자는 학생들에게 개념만 가르치는 것은 관심이 없다. 저자는 학생들이 깊이 이해하도록 돕는 것을 좋아한다. 이 책에도 같은 철학이 반영되어 있다. 예를 들어, 버퍼 오버플로우 공격을 15분 만에 가르칠 수 있지만, 이 책은 이에 대해 2개 장(70페이지)을 사용하여 필수 배경 지식, 공격 세부 정보, 도전 과제, 대응책과 대응책에 대한 공격에 관해 설명한다.
저자는 기본을 믿는다. 보안은 매우 광범위한 주제이다. 새로운 기술 XYZ가 나올 때마다 "XYZ 보안"이라는 새로운 보안 주제가 생길 것이다. 이 새로운 보안 주제를 가르치는 것이 더 유행을 따르는 것처럼 보이지만 저자는 기본 교육을 강력히 믿고 있다. 이 XYZ 보안 주제의 바탕에는 유사한 보안 기본 사항이 있다. 기본 사항을 마스터한 독자는 습득한 지식을 바탕으로 새로운 보안 주제에 빠르게 적용할 수 있지만 XYZ 보안을 방금 배운 독자는 새로운 기술의 보안을 다루는 데 어려움을 겪을 것이다.
독자가 기본 사항을 마스터할 수 있도록 돕기 위해 이 책은 독자가 근본적인 유사점과 차이점을 볼 수 있도록 돕기 위해 종종 다른 것처럼 보이는 몇 가지 항목(공격 또는 방어 메커니즘)을 함께 제공한다. 또한 특정 메커니즘의 보안 문제를 분석할 때, 보안 원칙을 기반으로 체계적인 접근 방식을 취하고 탄탄한 기초를 바탕으로 추론한다.
SEED 연구소의 역사
“듣고 잊어버린다. 보고 기억한다. 해보고 이해한다.” 중국 철학가 공자(기원전 551년 ? 기원전 479년)의 이 유명한 말은 학습이 경험에 기초해야 한다고 굳게 믿는 많은 교육자의 모토였다. 이것은 특히 컴퓨터 보안 교육에 해당된다. 20년 전, 저자는 이 모토를 마음에 새기고 컴퓨터 보안 분야의 우수한 강사가 되고자 하는 열망으로 웹을 검색하여 보안 수업에 사용할 수 있는 실습 프로젝트를 찾았다. 나는 몇 개는 찾을 수 있었지만, 이것은 여러 곳에서 있었고 일관성이 없었다. 보안 주제에 대한 범위는 매우 좁았고, 이들이 사용한 Lab 환경은 설정하기가 쉽지도 저렴하지도 않았다.
나는 결심하고 나만의 실습(줄여서 Lab이라고 함)을 개발하기로 하였다. 하나의 Lab이 아니라 광범위한 보안 주제를 다루는 여러 실습을 개발하였다. 이는 나 자신의 용도뿐만 아니라 나와 같은 교육 철학을 공유하는 다른 많은 강사를 위한 것이다. 모든 Lab은 하나의 통합된 환경을 기반으로 해야 하므로 학생들은 다른 Lab의 새로운 환경을 배우는 데 너무 많은 시간을 할애할 필요가 없다. 또한, Lab 환경은 설치가 쉽고 저렴해야 강사가 시간이나 자원이 제한되어있어도 방해받지 않는다.
위의 목표를 염두에 두고 NSF의 초기 지원금($74,984.00, 상 번호 0231122)으로 나는 2002년에 프로젝트를 시작하여 SEED(SEcurity Education의 약자)라는 이름을 지정했다. 10년 후, 나는 또 다른 NSF 지원금($451,682, 상 번호 0618680)과 20명 이상의 학생들의 도움을 받아 취약점, 공격, 소프트웨어 보안, 시스템 보안, 네트워크 보안을 포함한 많은 보안 주제를 다루는 약 30개의 SEED Lab을 개발하였다. 웹 보안, 접근 제어, 암호화, 모바일 보안 등 대부분의 SEED Lab은 시라큐스대학과 기타 여러 기관의 실제 교육과정에서 여러 개발-시험 주기(개발, 시험, 개선과 재시험)를 거쳤다.
SEED 프로젝트는 꽤 성공적이었다. 현재 전 세계적으로 1000명 이상의 강사가 저자에게 SEED Lab 중 일부를 사용했다고 말했다. 모든 SEED Lab실 자료와 Lab 환경은 온라인에서 무료로 제공된다. 다른 사람이 SEED Lab을 사용할 수 있도록 NSF는 저자에게 또 다른 지원금($863,385.00, 상 번호 1303306)을 주었다. 그래서 나는 매년 2회의 교육 워크숍을 개설하고 워크숍에 참석하기 위해 온 사람들에게 자금을 지원할 수 있었다. 매년 약 70명의 강사가 워크숍에 참석했다. 2019년 지원금이 소진된 후 저자는 워크샵을 온라인으로 전환하여 매년 SEED 워크샵을 계속 제공하고 있다.