택소노미, 시소러스, 온톨로지란?
목차
English version: What Are Taxonomy, Thesaurus, and Ontology?
택소노미, 시소러스, 온톨로지는 모두 개념을 정리하는 방법이라 섞어 쓰기 쉽다.
하지만 셋이 표현할 수 있는 범위는 다르다.
시소러스는 택소노미를 포함하고, 온톨로지는 시소러스를 포함한다.
이 글에서는 보안 위협 분류라는 같은 예로 셋을 차례로 살펴본다.
택소노미란?
택소노미는 개념을 상하 관계 하나로만 나눈 분류 체계다.
보안 위협을 분류하면 이런 트리가 된다.
보안 분야의 표준 분류도 이런 구조다.
OCSF는 보안 이벤트를 범주와 클래스로, MITRE ATT&CK은 공격을 전술과 기법으로 나눈다.
OCSF(Open Cybersecurity Schema Framework)는 보안 이벤트를 어떤 필드로 적을지 정한 공개 스키마로, 이벤트를 범주와 클래스로 나누고 숫자 ID를 붙인다.
MITRE ATT&CK은 실제 공격에서 관찰된 공격자의 전술과 기법을 정리한 지식 베이스다.
택소노미로는 “랜섬웨어는 악성코드의 한 종류다” 같은 관계를 표현할 수 있고, 분류별로 걸러 보거나 개수를 세는 데는 이것으로 충분하다.
다만 같은 위협이라도 분류 체계마다 부르는 이름이 다르다.
OCSF는 악성코드 분류를 숫자 코드 10(Ransomware)으로 적고, ATT&CK은 이 공격의 핵심 행위를 기법 T1486(Data Encrypted for Impact)으로 적는다.
택소노미만으로는 이것들이 “랜섬웨어”와 이어진다는 것을 표현할 수 없다.
택소노미의 각 개념에는 이름이 하나뿐이다.
시소러스란?
시소러스는 택소노미에 같은 뜻의 이름과 관련된 개념을 더한 것이다.
국제 표준은 ISO 25964이고, 웹에서는 W3C의 SKOS로 적는다.
SKOS에서는 대표 이름(prefLabel)과 다른 이름(altLabel), 상위·하위 개념(broader, narrower), 관련 개념(related)을 적는다.
SKOS(Simple Knowledge Organization System)는 시소러스나 분류 체계 같은 지식 조직 체계를 웹에서 공유하고 서로 잇기 위한 W3C 표준 데이터 모델이다.
아래 그림과 코드에 나오는 ex:ransomware는 “랜섬웨어”라는 개념을 가리키는 식별자다.
사람이 읽는 이름(prefLabel)과 별개로, 기계가 개념 하나를 헷갈리지 않고 가리키도록 붙이는 고유한 주소(IRI)를 줄여 쓴 것이다.
앞의 ex:는 http://example.org/ 같은 예시용 주소를 줄인 접두어로, ex:ransomware는 http://example.org/ransomware라는 주소를 뜻한다.
같은 방식으로 skos:는 SKOS 어휘의 주소를 줄인 것이고, ocsf:와 attack:은 이 글에서 OCSF와 ATT&CK의 값을 가리키려고 붙인 접두어다.
SKOS로 서로 다른 분류 체계끼리 대응시킬 수도 있다.
각 분류 체계를 하나의 concept scheme으로 두고, 개념끼리 대응하는 관계를 mapping 속성(exactMatch, closeMatch, broadMatch, narrowMatch, relatedMatch)으로 적는다.
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix ex: <http://example.org/> .
@prefix ocsf: <http://example.org/ocsf/> .
@prefix attack: <http://example.org/attack/> .
# OCSF: 악성코드 분류를 숫자 코드로 적는다
ocsf:malware-10 a skos:Concept ;
skos:inScheme ocsf:malwareClassification ;
skos:prefLabel "Ransomware"@en ;
skos:notation "10" .
# MITRE ATT&CK: 공격 행위를 기법으로 적는다
attack:T1486 a skos:Concept ;
skos:inScheme attack:techniques ;
skos:prefLabel "Data Encrypted for Impact"@en ;
skos:notation "T1486" .
# 기준 분류의 "랜섬웨어"에서 다른 체계로의 대응
ex:ransomware skos:exactMatch ocsf:malware-10 .
ex:ransomware skos:relatedMatch attack:T1486 .
OCSF와 ATT&CK이 SKOS로 배포되는 것은 아니다.
위 코드는 각 체계의 값을 개념으로 두고 대응을 적는 방법을 보이려고 만든 예다.
각 분류는 그대로 두고, 어떤 개념끼리 대응하는지만 따로 적는다.
대응의 정도에 따라 mapping 속성을 골라 쓴다.
OCSF의 Ransomware는 랜섬웨어와 같은 개념이라 exactMatch로 적었다.
ATT&CK의 T1486은 랜섬웨어가 쓰는 대표 기법이지만, 기법과 악성코드의 종류는 같은 개념이 아니라서 relatedMatch로 적었다.
둘을 구분해야 하는 이유는 exactMatch에만 전이(transitivity)라는 성질이 있기 때문이다.
전이는 A와 B가 같고 B와 C가 같으면, A와 C도 같다고 보는 성질이다.
SKOS에서는 exactMatch만 이 성질을 가지고, closeMatch나 relatedMatch 같은 나머지 mapping 속성은 가지지 않는다.
그래서 완전히 같지 않은 개념을 exactMatch로 이으면, 아래 그림처럼 가운데 개념을 거쳐 서로 다른 개념까지 같은 것으로 묶인다.
Wiper는 데이터를 지우거나 망가뜨려 못 쓰게 만드는 악성코드로, OCSF 악성코드 분류에서 21번이다.
온톨로지란?
시소러스는 개념 사이의 관계(상위, 하위, 관련, 대응)만 표현한다.
”탐지에는 출발지 IP가 있다”, “IP는 호스트에 할당된다”처럼 개념이 무엇을 가지는지는 표현하지 않는다.
그래서 “이 탐지의 출발지 IP는 어느 호스트에 할당돼 있고, 그 호스트에서 다른 탐지가 있었나” 같은 질문에는 답할 수 없다.
온톨로지는 여기에 개념의 속성과 개념 사이의 관계, 그리고 추론 규칙을 더한다.
웹에서는 RDFS와 OWL로 적는다.
RDFS(RDF Schema)는 RDF 데이터에서 쓸 클래스와 속성, 그 사이의 상하 관계를 정의하는 W3C 언어이고, OWL(Web Ontology Language)은 그보다 풍부한 논리로 클래스와 속성을 정의해 추론기가 결론을 끌어낼 수 있게 하는 W3C 온톨로지 언어다.
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix ex: <http://example.org/> .
ex:sourceIP a owl:ObjectProperty ;
rdfs:domain ex:Detection ; rdfs:range ex:IPAddress .
ex:assignedTo a owl:ObjectProperty ;
rdfs:domain ex:IPAddress ; rdfs:range ex:Host .
ex:RansomwareDetection rdfs:subClassOf ex:MalwareDetection .
ex:MalwareDetection rdfs:subClassOf ex:Detection .
첫 번째 정의는 “탐지는 출발지 IP를 가진다”, 두 번째는 “IP는 호스트에 할당된다”는 뜻이다.
이렇게 관계가 정의되어 있으면 탐지에서 IP로, IP에서 호스트로, 다시 그 호스트와 연결된 다른 탐지로 따라가며 질의할 수 있다.
나머지 두 줄은 추론 규칙이다.
랜섬웨어 탐지가 악성코드 탐지의 하위 클래스라고 정의했으므로, 추론기는 랜섬웨어 탐지로 분류된 탐지 케이스 A를 악성코드 탐지로도 판단한다.
택소노미의 상하 관계가 단순한 분류였다면, 온톨로지의 상하 관계는 기계가 결론을 끌어낼 수 있는 규칙이다.
세 개념 비교
| 택소노미 | 시소러스 | 온톨로지 | |
|---|---|---|---|
| 표현하는 것 | 상하 분류 | + 같은 뜻의 이름, 관련 개념, 다른 체계와의 대응 | + 개념의 속성, 개념 사이의 관계, 추론 규칙 |
| 표준 | 따로 없음 | ISO 25964, SKOS | RDFS, OWL |
| 예 | 위협 › 악성코드 › 랜섬웨어 | 랜섬웨어 = Ransomware = OCSF 10, ATT&CK T1486과 관련 | 탐지 → 출발지 IP → 호스트, 랜섬웨어 탐지 subClassOf 악성코드 탐지 |
| 대응 가능한 질문 | 랜섬웨어는 어떤 위협의 한 종류인가? | OCSF의 10번은 기준 분류의 어느 개념과 같은가? | 이 탐지의 출발지 IP는 어느 호스트에 할당돼 있나? |
정리
분류해서 걸러 보고 세기만 하면 되면 택소노미로 충분하다.
같은 개념을 여러 이름이나 여러 분류 체계로 받아야 하면 시소러스가 필요하다.
개념이 무엇을 가지는지 따라가며 묻거나, 정의에서 결론을 끌어내야 하면 온톨로지가 필요하다.
셋은 경쟁하는 방법이 아니라, 필요한 표현이 늘어날 때마다 택소노미 위에 시소러스를, 시소러스 위에 온톨로지를 한 층씩 얹는 관계다.
참고
- W3C, SKOS Simple Knowledge Organization System Reference https://www.w3.org/TR/skos-reference/
- W3C, RDF Schema 1.1 https://www.w3.org/TR/rdf-schema/
- W3C, OWL 2 Web Ontology Language Document Overview https://www.w3.org/TR/owl2-overview/
- ISO 25964-1:2011, Thesauri and interoperability with other vocabularies - Part 1 https://www.iso.org/standard/53657.html
- OCSF Schema 1.3.0, Detection Finding https://schema.ocsf.io/1.3.0/classes/detection_finding
- OCSF Schema 1.3.0, Malware 객체 https://schema.ocsf.io/1.3.0/objects/malware
- MITRE ATT&CK https://attack.mitre.org/
- MITRE ATT&CK, T1486 Data Encrypted for Impact https://attack.mitre.org/techniques/T1486/