ゼロトラスト

最近のコンピュータ・セキュリティを象徴する言葉、らしい。「一切信じない」という感じだろうか。

思えば、10年くらい前に Ruby on Railsのパラメータ抽出の安全判定方針が「ブラックリスト」方式から「ホワイトリスト」方式に切り替わった際に、学生に聞いたことがある。(というよりも、それ以後、毎年学生に質問している。たぶん、今年も・・・)

「『ブラックリスト』と『ホワイトリスト』、どちらがより『相手を信じている』方式だと思う?」
(すみません、決して黒人差別のつもりではなくて、犯罪者が「黒」(罪人)か「白」(無実)かという日本語の慣用表現がベースの話なので、翻訳されて読んでいる黒人の方、不快に思われたらごめんなさい。私自身、赤道直下で生活していた頃は全身がかなり濃い茶色になっていた(黄色人種の特徴で、いわゆる「黒人」と同程度に「黒く」(suntanned)なっていた)ので、そういう意味でも、少なくとも、肌の色がどーこーという話題ではないです。)

ブラック、とかいうと、なんだか相手を疑ってかかる感じで、ブラックリストの方が人を疑っている感じ?ホワイトとかいうと相手を信じている感じ、だからホワイトリストの方が人を信じている?と思ったら大間違い。
ブラックリストは、リストに載った相手は拒絶する(リスト化された項目は、ネットからの情報を受け入れない)けれど、それ以外、特にリストにない項目は全面的に信じる(受け入れる)。その一方で、ホワイトリストは、「リスト」にある項目は受け入れるけれど、それ以外は全部受け入れない。つまり、ホワイトリスト方式の方が、「疑り深い」方式だと言える、と私は理解している。

それが、「ゼロトラスト」となると、全面的に「疑う」ことになる。「全く信じない」の意味だろうか。ただ、そこまで表現が行き着くと、実を言えば私自身はなんとなく、というか、かなりの違和感を感じている。

専任教員時代、確か大学教員になって3年目、2期生の女子学生に言われたことがある。
「先生、私コールセンターでアルバイトしてるんですけど、先生を見てるとなんだか簡単に騙せそうな気がします。」
なるほどねぇ・・・よく見てる。実は、同じことを他の人からも、たぶん3人くらいから同じことを言われたことがある。で、実際、30代の頃、「電話勧誘」の言葉を鵜呑みにして、かなり痛い思いをしたことがある。(いい経験でした。)

ただ、それ以後も、今でも、基本的には「誰かが口にした言葉」を疑う、ということはほとんど私はしていない。基本的に、言葉は全面的に受け入れている。
私は、「心の勉強会」として「師匠」と思っている方の講演会に(可能な限り)毎週参加しているけれど、参加するようになってから、以前と違って来たのは、確かに「誰かの言葉」をそのまま「受け入れている」けれど、ただ単純に「この人はこういうことを口にした」というその事実をそっくりそのまま覚えておくだけで、その真贋を一切判断していない、ということかも知れない。信じてもいないし、疑ってもいない。
相手が「その言葉を口にした」という事実を覚えておくだけ、という感じだろうか。それ以来、おそらく「営業電話」をかけて来る人にとって、相当に私は扱いにくくなってるんじゃないか、という気がする。必要ならば、改めて真贋は自分で調べる。確認できて必要ならば改めてリアクションする。ほとんどの場合必要ないからスルーする。

今にして思えば、という話題なのだけれども。こんなことがあった。
やっと「自分の仕事」でまとまった稼ぎがあった頃に、親父とお袋を北海道旅行に連れて行ったことがある。その計画を弟に話したら、弟ものってくれて、全額私と弟の負担で、両親と弟と4人での旅行になった。羽田から札幌へ、お袋にとっては「生まれて初めて」の飛行機旅行だったみたいだ。
羽田のターミナルから飛行機が滑走路に移動する際に、ターミナルを離れる際に押し出されてまず後ろ向きに移動を開始した。そうしたらお袋が驚いたみたいに「後ろ向きに動いている!」と口にした。
私はここぞとばかりに、お袋に言った。「母さん、知らなかったの?『上り』の飛行機は前向きに飛ぶけど、『下り』の飛行機は後ろ向きに飛ぶんだよ!」お袋は、一呼吸おいて「ふ〜ん、そうなの。」と返してきた。
笑うでもなく、呆れるでもなく、あっさりと、サラッと受け流された感じで、何だかお袋の方が一枚上手だったような気がした。信じているとも疑っているとも判断させない。ただ単に、私が言ったことは聞いたけれど、まったく真贋の判定を感じさせない。今にして思えば、「極意」だなぁと思う。否定も肯定もしない感じ。

つい昨日の話。大学院のWEBプログラミングの授業で、例年とは違う景色があった。これまでは、ほとんどの学生がWindowsパソコンを開いていて、ごく一部、数名の学生がMacを使っていたのだけれど、今年は、Windowsパソコンは二人だけで、残りの全員がMacBook Airを持っていた。私の感覚としては、普段はMacで仕事をしているのだけれど、学生に迎合してという感じで、Windows用に教材を用意して授業に臨んだところが、完全に的を外された。授業後に、学生の一人が教えてくれた。「先生、今年から一年生への貸与コンピュータが、MacBookになったんです。」
おっと!絶句した。思い切ったことをしたなぁ・・・。(基本的には大歓迎。)

Linuxは、Unixを前身にしている。MacOSもベースはUnixだから、Mac OSはLinuxと親和性は良い。

そのUnixは、元々はワークステーションと呼ばれた、「大型コンピュータ」をスケールダウンした、今でいう「サーバ」レベルのコンピュータのオペレーティングシステムだった。
8ビットのマイクロコンピュータ=パーソナルコンピュータ(PC)が登場した際に、Unixをモデルにしたオペレーティングシステムがいくつか登場した。CP/MやOS2。OS2は、何となくフェードアウトし、あまりユーザ数は増えなかったけれど、まずCP/Mが普及し、後追いでマイクロソフトがDOS(Disk Operating System)を出してきた。

当時のパソコン雑誌では、CP/Mを評して「UNIXもどき」と呼んでいた。その同じ記事の中で、マイクロソフトのMS-DOSのことを「UNIXもがき」と評していた。MS-DOSは、UNIXを目指しているように見えたけれども、あまりにも、最低限の想定しかなかった。UNIXとMS-DOSの最大の違いは、「ファイル」に「アクセス権」を設定できるかどうか、だったと思う。

既に40年以上前、UNIXはファイルの「オーナー(持ち主)」「グループメンバー」「それ以外の人」という3段階の「認証レベル」を設定し、それぞれについて「読み取り権限」「書き込み権限」「実行権限」の3種類の設定ができる構造だった。
初期のApple, Apple IIなどのマイコンのOSについては覚えていないけれど、Macになった時点で、Macもこの「アクセス権」の考え方は完全にUNIXから継承していた。つまり、MacでもUNIXでもプログラムをする際に、「オーナー」など、ファイルの持ち主属性を常に意識しないとプログラムは書けなかった。ところが、MS-DOSのプログラムでは「ファイルの持ち主」などという属性は最初から存在していなかった。初期のWindowsも全く同じ。

UNIX系のプログラマが、メールソフトを書くならば、「添付ファイル」を「保存」する段階で、その持ち主を「メーラー」にするか「操作しているユーザ」に譲渡するか、どんなアクセス権を設定するか、それを意識しなければ、きちんとしたプログラムは書けなかった。ところが、MS-DOSも、初期のWindowsも、「持ち主」については全く設定すらできない状態だった。(だから、逆に言えば、プログラミングが簡単だったのかも知れない。)

Windowが爆発的に普及し始め、ウイルスの問題が顕在化するにつれて、Windowsでも「ファイルのオーナー」を設定するようになってきた。あまりにも「後追い」で、UNIX(というか、LINUX)のように、そもそものOSのカーネルにファイルのアクセス権の扱いが細かくプログラムされているOSと違って、「外付け」でアクセス権を扱うような構造になっているから、使い勝手が悪いというか、やたら面倒で、OS設計の配慮不足というか、漏れも多く、いわゆる「セキュリティホール」も多く、はっきり言えば、オペレーティングシステムとしての作りが悪いから、何というか、「汚い」というか、「場当たり的」なプログラムしか書けない。
そのWindowsをベースにした「プログラミング教育」を、たとえば「学校教育」でもWindowsベースで扱っているから、ごく「表面的」に「コンピュータを使えます!」程度の学生を育てるならそれでもいいかも知れないけれど、セキュリティの考え方を、一貫性を持って教えるには、かなり面倒な「道具」を全面採用してくれたな、とずっと思っていた。
そもそもが、コンピュータ教育のカリキュラムを制定する人たちが、WindowsとWordとExcelを使えます、程度だったんじゃないか、という気がしてならない。Linuxを口にした時点で「オタク」扱いされて、相手にされなかった。
それが今や、Googleが仕掛けたAndroidも、Chrome Bookも、カーネルはLINUXベースだし(Googleの判断には全面的に私は共感するけれど、日本の情報教育の仕掛け人は、オタク文化が世界を席巻しているとでも思っているんだろうか・・・)加えて言えば、IoTの主流の一翼を担っているRaspberry PiのRaspbian OSも、Debian系のLINUXがベースだと理解している。MacOSもUNIXベースだし、WindowsはWordやExcelから離れられない人だけが使い続けりゃいいんじゃないの、と私は思っている。その WordもExcelも、(「日本語化」は、細々とボランティアがやってるだけだから、あまり使い勝手はよくないものの)文書は、LibreOfficeを使えばLinuxからだって開ける。

なんだか、もう30年以上、なんでUNIX(LINUX)ではなくWindowsなんだ!と、言い続けてきたけれど、Macになって、やっと、OSの作りまで意識した授業ができるような気がしてきて、今年は何だか、教材の書き直しが忙しくなるかも知れない。忙しくなるとは思うけれど、やっぱりかなり嬉しい。

去年の秋、チェコからの留学生が私の授業を履修してくれた。彼は、Ubuntu をインストールしたノートコンピュータを使っていた。
最近、Pythonがコンピュータ言語としてメジャーになってきて、IDEとして使っているPycharmの使い勝手がいいので授業でその話をしたら、彼が、Pycharmを開発したJetBrainsはチェコの会社だと、アピールして来た。なるほどね、と納得した。学生がUbuntuのノートを普段使いしているんだもの。日本とはレベルが違う、と思った。
今はもう、インターネットを全世界、どんな国でも使えるようになって来ている。わざわざ高いライセンスをマイクロソフトに支払うのではなく、(寄付は望ましいにしても)ライセンス自体は無料で使えるUbuntuとかDebianとか、Linux系を情報教育に採用している国も増えていると思うけれど、今後情報技術で主導的なポジションを取るのは、早期にLINUX系にシフトした国だと思う。(日本では、もう30年間同じことを言い続けて、30年間冷笑され続けて来たから、もうどーでもいい。)今後も仕事を続けるなら、チェコへの移住もいいかも知れない。(浮気症だなぁ、気が多いなぁ・・・)って、せっかく彼が私の授業をとってくれたのに、ドブリーデンしか覚えなかったけれど・・・

LINUXでのプログラミングの感覚から言えば、「信じる」とか「疑う」とかいう感覚ではなく、「アクセス権があるか」「ないか」、もしくは、「オーナー(正当なユーザ)」かどうか、それだけだと思う。昔から、そういう基本構造だった。だから、「ゼロトラスト」(一切信じない)という表現には、なんとなく違和感を覚えている。
「信じる」とか「疑う」には、なんとなく感情的なニュアンスがある。そうではない、ただ単純に、アクセス権についての「認証」が通っているか、それだけの問題のように、自分は感じている。

やたらとフェイクを拡散するどこかの国の大統領がいたけれど、(昨年から、二人目が登場したけれど、)問題なのは、事実かどうか、それだけで、いざとなったら「真贋」を判定する必要があるとしても(アクセス権の場合には、無論最初に認証が必要だけれど、)案外、ただ単純に、それだけの問題じゃないか、という気がする。

少し前のページで書いた。1千万円もする自動車が、たったの40秒で盗まれた。自動車の「基幹ネットワーク」がイーサネットだとしたら、あまりにも粗忽な設計だという気がする。
売却してオーナーが自動車会社から個人の持ち主に移ったなら、「メンテナンスのためのバックドア」についても、「オーナーからの一時的な権限移譲」を受けなければ接続できないように、認証設定をプログラムするべきじゃないか、と、私は思う。
例えば、車検などのためにメーカーのサービス窓口に持ち込んだとして、そこで、スマホなどを使ってオーナー(持ち主)から、「車検代行会社」に「車載ネットワークアクセス権」を「許可」する。「鍵」を持っているか、もしくは、「アクセス権の譲渡」をされているか、しなければ、エンジンが起動しない、そういうプログラム設定は、そんなに難しくないと思うのだけれど、そういう発想が実用的でない理由が何かあるんだろうか。

なんだか、話題が飛びまくっているけれど、これがふだんの私。
「まとめ」の言葉も書けない感じだけれど、言いたいこと(書きたかったこと)は全部書けた気がするので、これでページを終える。

おやすみなさい。

この記事が気に入ったらサポートをしてみませんか?