ボランティア・コンピューティングにおけるセキユリティの課題 |
|
ボランティア・コンピューティングでは、多様な攻撃の種類がありえます。
結果の改竄
冗長コンピューティングと結果の検証という技術を使うことにより、 確率的な検出が可能です。 つまり、大多数の結果が(アプリケーション固有の 比較基準に照らして)ほぼ合致しているなら、その大多数を正しいものであると 分類するのです。
功績(Credit)の改竄
冗長コンピューティングと結果の検証という技術を使うことにより、 確率的な検出が可能です。 つまり、各参加者が、正しいと判定された 結果のうち最低の功績を得るようにします。 (あるいは、言いたてられた 功績のうちの最低値ではなくて、平均値か、中央値とかいった、 別の選択アルゴリズムで決めることもあり得ます)。
悪意ある実行可能ファイルの配付
コード署名の技術で、これを阻止します。 各プロジェクトは、コード署名のために鍵ペア[秘密鍵と公開鍵] を持ちます。 実行可能ファイルにデジタル署名を生成するために秘密鍵 を使います。 この秘密鍵は、はネットワークから切り離された マシンに保持されるべきです。 公開鍵のほうは、クライアントに配付され 格納されます。 アプリケーションの版に付属するすべてのファイルは、 この鍵ペアを使ったデジタル署名とともに送付されます。
たとえ攻撃者がどれかのBOINCプロジェクトのサーバに侵入できたとしても、 偽りのコードを内容とするファイルをクライアントに受け入れさせる ことはできません。
BOINC は、コード署名の鍵ペアを定期的にプロジェクトが変更できる 仕組を提供します。 プロジェクトが新しい鍵ペアを(コード署名用マシンで)生成したら、 新しい公開鍵に対する署名を従来の秘密鍵で作成します。 コア・クライアントは新しい[公開] 鍵を、[従来の] 古い鍵で署名されているときだけ受け入れます。 この仕組は、攻撃者がBOINCサーバに侵入して、 偽りの鍵を配付することを防ぐために設計されています。
データサーバへのサービス不能攻撃
個々のリザルトファイルは、対応する最大サイズが決まっています。 各プロジェクトは、アップロード用の認証鍵ペアを持ちます。 その公開鍵はプロジェクトのデータサーバに置かれています。 リザルトファイルの記述がデジタル署名つきでクライアントに送られており、 [その中に最大サイスが書かれています。 ] リザルトファイルが アップロードされるときには、その[署名つきの記述が] データサーバに [折り返し] 転送されます。 データサーバはファイル記述を検証したうえで、 アップロードされたデータの大きさが決められた最大サイズを超えていないことを 確かめます。
サーバを攻撃して、参加者のアカウント情報を盗む
各プロジェクトが、従来からあるセキュリティ対策を使って、 個人のアカウント情報(たとえば、E-mailアドレス) が盗まれないように、解決策を立てなければなりません。 すべてのサーバマシンは、ファイア・ウォールで守られるべきですし、 使っていないネットワークサービスは停止しておかなければなりません。 これらのサーバマシンへのアクセスは、SSHのような暗号化された プロトコルだけを使ってなされるべきです。 これらのマシンは、 定期的なセキュリティ監査のもとで管理されるべきです。
サーバを安全に保つだけの充分な専門的能力と資源を備えた組織の もとでのみ、プロジェクトは開始されるべきです。 もし、攻撃が成功してしまったら、BOINCをベースとする全ての プロジェクトおよび、一般参加型コンピューティングの全体が 信用を失うことになりかねません。
ネットワークを攻撃して、参加者のアカウント情報を盗む。 ネットワーク・トラフィックを盗み見している攻撃者は、 参加者のアカウント・キーを取り出して、それを使って参加者の E-mailアドレスを得たり、好みの設定(プレファレンス)を変更したり できるかもしれません。 BOINCはこれを防ぐためには、何もしていません。
プロジェクトファイルを盗む
BOINCアプリケーションが使う入力・出力フィアルは、暗号化されていません。 アプリケーションは、暗号化を自分自身でやることができますが、 少ししか効果はありません。 というのは、データは[クライアントの] メモリ上に平文のまま存在しており、デバッガを使えば、メモリには 簡単にアクセスできるからです。
参加者のホストを意図的に不正使用するプロジェクト
BOINC はこれを防ぐ方法を持っていません。 (たとえば、アプリケーションを 動かすための 'サンドボックス' を用意するなどといった対策を持ちません)。 BOINCプロジェクトのどれかに加わるときには、自分のシステム の安全をプロジェクトに委ねていることを、参加者は理解しなければなりません。
偶然に参加者のホストを不正に使ってしまうプロジェクト
BOINC はいくつかの問題を防ぎます。 たとえば、アプリケーションがあまりにも多くの ディスク領域やメモリ、あるいは CPU 時間を使っていることを検出して、その アプリケーションを途中で止めさせます。 しかし、アプリケーションを 「サンドボックス」に閉じ込めているわけではないので、様々な種類の不測の悪用があり得ます。 プロジェクトでは、公開前のアプリケーションの試験によって、 そのようなことが生じる可能性をなるべく減らすことができます。 プロジェクトが実運用の段階に進む前に、全てのプラットフォーム上で、 全ての入力データのシナリオのもとで、プロジェクトはそのアプリケーションを 徹底的にテストするべきです。
最終更新時刻 00:50:52, 2006年08月12日(JST)
Copyright © 2010 University of California.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License,
Version 1.2 or any later version published by the Free Software Foundation.
Copyright © 2010 Komori Hitoshi(je2bwm at jarl.com).
Japanese translation from English web pages on BOINC.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License,
Version 1.2 or any later version published by the Free Software Foundation.