仕様
TAEF 仕様 0.3-draft
TAEF の正式な規則です。0.3-draft の全文を掲載しています。
1仕様の範囲
TAEF は、TAEC のエビデンスを使って、「この攻撃を誰がやったか」を、二軸で定量的にアトリビューションするためのフレームワークである。攻撃は活動モデルとして表す。一つの軸は関連で、その攻撃がどの攻撃者の攻撃と、何が同じかを示す。もう一つの軸は特定で、関連とは別に、どんな主体か(素性、身元、指示主体)を示す(3 章)。定量的とは、二軸のそれぞれを、エビデンスの段階と、それを支える独立した収集元の数で測ることをいう(5 章、6.4、7 章)。二軸や帰属対象を足し合わせて、一つの点数にはしない。対象は技術的、運用的な帰属に限る。国家の公式見解、国際法上の責任、制裁や訴追の正当性は、TAEF だけでは決めない。指示主体は、権限のある機関の公式見解を記録して答える(3.6)。
TAEF は攻撃者を自動で決める仕組みではない。TAEF の答えは、関連と特定が、どの段階のエビデンスに、いくつの独立した収集元から支えられているかを測った結果である(7 章)。偽装や共有の起こりやすさは、記録の重みと特定の段階で割り引く(5 章)。ただし、目の前の事例で偽装や共有が実際に起きたかは判定しない。測った結果をもとに攻撃者を名指すか、答えを検知、通知、公表のどれに使うかは、答えを使う組織が決める。
この仕様で「規則」として挙げた項目は、TAEF に従う分析と実装がすべて満たす。「推奨」と書いた項目は、理由を記録すれば省略できる。
TAEF は、分析者が手作業で使うことを前提にする。この仕様は、各段階で何を書き留めるかを定めるが、書き留める形式(項目名やデータ形式)は定めない。手順が固まった後に、それを機械で処理できるよう、比較を助ける仕様(CMP)を設計する。
1.1 ダイヤモンドモデルとの関係
この節は参考であり、規則ではない。
ダイヤモンドモデル1は、侵入の一つひとつのイベントを、攻撃者(adversary)、能力(capability)、インフラ(infrastructure)、被害者(victim)の四つの要素とその関係で表すモデルである。イベントを攻撃の段階に沿って並べた活動のスレッド(activity thread)と、特徴の似たイベントやスレッドをまとめた活動のグループ(activity group)を使い、侵入の分析から防御の計画までを扱う。
TAEF はダイヤモンドモデルを置き換えるものではない。ダイヤモンドモデルは、イベントを記録し、関連する要素を探すための枠組みである。TAEF は、攻撃の帰属を関連と特定の二軸で測り、測った結果を答えとして残すための手順である。併せて使うときは、ダイヤモンドモデルで記録したイベントの特徴を TAEF のエビデンス記録にし、活動のグループを TAEF の活動モデルとして扱う。
二つの違いが最も大きいのは、出力として何が残るかである。ダイヤモンドモデルの出力は、一つのイベントを四つの要素で表した記述(ダイヤモンドの図)である。要素の中身は、分析者が必要な細かさで書き(4.2、4.3)、確信度の中身や特徴の重みは、実装や今後の研究に委ねている(4 章、9.2)。そのため、攻撃者についてどこまで言えるかを、分析者や組織のあいだで同じ物差しで示しにくい。TAEF の出力は、攻撃を表す活動モデルと、その帰属を関連と特定の二軸で測った結果である。関連は相手のモデルごと、帰属対象ごとに、特定は素性と身元の値ごとに、エビデンスの段階と、それを支える独立した収集元の数で測る。すべての観測を TAEC のエビデンス型に結び付けて記録し、段階の決め方と数え方を定めているので、分析者や組織が変わっても、同じ物差しで測った結果が残る。測った結果はモデルに残り、記録が加わるたびに測り直せる。
| 観点 | ダイヤモンドモデル | TAEF |
|---|---|---|
| 出力の単位 | 一つのイベント(四つの要素と追加の特徴)。イベントを並べた活動のスレッドと、まとめた活動のグループ | 攻撃を表す活動モデル(L2)と主体モデル(L3)、主体のまとまり。活動モデルと主体モデルは、関連と特定を測った結果を持つ(6.1、6.8、6.10、7 章) |
| 中身の書き方 | 要素ごとに、分析者が必要な細かさで書く(4.2、4.3) | 観測一件ごとに、TAEC のエビデンス型に結び付けたエビデンス記録として書く(4.1) |
| 問い | 活動のグループを作る最初の段階で、分析者が分析の問いを決める(9.1) | TAEF が決める。どの分析でも、攻撃を誰がやったかを関連と特定の二軸で問い、分析者は分析の範囲を決める(2.1) |
| 帰属の測り方 | 分析の問いごとに、比べる特徴と重みを選び、似たものをまとめる(9.1、9.2、9.3) | 関連は、相手のモデルの同じエビデンス型の記録と、記録に付けた重みで帰属対象ごとに比べ、段階と独立した収集元の数を出す。特定は、推した素性と示した身元を、値ごとに段階と数でまとめる(5 章、6.4、7 章) |
| 測るのに要る来歴 | データの出所は、加えてよい特徴の一つ(4.5) | 記述の種類、収集元、依存グループを必ず持ち、収集元の数え方と比較の規則で使う(4.1、6.4、6.5) |
| まとまりの更新 | 新しいイベントをグループに分類し、誤りが見つかれば作り直す(9.4、9.6) | 比較を関連の型で読み、同じキャンペーンなら統合し、同じ運用主体なら主体モデルに束ねて、モデルの関連と特定を測り直す(6.3、6.6、6.8、7 章) |
ダイヤモンドモデルの要素と、TAEF の役割、関連と特定は、次のように対応する。
| ダイヤモンドモデルの要素 | TAEF の役割 | 関連(帰属対象) | 特定(素性、身元、指示主体) |
|---|---|---|---|
| 能力 | 開発、運用 | same-tool-lineage、same-developer、same-tradecraft | 開発者の素性と身元 |
| インフラ | インフラ | same-infrastructure | インフラを用意した者の素性と身元 |
| 攻撃者のうち、実際に侵入する者(adversary operator) | 運用 | same-operator | 運用者の素性と身元 |
| 攻撃者のうち、活動から利益を得る者(adversary customer) | 目的 | なし | 指示主体 |
| 被害者 | 目的 | same-objective | 関心(interest) |
ダイヤモンドモデルの能力は、ツールと手口の両方を含む。TAEF はこれを、ツールを作る側(開発)とツールを使う側(運用)に分けて比べる。請負業者が作ったツールを複数の運用主体が使う場合を、ツールの一致と運用の一致に分けて読むためである。ダイヤモンドモデルの活動のグループ(activity group)は TAEF の活動モデルと主体モデルに、活動のグループをさらに束ねる上位のまとまり(activity group family、9.7)は主体のまとまり(6.10)にあたる。
攻撃者の要素について、TAEF は、二つの活動で何が同じか(関連)とは別に、主体の所在、言語、関心(素性)、実在の身元、指示主体を、特定として扱う(3 章)。
ダイヤモンドモデルは、帰属の判断に関わる次の点を、実装や今後の研究に委ねている。TAEF は、それぞれを次のように定める。
| 論点 | ダイヤモンドモデル | TAEF |
|---|---|---|
| 確信度 | 各特徴に確信度を付けるが、その中身は実装ごとに違ってよいとして、意図して定めていない(4 章) | 確信度は付けない。関連と特定を、エビデンスの段階(strong、medium、weak)と、それを支える独立した収集元の数で測り、段階の決め方と収集元の数え方を定める(5 章、6.4、7 章) |
| 情報の出所 | データの出所は、組織の必要に応じて加えてよい追加の特徴の一つである(4.5) | 記述の種類、収集元、依存グループを必ず書き留め、独立性の判断に使う(4.1、4.2)。第三者の帰属や類似の評価は、エビデンス記録にしない(4.4) |
| 特徴の重み | 分析の問いごとに、特徴ごとに一つの重みを付けてよい。特徴の選び方と重みの決め方は、今後の研究に残している(9.2) | エビデンス記録に、届く帰属対象ごとに、一致したときと食い違ったときの重みを付け、推した素性と示した身元には特定の段階を付ける。分析する人が記録ごとに、型の性質を出発点に記録の中身から決めて、理由を書き留める。重みと段階は記録を作るときに付くので、比べる前に決まる(5 章) |
| 共有と偽装による誤ったまとめ | 公開されたツールや共有のホスティングによる重なり、攻撃者の偽装が、誤ったまとめの原因になると注意する。防ぐ方法の比較は今後の課題としている(9 章の注 21、9.6) | 記録の重みと特定の段階で、偽装の手間と共有されやすさを割り引く(5 章)。比較の規則で、同じ出所の重複、共有の収集元、入れ替えの早い特徴、偽装しやすい一致を扱い(6.5)、関連の型で、ツールの共有と同じ運用主体を読み分ける(6.6) |
| 何が同じかの区別 | 活動のグループは特徴の似たイベントのまとまりで、何を同じとみなすかは分析の問いで決まる。攻撃者は、侵入する者と利益を得る者に分ける(4.1、9 章) | 答えを関連と特定に分ける。関連は帰属レベル(L0 から L3)と帰属対象で、ツールの系譜、活動、運用主体を分けて測る。特定は、そのモデルの記録で答え、関連の相手の素性と身元は引き継がない(3 章、7 章) |
| まとめ方の記録 | 分類の誤りを示す証拠が見つかったら、グループを作り直す(9.6) | 統合、分割、束ねを、根拠にした比較の結果と関連の型、理由とともに、モデルの履歴に残す(6.3、6.8、6.10) |
一方、次の点はダイヤモンドモデルが扱い、TAEF は扱わない。
- イベントの記録と、攻撃の段階に沿った並べ方(活動のスレッド、活動と攻撃のグラフ)
- 一つの要素から関連する要素を探すこと(ピボット)
- 仮説を立てて確かめること(ダイヤモンドモデルは、ACH などの方法を使えるとする)
- 被害者の側からの分析と、防御の計画
1 Sergio Caltagirone、Andrew Pendergast、Christopher Betz、The Diamond Model of Intrusion Analysis、2013 年。表の括弧内の章番号は、ダイヤモンドモデルの列ではこの文書の、TAEF の列ではこの仕様の番号である。 ↩
2分析の流れ
TAEF の分析は、観測をエビデンス記録にして活動モデルを作り、関連と特定を、段階と独立した収集元の数で測る。
関連は、相手のモデルとどこでどれだけ似ているかを、重みを使って帰属対象ごとに比べ、段階と独立した収集元の数で測る。比べた結果は関連の型として読み(関連の候補)、同じキャンペーンと読めたモデルは統合し、同じ運用主体と読めたモデルは主体モデルに束ねて、測り直す。特定は、比較を経ずに、記録が推した素性と示した身元を、値ごとに段階と数でまとめる。重みと段階は、偽装や共有の起こりやすさを割り引くが、目の前の事例で偽装や共有が実際に起きたかは判定しない。そのため、答えには、測った段階と数をそのまま書く(1 章、7 章)。比べる相手(2.1)がなければ、比較と関連の候補を飛ばして特定だけを測り、関連は答えられなかったこと(7 章)に書く。
分析の答えは、帰属する攻撃(2.1)を含む活動モデルが持つ関連と特定(7 章)である。統合したときは、統合したモデルが答えを持つ。主体モデルに束ねたときは、主体モデルの運用の素性と身元を、主体モデルの答えとして添える(7 章の規則 2)。関連と特定は段階と独立した収集元の数で書き、答えられなかったことも理由とともに書く。TAEF の出力は、答えを持つ活動モデル(6.1)と主体モデル(6.8)、主体モデルをまとめた主体のまとまり(6.10)である。統合、分割、束ねは、答えを持つモデルを整える作業であり、その結果は、モデルの形と、モデルの履歴や関連として残る。モデルは、分析の中ではワーキングに置き、作った人以外の確認を経てコーパスに登録すると、ほかの分析が比べる相手として繰り返し使える(6.11)。
TAEF は次の四つのモジュールからなる。
| モジュール | 定めること |
|---|---|
| エビデンス記録 | 観測の記録の仕方、来歴、独立性、つなぐ効き方と特定する効き方 |
| 重みと特定の段階 | エビデンス記録に付ける、帰属対象ごとの重みと特定の段階、その決め方 |
| 活動モデルと比較 | 活動モデル、主体モデル、主体のまとまりの作り方と育て方、外部の呼び名、ワーキングとコーパス、比較の結果と独立した収集元の数え方、比較の規則、関連の型 |
| 関連と特定の書き方 | 答えの書き方と、答えられなかったことの書き方 |
2.1 分析の範囲
TAEF の問いは、どの分析でも同じであり、分析者は選ばない。帰属する攻撃を誰がやったかを、関連と特定の二軸で問う(1 章、3 章)。関連は、比べる相手ごとに、同じ運用主体か(L3)までの細かさで、何が同じかを問う(3.1、3.2)。特定は、素性(location、language、interest)、身元、指示主体のすべてを問う(3.4〜3.6)。答えの出なかったものも、答えられなかったこととして理由とともに書く(7 章)。問いを分析ごとに選ばないのは、問いから外したものは答えられなかったことにも残らず、答えにくいものを初めから外しても、後から気づけないためである。答えの形が分析ごとに変わると、同じ物差しで測った結果として比べることもできなくなる(1.1)。答えをどこに使うか(検知、通知、公表)は、TAEF では決めない(1 章)。
分析者は、分析を始める前に、分析の範囲を決める。どの資料を使うかは結論を左右するので、使わなかった資料も含めて残し、後から検証できるようにする。
分析の範囲には、次を書き留める。
- 帰属する攻撃。答えを求める活動
- 比べる相手。探した範囲(ワーキングとコーパスの活動モデルと主体モデルを含む)で見つかった活動とモデルと、指示主体の公式見解が対象にした活動
- 情報源を探した範囲。比べる相手と、特定の材料(指示主体の公式見解、名義を確かめる記録など)のそれぞれについて、探した場所、期間、探し方。コーパスを探したときは、コーパスの版(6.11)
- 使った資料と、使わなかった資料。使わなかった理由(転載、範囲外、入手できないなど)
- 前提と制約。入手できない検体やログ、使えない手段、調べないと決めたことなど
- 問いの一部を、分析ごとに外さない。調べられないことや、調べないと決めたことは、前提と制約に書く。答えられなかったこと(7 章)には、調べられないことは材料なし、調べないと決めたことは調べていない、として書く。
- 比べる相手は、探した範囲で見つかった活動とモデルのすべてとする。指示主体の公式見解(3.6)を記録したときは、公式見解が対象にした活動も比べる相手に入れる。見つからなければ「なし」とする。転載などで比べないものは、使わなかった資料として理由を書く。
- 既知の攻撃グループの名前を、答えの正解として扱わない。名前から探すときは、その名前で各社が指している個々の活動を比べる相手にし、名前は外部の呼び名(6.9)として扱う。
- 範囲を変えるときは、理由を書き、版を改める(8 章)。結論を見てから、都合のよい資料だけに範囲を狭めない。
- 使わなかった資料に、使った資料と食い違う観測があるときは、使わなかった理由にかかわらず書き留める。
3関連と特定
TAEF は、「この攻撃を誰がやったか」への答えを、関連と特定の二つで示す。関連は、既知の活動や主体と何が同じかを、帰属対象(3.2)の語で表す。特定は、どんな主体かを、素性(3.4)、身元(3.5)、指示主体(3.6)で表す。TAEC の観測事例が持つ帰属対象(attribution_scopes)と特定(identifies)の欄も、同じ語を使う。
| 答え | 答えること | 内訳と使う語 | 定める節 |
|---|---|---|---|
| 関連 | 既知の活動や主体と同じ者か。同じなら、何が、どの細かさで同じか | 帰属対象の 7 語(same-artifact から same-objective)。細かさは帰属レベル(L0 から L3) | 3.1、3.2 |
| 特定 | どんな主体か。どこで働き、どの言語を使い、何を求めるか。どの実在の個人や組織か。誰の指示や資金で活動しているか | 素性(location、language、interest)、身元(identity)、指示主体(sponsor) | 3.4、3.5、3.6 |
関連と特定のあいだに上下はなく、どちらも、それを示す記録で答える(4.1)。特定はそのモデルの記録から測り、関連の相手の素性と身元は引き継がない(7 章)。どちらも、段階と、それを支える独立した収集元の数で測り、二つを足し合わせて一つの点数にはしない(5 章、6.4、7 章)。片方が分からなくても、もう片方は答えられる。特定の素性、身元、指示主体は、根拠の求め方がそれぞれ違うので、別々に答える(3.4〜3.6)。このうち一つが分からなくても、ほかは答えられる。
役割(3.3)は、関連と特定の答えが、攻撃に関わるどの立場の者についての答えかを表す。
3.1 帰属レベル
帰属レベルは、関連として、何が同じかの細かさを表す。確実さや重大さの順位ではない。
| レベル | 対象 | 関連の例 |
|---|---|---|
| L0 | ファイル、鍵、アカウント、ホストなどのアーティファクト | A と B は同じアーティファクトである |
| L1 | コード、ビルダー、ツールファミリーの系譜 | A と B は同じツールの系譜に属する |
| L2 | 時間、標的、手順、資源でまとまる活動 | イベント A から D は同じ活動である |
| L3 | 同じ運用チーム、侵入チーム、アフィリエイト | 活動 A と B は同じ運用主体が実行した |
実在の個人や組織は特定の身元(3.5)として、指示や資金を出す主体は特定の指示主体(3.6)として答える。帰属レベルの段は、これらに続かない。関連がどれだけ強くても、それだけでは身元も指示主体も答えられないためである(3.5、3.6)。
3.2 帰属対象
TAEC の各エビデンス型には、帰属対象(attribution_scopes)が付いている。帰属対象は関連の語彙であり、その型の観測が二つの活動で一致したときに、何が同じだと示唆するかを表す。TAEC の観測事例にも、その事例で観測が根拠として届いた帰属対象が付いている。TAEF は帰属対象を、重みの軸、役割の判定、関連の型の読み取り、関連の答えの書き方(7 章)の四つに使う。
| 帰属対象 | 意味 | レベル | 役割 |
|---|---|---|---|
same-artifact | 同じファイル、データ | L0 | なし(種を作るときに使う) |
same-tool-lineage | 同じツール、コードの系譜 | L1 | 開発 |
same-developer | 同じ者がツールやマルウェアを作っている | L3 | 開発 |
same-infrastructure | 同じ者がインフラを管理している | L2 | インフラ |
same-tradecraft | 同じやり方で運用している(手順、ツールを使う側が決める設定値、運用上の選択) | L2 | 運用 |
same-operator | 同じ者が侵入して操作している | L3 | 運用 |
same-objective | 同じ標的選定、情報要求 | L2 | 目的 |
same-developer と same-operator は、どちらも同じ者かを問う L3 の帰属対象で、ツールを作る者(開発)と侵入して操作する者(運用)のどちらが同じかで分ける。請負業者や販売元が作ったツールを複数の運用主体が使うことがあるので、開発者が同じでも、運用者が同じとは限らない。same-infrastructure を L3 に置かないのは、インフラを管理する者が攻撃者自身ではなく、ホスティングやインフラ貸し出しの業者であることがあるためである。
契約者の名義、支払い元、コード署名証明書の発行先、登録者の情報などの名義は、実在の個人や組織のものと確かめられれば、特定の身元(3.5)の答えにもなる。関連では、名義もほかの値と同じく、確かめたかどうかにかかわらず、その記録の帰属対象と重みで比べる(6.5 の規則 7)。たとえば、同じ発行先のコード署名証明書の再利用(FIL-003)は、発行先を確かめていてもいなくても、その記録の帰属対象でつなぐ。偽名や盗まれた名義は別の主体でも使い回されるので、そのことは重みの理由(共有されやすさ)で扱う。
3.3 役割
役割は、エビデンスが攻撃に関わるどの立場の者の痕跡かを表す。攻撃の背後では、ツールを作る者、インフラを用意する者、侵入して操作する者、標的を決める者が別々のことがある。ランサムウェアの開発者と、それを使って侵入するアフィリエイトが別の主体である場合がその例である。役割ごとに比べれば、「ツールは共通だが運用者は別」という関連を読み取れる。役割ごとに答えれば、「ツールを作ったのは請負業者 X だが、運用者は分からない」のように、分かったことだけを答えられる。すべてを一つの点数にまとめると、この違いは見えなくなる。
- 開発:ツールやマルウェアを作る
- インフラ:サーバーやドメインを調達し、構成する
- 運用:侵入して操作し、ツールの設定値を決める
- 目的:標的を選び、指示を出す
関連では、役割は帰属対象から決まり、別に割り当てない。same-artifact は役割を持たない。素性(3.4)と身元(3.5)は帰属対象ではないので、誰の素性か、誰の身元かを、記録と答えに書く。指示主体(3.6)は、いつも目的の役割の答えである。
3.4 素性
素性は、活動の背後にいる主体が、どこで働き、どの言語を使い、何を求めているかを表す。帰属対象が、二つの活動のあいだで何が同じかを表すのに対して、素性は、一つの活動モデルや主体モデルが持つ性質である。公開報告でよく見る「中国系」「パキスタンで活動している」といった判断は、素性についての判断である。
| 素性 | 意味 | 推す材料の例 |
|---|---|---|
location | 所在。主体が働く地域(生活圏) | 作業の時間帯、休日、接続元の国、運用の拠点のネットワーク |
language | 言語背景。主体が使う言語 | 書いた文章、マルウェアやツールの文字列、言語の設定 |
interest | 関心・目的。主体が求める情報や標的 | 標的の選び方、収集の対象、実行を許す標的の条件 |
素性の項目は、TAEC と同じ三つである。TAEC の観測事例には、その事例で特定したもの(identifies)が付いており、素性はその location、language、interest にあたる。
素性は帰属レベルを持たない。何が同じかではなく、主体の性質を言うためである。
素性には、誰の素性かを添える。location と language は、開発、インフラ、運用の役割(3.3)のいずれかとし、観測から決められないときは「不明」とする。同じ活動でも、ツールを作った請負業者と、それを使う運用者とでは、所在や言語が違うことがあるためである。interest は、いつも目的の役割の素性である。
素性の観測は、特定と関連のどちらに使うかで強さが違う。素性(どこで働き、どの言語を使う主体か)を答えるときは、主な根拠になる。数か月分の作業時刻の分布や、運用者が書いた文章は、それだけで働く時間帯や使う言語を絞り込む。一方、関連(二つの活動が同じ主体か)を答えるときは弱い。同じ時間帯や言語の主体は多いためである。そのため、location と language の一致は、関連では weak までにとどめ(5.5 の規則 5)、食い違いは関連を疑う材料にする。
関連を調べるために二つのモデルの素性を比べるときは、誰の素性かに応じて、次の帰属対象の結果として扱う(6.4)。
| 素性と役割 | 比べたときの帰属対象 |
|---|---|
location、language(運用) | same-operator |
location、language(開発) | same-developer |
location、language(インフラ) | same-infrastructure |
interest(目的) | same-objective |
3.5 身元
身元は、活動の背後にいる実在の個人や組織である。企業、軍や情報機関の部隊、犯罪組織、起訴された個人などがこれにあたる。身元は、二つの活動が同じかどうかではなく、主体が誰かそのものを答える。
身元には、誰の身元かを添える。開発、インフラ、運用の役割(3.3)のいずれかとし、観測から決められないときは「不明」とする。同じ活動でも、ツールを作った請負業者、インフラを提供した企業、侵入した運用者は、別の実在の主体であることがあるためである。
身元を示すのは、名義が実在の個人や組織のものと確かめられた記録だけである(4.2 の規則 9)。確かめる方法には、事業者の本人確認や登記の記録、司法文書、通信事業者の記録などがある。偽名や盗まれた名義、登録者がプライバシー保護で隠れた記録は、身元を示さない。偽名や盗まれた名義も、関連では、ほかの値と同じく記録の帰属対象と重みで比べる(3.2、6.5 の規則 7)。
二つのモデルが同じ実在の主体に届いたことは、それぞれの身元の答えが一致したときに、両方のモデルの身元の答えに書き添える(7 章)。身元の答えが同じ実在の主体を示したことは、比較の重みでは数えず、関連にもしない。名義の値そのものの一致は、これとは別に、記録の帰属対象と重みで比べる(6.5 の規則 7)。
3.6 指示主体
指示主体は、活動を指示し、資金を出し、統制する主体である。国家や、その機関がこれにあたる。
TAEF は、指示主体を測らない。権限のある機関の公式見解を、第三者の判断(4.4)として記録し、そのまま答えに書く。答えには、発行元、日付、公式見解が対象にした活動の範囲、公式見解が示した確信度の表現、根拠の公開の度合いを書く。公式見解が対象にした活動は比べる相手に入れ(2.1)、モデルとの関連を測る(6.4)。指示主体の答えには、公式見解とともに、モデルが対象にした活動を含むならそのことを、含まないなら対象にした活動との関連を測った結果を書く(7 章)。TAEF は、指示主体の答えに段階を付けず、独立した収集元も数えない。
技術的な観測や、関連、素性、身元の答えからは、指示主体を導かない。運用者の所在や身元が分かっても、その国家が指示したとは言えないためである。
4エビデンス記録
TAEC は、エビデンス型の定義と、その限界や代替説明の解説を持つ。これに対してエビデンス記録は、一つのケースで実際に何が観測されたかを、TAEC のエビデンス型と結び付けて残す記録である。
4.1 書き留める内容
- ID:記録を参照するための ID
- エビデンス型:TAEC のエビデンス ID(例:
COD-005) - 観測:そのケースで観測した内容
- 記述の種類:
observed(直接確認した)、derived(記録した処理で導出した)、reported(第三者の技術的な観測で、自分では確かめていない)、assumed(分析上の仮定)のいずれか。reportedにできるのは、値、手順、検体の識別子など、他者が確かめられる形で書かれた観測に限る - 有効期間:観測された事象が起きた期間と、その精度
- 中身:
value(値、手順、ファイル名、文字列、検体の識別子など、観測された値)か、classification(ファミリーの名前、コードの類似など、調査元の分類や解析の判断)のいずれか - 収集元:転載や再解析をさかのぼった、最上流の収集元。調査元(観測を解析して報告した組織、つまりセンサーと分析者の系統)と、その調査(一回の侵害調査や検体の解析)の組で書き留める
- 依存グループ:同じ検体、レポート、セッションなど、同じ出所から得た観測のまとまり。同じ検体やログを別々の調査元が解析した観測も、同じ依存グループに入れる
- 重み(つなぐ効き方):記録が届く帰属対象ごとの、一致したときと食い違ったときの重み(5.2)
- 推した素性(特定する効き方):観測から推した主体の素性(3.4)。素性の項目、読んだ値(
UTC+8、ロシア語など)、読みの前提にした仮定(勤務を 8 時から 17 時とみる、など)、誰の素性か(開発、インフラ、運用、不明。interestは目的)、特定の段階とその理由(5.6)を書く。素性を推さない記録には書かない - 示した身元(特定する効き方):観測が示した名義(氏名、組織名、支払い元、証明書の発行先など)、誰の身元か(開発、インフラ、運用、不明)、実在の個人や組織のものと確かめたか、確かめた方法(3.5)、特定の段階とその理由(5.6)。名義を示さない記録には書かない
- 不在の種類:該当なし、
not_observed(観測されなかった)、observed_absent(十分な観測機会のもとで、存在しないと確認した)のいずれか
重みは、記録が二つの活動をつなぐ効き方であり、推した素性と示した身元は、記録が主体を特定する効き方である。つなぐ効き方は関連の答えに、特定する効き方は特定の答えに使う。一つの記録が、両方に効いてよい。たとえば、運用者の接続元の IP アドレス(OPR-001)は、same-operator でつなぎ、所在を推す。登録者のメールアドレス(INF-003)は、インフラや運用者でつなぎ、実在の企業のものと確かめられれば身元を示す。
4.2 規則
- reported の記録を observed に書き換えない。自分で確かめたら、新しい記録を作る。
- 一つの観測を複数のエビデンス型に登録するときは、すべてを同じ依存グループに入れる。
- 独立性は、収集元、被害環境、センサー、因果の系列で判断する。URL、発行元、記録の件数では判断しない。独立性を数える単位は、
valueの記録では調査、classificationの記録では調査元とする。分類の誤りは、同じ調査元の調査をまたいで同じように起きるためである。ただし、同じ依存グループの記録は、調査や調査元が違っても一つと数える。同じ検体を別々に解析しても、検体の取り違えや植え付けられた痕跡は、どの解析にも同じように及ぶためである。 - 重みと特定の段階は、記録を作るときに、その記録の中身から付ける(5 章)。比べる相手を見てから変えない。
- observed_absent とするのは、観測の機会と検出の能力がどちらも十分だった場合に限る。
- 帰属や類似についての第三者の評価は、エビデンス記録にしない。4.4 の第三者の判断として記録する。
- 当てはまる TAEC のエビデンス型がないときは、最も近い型で記録し、型の候補として書き留める。記録が、型に付いていない帰属対象に届くと考えたときも、帰属対象の候補として書き留める。候補はカタログに戻し、型や帰属対象を追加するかを決める。
classificationをreportedの記録にするのは、分類した検体の識別子(ハッシュなど)が示され、他者が分類を確かめられる場合に限る。識別子が示されていなければ、4.4 の第三者の判断として記録する。- 名義(氏名、組織名、支払い元、証明書の発行先など)を示した身元として記録するときは、実在の個人や組織のものと確かめたかと、確かめた方法(事業者の本人確認、司法文書、通信事業者の記録など)を書き留める。確かめていない名義は、身元の答えには使わない(3.5)。身元の情報は、分析に要る範囲だけを記録する。
- 推した素性の読んだ値は、観測ではなく、分析者の読みである。観測には読む前の値(時刻、文字列、接続元の事業者など)を書き、読んだ値と仮定は推した素性に書く。誰の素性かを観測から決められないときは「不明」とし、推測で役割を当てない。
- 読んだ値は、観測が支える細かさにとどめる。たとえば、時刻の分布から読めるのは時間帯までで、国までは読めない。同じ時間帯に複数の国や地域があるためである。
assumedの記録は観測ではないので、比較の結果と、特定の段階と独立した収集元の数には使わない。分析の前提として、分析の範囲の前提と制約(2.1)に書く。
4.3 カタログの記述と観測の区別
TAEC の記述は、エビデンス型の一般的な説明であり、ケースの観測ではない。そのため、次の値はケースの記録へ移さない。
| TAEC の値 | 移さない先 | 理由 |
|---|---|---|
reference_ids | 収集元 | 型の定義を支える文献であり、そのケースの観測の出所ではない |
観測事例、anti_attribution | エビデンス記録、比較 | 別の事件で起きたことであり、このケースで起きたことではない |
| 帰属対象 | 関連の答え | 重みと関連の型を組み立てる軸であり、このケースで何が同じかは、比較で測る |
観測事例の帰属対象と特定(attribution_scopes、identifies) | 記録の重み、推した素性、示した身元 | 別の事件で届いた先である。このケースの記録が届く先は、記録の中身から決める(5.2) |
| 事例に出てくる攻撃者名 | 活動モデルの名前、正解ラベル | 他者の判断であり、このケースでは検証していない |
4.4 第三者の判断
公開レポートや政府機関の発表には、観測と並んで、帰属や類似についての評価が書かれている。「この活動は APT10 によるものとみられる」「二つのマルウェアの作法は似ている」のような記述である。第三者の判断は、こうした評価を、観測とは分けて記録するものである。
第三者の判断には、誰が、いつ、関連と特定のどれについて何を判断したか、確信度をどう表現したか、示した根拠と参照先、その根拠を確かめたかを書き留める。何を判断したかは、関連と特定のどれについてかと、その中身(関連なら帰属対象や同じとした活動、特定なら値)で書く。「同じグループによる」は関連、「中国系」は素性、起訴状が名指す個人や企業は身元、政府の公式な帰属は指示主体についての判断である。
- 第三者の判断は、エビデンス記録にせず、比較の結果にも、特定の段階と独立した収集元の数にも使わない。
- 第三者の判断は、根拠になった観測を探す手がかりに使う。根拠の観測が他者の確かめられる形で書かれていれば、それを
reportedのエビデンス記録にする。 - 複数の第三者の判断が一致しても、独立した収集元の数には入れない。数えるのは、根拠の観測をエビデンス記録にしたものだけで、その収集元が互いに独立している場合に限る。
- 政府機関などの公式見解は、第三者の判断として記録する。指示主体は、この記録だけで答える(3.6)。
5重みと特定の段階
重みは、比較で使う、エビデンス記録のつなぐ効き方の強さである。重みは記録ごとに、その記録が届く帰属対象ごとに、一致したときと食い違ったときの二つを付ける。記録を作るときに付けるので、重みは比べる前に決まり、記録とともに活動モデルに残る。示した身元には重みを付けず、推した素性には、関連を調べるために比べるときの帰属対象(3.4)についてだけ重みを付ける。特定する効き方の強さは、重みとは別に、特定の段階として推した素性と示した身元に付ける(5.6)。
重みは記録ごとに、記録された中身を見て決める。同じエビデンス型、同じ観測項目でも、中身によって偽装のしやすさや共有されやすさが変わるためである。たとえば PDB パスでも、固有のユーザー名やプロジェクト名が残るものと、汎用的なフォルダー名だけのものとでは、一致したときの意味が違う。TAEF は重みの値を定めず、決め方と記録の仕方を定める。TAEC も重みを持たない。
記録の中身から読み取れること(固有の名前が残るか、公開されているツールの既定のままか、など)は重みに使う。一方、その値がほかでどれだけ見つかるかを調べた珍しさは、重みに使わない。値が珍しいと言うには、調べた範囲を示さなければならず、記録のたびにその調査を求めるのは負担が大きいためである。ありふれた値の一致を重く数えると、測った結果は実際より強く出る。そのため、記録の中身からありふれていると分かる値(公開されている攻撃フレームワークの既定のままの書式、多くのマルウェアに共通の接続確認の宛先など)は、一致したときの重みを下げる(5.4)。
5.1 判断の材料
記録の重みは、記録された中身について、次の三つを見て決める。
- 偽装の手間:他者がその特徴を真似したり、植え付けたりする手間。低いほど偽装しやすい。
- 共有されやすさ:その特徴が他の主体と共有されやすいか。市販のツール、流出したビルダー、共有ホスティング、公開されている手順書などで高くなる。
- 変えやすさ:本人がその特徴を変える手間。TAEC の
cost_to_changeが、型としての目安になる。
偽装の手間と共有されやすさは、一致したときの重みに効き、変えやすさは、食い違ったときの重みに効く2。TAEC の spoofability は真偽値で、今はすべての型が true である。これでは型や記録の違いを表せないので、TAEF は記録の中身から偽装の手間を見る。
5.2 記録の重み
エビデンス記録には、その記録が届く帰属対象ごとに、次を書き留める。
- 一致したときの重み:
strong、medium、weakのいずれか - 食い違ったときの重み:
strong、medium、weak、not_usedのいずれか - 理由:記録の中身について、偽装の手間、共有されやすさ、変えやすさをどう見たか
届く帰属対象は、TAEC がその型に付けた帰属対象(5.3 の読み替えの後)のうち、その観測が届くものである。TAEC の観測事例に付いた帰属対象と特定(3.2、3.4)は、届くかを判断するときの参考にする。観測の中身から届かないと分かる帰属対象は、外す。たとえば、公開されている攻撃フレームワークの既定のままの C2 通信の書式は、same-developer には届かない。推した素性(4.1)を持つ記録は、誰の素性かに応じて、比べたときに入る帰属対象(3.4)にも重みを付ける。誰の素性かが「不明」の素性には付けない。それ以外に、TAEC がその型に付けていない帰属対象は足さない。足すべきだと考えたときは、4.2 の規則 7 のとおり、帰属対象の候補として書き留める。same-artifact だけに届く記録には、重みを付けない(6.4)。たとえば、公開されている正規のツールと同じハッシュのファイルは、同じファイルであることしか示さず、same-tool-lineage には届かない。same-artifact の一致は、比較の結果に記録するが、関連の型の読み取りには使わない。示した身元には、重みを付けない(3.5)。
同じ記録でも、帰属対象によって重みは変わる。たとえば PDB パスは、ツールの系譜には強く効く一方で、開発者が同じかどうかには、それより弱く効くことがある。
重みの段階は、次の意味で使う。
| 段階 | 一致したとき | 食い違ったとき |
|---|---|---|
strong | 偽装も共有もしにくく、一致すれば、その帰属対象が同じことを強く示す | 本人にも変えにくく、違えば、その帰属対象が別であることを強く示す |
medium | 一致すれば同じことを示すが、偽装や共有でも起こりうる | 違えば別であることを示すが、時期や環境で変わることがある |
weak | 偽装や共有で起こりやすく、これだけでは同じと言えない | 時期や環境で変わりやすく、これだけでは別と言えない |
not_used | 使わない | 本人が簡単に変えられるので、違っても数えない |
段階は、関連の候補を読むとき(6.6)に次のように効く。一致は、medium 以上があればその帰属対象を一致と読み、weak だけなら弱い一致にとどまる。食い違いは、weak 以上なら数え、not_used なら数えない。一致と食い違いが並ぶときは、重いほうで読む。
5.3 帰属対象の読み替え
TAEC の型単位の帰属対象は、2026-11-01 までに、すべての型で、観測事例が届いた帰属対象をもとに 3.2 の語彙へ付け直した。観測事例の帰属対象も 3.2 の語彙で付けているので、今の TAEC を読むときは、読み替えは要らない。付け直しの前の TAEC を読むときは、型の旧い値を次のように読み替えて、記録が届く帰属対象を決める。
| TAEC の旧い値 | 読み方 |
|---|---|
same-operation | 運用側が決める手順、設定値、ツールの選び方を表す型(OPS の型、埋め込みの C2 設定など)では same-tradecraft と読む。標的を表す型(VIC)では same-objective と読む。どちらにも当たらない型(版の進み方、関数の一致、作業者の端末の環境など)では、届く帰属対象にしない |
same-campaign | 届く帰属対象にしない。キャンペーンは活動モデルの呼び名であり、帰属対象ではないため |
| そのほかの値 | そのまま使う |
same-artifact しか残らない型には、重みを付けない。その一致は、比較の結果に記録するが、関連の型の読み取りには使わない(6.4)。型単位の帰属対象が空の型(素性だけを推す型など)は、型ごとの特徴では比べず、推した素性があればそれだけで比べる(6.4)。
5.4 重みの決め方
重みは人が決め、理由を記録する。計算式では決めない。同じ型でも、記録の中身によって偽装の手間や共有されやすさが変わり、型ごとの値からは決められないためである。
出発点には、TAEC の型の性質を使う。一致したときの重みは、型の説明とアンチアトリビューションから、その型の典型的な観測が偽装や共有でどれだけ起こりうるかを見て置く。食い違ったときの重みには、TAEC の cost_to_change から初期値を入れる。
cost_to_change | 食い違ったときの重みの初期値 |
|---|---|
low | not_used |
medium | weak |
high | medium |
そのうえで、記録の中身がその型の典型と違えば、上げ下げする。たとえば、PDB パスに固有のユーザー名やプロジェクト名が残っていれば、一致したときの重みを上げる。C2 通信の書式が、公開されている攻撃フレームワークの既定のままなら、一致したときの重みを下げる。IP アドレスが匿名化 VPN の出口だと分かっていれば、same-infrastructure の一致したときの重みを下げる。
段階に迷ったときは、5.2 の効き方から決める。一致したときの重みは、「この一致だけで、その帰属対象を同じと読んでよいか」で、medium 以上か weak かを決める。そのうえで、偽装も共有もしにくいものを strong にする。食い違ったときの重みは、「この食い違いを、その帰属対象が別である材料として数えるか」で、weak 以上か not_used かを決める。
2 cost_to_change は、攻撃者が自分の特徴を変える手間を表し、Pyramid of Pain と同じ考え方に立つ。偽装の手間は、他者がその特徴を真似る手間を表す。二つは連動することが多いが、ずれる場合がある。自分のファイルのハッシュは 1 バイト変えるだけで変わる一方、他者のファイルと同じハッシュは作れない。そのため TAEF は二つを別々に扱い、変えやすさを食い違いの重みに、偽装の手間を一致の重みに使う。 ↩
5.5 記録への付け方
- 重みは記録を作るときに付け、理由を書き留める。理由には、その記録の中身をどう見たかを書く。ほかのモデルの記録と同じかどうかは、理由にしない。
- 記録の重みは、比べる相手や比較の結果を見てから変えない。見直すときは記録の版を改め(8 章)、その記録を使った比較をやり直す。
classificationの記録は、分類の基準(コードの比較、YARA ルールなど)が示されていなければ、一致したときの重みを一段下げる。名前が同じでも、同じ基準で分類したとは限らず、後から報告する調査元は先に報告した調査元の名前を採ることが多いためである。- 同じ分析の中で、同じ型の似た中身の記録には、同じ段階を付けることを推奨する。段階を変えるときは、中身の違いを理由に書く。
- 推した素性のうち
locationとlanguageは、一致したときの重みをweakまでにする。同じ時間帯や言語の主体は多く、素性が合っても、同じ主体だとは言えないためである。食い違ったときの重みは、ほかの記録と同じく記録の中身から決める。interestの一致には上限を置かない。標的や求める情報は、主体ごとに違いが出やすいためである。これは関連を調べるときの重みであり、素性を推す強さ(特定の段階、5.6)を下げるものではない。
重みを一段下げるとは、strong を medium、medium を weak にし、weak は数えないことをいう。
5.6 特定の段階
特定の段階は、推した素性と示した身元(4.1)が、その値をどれだけ強く推すかの段階である。重みが一致したときと食い違ったときの二つを持つのに対して、特定の段階は一つである。特定には、比べる相手がないためである。重みと同じく、記録を作るときに、記録の中身から付ける。
段階は、5.1 の三つの材料を、特定に当てはめて決める。
- 偽装の手間:他者がその値を植え付けたり、なりすましたりする手間。低いほど、意図して偽った値でありうる。
- 共有されやすさ:その値が、別の者のものでありうるか。ツールを作った請負業者、インフラの貸し手、VPN の出口、名義の貸し手などのものでありうるほど高い。
- 変えやすさ:本人がその値を簡単に変えられるか。変えやすい値は、本人の性質ではなく、そのときの選択や設定にすぎないことがある。TAEC の
cost_to_changeが、型としての目安になる。
| 段階 | 意味 |
|---|---|
strong | 偽装しにくく、別の者のものである見込みも低く、本人にも変えにくい。これだけで、その値を強く推す |
medium | その値を推すが、偽装、別の者の痕跡、本人のその場の選択でも起こりうる |
weak | 偽装、別の者の痕跡、本人のその場の選択で起こりやすく、これだけでは推せない |
- 特定の段階は、推した素性と示した身元ごとに付け、理由を書き留める。理由には、三つの材料について記録の中身をどう見たかを書く。
- 出発点には、5.4 と同じく、TAEC の型の説明とアンチアトリビューションを使う。そのうえで、記録の中身がその型の典型と違えば上げ下げする。たとえば、数か月分の作業時刻の分布は、一日分の時刻より偽装の手間が高い。
- 段階は、ほかのモデルの答えや第三者の判断を見てから変えない。見直すときは記録の版を改める(8 章)。
- 示した身元に段階を付けるのは、名義を実在と確かめた記録だけである(3.5、4.2 の規則 9)。事業者の契約や支払いの記録のように、名義と活動を直接結び付ける方法で確かめたものほど、偽装の手間は高く、共有されやすさは低い。
- 特定の段階は、関連の重みとは別に付ける。同じ記録でも、所在を推すときには
strongになりうる一方、関連を調べるときのlocationの一致の重みはweakまでである(5.5 の規則 5)。 - 指示主体には段階を付けない。権限のある機関の公式見解を、その表現のまま記録する(3.6)。
6活動モデルと比較
6.1 活動モデル
活動モデルは、L2 の活動のまとまりを、期間を区切って表したものである。モデルは、そこに含まれるエビデンス記録の集まりとして表す。名前には中立な ID(例:UTA-2026-0042)を使う。既知の攻撃者名や作戦名は、ID にはせず、外部の呼び名(6.9)として書き留める。
活動モデルには、次を書き留める。
- 中立な ID
- 種の種類(一回の侵入、同じファイルでつながる観測、公開レポートのいずれか)
- 何の活動かの概要
- 期間
- 含まれるエビデンス記録
- 範囲を誰が判断したか(分析者自身か、レポートの発行元か)
mergeとsplitの履歴- 属する主体モデル(6.8)。束ねられていなければ、なし
- 外部の呼び名(6.9)
- 調べた範囲。何を材料にしたか(検体、ログ、通信の記録、レポートなど)と、調べていないことが分かっている範囲(検体を入手していない、作業者の端末は調べていない、など)
- 関連(7 章)。ほかのモデルと何が同じかを、相手のモデルごとに、関連の型と、帰属対象ごとの測った結果(段階ごとの独立した収集元の数)で書く。統合も束ねもしなかったモデルとの関連も、ここに書く
- 特定(7 章)。素性、身元、指示主体の答えを書く。素性と身元は、記録が推した素性と示した身元を、値ごとに段階と独立した収集元の数でまとめる
- 答えられなかったこと(7 章)。関連と特定のうち、答えられなかったものと、その理由
活動モデルを人に示すときは、含まれるエビデンス記録を、役割(3.3)ごとにまとめて示すことを推奨する。どの役割の痕跡がどれだけあり、どの役割の痕跡がないかが、一目で分かるためである。複数の役割にかかる記録は、それぞれの役割に載せる。役割を持たない記録(same-artifact だけに届く記録)は、別にまとめる。
統合を重ねて育った活動モデルを、TAEF ではキャンペーンと呼ぶ。キャンペーンは個々のエビデンスの帰属対象ではなく、活動モデルの呼び名である。
L3 の運用主体は、活動モデルを束ねた主体モデル(6.8)として表す。どのモデルを束ねるかは、比較を読んだ関連の型で決める(6.6、6.8)。
6.2 種の作り方
活動モデルは、L2 の範囲を最初に決めて作るのではない。確実に一つの活動と言える最小のまとまり(種)から始め、統合と分割で育てる。L2 の範囲は分析の前提ではなく、この繰り返しの結果として決まる。こうすると、L2 のモデルを比べる前に L2 を決めておかなければならない、という順序の問題が生じない。
種にするのは次のまとまりである。
- 一つの被害環境での一回の侵入で、侵入から横展開までが因果でつながっている観測
- 同じファイルやデータ(
same-artifact)でつながる観測
公開レポートは、扱う範囲の大きさによって扱いを分ける。
| レポートの範囲 | 例 | 扱い |
|---|---|---|
| 一件のインシデント | 特定の組織での侵害調査 | そのまま種にする |
| キャンペーン | 特定の業種を狙った一連の攻撃 | 原則としてレポート一本を一つの種にし、そのまとめ方を第三者の判断(4.4)として記録する。被害組織ごとの観測が分けて書かれていれば、組織ごとに種にする |
| アクター全体 | ある攻撃グループの数年分の活動 | 種にしない。束ね方を第三者の判断(4.4)として記録し、キャンペーンごとの記述を取り出してそれぞれ種にする |
キャンペーン規模のレポートを分けずに一つの種にするのは、被害組織ごとの詳細が書かれていないことが多く、分けたくても分けられないためである。まとめ方を第三者の判断として記録しておけば、後で矛盾が見つかったときに分割できる。
同じ活動を報じた複数のレポートは、元の観測が同じことが多い(転載、共有された検体など)。収集元と依存グループをたどり、レポートの数だけ独立した種として数えない。
6.3 統合、分割、期間
- 二つの活動モデルを統合(
merge)するのは、比較を読んだ関連の型がsame-campaignの場合に限る(6.6)。統合したら、統合したモデルで、ほかのモデルとの比較と特定を測り直す。 - 記録が加わったり、版を改めたり、撤回されたりして(8 章)、統合の根拠にした比較を比べ直すと
same-campaignと読めなくなったら、分割(split)する。 - 長く続く活動は、期間で区切って別のモデルにする。期間を区切らずにまとめると、何年も前の特徴と今の特徴を同じ重さで比べてしまうためである。
- 統合と分割は、操作、対象のモデル、根拠にした比較の結果と関連の型、理由を、活動モデルの履歴に書き留める。
6.4 比較の結果
比較は、二つの活動モデルについて、同じエビデンス型の記録どうしで行う。型が違えば、観測の中身も重みの付け方も違い、一致したかどうかを決められないためである。主体モデルと比べるときは、束ねた活動モデルの一つひとつと比べ、結果を活動モデルごとに並べる。束ねた活動モデルの記録を寄せ集めて、一つのモデルとして比べない。寄せ集めると、期間の違う特徴を同じ重さで比べることになり(6.3 の規則 3)、6.5 の規則 3 と規則 6 も当てられないためである。
推した素性(4.1)は、これに加えて、エビデンス型をまたいで、素性の項目と誰の素性かが同じものどうしでも比べる。記録が、観測を同じ尺度の値(時間帯、言語、関心)に読み替えているので、型が違っても比べられるためである。読んだ値が両立すれば match、両立しなければ mismatch とし、誰の素性かに応じた帰属対象(3.4)の結果に入れる。たとえば、一方のモデルの作業時刻から読んだ UTC+8 と、もう一方のモデルの接続元の事業者から読んだ中国は、両立するので match とする。誰の素性かが「不明」の値は比べない。推した素性を持つ記録も、型ごとの特徴では、ほかの記録と同じく比べる。一つの記録から、型ごとの特徴と素性の両方で同じ帰属対象の結果が出たときは、同じ依存グループの結果なので、6.5 の規則 1 のとおり、重いほうを一つだけ数える。6.5 の規則 3 は、素性の比較には当てない。比べるのは観測から読んだ主体の性質で、再割り当てされる IP やドメインのような値そのものではないためである。location と language の一致の重みは、weak までに抑えてある(5.5 の規則 5)。比較は、帰属対象ごとに次のいずれかの結果を出す。
match:両方のモデルに観測があり、特徴が同じである。一致したときの重みを添える。二つの記録で重みが違えば、低いほうを使う(6.5 の規則 4)。mismatch:両方のモデルに観測があり、特徴が違う。食い違ったときの重みを添える。二つの記録で重みが違えば、低いほうを使う(6.5 の規則 4)。重みがnot_usedのものは数えない。no_data:片方または両方のモデルに観測がない。
match と mismatch には、重みの段階ごとに、独立した収集元の数を添える。数は、その段階の結果を支える記録の収集元を、二つのモデルの側ごとに 4.2 の規則 3 の単位で数え、少ないほうとする。たとえば、strong の一致を一つの収集元の記録が、weak の一致を三つの収集元の記録が支えていれば、「一致 strong・1、weak・3」と書く。段階の違う結果を、一つの段階と数にまとめない。最も強い段階と、弱い段階を支える収集元の数を組にすると、強い一致を多くの収集元が支えているように読めてしまうためである。片側が一つの収集元の記録だけなら、数は 1 である。二つのモデルの側をそれぞれ別の調査元が報告していても、それだけでは 2 にしない。比較では両側に記録があるので、両側を足すと、どの比較の数も 2 以上になってしまうためである。
比較結果には、次を書き留める。
- 比べた二つのモデル
- 帰属対象ごとの結果と、重みの段階ごとの独立した収集元の数
no_dataの理由(not_examinedかnot_observed)- それぞれの結果で比べたエビデンス記録の組
- 6.5 の規則で除いた観測や重みを下げた観測と、当てはめた規則
no_data を mismatch として扱わない。観測できなかったことは、違うことを意味しないためである。
no_data には理由を添える。片方のモデルでその型を調べていない場合は not_examined、両方で調べたが、片方か両方で観測がなかった場合は not_observed とし、活動モデルの調べた範囲(6.1)から判断する。どちらの理由でも、mismatch としては扱わない。not_examined は、どの観測を足せば比べられるかの手がかりになる。
身元と指示主体は比べない。身元は記録が示した実在の主体で答え(3.5)、指示主体は権限のある機関の公式見解で答える(3.6)。
same-artifact の一致があった場合は、結果に記録する。二つのモデルが本来一つの種だった可能性を検討する根拠になる。ただし、公開されているツールは異なる主体のあいだでも同じファイルが使われるので、それだけで統合はしない。
6.5 比較の規則
- 同じ出所は一度だけ数える。 一つのモデルの中では、同じ依存グループの観測は、帰属対象ごとに、最も重い一致を一つと、最も重い食い違いを一つだけ数える。一つの検体から取ったハッシュ、PDB パス、ミューテックスを何件分にも数えないためである。一致と食い違いを別々に数えるのは、同じ検体でも、ある特徴は一致し、別の特徴は食い違うことがあり、それぞれ別の情報だからである。
- 共有している収集元は比較に使わない。 二つのモデルが同じ収集元を共有している場合、その収集元から来た観測は比較に使わない。両方の活動を一本のレポートが扱っているとき、同じ材料どうしの一致を似ていると読んでしまうためである。
- 入れ替えの早い特徴は、時期が近いときだけ数える。
cost_to_changeが low の特徴の一致は、二つのモデルの期間が重なっているか近い場合だけ数える。何年も後に再割り当てされた IP やドメインを、同じ攻撃者のものと誤るのを防ぐためである。既定では、期間が重なるか、あいだが 90 日以内を「近い」とする。特徴の入れ替わりの速さに合わせて変えるときは、理由を書き留める。 - 重みは両側の低いほうを使う。 二つの記録で重みが違うとき(中身の違いで段階が違う記録、
classificationの記録など)は、一致も食い違いも、低いほうの重みで数える。片方の観測が弱ければ、比べた結果もそれより強くはならないためである。 - 偽装しやすい一致に頼る候補には印を付ける。 関連の候補が主に偽装の手間の低い特徴の一致に支えられている場合は、偽装の印を付け、関連の答え(7 章)に書く。偽装しやすい一致だけに支えられた関連だと、答えを読む人に分かるようにするためである。
- 時期が大きく離れていれば、手口の食い違いを一段下げる。 二つのモデルの期間が大きく離れているときは、
same-tradecraftの食い違いの重みを一段下げる。手口や配布の方法は、時期とともに変わるためである。既定では、あいだが 2 年以上を「大きく離れている」とする。変えるときは、理由を書き留める。 - 名義の一致は、ほかの値と同じく数える。 名義(氏名、組織名、支払い元、証明書の発行先など)の値の一致は、実在と確かめたかどうかにかかわらず、その記録の帰属対象と重みで数える。偽名や盗まれた名義が別の主体でも使い回されることは、重みの理由(共有されやすさ、偽装の手間)で扱う。比較で数えないのは、二つのモデルの身元の答えが同じ実在の主体を示したこと(3.5)だけである。
出所の信頼性は、比較の規則に含めない。公開レポートから作るモデルでは観測の大半が reported になり、外すとほとんど比べられなくなるためである。記述の種類は記録に残し、答えを読む人が、自分で確かめた観測か第三者の報告かをたどれるようにする。
6.6 関連の型
帰属対象ごとの結果の組み合わせを、次の関連の型として読む。当てはまる型がないときは other とし、理由を記録する。当てはまる型が複数あるときは、すべて書き留める。
関連の型を読む前に、帰属対象ごとの結果を、6.5 の規則を当てはめた後の数える結果から、次の四つの状態のいずれかとして読む。
| 状態 | 読む条件 |
|---|---|
| 一致 | 数える一致があり、最も重いものが medium 以上である |
| 食い違い | 数える食い違いがある(weak 以上) |
| 弱い一致 | 数える一致が weak だけで、数える食い違いがない |
| 材料なし | no_data であるか、数える結果がない(not_used の食い違いや、規則で数えなくなったものだけ) |
一致と食い違いの両方があるときは、重いほうで読む。同じ重さのときは、どちらとも読まずに理由を書き留める。一致の下限を medium にするのは、weak の一致は多くの主体に共通しやすく、関連の型を決めるには弱すぎるためである。食い違いの下限を weak にするのは、食い違いの重みは cost_to_change によってすでに低めに抑えられており、下限を上げると食い違いがほとんど読めなくなるためである。
表の列の見出しは、帰属対象の識別子から先頭の same- を省いたものである。「一致」「食い違い」は上の状態を、「no_data」は材料なしを表し、空欄はその帰属対象の結果を問わない。
| 識別子 | 関連の型 | tool-lineage | developer | infrastructure | tradecraft | operator | objective |
|---|---|---|---|---|---|---|---|
same-campaign | 同じキャンペーン(merge の候補) | 一致 | 一致 | 矛盾しない | |||
same-actor | 同じ運用主体(promote の候補) | 一致 | |||||
shared-tooling | ツールの共有 | 一致 | 食い違い | 食い違い(no_data でもよい) | |||
shared-developer | 開発元が共通 | 一致 | 食い違い(no_data でもよい) | ||||
shared-tradecraft | 手口の共有 | 食い違い | 一致 | 食い違い(no_data でもよい) | |||
shared-infrastructure | インフラの共有 | 一致 | |||||
overlapping-interest | 関心の重なり | 一致 | |||||
tool-continuity | 開発の継続 | 一致 | 一致 | no_data | |||
evolving-campaign | 手口の変化を伴う継続 | 一致(strong) | 食い違い(隣り合う時期のあいだ) | 矛盾しない | |||
different-actor | 別の主体 | 強い食い違いがあり、一致は弱い |
shared-infrastructure と overlapping-interest は、一致と書いた帰属対象だけが一致する場合である。tool-continuity は、tool-lineage と developer のどちらかが一致すれば当たる。shared-tooling、shared-developer、shared-tradecraft の operator を no_data でもよいとするのは、公開情報からは運用者の食い違いがほとんど得られず、食い違いを求めるとこれらの型を選べなくなるためである。
same-operator が一致(medium 以上)でないときは、same-actor を選ばない。公開情報では運用者を直接示す観測が得られないことが多く、ツールや手口の一致だけでは、ツールの共有と同じ運用主体を区別できないためである。
関連の候補には、次を書き留める。
- 関連の型
- その型と読んだ理由(どの帰属対象の結果から読んだか)
- 偽装の印の有無
関連の型は、帰属対象ごとの結果の読み方であり、測った結果を強めも弱めもしない。関連の答え(7 章)には、関連の型とともに、帰属対象ごとの段階と数を書く。same-campaign は統合(6.3)の、same-actor は主体モデルへの束ね(6.8)の条件になる。
6.7 分析者の判断と CMP
帰属対象ごとの結果は、6.6 の四つの状態で読み、関連の型と理由を書き留める。6.5 の規則 3 と規則 6 の既定の幅や、6.6 の読み方で決まらないところは、分析者が判断し、理由を書き留める。手順が固まった後に、これらを機械で処理できるよう CMP を設計する。
6.8 主体モデル
主体モデルは、L3 の運用主体を、束ねた活動モデルの集まりとして表したものである。主体モデルは、promote で作って活動モデルを加え、demote で活動モデルを外す。一つの主体モデルの下に、オペレーションやキャンペーンにあたる活動モデルが複数並ぶ。
主体モデルには、次を書き留める。
- 中立な ID(例:
ACT-2026-0003)。活動モデルの ID とは別の形にする - 束ねた活動モデルと、それぞれを束ねたときの根拠にした比較の結果(関連の型
same-actor) - 期間(束ねた活動モデルの期間を合わせたもの)
- 外部の呼び名(6.9)
- 関連(7 章)。ほかのモデルと何が同じかを、束ねた活動モデルごとの比較を並べて書く(6.4)
- 特定(7 章)。束ねた活動モデルの特定を、どの活動モデルの答えかを添えて並べる。このうち運用の素性と身元は、束ねた活動モデルの運用者が同じと読めたので、主体モデルの答えとしてまとめ、段階と独立した収集元の数を数え直す(7 章の規則 8)。活動モデルのあいだで食い違うときは、そのまま残す。ほかの役割の素性と身元、
interest、指示主体は、束ねただけでは主体モデルの答えにしない。same-actorが示すのは運用者が同じことだけで、ツールの開発者、インフラの提供者、指示を出す者は、活動ごとに違いうるためである - 答えられなかったこと(7 章)
- 束ねた履歴と、外した履歴(
promote、demote)
- 主体モデルに束ねるのは、比較を読んだ関連の型が
same-actor(same-operatorが一致)の活動モデルだけである。すでにある主体モデルに加えるときは、束ねた活動モデルのどれかとの比較でsame-actorと読め、どれとの比較でもdifferent-actorと読めないことを求める。same-developerなど、ほかの L3 の帰属対象の一致では束ねない。開発元が同じでも、運用主体は別でありうるためである(6.10)。コーパスの主体モデルに加えるときは、登録として行う(6.11 の規則 3)。 - 一つの活動モデルを、同時に複数の主体モデルに束ねない。どちらに属するかを決められないときは、どちらにも束ねず、それぞれとの関連(6.1)を書き留める。
- 主体モデルの特定も、活動モデルと同じく、段階と独立した収集元の数で書く(7 章)。外部の呼び名(6.9)や第三者の判断(4.4)から、身元や指示主体を書き込まない。指示主体は、束ねた活動モデルの答えを、どの活動モデルの答えかを添えて並べる(3.6)。
- 束ねたときと外したときは、操作、対象のモデル、根拠にした比較の結果と関連の型、理由を、主体モデルの履歴に書き留める。束ねる根拠にした比較を比べ直して
same-actorと読めなくなったら、外す(demote)。
別々の主体モデルを、共通の開発元、組織、指示主体でまとめるときは、主体のまとまり(6.10)を使う。
6.9 外部の呼び名
ベンダーや政府機関は、攻撃グループや作戦に独自の名前を付ける。TAEF では、こうした名前を外部の呼び名として、主体モデルや活動モデルに対応づけて書き留めることを推奨する。外部のレポートや、ほかの組織が持つ情報と照らし合わせやすくなるためである。
外部の呼び名には、次を書き留める。
- 呼び名
- その名前で呼んでいる発行元と、時期
- 発行元がその名前で指している範囲(どの活動を含めているか)。分かる場合
- 対応づけの根拠。第三者の判断(4.4)か、自分たちの比較の結果か
- 外部の呼び名を、モデルの ID の代わりにしない。
- 一つのモデルに、複数の呼び名を付けてよい。発行元ごとに指している範囲が違うときは、その違いを書き留める。
- 呼び名を付けたことは、そのモデルが、その発行元の言う攻撃グループや作戦と同じだという答えにはならない。同じかは、発行元がその呼び名で指す活動を比べる相手にして(2.1 の規則 3)、関連を測る。
- 表示や管理には呼び名を使ってよい。そのときも、どの発行元の呼び名かが分かるようにする。
6.10 主体のまとまり
ベンダーは、別々に活動するいくつかの攻撃グループを、一つの名前の下にまとめることがある。下位グループ、傘下のグループ、上位組織などと呼ばれる関係である。TAEF では、こうした関係を、主体モデルどうしの主体のまとまりとして表す。まとまりの中の主体モデルは、互いに別の運用主体である。同じ運用主体なら、まとまりにはせず、一つの主体モデルに束ねる。
主体のまとまりには、次を書き留める。
- 中立な ID(例:
GRP-2026-0001)。活動モデルや主体モデルの ID とは別の形にする - まとめた主体モデル
- まとめる関係(下の表のいずれか)と、その根拠
- 外部の呼び名(6.9)
- 加えた履歴と、外した履歴(
group、ungroup)
| 関係 | 意味 | 答え | 加える条件 |
|---|---|---|---|
same-developer | 同じ者が作ったツールを使う | 関連(L3) | 束ねた活動モデルどうしの比較で、same-developer が一致と読める(3.2、6.6) |
same-organization | 同じ実在の組織(機関、企業、部隊など)に属する | 特定の身元 | 両方の主体モデルの身元の答えが、同じ組織を示す(3.5) |
same-sponsor | 同じ主体から指示や資金を受ける | 特定の指示主体 | 同じ指示主体を名指す公式見解を答えに持つ活動モデルが、両方の主体モデルに束ねられている(3.6) |
- 主体のまとまりに加えるのは、表の加える条件を満たした主体モデルだけである。加えたときと外したときは、操作、対象のモデル、根拠、理由を、まとまりの履歴に書き留める。条件を満たさなくなったら、外す(
ungroup)。 - 一つの主体モデルを、関係の違う複数のまとまりに加えてよい(例:開発元を共有するまとまりと、同じ組織のまとまり)。
- まとまりの中の主体モデルどうしの比較が
same-actorと読めたら、まとまりではなく一つの主体モデルに束ね直す。 - 外部の呼び名が、まとまりを指すのか、その中の一つの主体を指すのかは、発行元ごとに違う。6.9 の規則 2 のとおり、発行元が指している範囲を書き留める。
6.11 ワーキングとコーパス
活動モデルと主体モデルは、置き場によって、ワーキングとコーパスに分けて管理する。ワーキングは、分析の中で作り、育てているモデルの置き場である。コーパスは、作った人以外の確認を経て登録したモデルの置き場であり、ほかの分析が比べる相手として繰り返し使う。ワーキングとコーパスは、モデルの種類ではない。どちらの置き場にも、活動モデルと主体モデルを置く。主体モデルとは束ねた活動モデルごとに比べる(6.4)ので、主体モデルをコーパスに登録するときは、束ねた活動モデルも登録する。主体のまとまり(6.10)をコーパスに登録する条件は、この版では決めていない(9 章)。
モデルをコーパスに登録するのは、次をすべて満たしたときである。
- 来歴。含まれるエビデンス記録のすべてに、記述の種類、収集元、依存グループがあり(4.1)、活動モデルに期間と調べた範囲がある(6.1)
- まとめ方。統合と束ねが、6.3 と 6.8 の条件を満たしている
- 確認。モデルを作った人以外が、来歴とまとめ方を確かめた
来歴を求めるのは、来歴が欠けていると、コーパスのモデルと比べるたびに、6.5 の規則 2、規則 3、規則 6 と、no_data の理由(6.4)を当てられないためである。コーパスに登録したことは、モデルの関連と特定を強めない。登録が示すのは、作った人以外が来歴とまとめ方を確かめたことだけである。コーパスのモデルと比べるときも、ワーキングのモデルと比べるときと同じく、帰属対象ごとの段階と独立した収集元の数で測る。
- 登録するときは、コーパスの版を改め、登録したモデル、確かめた人、日付を書き留める。登録しても、モデルの ID は変えない。比較の結果や関連が、ID で相手のモデルを指しているためである。
- コーパスのモデルを変えるのは、登録だけとする。コーパスのモデルの統合、分割、束ね、外すこと(
merge、split、promote、demote)も、登録として行い、規則 1 のとおり版を改める。 - 分析の中で、活動モデルがコーパスの主体モデルと
same-actorと読めたときは、関連(7 章)を書くところまでにし、主体モデルへの束ねは登録として行う。登録が済むまでは、主体モデルの運用の素性と身元を、答えに添えない(7 章の規則 2)。確かめていない束ねがコーパスに入ると、コーパスにあることが、作った人以外が確かめたことを示さなくなるためである。 - 分析の中で、コーパスのモデルの統合や束ねの根拠にした比較が、
same-campaignやsame-actorと読めなくなったときは(6.3 の規則 2、6.8 の規則 4)、そのことを書き留め、分割や外すことを、登録として申し出る。 - コーパスのモデルと比べたときは、比べたコーパスの版を、比較の結果(6.4)に書き留める。コーパスの版が変わったら、変わったモデルと比べた比較をやり直し、答えを見直す(8 章の規則 3)。
- コーパスに、既知の主体がすべてそろっているとは扱わない。コーパスのどのモデルとも関連が見つからないことを、既知のどの主体とも別だという答えにしない(7 章の規則 5)。
7関連と特定の書き方
活動モデルと主体モデルは、「この攻撃を誰がやったか」への答えを、関連と特定として持つ。帰属する攻撃(2.1)への答えは、それを含む活動モデル(統合したときは統合したモデル)の関連と特定である(2 章)。関連と特定は、測った結果、つまり段階と独立した収集元の数で書く(5 章、6.4)。関連は相手のモデルごとに、特定は素性、身元、指示主体ごとに、次を書き留める。
- 関連:相手のモデル(統合も束ねもしなかったモデル、主体モデルなど)ごとに、関連の型と偽装の印(6.6)と、帰属対象ごとの測った結果(一致と食い違いのそれぞれについて、段階ごとの独立した収集元の数。材料がなければ
no_dataとその理由)。相手が主体モデルのときは、束ねた活動モデルごとの比較を並べる(6.4)。相手のモデルに外部の呼び名(6.9)があれば添える - 特定:素性、身元、指示主体に分けて書く。素性は、素性の項目と誰の素性かごとに、読んだ値と、支える記録と食い違う記録のそれぞれについて、段階ごとの独立した収集元の数を書く。細かさの違う値(
UTC+8と中国など)は、一つにまとめず、値ごとに書く。読んだ値がその値と同じか、その値に含まれる記録が支え(中国と読んだ記録はUTC+8も支える)、読んだ値がその値と両立しない記録が食い違う(6.4)。身元は、誰の身元かごとに、実在の個人や組織と、支える記録と、同じ役割について両立しない身元を示す記録のそれぞれについて、段階ごとの独立した収集元の数を書き、同じ実在の主体に届いたほかのモデルがあれば添える(3.5)。指示主体は、公式見解(発行元、日付、対象にした活動の範囲、確信度の表現、根拠の公開の度合い)と、対象にした活動との関連を書く(3.6)。主体モデルに束ねた活動モデルでは、主体モデルの運用の素性と身元を、主体モデルの答えとして添える - 答えられなかったこと:問い(2.1)のうち、答えられなかったものと、その理由(材料なし、調べていない)。材料なしは、探しても見つからなかったものや入手できなかったもの、調べていないは、分析の範囲で調べないと決めたもの(2.1 の規則 1)である。関連では、比べた相手ごとに、材料なしの帰属対象を書く。比べる相手がなければ、関連を材料なしとし、探した範囲(2.1)を添える。特定では、値の出なかった素性の項目、身元、指示主体を書く
- 関連と特定は、段階と独立した収集元の数のまま書く。関連の型は、帰属対象ごとの結果の読み方(6.6)なので、関連の型だけを答えにせず、帰属対象ごとの段階と数とともに書く。
- 関連の相手の素性と身元は、引き継がない。特定は、そのモデルの記録から測る。相手の素性と身元は相手のモデルの答えであり、このモデルの答えに混ぜると、どの記録に支えられた値かが分からなくなるためである。主体モデルに束ねた活動モデルでは、主体モデルの運用の素性と身元を、主体モデルの答えとして添える(6.8)。
- 指示主体は、公式見解をそのまま書き、段階を付けない。モデルが、公式見解の対象にした活動を含むならそのことを、含まないなら対象にした活動との関連を測った結果を添える(3.6)。
- 問い(2.1)のうち答えられなかったものは、すべて答えられなかったことに書く。答えられないことは、正常な結果である。
- 比べる相手が見つからなかったことを、既知のどの主体とも別だという答えにしない。相手が、探した範囲の外にいることや、まだ報告されていないことがあるためである。
- 記録が変わったときは、比べ直して答えを書き直し、版を改める(8 章)。
- 測った結果は、帰属対象どうし、特定の値どうし、関連と特定のあいだで足し合わせず、一つの点数にしない。足し合わせると、共有されやすい弱い一致が多いだけで大きな値になり、食い違いや答えられなかったことが見えなくなるためである。
- 特定の独立した収集元の数は、その値を支える記録と食い違う記録の収集元を、段階ごとに、4.2 の規則 3 の単位で数える。主体モデルでは、同じ収集元を一度だけ数える。
8記録の版と撤回
- エビデンス記録、活動モデル、主体モデル、比較の結果、答え、コーパス(6.11)は、上書きせずに版を重ねる。
- 撤回するときは、理由を記録する。
- 撤回された収集元やエビデンス記録に依存する記録は、影響を見直して新しい版を作る。その記録を使った比較はやり直す。見直さずに使い続けない。
9この版で決めていないこと
- 書き留める形式(項目名、データ形式、スキーマ、検証器)と、ワーキングとコーパスの置き場の形(データベースなど)。手順が固まった後、機械で処理できるよう CMP を設計するときに決める
- 主体のまとまり(6.10)をコーパスに登録する条件。6.10 の加える条件をもとに決める
- 6.5 の規則 3 と規則 6 の既定の幅が妥当か。例を増やして確かめ、CMP の設計で機械的に扱える形にする
- 攻撃手順を構造化して書き留めるかどうか。
same-tradecraftの比較に要るかを、CMP の設計とあわせて決める - 5.3 の読み替えの表を残すか。TAEC の帰属対象は、2026-11-01 に VIC を付け直して、すべての型の観測事例に帰属対象(
attribution_scopes)と特定(identifies)を付け、型単位の帰属対象も 3.2 の語彙へ付け直した。旧い値は、付け直しの前の TAEC を読むときにだけ要る - 段階と独立した収集元の数(とくに特定の段階)の付け方が、分析者のあいだで揃うか。例を増やして確かめる。段階と数を機械で求める方法は、実証評価の後に、CMP の設計で決める
- 統合と主体モデルへの束ねを、関連の型(
same-campaign、same-actor)だけで決めてよいか。ツールや手順書の共有、偽装で誤って統合した例がないかを、例を増やして確かめる - 名義を確かめる方法ごとに、示した身元の特定の段階をどう付けるか(5.6 の規則 4)。例を増やして確かめる
100.2-draft からの主な変更
- 0.2-draft から続いていた検証と判断の後段(関連、素性、身元の主張、六つの競合仮説、記号による評価、確信度、公表と保留の判断)をやめ、関連と特定を、段階と独立した収集元の数で測った結果を、そのまま答えにした(1 章、2 章、7 章)。統合と主体モデルへの束ねは、比較を読んだ関連の型(
same-campaign、same-actor)で行い、根拠にした比較とともに履歴に残す(6.3、6.8)。関連の相手の素性と身元は引き継がず、指示主体は、公式見解と、それが対象にした活動との関連を書く(3.6、7 章)。 - TAEF を、攻撃(活動モデル)を関連と特定の二軸で定量的にアトリビューションするフレームワークと位置付けた(1 章、1.1)。定量的とは、二軸のそれぞれを、段階と独立した収集元の数で測ることをいい、一つの点数にはまとめない。比べることは、関連を測るためだけに使う。分析の流れでは、特定を測ることと関連を測ることを並べた(2 章)。分析の答えは、帰属する攻撃を含む活動モデルの関連と特定とした(2 章、7 章)。推した素性と示した身元に特定の段階(5.6)を設け、比較の結果に、重みの段階ごとの独立した収集元の数(6.4)を添えた。
- ゴールを「この攻撃を誰がやったか」に答えることにし、答えを、関連(既知の活動や主体と何が同じかを、帰属対象で書く)と特定(素性、身元、指示主体)の二つで示すことにした(1 章、3 章)。記録には、つなぐ効き方(重み)と特定する効き方(推した素性、示した身元)を分けて書き(4.1)、活動モデルと主体モデルに関連と特定の欄(7 章)を設けた。指示主体は測らず、公式見解をそのまま答えに書く(3.6)。
- 六つのモジュール(EVC、PRO、CLM、ASM、CMP、LCM)を四つにまとめた。比較と候補の順位付け(CMP)は作り直すまで外し、攻撃手順の記録書式(PRO)は外した。
- 重みと、活動モデルと比較を新しく設けた。重みはエビデンス記録に、届く帰属対象ごとに一致したときと食い違ったときの二つを付け、記録を作るときに、TAEC の型の性質を出発点にして記録の中身から決める。重みの値は TAEF の側では定めない。調べた範囲が要る値の珍しさは、重みに使わない。
- 証拠の上位 20 型(
AR-01からNG-02)と、TAEC との対応表をやめ、TAEC のエビデンス型を直接使うことにした。これに伴い、TAEC なしで TAEF を使えるという独立性の約束もやめた。 - 主体モデルどうしを、共通の開発元、組織、指示主体でまとめる主体のまとまり(6.10)と、まとまりに加える操作と外す操作(
group、ungroup)を設けた。下位グループのような関係は、同じ運用主体と読めない主体モデルどうしを、身元の答えが同じ組織を示すときにsame-organizationでまとめて表す(6.10)。 - 帰属レベルを L0 から L3 の関連の細かさに限り、実在の組織(旧 L4)は特定の身元(3.5)、指示主体(旧 L5)は特定の指示主体(3.6)で答えることにした。名義は、実在と確かめれば身元を示す。名義の値の一致は、確かめたかどうかにかかわらず、記録の帰属対象と重みで比べる(6.5 の規則 7)。
- 関連の型を読むときの、帰属対象ごとの四つの状態(一致、食い違い、弱い一致、材料なし)を定め、一致の下限を
medium、食い違いの下限をweakとした。当てはまる型が複数あればすべて書き留める。shared-toolingなどの operator の条件を、no_data でもよいとした。6.5 の規則 1 で一致と食い違いを別々に数えることにし、規則 3 と規則 6 に既定の幅(90 日、2 年)を置いた。 - 問いを TAEF が決めることにし、分析者が分析の前に分析の範囲(帰属する攻撃、比べる相手、情報源を探した範囲、使った資料と使わなかった資料、前提と制約)を書き留める 2.1 を設けた。比べる相手は探した範囲で見つかった活動とモデルのすべてとし、見つからなければ、関連を材料なしとして書く(既知のどの主体とも別だという答えにはしない)。問いのうち答えられなかったものは、理由とともに書く(7 章)。活動モデルに調べた範囲を加え、比較の
no_dataに理由(not_examined、not_observed)を添えることにした。 - TAEF の出力を、答えを持つ活動モデルと主体モデル、主体のまとまりと定めた。主体モデル(6.8)と外部の呼び名(6.9)を設け、活動モデルに、属する主体モデル、関連、外部の呼び名を加えた。主体モデルに束ねるのは、比較が
same-actorと読めた活動モデルだけとし、主体モデルとは、束ねた活動モデルごとに比べる(6.4、6.8)。 - モデルの置き場を、分析の中のワーキングと、作った人以外の確認を経て登録するコーパスに分けた(6.11)。ワーキングとコーパスはモデルの種類ではなく、どちらにも活動モデルと主体モデルを置く。登録の条件は、来歴、統合と束ねの条件(6.3、6.8)、作った人以外の確認とし、コーパスのモデルを変えるのは登録だけとした。分析の中でコーパスの主体モデルと
same-actorと読めた活動モデルは、登録が済むまで関連を書くところまでにする。コーパスに登録したことは、関連と特定を強めない。 - エビデンス記録に中身(
value、classification)を加え、分類の扱いを決めた。独立した収集元は、同じ依存グループの記録を、調査元が違っても一つと数える(4.2 の規則 3)。assumedの記録は、比較の結果と、特定の段階と数に使わない(4.2 の規則 12)。 - 主体の素性(3.4。
location、language、interest)を設けた。エビデンス記録に推した素性(読んだ値、仮定、誰の素性か)を書き、活動モデルと主体モデルに素性の欄を設けた。素性は、エビデンス型をまたいで比べ、誰の素性かに応じた帰属対象の結果に入れる(6.4)。locationとlanguageの一致の重みはweakまでとした(5.5 の規則 5)。素性は帰属レベルを持たず、身元の根拠にはしない(3.5)。 - 0.2-draft の実装(
taef/の Case のスキーマ、検証器、例、テンプレート、テスト、上位 20 型の定義、TAEF-CMP の参照実装、TAEC の型から上位 20 型へのマッピングとその API)を削除した。0.2-draft を前提にした説明の文書(INTEGRATION_SPEC.md、docs/taef-interoperability.md、TAEF_TAEC_COVERAGE_COMPARISON.md、提案書)は、分離前のリポジトリでこの版に合わせて書き直し、旧版をtaef/に残した。独立した TAEF リポジトリには、これらの説明文書と旧版を含めない。