사전 보안 엔지니어링
영역

보안 엔지니어링

gabury1

망가뜨리려는 상대가 있는 자리에서 시스템을 짓는 일입니다. 고장은 저절로 나지만 공격은 누가 일부러 일으킵니다. 그 둘을 함께 견디도록 만드는 일에 이 이름이 붙습니다. 무엇을 하는 일이냐는 물음의 답은 한 문장이 아니라 목록으로 열립니다.

쉽고 빠른 이해

이 구역이 무엇을 다루나 — 누군가 일부러 망가뜨리려 드는 자리에서 시스템을 짓는 일 전체입니다. 누가 접속했는지 확인하는 일부터 통신을 감추는 일, 구멍을 찾아 고치는 일, 뚫린 뒤 뒷수습하는 일까지 한 사람이 이 이름 아래에서 마주칩니다.

이게 없으면 무엇이 곤란한가 — 시스템을 짓는 기량만으로는 실수와 불운만 다뤄지고 악의는 다뤄지지 않습니다. 사람이 노리고 오는 공격 앞에서 시스템이 그대로 뚫립니다.

왜 한 문장 정의가 안 서나 — 저절로 나는 고장과 사람이 노리고 일으키는 공격은 서로 다른 종류의 위협입니다. 그 둘을 함께 견디게 만드는 일이라 "이런 걸 만드는 일"로 한 줄에 닫으면 실제로 마주치는 일 중 절반을 빠뜨립니다. 그래서 설명이 목록으로 열립니다.

안에서 무엇으로 갈리나 — 이 이름을 어디까지로 보느냐가 문서마다 다릅니다. 심리학·경제학·물리 보안까지 넣어 넓게 보는 쪽이 있고, 시스템을 짓는 일의 한 갈래로 좁게 보는 쪽이 있고, 소프트웨어 쪽에만 자리를 두는 쪽도 있습니다.

경계는 어디인가 — 규정이 요구하는 항목만 채워 감사를 통과시키는 일, 그것만으로는 아닙니다. 지킬 대상과 채울 요건이 미리 정해진 감사와 달리, 이 구역은 시스템이 무엇이든 그 시스템에 맞는 보호를 새로 설계하는 일까지 포함합니다.

상세

이 구역은 무엇을 만드느냐로 정해지지 않습니다. 무엇을 마주한 채 만드느냐로 정해집니다. Security Engineering 을 쓴 Ross Anderson 은 보안 엔지니어링을 악의와 실수와 불운 앞에서도 시스템이 계속 의존할 만하게 남도록 시스템을 짓는 일이라고 적습니다. 하나의 분야로서는 시스템 전체를 설계하고 구현하고 시험하는 데 필요한 도구와 절차와 방법에 초점을 맞춘다고 적습니다. 환경이 변해 갈 때 이미 있는 시스템을 거기에 맞추는 일도 같은 자리에 넣습니다.

다른 구역과 갈리는 자리가 여기서 드러납니다. 같은 문서는 사업 절차 분석부터 소프트웨어 엔지니어링과 평가와 시험까지의 시스템 엔지니어링 기량도 중요하다고 적습니다. 다만 그것만으로는 충분하지 않다고 곧바로 잇습니다. 이유로 드는 것은 그 기량이 악의가 아니라 실수와 불운만 다룬다는 점입니다. 그래서 보안 엔지니어에게는 체스 두는 사람처럼 적대적으로 생각하는 기량도 얼마간 필요하다고 덧붙입니다.

미국 국립표준기술연구소(NIST, National Institute of Standards and Technology)는 같은 일을 더 좁은 이름으로 적습니다. NIST SP 800-160(Special Publication 800-160, 특별 간행물 800-160) Vol.1 은 시스템 보안 공학을 시스템 공학의 하위 분야로 정의합니다. 여기서 말하는 시스템 공학은 바로 위 문단에서 나온 시스템 엔지니어링과 같은 것을 가리킵니다. 정의는 이렇습니다 — 시스템과 보안 등 여러 원리·개념과 과학적·기술적·관리적 방법을 함께 써서, 공학으로 만든 시스템을 안전하게 실현하고 쓰고 폐기까지 가게 하는, 여러 분야를 가로지르는 통합적 접근입니다. 예를 들어 컴퓨터 보안과 암호학처럼 서로 다른 전문 분야의 방법을 한 시스템 안에서 함께 씁니다.

한 문장 정의가 안 서는 까닭은 두 문서가 모두 자기 범위를 목록으로 펼친다는 데 있습니다. Anderson 은 이 일에 여러 분야를 가로지르는 전문성이 필요하다고 적습니다. 그 폭을 암호학과 컴퓨터 보안에서 하드웨어 변조 저항을 지나 경제학·응용 심리학·조직·법에 대한 지식까지로 잡습니다. NIST 는 시스템 보안 공학이 다른 하위 분야들과 겹친다고 적습니다. 여러 전문 분야를 활용한다고도 적습니다. 그 전문 분야로 컴퓨터 보안·통신 보안·전송 보안·전자 방사 보안·변조 방지·물리 보안을 듭니다. 정보와 소프트웨어와 하드웨어와 공급망 보증, 그리고 생체인식과 암호학 같은 기술 전문 분야도 듭니다. 이 자리에서 마주치는 것을 세어 보면 답이 목록이 됩니다. 이름만 듭니다 — 각 이름이 무엇을 하는 분야인지는 그 이름의 항목이 갖습니다.

NIST 문서 안에서 시스템 보안 공학은 시스템 공학의 하위 분야이면서, 동시에 다른 하위 분야들과 겹치고 여러 전문 분야를 끌어다 쓰는 자리입니다.

경계

규정이 요구하는 항목을 채워 감사를 통과시키는 일도 이 구역인가. 그것만으로는 아닙니다.

PCI DSS(Payment Card Industry Data Security Standard, 결제 카드 산업 데이터 보안 표준)를 만든 PCI Security Standards Council 은 그 목적을 스스로 적었습니다. 결제 카드 계정 데이터 보안의 장려와 강화를 위해 만들었다고 적습니다. 일관된 데이터 보안 조치가 전 세계에서 폭넓게 채택되도록 촉진하는 것도 목적으로 적습니다. 같은 문서는 PCI DSS 가 결제 계정 데이터를 보호하도록 설계된 기술적·운영적 요건의 기준선을 제공한다고 적습니다. 지킬 대상은 결제 계정 데이터로 미리 정해져 있습니다. 채울 요건도 미리 목록으로 정해져 있습니다.

NIST 는 자기 자리를 반대쪽으로 그었습니다. 시스템의 목적·종류·범위·규모·복잡도나 생애주기 단계와 무관하게 적용될 수 있다고 적었습니다. 대상이 미리 정해진 요건 목록을 채우는 일은 한쪽입니다. 시스템이 무엇이든 그 시스템에 맞는 보호를 설계하는 일은 다른 쪽입니다. 두 문서가 스스로 적은 목적이 다릅니다.

이견

이 구역을 어디까지로 보느냐가 문서마다 갈립니다.

Ross Anderson 의 Security Engineering 3판은 넓게 잡습니다. 장 목록이 그 폭을 보여 줍니다. 심리와 사용성, 프로토콜, 암호학, 접근 제어, 분산 시스템, 경제학, 다중 등급 보안, 「경계」(장 제목입니다 — 위의 「경계」 절과는 다른 낱말입니다), 추론 통제, 은행 업무와 부기, 물리 보호, 감시와 계량이 거기 있습니다. 핵 지휘 통제, 보안 인쇄와 봉인, 생체인식, 물리적 변조 저항, 사이드 채널, 그리고 감시냐 프라이버시냐까지가 한 책 안에 들어갑니다. 장 이름만 듭니다 — 각 장이 다루는 내용은 그 이름의 항목이 갖습니다.

NIST 는 좁게 긋습니다. 위에서 본 대로 시스템 보안 공학을 시스템 공학의 하위 분야로 못박습니다. 암호학과 생체인식 같은 것은 이 일이 활용하는 별도의 전문 분야 쪽에 세워 둡니다. 다른 하위 분야와는 겹친다고 적습니다. 다만 자기와 그 전문 분야를 같은 낱말로 부르지는 않습니다.

OWASP(Open Worldwide Application Security Project, 개방형 전세계 애플리케이션 보안 프로젝트)는 또 다른 자리에 섭니다. OWASP 재단은 스스로를 소프트웨어의 보안을 개선하려고 일하는 비영리 재단이라고 적습니다. 애플리케이션의 구상과 개발과 획득과 운영과 유지를 조직이 해내도록 돕는 데 전념하는 열린 공동체라고도 적습니다. 자기 프로젝트와 도구와 문서를 애플리케이션 보안을 개선하는 데 관심 있는 누구에게나 연다고 적습니다.

같은 이름 아래에서 세 문서가 각각 다른 데를 봅니다. 한쪽은 핵 지휘 통제와 은행 부기까지 셉니다. 다른 쪽은 시스템 공학의 하위 분야로 좁힙니다. 또 다른 쪽은 애플리케이션 쪽에 자기 대상을 둡니다. 어느 쪽이 옳은지는 세 문서 어디에도 적혀 있지 않습니다.

관련 항목

설계 원칙과 설계의 실패

위협 모델링 · 공격 표면 · 최소 권한 · 심층 방어 · 도메인 분리 · 참조 모니터 · 제로 트러스트 · 안전하지 않은 설계 · 보안 설정 오류

신원 확인과 권한 부여

인증 · 인가 · 접근 제어 · RBAC(Role-Based Access Control, 역할 기반 접근 제어) · ABAC(Attribute-Based Access Control, 속성 기반 접근 제어) · 취약한 접근 제어 · 다중 등급 보안 · OAuth2 · JWT(JSON Web Token, JSON 웹 토큰) · 세션 관리 · 생체인식

암호와 키와 전송 보호

암호화 · 해싱 · 솔트 · 비밀번호 저장 · Argon2id · bcrypt · PBKDF2(Password-Based Key Derivation Function 2, 비밀번호 기반 키 유도 함수 2) · 레인보우 테이블 · 키 관리 · 난수 생성 · TLS(Transport Layer Security, 전송 계층 보안) · 인증서 · 인증 기관 · CAA 레코드(Certification Authority Authorization, 인증 기관 권한 부여)

이것에서 자주 나는 오류·장애

SQL 인젝션(Structured Query Language, 구조화 질의 언어) · 크로스 사이트 스크립팅 · 크로스 사이트 요청 위조 · 서버 사이드 요청 위조 · 권한 상승 · 재전송 공격 · 타이밍 공격 · 사이드 채널 · 공급망 공격 · 물리적 변조

취약점 발견과 처리

취약점 · CVE(Common Vulnerabilities and Exposures, 공통 취약점 및 노출) · CVSS(Common Vulnerability Scoring System, 공통 취약점 점수 시스템) · CWE(Common Weakness Enumeration, 공통 취약점 유형 목록) · 퍼징 · 정적 분석 · 동적 분석 · 침투 테스트 · 버그 바운티 · 취약점 공개

탐지와 대응과 격리

감사 로그 · 보안 로깅과 모니터링 · 사고 대응 · 시크릿 관리 · 격리 · 샌드박스

다른 이름: security engineering · 보안 공학 · 시스템 보안 공학 · systems security engineering