デジタル臓器という考え方
この記事の核は
デジタルを人間の身体の仕組みに置き換えたら
新しい対策や問いが生まれないか?というものです
記事の内容というよりもこの問題定義に価値があると感じている
だから、みなさんも実際の肉体とデジタルのセキュリティ一緒に考えてみて下さい
デジタル情報は身体の拡張である
人間の身体には臓器がある。心臓、肺、肝臓、腎臓。それぞれが違う役割を持ち、協力して生命を維持している。
では、現代人のデジタル情報はどうか。記録、写真、文章、仕事のデータ、思考の履歴。これらは肉体の外にあるが、記憶や能力を補助し、ときに代替している。
デジタル情報は、身体の拡張だ。
ならば、それを保存し処理するシステムは臓器として扱える。これを「デジタル臓器」と呼ぶ。
AIが攻撃と防御を同時に加速する
先日、PHPのセキュリティに関する話題を目にした。そこで考えたのが、AIによるサイバー攻撃の増加だ。
これまで高度な脆弱性を見つけられるのは、専門知識を持つ一部の人間だった。AIがプログラム解析を補助するようになれば、そのハードルは下がる。防御側もAIを使う。
これからは、AIによる攻撃とAIによる防御が競争する時代になる。
攻撃者は穴を一つ見つければいい。防御側は穴を塞ぎ続けなければならない。この非対称は、侵入を完全に防ぐという発想だけでは埋まらない。
外側は集中防御
守る対象の外側に、複数のAIを置く。異常を監視するAI、攻撃を分析するAI、侵入を止めるAI、判断を検証するAI。役割を分けて、一つの対象を守らせる。
内側は分散構造
それでも、突破される可能性はゼロにならない。だから内側は別の原則で組む。
記憶、処理、外部通信の領域を分け、それぞれに独立した権限を与える。一つが奪われても、他の領域には入れない。
分散するのは情報だけではない。権限と、障害の影響範囲も分散する。
外側は侵入を防ぐ仕組みで、内側は侵入された後も生き延びる仕組みだ。
再生は局所で行う
壊れた部分は、自動で直したい。ただし、全領域を直せる修復AIを一つ置けば、それが最大の攻撃対象になる。奪われた時点で、分散は崩れる。
だから、修復も分散する。各領域に専属の修復役を置き、その権限は担当領域の内側で閉じる。他の領域には書き込めない。
人間の身体も同じだ。再生は各組織が局所で行い、全身を作り直したりはしない。しかも、細胞が行うのは自分の設計図への復帰だけで、新しい設計を発明しない。
修復は創造ではなく、既知の自己への復帰に限る。
免疫は全身で見張る
局所の修復役が奪われれば、その領域は自分で自分を壊せる。そこで、領域間で相互に検証させる。
領域Aの修復が済んだかどうかは、領域Bが確認する。Bは確認するだけで、Aには書き込めない。修復役が偽の「正常」を報告しても、隣の領域が見抜く。
再生は局所、監視は全身。身体でいう、組織と免疫の分業にあたる。
独立性は血流から作る
防御を複数のAIに任せても、全部が同じ弱点を持っていれば、同時に落ちる。では、種類の違うAIを使えばいいのか。
半分は正しい。ただし、種類の違いが保証するのは判断の独立だけだ。同じ基盤モデル、同じ入力、同じ実行環境、同じ管理経路の上にいれば、別のAIでも同じ毒にやられる。
別の種類の細胞でも、同じ血流に乗っていれば、同じ毒で死ぬ。
独立性は、AIの種類を変えるだけでは得られない。実行環境と、更新や鍵の管理経路を分けて、初めて得られる。
守るから、生き延びるへ
従来のセキュリティは、侵入を防ぐことに重心があった。これからも重要だが、AIで攻撃の速度と規模が増すなら、それだけでは足りない。
目標を変える。侵入されないことではなく、侵入されても機能を維持し、失った部分を戻せること。
セキュリティを防御技術としてではなく、デジタル情報の生命維持システムとして考える。
多層防御、権限分離、隔離、バックアップ、復旧。既存の技術を、身体という設計図で組み直す。これが有効かどうかは、今後の設計と検証で確かめるしかない。
ただ、AIが記憶や思考や仕事を支える時代に、情報をデータでなく身体の一部として扱う発想には意味があると思う。
壊されないことを目指すだけでなく、壊されても生き残る仕組みを作る。それが、僕の考えるデジタル臓器だ。
守る仕組みは、自分を壊す
ただ、ここまでの設計には、一つ大きな問題が残っている。
修復が、間違って発動したらどうなるのか。
正常な部分を異常と判断して巻き戻せば、守るための仕組みが、自分を壊すことになる。身体でいえば、免疫が自分の細胞を攻撃する自己免疫疾患だ。
検知は必ず間違える
異常の検知には、二種類の誤りがある。正常を異常と判断する誤検知と、異常を見逃す見逃しだ。
この二つを同時にゼロにすることはできない。感度を上げれば誤検知が増え、下げれば見逃しが増える。
さらに厄介なのは、誤検知が事故だけでなく、攻撃の手段にもなることだ。
正常な動作によく似た偽の異常を作り出せば、防御側が自分で正常な領域を止め、壊してくれる。攻撃者は侵入しなくても、防御の仕組みそのものを使って被害を出せる。
つまり、防御が強力で自動的であるほど、防御そのものが攻撃面になる。
検知の精度を上げる努力は必要だ。しかし、それだけで解決するとは考えないほうがいい。検知は間違える。その前提で設計する必要がある。
問題は誤りの大きさより、誤りの代償
同じ誤検知でも、被害は操作によって変わる。
警告を出すだけなら、誤りでも害はない。しかし、領域を巻き戻したなら、正常だったデータは失われる。
つまり、被害を決めているのは、検知の精度ではなく、その後に行う操作が取り返せるかどうかだ。
そこで、操作を取り返しやすい順に並べてみる。
記録: 異常の疑いを記録し、監視を強める
隔離: 他の領域との接続を切る
凍結: 領域の状態を保存したまま、処理を止める
巻き戻し: 保存しておいた正常状態で上書きする
上にあるほど、誤っていても戻せる。下にあるほど、誤っていたときに戻せない。隔離と凍結は、間違いに気づいた時点で解除すれば元に戻る。巻き戻しは、元の状態が上書きで消える。
だから、最初の一手は、隔離と凍結にする。 誤検知であっても、被害は「一時的に止まる」ことに留まる。巻き戻しは、凍結した状態を調べたあとで、別の判断として行う。
取り返せない操作ほど、合意を厚くする
領域間の検証には、二つのやり方がある。一つでも異常を出したら止める方式と、多数決で決める方式だ。
前者は誤検知で止まりやすく、後者は過半数を奪われると負ける。どちらにも欠点がある。
ここで、操作の可逆性によって使い分ければいい。
凍結は、取り返せる。だから一つの検知で発動してよい
巻き戻しは、取り返せない。だから複数の独立した判定が一致したときだけ行う
止めることは軽く、壊すことは重く。発動に必要な合意の厚さを、操作の不可逆性に比例させる。
身体の免疫にも、似た考え方がある。免疫は、一つの合図だけでは攻撃を始めないように作られているといわれる。攻撃という取り返しのつかない操作の前に、確認を挟む構造だ。
発動条件も、事前に固定しておく。その場でAIが新しい基準を作ってはいけない。判断する側が、判断の基準まで変えられるなら、乗っ取られた時点で全部が崩れる。
判断を記録し、判断を疑う
発動の理由と、そのときの状態は、必ず記録に残す。
そうすれば、あとから「その判断は正しかったか」を検証できる。誤検知だったとわかったなら、その履歴を次の検知に反映できる。
そして、防御するAI自身も間違える前提に立つ。防御の判断は、あとから別の仕組みが疑える形にしておく。
自分の判断を、自分だけで確定させない。
残る問題
この設計で、問題が解決したわけではない。
凍結が頻発すれば、使えない仕組みになる。 止めすぎる防御は、いずれ誰にも使われなくなる。
凍結を引き起こすこと自体が、攻撃になる。 偽の異常で、正常な領域を何度も止められる。
巻き戻しに複数の一致を求めても、過半数を奪われる問題は残る。 凍結が先にあるので、調べる時間は稼げる。ただし、それは解決ではなく、時間稼ぎだ。
可用性と安全性の釣り合いは、運用しながら調整するしかない。これも、設計と検証が必要な部分だ。
守るために壊すのではなく、止めて、調べて、直す
守る仕組みは、間違えるものだ。
だから目標を、間違えないことにはしない。間違えても、取り返しがつくことにする。
異常を見つけたら、まず止める。止めたまま状態を残し、調べる。そのうえで、必要なら直す。この順序を、仕組みとして固定する。
壊されないことを目指すだけではなく、壊されても生き残る。そして、守る仕組みが自分を壊さない。
それが、デジタル臓器に求められる、もう一つの条件だと思う。
※ 緊急時の発動条件を事前に固定し、状態の保存と変更を分ける発想は、独立した世界を接続する思考実験「Central Star Me」から来ている。
デジタル臓器という考え方②――中身を見せずに、同じものを守る
前回は、デジタル情報を身体の拡張として捉え、外側は集中防御、内側は分散構造という設計を考えた。再生は局所で行い、監視は領域同士で行う。
ただ、分散しただけでは足りない。
分散していても、同じ仕組みで動いているなら、同じ弱点を持つ。
領域を三つに分けても、三つとも同じプログラム、同じOS、同じ管理方法なら、一つの脆弱性が三つすべてに通る。分散していることと、独立していることは別だ。
今回は、この問題を身体に置き換えて考える。置き換えから出てくるのは答えではなく、確かめるべき問いだ。
世界ごとに、成り立つ法則を変える
一つの発想から始める。
足し算と掛け算の法則が、世界ごとに違う世界を考える。ある世界では掛け算の関係が保たれ、足し算の関係は保たれない。別の世界では、その逆になる。
数学として厳密な話ではない。設計の比喩として、こう言い換えている。
世界ごとに、使える操作を意図的に削る。
使える操作が少ない世界は、攻撃に使える操作も少ない。しかも、削る操作を世界ごとに変えておけば、一つの世界に通った攻撃が、他の世界にそのまま通るとは限らない。
連動は、共通する性質だけで行う
世界が違うなら、世界同士の連動は何を通して行うのか。
内部の中身を渡してしまえば、世界を分けた意味がなくなる。だから、通すのは両方の世界で成り立つ性質だけにする。
例えば、同じ計算を二つの世界で、別々の法則で行う。内部の手順はまったく違う。しかし、正しければ結果は対応する。連動は、その対応だけを確かめる。
対応しなければ、どちらかに異常がある。そのとき、すぐに相手を書き換えるのではなく、まず隔離し、凍結して、状態を残す。前回書いた順序のままだ。
比較は共有するが、操作権限は共有しない。
近い技術は、すでにある
この発想に近い技術は、いくつか存在する。私の理解では、次のようなものだ。
冗長剰余数系: 計算を複数の異なる法の世界で独立に行い、余分な世界を足して、誤りを検出する。
準同型暗号: 暗号化したまま計算できる。方式によって、足し算だけ、掛け算だけが成り立つものがある。
秘密分散: 情報を分けて持たせ、一つだけでは何も分からない状態にする。
ゼロ知識証明: 中身を明かさずに、正しく計算したことだけを証明する。
つまり、片方の演算だけが成り立つ世界は、現実に作られている。ここで考えたいのは、その考え方を、一つの技術の中でなく、デジタル臓器の設計全体に当てはめたらどうなるか、ということだ。
免疫も、中身ではなく断片で見分けている
身体にも、似た構造がある。
私の理解では、免疫は、細胞の内部をそのまま覗いて判断しているわけではない。細胞が表面に提示した、タンパク質の断片を見て、自己か非自己かを区別している。
中身は見ずに、提示された断片だけで照合する。
先ほどの連動と、同じ構造をしている。世界は、自分の中身を隠したまま、検証に必要な性質だけを外に出す。外から見えるのは、その断片だけだ。
見せるものと、隠すもの
ここで、設計の中心が見えてくる。
何を見せれば検証でき、何を隠せば守れるのか。
見せすぎれば、そこが攻撃の足場になる。隠しすぎれば、検証ができない。この境界を、どこに引くか。
例えば、結果の一致だけを見せるのか。条件を満たしていることの証明だけを見せるのか。内部の状態は、一切見せないのか。
さらに、そもそも、内部構造の違う世界の間で、何を同じ情報とみなすのかも決めなければならない。文字列が一致すればよいのか、意味か、処理の結果か、それとも満たすべき条件か。
AIの判断を比べる場合は、特に難しい。三つのAIが、同じ間違いをすることもある。一致は、正しさを保証しない。
残る問題
この構想で、安全が完成するわけではない。
照合の経路が、新たな共通部分になる。 世界の中身を変えても、結果を照合する経路が一つなら、そこが弱点になる。
演算の違いは、環境の独立ではない。 同じOS、同じ管理者権限の上で動いていれば、前回書いた「同じ血流」の問題は残る。演算の違いが保証するのは、判断の独立までだ。
中が見えないのは、防御側も同じ。 中を見て初めて分かる侵害は、見逃す。偽の「正常」を、中を見て確かめることもできない。
算術の形にならない処理には効かない。 アクセス制御や権限の判断は、足し算と掛け算では表せない。
検知であって、防止ではない。 侵害を見抜く仕組みで、侵入そのものは止めない。
守れる範囲は、今のところ、「計算結果が正しいことの検証」に絞るのが妥当だと思う。
分散の次は、異質性ではないか
前回までは、機能や権限を分散することを考えてきた。しかし、分散したものがすべて同じ構造なら、共通の弱点が残る。
だから次は、異質性だ。
同じものを複数用意するのではなく、異なる法則の世界に、同じ目的を果たさせる。そして、世界の間では、中身を見せずに、必要な性質だけを照合する。
分散するだけでなく、異なる世界の間で、何を見せ、何を隠すかを決める。
これもまだ、具体的な技術ではなく、設計についての思考実験だ。既存の異種冗長化や多層防御と重なる部分も大きい。
ただ、身体を手がかりにすると、問いは立つ。
異なる世界で、同じものを守るとはどういうことなのか。見せることと、守ることの境界は、どこにあるのか。
身体の仕組みで、デジタルに当てはめられそうなものがあれば、コメントで教えてください。
※ 構造の異なる対象を、対応関係だけで結ぶという発想は、IUT理論の話から着想を得た。ただし、理論の内容を応用したものではなく、その妥当性について私は判断できない。