理論計算機科学はセキュリティとどのように関係していますか?


11

安全でないソフトウェアについて考えるとき、それは「あまりにも有用」であり、攻撃者に悪用される可能性があると思います。ある意味で、ソフトウェアを保護することは、ソフトウェアの有用性を低下させるプロセスです。理論的コンピューターサイエンスでは、現実の世界を操作していません。それでは、純粋な理論を扱う際にセキュリティ上の懸念はありますか?それとも、コインの反対側で、理論的コンピューターサイエンスは、ハッキングされる人々の現実の世界に影響を与えますか?もしそうなら、どのセキュリティトピックが理論的と見なされますか?


9
提示されたCS理論の視点は主観的であり、非常に議論の余地があり、質問を提起するために必要でもありません。この質問は、ハッキングに特に焦点を当てているようです。ハッキングは、それ自体が幅広いテーマであり(ソーシャルエンジニアリング技術に至るまで)、「安全であること」がもたらすものに近づきません。これらの理由から、私は投票しました。しかし、私は質問が良い場所から来ているように感じ、それにいくつかの興味深い側面があるので、以下で答えました。
ロススナイダー

回答:


20

「不安定」は「有用すぎる」ソフトウェアによるものであるという直感は、ある意味で正しいです。あなたの直観を形式化する「微分プライバシー」に関する大規模で成長している理論的文献があります。たとえば、こちらをご覧ください:research.microsoft.com/en-us/projects/databaseprivacy/dwork.pdf

ϵeϵ

0


14

いくつかの方法で:


正直なところ、あなたがこれまでに脆弱性を発見したり、1つのコードにパッチを適用したり、実世界の脆弱性の内部動作を見たことさえないと思います。
ルーク

8
OllyDbgを使用して、gdi dllにパッチを適用し、Microsoftの火曜日にパッチを適用する前に(明らかにソースコードなしで)カーソルの脆弱性を修正しました。再びOllyDbgを使用して、クローズドソースエミュレーターにパッチを適用し、ポケモン競技の(恥ずかしいことに)不正行為を防止します。Webcamプロジェクトで0dayを見つけ、多数のウォーゲーム(ASLRとPaXが有効になっているBlacksunを含む)でかなり高いスコアを獲得しました。私がやったことのある、もっと不名誉なことについては言及しません…。持っていたか、持っていなかったのが重要なのでしょうか?炎上しないでください。
ロススナイダー

13
@The Rook:Rossのリストがソフトウェアセキュリティの実際の実践とほとんど関係がないと思うなら、そう言ってください。たぶんいくつかの例を挙げることは助けになるかもしれませんし、TCSセキュリティ研究が実際のセキュリティ慣行からどれだけ離れているかについての詳細な答えを追加することもできます(読むのはとても興味深いと思います)。しかし、ロスを軽meanする必要はありません。
ジョシュアグロチョウ

13

Wired Equivalent Privacyの例を考えてみましょう。これは実際にはそのようなことではありません。恥ずかしいほど基本的な理論上の見落とし(pdf)のため、WEPは数分でクラック可能です。

では、「なぜ、コンピュータであり安全ではない、」ブルース・シュナイアーは皮肉

セキュリティエンジニアリングには、サタンのコンピューターのプログラミングが含まれます。

そして、サタンのコンピューターはテストするのが難しい。


10

ネットワーク侵入検知に由来するストリーミングアルゴリズムの研究には、実世界の動機がたくさんあります。以下のペーパーでは、経験的エントロピーのストリーミングアルゴリズムを使用して、ネットワークトラフィックの異常を検出します。

Yu Gu、Andrew McCallum、およびDon Towsley。最大エントロピー推定を使用したネットワークトラフィックの異常の検出。IMC '05:インターネット測定に関する第5回ACM SIGCOMM会議の議事録、2005年1〜6ページ


8

他の回答とは異なり、これは、TCSがセキュリティで使用されている場所とは対照的に、「何かが「確かに安全だ」と言うときに心配すべきこと」に沿っています。したがって、理論を扱う際のセキュリティ上の懸念に関する最初の質問に対処します。

ハッカーが言うように、理論的な結果はしばしば実世界のセキュリティに接します。この種の議論は、Alfred MenezesとNeal Koblitzによる一連の「Another Look」論文でより理論的、科学的、正確に行われました(警告:このサイトは私には少し対立しているようですが、仮定を疑問視する基本的な考え方ははとても重要です)。彼らは、独創的な論文でさえ、暗号法の標準的な仮定の弱点を指摘しています。

いくつかの例(彼らのサイトからいくつかのポイントを引用/言い換え):

  1. セキュリティ定理は条件付きです—数学的問題の難易度を想定しています。

  2. 多くの場合、複雑で不自然な問題のために難治性の仮定が行われます。場合によっては、問題はセキュリティが「証明」されているプロトコルの暗号解析問題とまったく同じです。

  3. プルーフには大きなタイトネスギャップがある場合もありますが、プルーフがタイトであるかのようにパラメーターサイズを引き続きお勧めします。このような場合、証明は通常、攻撃が成功した場合の実行時間に無駄な下限を与えます。さらに、漸近的な結果は、実際に使用される範囲のパラメータのセキュリティを必ずしも保証するものではありません。

  4. セキュリティ定理は、セキュリティの特定のモデルを使用します。特定の攻撃、特にサイドチャネル攻撃は、モデル化が非常に難しく、提案されているモデルはひどく不適切です。


6

定理証明は、ソフトウェア、ハードウェア、プロトコルの正確性を証明するためにある程度使用されてきました。たとえば、hereまたはhereを参照してください。

データがプログラムを介して望ましくない方法で流れるという問題(潜在的なリークの原因)は、(非)干渉の概念を使用して理論的にモデル化されています。ここでポインタを取得します。


3

決定可能性は、プログラミング言語の研究における中心的な関心事です。つまり、特定の特性を満たすコードのみを受け入れるプログラミング言語の構築に多大な努力が注がれています。典型的な静的言語は、特定のメソッドが存在しない場合にプログラムを拒否するなど、弱い保証しか提供しませんが、たとえば、言語がミューテックスを不適切に使用したり、メモリ領域の終わりを超えて読み込もうとするプログラムを捨てることができるかどうかを想像してください。決定可能性の問題がすぐに発生することは明らかです(最も単純なシナリオ:コンパイラが終了プログラムのみを受け入れるように指定する)。そして、確かに、効率性の懸念があります(ML型チェッカーには二重の指数関数的なケースがあります)。

いずれにせよ、PL研究コミュニティはセキュリティに非常に興味があり(ブラウザが任意の外部コードを実行すると信頼していますか?!)、彼らの質問は多くの古典的なCS理論の質問につながります。


適切な高水準言語(C:++以外)を使用しても、プログラマーがメモリアクセスを制御することはできないため、この問題は解決したと考えます。
ラファエル

@Raphael:膨大な量のソフトウェアがまだCとC ++で書かれていることを考えると、この問題を単に解決したと見なすことはできません。さらに、たとえば、Javascriptに対するコードインジェクション攻撃に対処するための技術はまだ初期段階にあります。やるべきことがたくさんあります。
デイブクラーク

1
特定の環境が既存のソリューションを無視するという事実(正当​​な理由により)は、問題(ここでは、禁止されたメモリアドレスへのアクセス)の解決を低下させません。チェックするのが難しいものは、適切な不変式によって簡単に回避できます。たとえば、プログラマに正式な終了証明を要求することができます(Isabelle / HOLを参照)。
ラファエル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.