Snap Storeの信頼と安全
「Snap Store」及びSnapアプリの信頼と安全に関する取り組みや考えを紹介します。1.事の始まり
何があったのか、まずは事の始まりの紹介です。先週の金曜日(2018/5/11)我々は、アプリを実行中にバックグラウンドで暗号通貨のマイニングを行うSnapアプリの存在を把握した。
これはユーザーのシステム上のローカルリソースを過度に使用するということであり、 一般的なアプリケーションが使用するリソースを大幅に上回り、予想するよりも多くのエネルギー(電力)を消費する。
正味の影響は、少量の非個人情報と、問題の開発者が受け取る収益と一致するコンピューターリソースの交換であり、収益はリソースの使用量に比例する。
この開発者がリリースしたSnapアプリは非公開になっているが、信頼された組織により、適切なコンテンツでこのSnapアプリは再度公開されるだろう。
しかし今回のことは、興味深く議論の価値がある疑問をいくつか提起することとなった。
2.開発者の意図
開発者はなぜこのような振る舞いをアプリに含ませたのでしょうか。そこには表に出されなかったもう一つの狙いがありました。
今回のケースにおいて最初に尋ねる価値のある疑問は、暗号通貨のマイニング自身は違法でもなければ非道徳的でもないことを考慮しつつ、開発者が実際に何か間違ったことをしていたかどうか、ということである。
この視点は実際にその開発者により提起されたものであり、開発者は我々に、”目的は収益化が許可されたライセンスに基づくソフトウェアの収益化であり、社会的及び技術的に与える影響に関し意識していなかった”と伝えてきた。
その開発者と一度連絡を取った後開発者は、このやり方を中止すると申し出た。
アプリケーションの第二の目的が示されていなければ、当然誤解を招くことになる。
これがSnap Storeからアプリケーションが削除された実際の理由である。
暗号通貨のマイニングに対し規則はない。
しかしユーザーの誤解を招くようなことは問題である。
3.ソフトウェアの検査手法
今回のような事案を未然に防ぐには、ソフトウェアのチェックやレビューによる事前審査が有効な手法となります。現代的なソフトウェアリポジトリーの運用において最も困難な課題の一つは、公開されるソフトウェアが、確実に目的とすることだけを行っているかどうかを確認することだ。
従来のUbuntuのリポジトリー(APT/deb)では、我々は信頼できる基盤及び信頼できるソースからのみソフトウェアを構築する権限を有している。
これは信頼性と安全性という点で明らかに優位性があるが、 数百万のユーザーに新しいソフトウェアを提供するには、非常に長い時間を必要とする。
Snapsは開発者に様々なLinuxディストリビューションに対し横断的かつ直接的にソフトウェアを配布する方法を提供する。
そしてSnapsは、それらのアプリを隔離し確実に閉じられた環境を提供する。
iOSやAndroid、Windowsが提供するアプリケーションストアでは、品質の確保やセキュリティーコントロールのために標準的な手法に従い、アプリのチェックを行う。
ストア側にアプリが受け入れられる前にパッケージは、必ず自動化された検査にパスしなければならないし、特定の問題が報告されたなら、人間による手動の検査(レビュー)が行われる。
Snap Storeはこれら両方の手法を導入している。
4.ソフトウェア検査の限界
しかしそこには限界があります。しかしこれらの手法を以ってしてもソフトウェアが持つ複雑さにより、ソフトウェアの個々のファイルに対し詳細なレビューを行った後、問題ないソフトウェアのみ受け入れるというのは、大規模なリポジトリーにとって不可能なことだ。
ソースコードが公開されているか否かに関わらず、毎日やってくる何十万もの行数を持つソースコードをレビューできる機関など存在しないのだ。
5.現実的な信頼モデル
信頼に対しどのような方法が効果的で現実的なのでしょうか。そのため最も功を為す信頼モデルは、ソフトウェアの中身に基づく信頼モデルではなく、ソフトウェアの由来に基づく信頼モデルなのだ。
言い換えればアプリケーション自身に信頼を置くのではなく、アプリケーションの開発者や提供者に信頼を置くのである。
この手法は特に我々がソフトウェアに対して信頼していることをより正確に言い表す時に役立つ手法である。
つまりバイナリーに信頼を持たせるよりも、”我々はカメラにアクセスするPauline提供のソフトウェアを信頼しています。”と表現するほうが好ましい。
6.セキュリティーの仕組みと信頼という考え
Snapパッケージには安全性を確保する仕組みがありますが、信頼という考え方は存在し続けます。Snapパッケージに実装されている仕組みは、Linux kernelが提供するモダンなセキュリティー機能を駆使し、非常に高度な粒度で信頼を確立することが可能である。
これは正しい方向の大きな一歩である。
またこの仕組みにより、アプリがウェブカメラへのアクセスを必要としているかどうかや、ホームディレクトリー内のファイルへアクセスする機能を有しているかどうかなど、このような疑問に対する答えを提供できる。
また例えばアクセスを取り消したりその他多くの同種の機能に対し、ユーザーの意志の反映が可能になる。
しかしこのような仕組みを以ってしても信頼という概念は継続的に存在し続けるし、重要な概念である。
例えばあるユーザーが不明な提供者によって配布されたウェブブラウザーをインストールしたとする。
例えそのウェブブラウザーが自身のストレージ領域、ディスプレイ、ネットワークにのみにアクセスするとしても、ブラウザーを通じて流れるすべてのデータは、危険に晒されたままである。
ウェブブラウザーを利用する前に、ウェブブラウザーの提供者が誠実であり、安全性に配慮していると信用する方法はない。
安全性への道筋
安全性をどのような方針で実現し、ユーザーに提供してくのでしょうか。1.安全性の実現に向けたロードマップ
ロードマップには、常に現実に沿った策が反映されています。我々は数年前Snapパッケージの開発作業を初めた時、あらゆる観点から完全な安全性を提供する手段の実装は、一朝一夕には実現できないことを理解した。
また安全であることに加え、それは活用できるものでなければならなかった。
そこで我々が我々自身に与えた課題は、その状況を大幅にそして速やかに改善するということだった。
そしてそれから徐々に改善を提供できるよう、段階的な改善を行うための道筋を作った。
我々は、システムの安全性の改善におけるセキュリティーの機能と、サーバーやデスクトップにソフトウェアを導入する人々の体験や考え方に多大な関心を寄せ、我々のロードマップにそれらを継続的に反映している。
2.提供者の検証と判別
提供者を検証し、容易に”信頼”を判別できるようにする仕組みの実装が行われています。一例を挙げると、特定のソフトウェア提供者を検証済みとしてフラグを設定する機能の実装に取り組んでいる。
これは単純だが非常に効果的な手法である。
この機能の詳細は近々アナウンスされる予定だが、基本的な考えはSnapアプリを公開する個人や組織が何者であるかをユーザーが容易に判別できるようにすることだ。
ただしそれでも依然として信頼の判別を行う必要性は残ったままになるが、アプリをインストールする前にユーザーが信頼の判断を下すのにこの情報を役立てることができるだろう。
最後に
残念ながら非の打ち所のない完璧な仕組みは存在しません。しかしこの状況を甘んじて受け入れているわけでもありません。
週末にかけて発覚した今回の出来事は不幸な出来事であった。
しかしまた、あらゆる人気のあるソフトウェアストアは、不正利用に対処し、そしてこのような状況を減らしていく必要があるという点において予期していたものだった。
我々は今回の出来事を真摯に受け止めている。
我々は継続的にストアを注意深く監視し、プラットフォーム全体のセキュリティーの向上に努めていく。
我々はこのプロジェクトをオープンかつコミュニティーと連携して運用している。
なのでもしあなたがこの問題に関心があり、Linuxにおけるソフトウェアの配布方法の未来に手を貸したいと思うなら、どうか我々の議論に参加して欲しい。