---
# System prepended metadata

title: Extracting Cybersecurity Event Information from Text
tags: [論文閱讀]

---

# Extracting Cybersecurity Event Information from Text
從⽂字中提取網路安全事件訊息

---
## 摘要
CASIE：從⽂字中提取網路安全事件訊息
語料庫包含 1,000 篇標註豐富的基於網路攻擊和漏洞相關事件的英文**新聞文章** (2017-2019 年)
## 網路安全事件擷取
* 借用TAC常用的事件偵測術語
    * 事件核心詞組(event nugget)：事件最精準描述詞或詞組
    * 事件參數(event argument) ：事件參與者或屬性值
    * 角色(role)：事件核心詞組和參數的語義關係。
    * 實作值(realis value)：事件是否發生的指示。
![image](https://hackmd.io/_uploads/ryhnja2zC.png)
* VS 易受攻擊的系統
:::spoiler 文中範例
![image](https://hackmd.io/_uploads/H1gjM2nG0.png)
這裡事件核心詞組和參數以陰影文字顯示，類型由文字上方的彩色標籤指示，角色由標記的弧線指示。短語“被勒索”被識別為 Attack.Ransom 事件的事件核心詞組。事件參數包括“電腦”，它是一種設備並填充受害者角色；“科羅拉多州”，它是一個地理政治實體 (GPE) 並填充位置角色；“科羅拉多州運輸部”，它是一個組織，填充受害者角色；“感染勒索軟件”，類型為功能，填充攻擊模式角色；“星期三”，它是一個時間表達式，填充時間角色。
:::
## CASIE 的設計和架構
六個步驟:事件線索偵測、事件參數偵測、事件參數與角色連結、事件可能性辨識、對應到知識圖譜
![image](https://hackmd.io/_uploads/HyIZRn3MC.png)
![image](https://hackmd.io/_uploads/BkLstJaXC.png)
* 使用上下文訊息預測目標詞
* 每層節點數是前一層的一半
:::spoiler 說明
* Word Embedding layer(詞嵌入層)
    * 將單字序列作為輸入，並將每個單字轉換為實數向量，表示單字的意思。然後這些向量通常是從大量文字資料中學習的。
    * 可以預構建的 BERT 網絡或 Word2vec 嵌入
    * Word2vec: 一群用來產生詞向量的相關模型
* Bi-LSTM layer(Bi-LSTM 層)
    * 由**兩個 LSTM 層組成**，一個從左到右處理輸入序列，另一個從右到左處理序列。兩個 LSTM 層的輸出連接在一起。
    * 雙向 LSTM 用於分類事件片段和事件參數類型
* Attention layer(注意力層)
    * 僅應用於事件參數檢測系統
    * attention size of five gave the best performance
        * 大小:參數個數或者向量的維度
    * 負責分配權重，就是找重點
* Fully connected layer with Dropout(帶有 Dropout 的全連接層)
    * 採用Attention layer的輸出，並應用 Dropout 正則化技術，在訓練過程中隨機丟棄該層中一定比例的神經元。這有助於防止過度擬合並提高泛化性能。
    * Dropout: Google提供的正規化技術，負責對抗過擬合
    * 泛化: 將訓練的模型應用新樣本值的預測
* CRF layer(CRF層)
    * 條件隨機場，它是一種機率圖形模型，可用於預測標籤序列。在本例中，CRF 層用於預測網路安全事件的標籤。
:::
步驟:
1. Word Embedding layer: 輸入轉向量
2. Bi-LSTM layer: 分類事件片段和事件參數類型
3. Attention layer: 分配權重
4. Fully connected layer with Dropout: 防止過擬合
5. CRF layer: 預測事件標籤
* 過擬合會記住訓練數據的細節造成在新數據來的時候表現不好
### 事件參數和角色連接
* 角色可能是攻擊者或受害者之類的
* 為每個事件構建了一個神經網路
![image](https://hackmd.io/_uploads/SJ5hYJa70.png)
* 作者開發的神經網路架構
* 作用就是用事件類型把事件參數跟事件金塊連接的角色確定
* 因為先知道事件類型了所以可以先消除無關角色
* 輸出層節點的數量減少到每個事件的角色數量
* 整個過程就是確定角色

### 事件實現識別
* 識別了事件金塊的實現值。每個事件金塊都標註有一個實現值
    * 實現值: 表明事件的實例是真的發生（Actual）、沒有發生（Other），還是事件被引用為概念（Generic）。
:::spoiler 舉例
真的發生（Actual）：Facebook承認他們被一宗涉嫌僞造的釣魚騙局所騙走了一億美元的現金。
沒有發生（Other）：蘋果尚未澄清最新版本的 macOS 和 iOS 是否存在漏洞。
概念（Generic）：釣魚行為已成為對醫療組織最嚴重的威脅之一。
:::
* 事件實現識別特徵
    * 實現的特徵向量是事件金塊及其周圍詞彙上下文的詞向量的串聯
    * 步驟
        1. 將事件金塊分類為一般或非一般
        2. 如果是非一般，進一步分類為實際或其他
        * 一般: 通用的情況或概念
        * 非一般: 事件實例
### 資料與標註
* 從2017~2019期間的約5000篇網路安全新聞文章
* 當事件金塊從上下文片辨識出事件時才能標註事件參數(就是時間地點角色那些的)
* 收集->標註->統計->產生下圖
![image](https://hackmd.io/_uploads/Bklku4OXA.png)
* 語料庫中網路事件實例的數量及每個事件的註釋⾓⾊的平均數量
#### 舉例
* 駭客已經偷了重要文件。這些文件已在暗網上出售。
    * Attack.Databreach(攻擊、資料外洩):「偷了」、「出售」
* Facebook 發現了一個安全問題，允許駭客訪問敏感訊息。
    * Discover.Vulnerability (發現漏洞)
    * Capabilities(攻擊模式):允許駭客訪問敏感訊息
## 名詞
### 嵌入
* 將高維度的數據（ex: 詞語、句子、圖像）轉換為低維度的數學向量表示的過程
* 更有效進行分類、聚類、回歸
### 維度
* 向量的大小或元素數量
* 維度越多，可以捕捉的訊息就越多
* ex: 
    * Domain-Word2vec：這個模型生成的每個詞嵌入向量有 100 個元素，也就是 100 維度
### 向量
* 表示為一個有限維度的數組，每個維度都對應著某種特徵或訊息
* 詞嵌入中，每個單詞都可以表示為一個向量，每個維度代表了那個單詞在某種語義空間中的**特徵**(單詞的語義相似性、出現的上下文情境)
### 事件金塊（event nugget）
* 有關某個事件的重要訊息的文本片段
### 共指
* 文本中的兩個詞或短語具有相同的參考對象叫共指
### Inside–outside–beginning (tagging)
* 也就是IOB 或 BIO 格式
* 從給定句子中抽取連續字/詞塊構成的有意義短語
* 對於一個給定句子，將其中每個字標註為B（**Beginning**，指示某短語起始）、I（Inside，指示片語內部）、O（Outside，指示不在片語中）
* 舉例: 小明是景美女中的老師
     -> B-PER 小明 B-ORG 景美女中 I-ORG 中的 I-PER 老師
    :::spoiler 說明
    B-PER 表示 "小明" 是人名 (PER) 實體的開頭。
    I-PER 表示 "明" 是與前一個字相同的 "小明" (PER) 實體的一部分。
    B-ORG 表示 "景美女中" 是機構 (ORG) 實體的開頭。
    I-ORG 表示 "中的" 和 "老師" 是與前一個字相同的 "景美女中" (ORG) 實體的一部分。
    ![image](https://hackmd.io/_uploads/SJvZWJpG0.png)
    :::
### CNN (卷積神經網路)
[連結](https://brohrer.mcknote.com/zh-Hant/how_machine_learning_works/how_convolutional_neural_networks_work.html)
### LSTM
* 簡單來說就是會看上下文的
[連結](https://ithelp.ithome.com.tw/articles/10297813)
### CoreNLP
* 使用戶能夠導出文字的語言註釋，包括標記和句子邊界、詞性、命名實體、數字和時間值、依存關係和選區解析、共指、情緒、屬性引用和關係。
[連結](https://blog.csdn.net/smallworldxyl/article/details/114983061)
### CRF layer