1-2: 課題-1

 いくつかのバージョンのwormを試した後、黒田くろだ あゆむは机の前で考えていた。それは、wormを記述する言語の仕様を作り上げることに疲れていたからでもあった。

 黒田 歩は研究ノートにバサバサと目を通すと机から離れ、ワークステーションが置かれている部屋へと向かった。

 研究室中のワークステーションでhttpサーバを起動し、その範囲に限ったwormを放流した。次々にワークステーションからビープ音が鳴った。それはwormがサーバの間を動き回っていることを簡単に確認するために仮に実装した機能だった。そこここから鳴るビープ音を聞きながら、黒田 歩は考えていた。言語設計は初めてではないものの、どの程度の記述力が必要なのか、あるいはどの程度の記述力に押さえる必要があるのか、それに折り合いをつけることの難しさがあった。

「黒田君、私はもう帰るが……」指導教授がワークステーションが置かれている部屋の扉を開け、言った。教授もあちこちから鳴るビープ音をしばらく聞いていた。「また、泊まり込みかな?」

「どっちにしろ夕飯を食べに行くので。たぶん帰ると思います」

「そうか。まぁ、無理をしない程度にな」

 教授が扉を閉めると、足音が遠ざかって行った。

 記述力を高める方向であれば、確実な方法が一つあるように思えた。もし、Javascriptをサーバ・サイドで動かせるのであれば、十分な記述力をもった言語として、wormを記述する言語として使えるのではないか。

 だがそれは、Javascriptの能力を超えるものでもあった。すくなくとも、ページの内容を取得する機能はなかった。

 取り得る方向は二つだった。ブラウザのソースからJavascriptに関する部分を抜き出し、ページの内容を取得する機能を拡張し、同時にサーバ・サイドで動くようにすること。もう一つは、これまでの方針どおり、自前の言語を構築すること。

 前者は、wormの実行系として採用するには危険であるように思えた。肝心の機能が備わっていないとしても、その機能を実装することはできる。しかし、JavascriptのSand Boxはどれくらい信用できるものだろうか。そして、wormの記述言語という目的を考えれば、Javascriptにそれらの機能を実装したものは、強すぎる記述言語であると思えた。

 そう考えた時、別のアイディアを思いついた。自前の言語を構築するとしても、それがJavascriptに似ていてはいけないという理由はない。必要な機能は付加するものの、別の面において機能を削ぎ落としたJavascriptであっては――あるいはJavascriptによく似たなにかであっては――ならないという理由はない。

 その場合にも問題が存在しないわけではなかった。その言語が受け入れられるかどうかという単純な問題だった。同時に、重要な問題でもあった。Javascriptの単なる劣化版と見做されたなら、普及は難しくなるかもしれない。それは、サーバ・サイドで動く拡張したJavascriptの実行系を――そして機能が制限されていないJavascriptの実行系を――実装しようというアイディアを誰かにもたらすだろう。Sand Boxすら捨てたものになるかもしれない。

 そのような事態は、Javascriptを元にしない場合であっても起き得る自体であるとは想像できた。明らかに、そのような事態への対処が必要だった。取り得る方法がないわけではなかった。まず、wormの実行系のハッシュの認証局を用意し、適宜ハッシュ値を確認すること。そのためには、wormの実行系はバイナリにはしない方向が簡単ではあるように思えた。唯一の実行系のみを認める簡単な方法だと思えた。だが、厳密に唯一の実行系のみを認めるという方向は現実的とはいえなかった。いくつかのバージョンには対処しなければならない。

 それは別の問題も含んでいた。一つには実行系の改変を容易にするものであった。それに対処するためには認証局の負荷が問題となる。そして、認証局の負荷が解決できたとしても、ごまかす方法はあった。なんらかのハッシュ値だろうと、あるいは実行系のソースだろうと認証局において確認するとしても、認証局に送るファイルと実際に実行されるファイルを別のものとすることは簡単だろう。それは、wormを受け入れた実行系が――それも危険に改変された実行系が――、安全であるはずの本来の実行系を認証局に送るように改変することも簡単だということでもあった。

 確実にという条件を緩め、より確実にという条件であれば、方法はあった。実行系の認証を、一つの認証局に頼らないという方法だった。

 その言い方は正確ではなかった。wormの実行が必要となるたびに、実行系をその発行局から実行系をダウンロードする。実行系の発行局は、同時に実行系を要求したサーバのURLと実行系を認証局にも送る。実行系を受け取ったサーバは、ある鍵による実行系のハッシュ値を認証局に送る。それを認証局に存在するハッシュ値と比較し、同一の内容であると確認できたなら、認証局はサーバに実行の許可を示す結果を返す。

 そのような方法自体は、可能であるように思えた。

  • Twitterで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る