1. 개요
미국 국립표준기술연구소는 컴퓨터 보안을 다음과 같이 정의한다
컴퓨터 보안
자동화된 정보 시스템을 보호하여 정보 시스템 자원의 무결성, 가용성 및 기밀성을 보존하는 것. 정보 시스템 자원에는 하드웨어, 소프트웨어, 펌웨어, 정보, 데이터 및 통신이 포함된다
기밀성(Confidentiality)
- 사적이거나 기밀인 정보가 권한이 없는 사람에게 제공되거나 공개되지 않도록 보장하는 것이다
무결성(Integrity)
- 정보와 프로그램이 정해진 방식과 승인된 절차에 따라서만 변경되도록 보장하는 것이다
가용성(Availability)
- 시스템이 필요할 때 신속하게 작동하고, 권한을 가진 사용자가 서비스를 거부당하지 않도록 보장하는 것이다
이 세 가지 속성을 정보보안의 핵심 3요소인 CIA Triad라고 한다. 이들은 데이터와 서비스를 보호하기 위한 기본 목표이다
1.1 보안 침해의 영향 3단계
FIPS 199는 기밀성, 무결성 또는 가용성의 손실이 조직의 운영, 조직의 자산 또는 개인에게 미칠 수 있는 영향을 세 수준으로 구분한다
| 영향 수준 | 설명 |
|---|---|
| 낮음(Low) | 제한적인 부정적 영향이 발생할 것으로 예상되는 수준 |
| 보통(Moderate) | 심각한 부정적 영향이 발생할 것으로 예상되는 수준 |
| 높음(High) | 매우 심각하거나 치명적인 부정적 영향이 발생할 것으로 예상되는 수준 |
1.2 컴퓨터 보안의 어려움
컴퓨터 보안은 처음 생각하는 것만큼 단순하지 않다.
- 보안 기능 자체를 대상으로 발생할 수 있는 잠재적인 공격까지 고려해야 한다
- 특정 보안 서비스를 제공하기 위한 절차가 직관적으로 이해하기 어려운 방식으로 동작할 수 있다
- 보안 기능을 물리적으로 어디에 배치할지, 시스템의 어느 논리적 계층에 적용할지 결정해야 한다
- 보안 기능이 제대로 동작하려면 추가적인 알고리즘이나 프로토콜이 필요할 수 있다
- 공격자는 공격에 필요한 취약점 하나만 찾아도 되지만, 개발자는 모든 취약점을 찾아내고 방어해야 한다
- 사용자와 시스템 관리자는 보안 사고가 발생하기 전까지 보안의 필요성과 이점을 체감하지 못하는 경향이 있다
- 보안 상태를 유지하려면 정기적이고 지속적인 모니터링이 필요하다
- 보안은 종종 시스템 설계가 끝난 후에야 뒤늦게 추가된다
- 보안 절차는 효율성과 사용 편의성을 방해하는 요소로 여겨지기도 한다
1.3 보안 용어
| 용어 | 의미 |
|---|---|
| 공격자(Adversary, Attacker) | 시스템을 공격하거나 보안을 위협하는 사람 또는 조직 |
| 공격(Attack) | 시스템의 보안을 침해하려는 행위 |
| 대응책(Countermeasure) | 공격을 예방하거나 피해를 줄이기 위한 조치 |
| 취약점(Vulnerability) | 공격에 이용될 수 있는 시스템의 약점 |
| 위협(Threat) | 보안을 침해하거나 피해를 일으킬 수 있는 잠재적 원인 |
| 위험(Risk) | 위협이 취약점을 이용하여 피해를 발생시킬 가능성과 그 피해 규모를 함께 고려한 것 |
| 보안 정책(Security Policy) | 시스템 자원을 보호하기 위해 정한 규칙과 지침 |
| 시스템 자원·자산(System Resource/Asset) | 보호해야 할 데이터, 하드웨어, 소프트웨어, 네트워크 등의 자원 |
2. OSI 보안 구조
국제전기통신연합의 ITU-T 권고안 X.800은 OSI 보안 구조에서 보안 공격, 보안 서비스, 보안 메커니즘을 정의한다
| 개념 | 의미 |
|---|---|
| 보안 공격(Security Attack) | 정보의 보안을 침해하는 행위 |
| 보안 서비스(Security Service) | 보안 공격에 대응하기 위해 보안 메커니즘을 사용하는 서비스 |
| 보안 메커니즘(Security Mechanism) | 보안 공격을 탐지, 예방하거나, 공격이 발생한 경우 복구하기 위해 설계된 절차 또는 수단 |
보안 공격은 크게 수동 공격과 능동 공격으로 구분한다
| 구분 | 특징 |
|---|---|
| 수동 공격(Passive Attack) | 시스템 자원에 영향을 주지 않으면서 정보를 관찰하거나 수집한다 |
| 능동 공격(Active Attack) | 시스템 자원을 변경하거나 시스템의 정상적인 작동에 영향을 주려고 시도한다 |
2.1 수동 공격
수동 공격은 데이터나 시스템의 동작을 변경하지 않고 정보를 얻는 공격이다
수동 공격은 데이터에 변경을 가하지 않으므로 공격이 발생했는지 탐지하기 어렵다. 따라서 대응의 핵심은 사전 예방이다. 다만 메시지 암호화만으로 트래픽 분석까지 모두 막을 수 있는 것은 아니다. 메시지 내용이 숨겨져 있어도 통신 상대, 시점, 빈도, 크기 등은 드러날 수 있기 때문이다
2.1.1 메시지 내용 노출(Release of Message Contents)
송신자와 수신자 사이에서 전달되는 메시지의 실제 내용을 공격자가 몰래 열람하는 공격이다
예를 들어, 공격자가 암호화되지 않은 이메일, 통화 내용 또는 전송 파일을 가로채 내용을 확인하는 경우가 해당한다
2.1.2 트래픽 분석(Traffic Analysis)
메시지의 내용을 직접 읽지 못하더라도 통신의 흐름과 형태를 관찰하여 정보를 추론하는 공격이다
공격자는 다음과 같은 정보를 분석할 수 있다
- 누가 누구와 통신하는지
- 언제, 얼마나 자주 통신하는지
- 전송되는 메시지의 크기나 통신량이 어느 정도인지
예를 들어, 메시지가 암호화되어 있어도 특정 조직 사이의 통신량이 갑자기 증가한 사실을 통해 중요한 활동이 진행 중이라고 추론할 수 있다
2.2 능동 공격
능동 공격은 불법적인 메시지를 생성하거나, 기존 메시지를 재사용, 변조하거나, 정당한 송수신 사실을 부인하거나, 정상적인 서비스 이용을 방해하는 공격이다
새로운 취약점과 다양한 공격 기법이 계속 등장하므로 능동 공격을 완전히 예방하기는 어렵다. 따라서 예방 조치와 함께 공격의 탐지와 신속한 복구가 중요하다
- 공격을 가능한 한 빠르게 탐지한다
- 공격으로 인한 피해와 확산을 최소화한다
- 시스템과 서비스를 신속하게 복구한
2.2.1 불법 메시지 생성
위장(Masquerade)
- 한 개체가 다른 개체인 것처럼 가장하는 공격이다
- 공격자는 정상적인 사용자의 신원이나 계정을 사칭하여 메시지를 전송할 수 있다
재전송(Replay)
- 정상적으로 전송된 메시지를 공격자가 가로채 저장한 뒤, 나중에 다시 전송하는 공격이다
- 메시지를 수정하지 않더라도 이전의 정상 메시지를 재사용하여 인증을 우회하거나 동일한 작업을 반복하게 만들 수 있다
메시지 변조(Modification Messages)
- 공격자가 전송 중인 메시지를 가로채 내용을 변경한 뒤 수신자에게 전달하는 공격이다
- 메시지의 내용뿐 아니라 순서나 전송 시점 등을 변경하는 행위도 포함될 수 있다
2.2.2 부인(Repudiation)
- 부인은 메시지를 전송하거나 수신한 당사자가 나중에 그 사실을 부인하는 행위이다
- 송신 부인: 송신자가 실제로 보낸 메시지에 대해 “그 메시지를 보내지 않았다”고 주장한다
- 수신 부인: 수신자가 실제로 받은 메시지에 대해 “그 메시지를 받지 않았다”고 주장한다
2.2.3 서비스 거부(Denial of Service, DoS)
- 시스템이나 네트워크 자원을 정상적으로 사용할 수 없도록 만드는 공격이다
- 서버에 과도한 요청을 보내거나 통신을 방해하여 정상적인 사용자의 서비스 이용을 막는다
3. 보안 설계의 기본 원칙
보안 설계의 기본 원칙은 시스템을 설계하고 구현할 때 오류와 취약점을 줄이고, 침해가 발생하더라도 피해를 제한하기 위한 지침이다
메커니즘의 경제성
- 보안 메커니즘을 가능한 한 단순하고 작게 설계해야 한다
- 설계가 복잡할수록 오류와 취약점이 발생하기 쉽고, 검증도 어려워진다
안전한 기본 설정
- 접근 허용 여부는 명시적인 허용을 기준으로 판단해야 한다
- 별도로 허용하지 않은 접근은 기본적으로 거부한다
완전한 중재
- 사용자나 프로그램이 시스템 자원에 접근할 때마다 접근 권한을 확인해야 한다
- 이전에 허용되었다는 이유만으로 이후의 접근을 자동으로 허용해서는 안 된다
공개 설계
- 보안은 설계나 구현 방식을 숨기는 데 의존해서는 안 된다
- 설계가 공개되어도 보안성이 유지되어야 하며, 암호키와 비밀번호 등 비밀로 유지해야 하는 정보를 보호해야 한다
권한 분리
- 중요한 자원에 접근하거나 작업을 수행할 때 둘 이상의 독립적인 조건이나 권한을 요구하도록 설계해야 한다
- 하나의 조건만 충족하거나 하나의 권한만 탈취해서는 중요한 작업을 수행할 수 없도록 한다
최소 권한
- 사용자와 프로그램에는 작업 수행에 필요한 최소한의 권한만 부여해야 한다
- 권한이 필요한 기간도 가능한 한 제한해야 한다
- 이를 통해 실수나 보안 침해가 발생했을 때 피해 범위를 줄일 수 있다
최소 공통 메커니즘
- 여러 사용자가 공통으로 사용하는 메커니즘, 특히 공유 상태나 자원에 의존하는 부분을 최소화해야 한다
- 공유되는 부분은 사용자 사이에서 정보가 전달되거나 한 사용자의 행동이 다른 사용자에게 영향을 주는 경로가 될 수 있다
심리적 수용성
- 보안 기능을 사용자가 이해하기 쉽고 사용하기 편리하게 설계해야 한다
- 보안 절차가 지나치게 복잡하면 사용자가 실수하거나 이를 우회할 수 있다
격리
- 서로 다른 사용자, 프로세스 및 보안 영역을 분리하여 허가되지 않은 상호 접근과 간섭을 제한해야 한다
- 중요한 자원과 보안 기능도 무단 접근이나 변경으로부터 보호해야 한다
- 이를 통해 한 영역에서 발생한 침해가 다른 영역으로 확산되는 것을 제한한다
캡슐화
- 데이터와 기능을 정해진 경계 안에 두고, 통제된 인터페이스를 통해서만 접근하도록 해야 한다
- 외부에서 내부 데이터를 직접 조작하거나 접근 통제를 우회하지 못하도록 한다
모듈성
- 시스템을 역할이 명확한 여러 모듈로 나누어 설계해야 한다
- 각 모듈을 개별적으로 검사·수정·교체할 수 있도록 하면 보안 관리와 검증이 쉬워진다
- 검증된 공통 보안 기능을 여러 곳에서 일관되게 활용하는 데도 도움이 된다
계층화
- 여러 단계의 보안 수단을 겹쳐 적용해야 한다
- 하나의 방어 수단이 무력화되더라도 다른 방어 계층이 보호를 제공하도록 한다
- 이러한 접근을 심층 방어(Defense in Depth)라고 한다
최소 놀람 원칙
- 시스템은 사용자가 합리적으로 예상하는 방식대로 동작해야 한다
- 기능의 실제 동작이 사용자의 기대와 다르면 실수나 보안 사고가 발생할 수 있다
4. 컴퓨터 보안 전략
컴퓨터 보안 전략은 보안 정책, 보안 구현, 보증, 평가라는 네 가지 측면으로 구성된다
| 구분 | 핵심 내용 |
|---|---|
| 보안 정책(Security Policy) | 무엇을 어떻게 보호할지 공식적인 규칙으로 정한다 |
| 보안 구현(Security Implementation) | 보안 정책을 실제 시스템에 적용한다 |
| 보증(Assurance) | 보안 설계와 구현이 요구사항을 충족한다고 얼마나 신뢰할 수 있는지 판단한다 |
| 평가(Evaluation) | 제품이나 시스템이 특정 보안 기준을 충족하는지 검사한다 |
4.1 보안 정책(Security Policy)
보안 정책은 시스템에서 무엇을 보호하고, 어떤 접근과 행위를 허용하거나 금지할지 정하는 공식적인 규칙이다
보안 서비스를 어떻게 제공하고 데이터를 어떻게 보호할지 규정하며, 보안 구현과 평가의 기준이 된다
4.2 보안 구현(Security Implementation)
보안 구현은 보안 정책을 실제 시스템에 효율적이고 효과적으로 적용하는 활동이다. 주요 활동은 예방, 탐지, 대응, 복구로 구분한다
4.2.1 예방(Prevention)
- 보안 침해가 발생하지 않도록 사전에 방지하는 것이다
- 예를 들어, 사내 데이터를 암호화하여 권한이 없는 사람이 데이터를 획득하더라도 내용을 알아보기 어렵게 한다
암호화는 기밀성을 보호하는 예방 수단이지만, 암호화된 데이터의 외부 반출 자체를 모두 차단하는 것은 아니다
4.2.2 탐지(Dectection)
- 침입이나 보안 침해, 이상 행위를 감시하고 발견하는 것이다
- 예를 들어, 침입탐지시스템이 네트워크를 모니터링하여 데이터 유출이나 사이버 공격의 징후를 감지한다
4.2.3 대응(Response)
- 탐지된 보안 사고에 조치하여 공격의 진행과 피해 확산을 제한하는 것이다
- 예를 들어, 침입자의 연결을 차단하거나 피해가 발생한 서비스를 일시적으로 중단한다
4.2.4 복구(Recovery)
- 보안 사고로 손상되거나 손실된 시스템과 데이터를 정상 상태로 되돌리는 것이다
- 예를 들어, 백업 데이터를 이용하여 손상된 데이터를 복원한다
4.3 보증(Assurance)
보증은 다음 질문을 다루는 과정이다
- “설계하고 구현한 보안 시스템이 요구사항을 제대로 충족한다고 얼마나 신뢰할 수 있는가?”
보증은 보안 요구사항이 충족된다는 신뢰의 정도와 이를 뒷받침하는 근거에 관한 개념이다
- 엄격한 증명을 통해 보안성을 확인하는 것이 바람직하지만, 현실적으로 전체 시스템을 완전히 증명하기는 어렵다
- 따라서 평가 결과 등 다양한 증거를 바탕으로 신뢰 수준을 판단한다
- 신뢰 수준은 높음·보통·낮음 등으로 표현할 수 있지만, 구체적인 표현과 등급은 적용하는 기준에 따라 달라진다
예를 들어, 접근 통제 기능이 있다는 설명만으로 신뢰하는 것보다 설계 검토와 보안 시험을 통해 무단 접근이 차단되는지 확인했을 때 더 높은 신뢰를 가질 수 있다
4.4 평가(Evaluation)
평가는 컴퓨터 제품이나 시스템이 특정 보안 기준을 충족하는지 검사하는 과정이다. 평가 결과는 요구사항의 충족 여부를 확인하고, 보증의 근거를 마련하는 데 사용된다
4.4.1 보안 강화
시스템의 설정과 구성을 조정하여 공격에 노출될 가능성과 취약점을 줄이는 작업이다 예를 들어 다음과 같은 조치를 적용할 수 있다:
- 불필요한 기능과 서비스를 비활성화한다
- 저장되는 데이터를 암호화한다
- 통신 중인 데이터를 암호화한
저장 및 전송 과정의 암호화는 권한이 없는 사람이 데이터의 내용을 알아보기 어렵게 하여 기밀성을 보호한다
4.4.2 보안 시험 및 취약점 관리
보안 시험을 통해 시스템의 취약점을 찾아내고, 발견한 취약점의 원인과 영향을 조사하여 조치한다 예는 다음과 같다:
- 웹 서버에 침투 테스트를 실시한다
- 해당 서버에서 허용되지 않은 데이터가 유출될 가능성을 발견한다
- 데이터가 유출될 수 있는 취약 경로와 원인을 조사한다
- 취약점을 수정하고 필요한 보호 조치를 적용한다
보안 강화와 취약점 수정은 시스템을 개선하는 활동이며, 평가는 이러한 조치가 보안 기준을 충족하는지 확인하는 활동이다
5. 보안을 위한 두 가지 모델
5.1 네트워크 보안 모델
네트워크 보안 모델은 송신자와 수신자가 통신할 때, 공격자가 메시지를 열람하거나 변조하는 등의 위협으로부터 통신을 보호하는 구조를 설명한다
기본 구성 요소
| 구성 요소 | 역할 |
|---|---|
| 송신자(Sender) | 메시지를 보내는 주체 |
| 수신자(Recipient) | 메시지를 받는 주체 |
| 정보 채널(Information Channel) | 메시지가 전달되는 통신 경로 |
| 공격자(Opponent) | 메시지를 가로채거나 변조하는 등 통신을 공격하는 주체 |
| 보안 관련 변환(Security-related Transformation) | 암호화나 전자서명 등 메시지를 보호하기 위한 처리 |
| 비밀 정보(Secret Information) | 암호키 등 보안 관련 변환에 사용하는 비밀 정보 |
| 신뢰할 수 있는 제3자(Trusted Third Party) | 비밀 정보의 배포를 지원하거나, 통신 당사자 사이의 분쟁에서 중재자 역할을 수행하는 주체 |
5.1.1 동작 과정
- 송신자가 원본 메시지를 작성한다
- 필요한 키 등의 정보를 사용하여 메시지에 보안 관련 변환을 적용한다
- 보호된 메시지가 정보 채널을 통해 전송된다
- 수신자는 필요한 키와 절차를 사용하여 메시지를 복호화하거나 검증한다
- 필요한 경우 신뢰할 수 있는 제3자가 키 배포나 중재 등을 지원한다
적용한 보안 기능에 따라 제공되는 보호는 달라진다
- 암호화: 권한이 없는 사람이 메시지 내용을 알아보기 어렵게 하여 기밀성을 보호한다
- 전자서명: 메시지의 무결성과 서명자의 인증을 확인하고, 송신 사실에 대한 부인 방지를 지원한다
전자서명 자체가 메시지 내용을 숨겨 주는 것은 아니다. 기밀성도 필요하다면 암호화를 함께 적용해야 한다
5.1.2 모델을 적용할 때 필요한 사항
- 메시지 보호에 사용할 적절한 보안 알고리즘을 정한다
- 알고리즘에 필요한 키 등의 정보를 생성한다
- 통신 당사자가 필요한 키를 안전하게 배포하거나 확보하는 방법을 마련한다
- 알고리즘과 키를 올바르게 사용하기 위한 프로토콜과 절차를 정한다
비밀키는 비밀성을 유지해야 하며, 공개키는 올바른 상대의 키인지 확인해야 한다
5.2 컴퓨터 보안 모델
컴퓨터 보안 모델은 공격자가 접근 경로를 통해 시스템에 침입하거나 자원을 악용하지 못하도록 정보 시스템을 보호하는 구조를 설명한다
기본 구성 요소
| 구성 요소 | 역할 |
|---|---|
| 공격자(Opponent) | 해커와 같은 사람 또는 바이러스·웜과 같은 악성 소프트웨어 |
| 접근 경로(Access Channel) | 공격자가 정보 시스템에 접근하는 통로 |
| 게이트키퍼 기능(Gatekeeper Function) | 시스템으로 들어오는 접근이나 유입 내용을 검사하여 원치 않는 접근을 차단하는 기능 |
| 내부 보안 통제(Internal Security Controls) | 시스템 내부의 자원과 활동을 보호하는 통제 기능 |
| 정보 시스템(Information System) | 컴퓨팅 자원, 데이터, 프로세스, 소프트웨어로 구성되는 보호 대상 |
5.2.1 컴퓨터 시스템에 대한 위협
정보 접근 위협
- 공격자가 시스템의 데이터를 무단으로 열람하거나 변경하려는 위협이다
- 무단 열람은 기밀성, 무단 변경은 무결성을 침해한다
서비스 위협
- 정상적인 사용자가 시스템의 서비스를 이용하지 못하도록 방해하는 위협이다
- 주로 시스템의 가용성을 침해한다
5.2.3 원치 않는 접근에 대응하는 보안 메커니즘
게이트키퍼 기능: 예방
시스템에 접근하려는 대상이나 유입되는 내용을 검사하여 원치 않는 접근을 사전에 차단한다
- 비밀번호 기반 로그인 절차를 통해 권한이 없는 사용자의 접근을 거부한다
- 검사 기능을 통해 바이러스나 웜을 탐지하고 유입을 차단한다
게이트키퍼는 특정 장비 하나의 이름이 아니라 진입 단계에서 접근을 통제하는 기능을 뜻한다
활동 모니터링: 탐지
시스템에서 발생하는 활동을 감시하여 비정상적인 활동과 원치 않는 침입자를 발견한다
- 접속 기록과 시스템 로그를 분석한다
- 비정상적인 접근이나 자원 사용을 감시한다
- 침입 징후를 발견하면 경고하고 대응에 필요한 정보를 제공한다
게이트키퍼를 통과한 뒤에도 공격이나 악용이 발생할 수 있으므로, 진입 단계의 예방과 내부 활동의 탐지를 함께 적용해야 한다