Internet RFCのセキュリティ面を分析するためのオリジナル論文とヘルパースクリプト。
このリポジトリには、RFCのスタイルで書かれたRFCセキュリティのレビューに加えて、基礎となる分析に必要なデータを取得し、RFCコーパスのグラフデータベース分析をサポートするために必要なCypher(neo4jグラフデータベース)コードを生成するために使用された、さまざまなPythonヘルパースクリプトが含まれています。
このリポジトリ内のスクリプトは、ホワイトペーパーに必要な情報を抽出し、それらを(この例では)neo4jグラフデータベースへのインポートに使用できるCSV形式にする、単なる簡易スクリプトです。抽出するデータの点では決して網羅的ではないため、例/テンプレートとしてのみ機能します。
RFC間のメール関係と廃止関係を抽出するには、RFCコーパスに対して以下のスクリプトを実行します。これにより、関係のCSVファイルが生成されます。
https://github.com/m4ttl/RFC-Security-Research/blob/main/RFC%20Email%20Processing/email-Cypher.py https://github.com/m4ttl/RFC-Security-Research/blob/main/RFC%20Precedent%20Processing/parsejsoncypher.py
次に、CSVファイルを以下のようにneo4jにインポートします。
MERGE (rfc:RFC {name: csvLine.rfc})
MERGE (email:Email {name: csvLine.email})
CREATE (email)-[:CONTRIBUTED_TO]->(rfc)
廃止関係については、以下のようにneo4jにインポートします。
LOAD CSV WITH HEADERS FROM 'file:///standalone.csv' AS csvLine
MERGE (rfc:RFC {name: csvLine.rfc, title: csvLine.title})
LOAD CSV WITH HEADERS FROM 'file:///updated_by.csv' AS csvLine
MERGE (rfc:RFC {name: csvLine.rfc, title: csvLine.title})
MERGE (updaterfc:Updaterfc {name: csvLine.updatedby})
CREATE (rfc)-[:UPDATED_BY]->(updaterfc)
LOAD CSV WITH HEADERS FROM 'file:///updates.csv' AS csvLine
MERGE (rfc:RFC {name: csvLine.rfc, title: csvLine.title})
MERGE (updatesrfc:Updatesrfc {name: csvLine.updates})
CREATE (rfc)-[:UPDATES]->(updatesrfc)
LOAD CSV WITH HEADERS FROM 'file:///obsoleted_by.csv' AS csvLine
MERGE (rfc:RFC {name: csvLine.rfc, title: csvLine.title})
MERGE (obsoletedbyrfc:Obsoletedbyrfc {name: csvLine.obsoletedby})
CREATE (rfc)-[:OBSOLETED_BY]->(obsoletedbyrfc)
LOAD CSV WITH HEADERS FROM 'file:///obsoletes.csv' AS csvLine
MERGE (rfc:RFC {name: csvLine.rfc, title: csvLine.title})
MERGE (obsoletesrfc:Obsoletesrfc {name: csvLine.obsoletes})
CREATE (rfc)-[:OBSOLETES]->(obsoletesrfc)
その後、ホワイトペーパーに記載されているさまざまなクエリを使用して、必要な情報を照会し、目的とする関係の連結グラフを作成することができます。
関連する要約ブログ記事: https://research.nccgroup.com/?p=6870