Considerations)このメモの位置付けこの文書は、インターネットの「現時点における最善の実践(ベストカレントプラクティス)」を示すものであり、改善するために議論と示唆を求めるものです。このメモの配布に制限はありません。「セキュリティについての考慮事項」の章をもつことが要求されています。これまで、このような章の記述は、十分ではありませんでした。著者に良い「セキュリティについての考慮事項」の章の書き方についてのガイドラインを提供します。よって要求されています。」を促すことと、読者に関連するセキュリティ論点を知らしめることの両方にあります。著者にガイダンスを提供することを意図しています。部から構成されています。部は、セキュリティ入門と共通用語の定義を組み合わせたものです。部は、「セキュリティについての考慮事項」を書くための一連のガイドラインです。部は、一連の例示です。記述されているように解釈されるべきものです。English大部分の人々は、セキュリティについて、プロトコルやシステムについての一枚岩のような属性であるかのように語ります。これは明らかに誤りであることに気づきます。セキュリティは、関連性をもちながら、ある程度独立した一連の属性といえます。これらの属性のすべてが、すべてのアプリケーションに要求されるとは限りません。(通信を防護すること)に関するものと、運用管理的セキュリティもしくはシステムセキュリティ(システムを防護すること)に関するものとに大まかに分けることができます。通信はシステムによって行われ、システム間は通信チャネルによるので、これらの目標は明らかに不可分ですが、それらは、また、独立に提供できます。English著者によって、通信セキュリティの目標事項の分類は異なります。つの主要な分野に分けることです。守秘性、データインテグリティおよびエンティティ間の認証です。Englishセキュリティについて考えるとき、大部分の人々が「守秘性」のことを考えます。守秘性は、「あなたのデータが意図されないユーザから秘密に保たれること」を意味します。通常、これらの意図されないユーザは、まさに盗聴者です。攻撃者があなたの電話を盗聴するとき、あなたの守秘性がリスクにさらされます。明らかに、あなたが秘密をもつ場合、おそらく他者がそれらを発見することを懸念します。それゆえ、あなたは、最低限、守秘性を維持することを望みます。映画の中でスパイが風呂場に入って行き、盗聴させないように水を出すのを観るとき、彼らが探している属性は守秘性です。English2番目の主要な目標は、「データインテグリティ」です。ここでの基本的なアイディアは、「我々は、受け取ったデータが送信者が送ったデータと同一であることを確認したい」ということです。紙に基づくシステムにおいて、一定のデータインテグリティは、自動的に備わっています。あなたがペンで書かれた手紙を受け取ったとき、「ペンのインクは紙から消すのが難しいので、攻撃者によって削除された単語は無い」と確信をもつことができます。攻撃者は容易に紙上に印を書き加えたり、メッセージの意味を完全に変えた可能性があります。同様に、メッセージを切り詰めるためにページを短くすることは容易です。電子的な世界においては、すべてのビットは同様に見えるので、転送中のメッセージを不正に変更することは、簡単なことです。するだけでよく、受信者は賢くありません。これは、攻撃者にとって、手紙を取り上げ、新しい紙を買ってそのメッセージをコピーし、意のままに変更することと、道徳的には同義です。すべてのビットは同様に見えるので、電子的に行うことは、かなり容易です。番目の属性は、「エンティティ間の認証」です。我々がこれによって意味するのは、「我々は、『通信の一端が意図された相手であること』を知っていること」です。エンティティ間の認証無しには、守秘性を提供することも、データインテグリティを提供することも非常に困難です。よって送られたこと」を我々が知っていない限り、あまり有用ではありません。秘密のメッセージを送ることを望む場合、我々が実際に秘密のメッセージを攻撃者に送っているならば、我々にとって、あまり価値がありません。「エンティティ間認証は、非対称的に提供される可能性があること」を銘記してください。あなたが誰かに電話をかけるとき、あなたは、「正しい相手と話している」と確信を持つことができます。(あるいは、少なくとも「あなたがかけた電話番号のところにいる人が出ている」と確信を持つことができます。もたない場合、電話を受けた者は、誰からかかってきたか分かりません。電話を誰かにかけることは、受信者認証の例です。あなたは、電話を取った者が誰であるかを知っていますが、相手は送信者について何も知らないからです。メッセージングの状況において、あなたは、しばしば、特定のメッセージの送信者の身元を確立するためにエンティティ間認証を使うことを望みます。Authentication)」と呼ばれます。English終点認証を提供するシステムは、「一方が、通信相手の身元を確認すること」を許容します。システムがデータインテグリティを提供するとき、受信者は、送信者の身元と「彼は、送信者が送ろうとしたデータを受け取っていること」の両方に確信をもつことができます。彼は、必ずしもこの事実を第三者に実証することができるとは限りません。これを実現する機能は、「否認防止」と呼ばれています。否認防止が望まれる状況が多くあります。一方が一方的に廃棄したい契約について両者が署名した状況を検討します。彼は、「もともとそれに署名しなかった」と主張する可能性があります。否認防止は、彼がそのようにすることを防ぎ、それゆえ相手方も保護します。残念ながら、否認防止は、実際に達成することは極めて困難である可能性があり、単純なアプローチは一般に不適格です。その困難性の一端を記述してあります。者の利害は、一致していない(一方が他方が否定しようとすることを証明することを望む)」という事実に依拠しています。English一般に、システムセキュリティは、人のマシンとデータを防護することに関するものです。その意図は、「マシンは、認可されたユーザのみによって、所有者が意図した目的で使われる必要があること」です。それらは、それらの目的のために利用可能である必要があります。攻撃者は、正規のユーザの資源を奪うことができてはいけません。English大部分のシステムは、完全に公衆がアクセス可能であることを意図していません。それらは、特定の認可された個人によって使われることが意図されています。多くのインターネットサービスは、すべてのインターネットユーザが利用可能ですが、それらのサーバーでさえ、通常、特定のユーザ向けに広範なサービスを提供しています。サーバーは、あらゆるユーザにデータを提供しますが、ページを変更する権限を特定のユーザに限定しています。一般公衆によるこのような変更は、「不正な用法」です。English認可されたユーザであることは、「システムを自由に操って良いこと」は意味しません。上述のように、活動によっては、認可されたユーザのみに制限されるもの、特定のユーザのみに制限されるもの、さらにシステム管理者以外のユーザには禁止されているものがあります。場合によっては、通常は許容されている活動さえ禁止される可能性があります。ユーザは、電子メールを送ることが許可されているが、一定の大きさ以上のファイルやウイルスに感染したファイルを送信することが禁止されている可能性があります。これらは「不適切な用法」の例です。番目の目標は、「システムは正規のユーザが利用可能である必要があること」でした。このような用法を脅かす、幅広く多用な攻撃が可能です。このような攻撃は、まとめてサービス妨害攻撃と呼ばれます。サービス妨害攻撃は、しばしば、しかけるのが極めて容易である一方、止めるのが困難です。多くのこのような攻撃は、マシンの資源を浪費するように設計されており、正規のユーザに対するサービスを困難にしたり不可能にしたりします。他の攻撃には、標的マシンをクラッシュさせ、完全にユーザのサービスを妨害するものがあります。English脅威モデルは、「攻撃者が資源に対して行うことができると想定されている」能力を記述します。システムコントロールの観点から、攻撃者が利用可能なリソースを示す情報などが含まれる必要があります。脅威モデルの目的には、ふたつあります。我々は、我々が懸念する脅威を識別することを望みます。次に、我々は、一定の脅威を範疇外とするルールを定めることを望みます。ほとんどすべてのセキュリティシステムが十分に熱心で資源をもつ攻撃者に対して脆弱です。インターネット環境には、良く理解された脅威モデルがあります。侵されていない」と想定します。エンドシステムのひとつが侵されたとき、攻撃に対して防護することは極めて困難です。これらの状況下における被害を最小化するプロトコルを設計することは可能です。逆に、我々は、「攻撃者は、エンドシステムが通信を行っている通信チャネルをほとんど完全にコントロールできる」と想定します。Unit)をも読むことができ、検知されずに偽装されたパケットを回線上に削除・変更・挿入できること」を意味します。これは、信用できるマシンから来たように見えるパケットを生成できることを含みます。それゆえ、たとえあなたが通信しようとする相手のエンドシステム自体はセキュアである場合でも、インターネット環境は、「あるシステムから来たと示すパケットが実際にそうである」という保証は提供しません。意味は、レベルに応じて異なること」を理解することが重要です。パケットを意味します。セグメントを意味します。コマンドのいずれかを意味する可能性があります。レベルにおいて、リクエストもしくはレスポンスを意味する可能性があります。English既述のように、資源をもつ熱心な攻撃者は、通信チャネル全体をコントロールできます。攻撃は、さほど資源をもたない攻撃者によって、しかけられる可能性があります。既知の攻撃は、ネットワークについて限られたコントロール能力しかもたない攻撃者によって、しかけられる可能性があります。パスワード盗聴攻撃は、任意のパケットを読むことができる攻撃者によってしかけられる可能性があります。任意のパケットを読むことはできないが書ける攻撃者によって、しかけられる可能性があります。攻撃者にネットワークに書き込むことを要求する攻撃は、積極的な攻撃として知られています。それゆえ、攻撃を体系化する有用なやり方のひとつは、攻撃をしかけるのに要求される能力に基づいて分類することです。この節の残りでは、これらの分野について記述し、各分野のいくつかの例を提供します。English待ち伏せ攻撃において、攻撃者は、ネットワークからパケットを読みますが、書き込みません。上のいかなる他のマシン宛のすべてのトラフィックを読むことができます。特定のマシン宛てのトラフィックは、そのマシンが存在するセグメントだけに送られるので、この種の盗聴を実質的により困難にすること」を覚えておいてください。同様に、ふたりふたりの被害者のマシン間の通信パスにおいて、ホストをコントロールできる攻撃者は、彼らの通信に待ち伏せ攻撃をしかけることができます。そのトラフィックが侵されたマシンを通るようにルーティングインフラストラクチャを侵すことも可能です。これは、被害者のマシン上で待ち伏せ攻撃を行うように、ルーティングインフラストラクチャに対する積極的な攻撃を含む可能性があります。ついて考慮する価値があります。データは、単に、よく知られた周波数でブロードキャストされるので、攻撃者は、その転送内容を単に受け取ることができる必要があるだけです。このようなチャネルは、待ち伏せ攻撃に対して特に脆弱です。一般に、攻撃の目標は、「送信者と受信者がプライベートに保ちたい情報を入手すること」です。このプライベート情報は、電子的な世界で有用なクレデンシャル、かつ/または、ビジネスの機密情報のような電子的な世界の外界で有用なパスワードやクレデンシャルを含む可能性があります。English待ち伏せ攻撃の古典的な例は、もともとプライベートなデータを回線から盗聴することです。多くのクレジットカード取引は、いまだに平文でインターネット上を転送されています。クレジットカード番号を復元することができます。ビジネスの機密情報は、日常的に平文の電子メールで、ネットワーク上を送られています。English待ち伏せ攻撃のこれ以外に例に、パスワード盗聴があります。パスワード盗聴は、資源を無権限に利用するために行われます。等)は、クライアントをサーバーに認証させるために、共有パスワードを使います。このパスワードは、クライアントからサーバーに、通信チャネル上を平文で転送されます。それゆえ、このトラフィックを読むことができる攻撃者は、パスワードを捕捉し、それをリプレイすることができます。換言すれば、攻撃者は、サーバーに対してコネクションを開始し、クライアントのふりをして、捕捉されたパスワードを使ってログインすることができます。「攻撃のログイン段階は、積極的であるが、実際のパスワード捕捉フェイズは、待ち伏せによること」を銘記してください。サーバーがコネクションの起点アドレスをチェックしない限り、ログイン段階では、いかなる特別なネットワークのコントロールを要求しません。English多くの暗号技術的プロトコルは、「オフライン攻撃」の対象となります。このようなプロトコルにおいて、攻撃者は、被害者の秘密鍵を使って処理されたデータを復元し、それから、その鍵について暗号技術的攻撃をしかけます。パスワードは、特に脆弱な標的を作ります。それらは、典型的には低エントロピーであるからです。レスポンスプロトコルは、「辞書攻撃」に対して脆弱です。攻撃者は、チャレンジレスポンスを捕捉し、(辞書ファイルのような)よくある単語リストから正しい応答をもたらすパスワードを発見するまで、各項目を試す処理を行います。使われているとき、同様の攻撃は、ローカルネットワーク上でしかけられる可能性があります。解読するツールが存在します。使われるとき、暗号化されたパスワードは、ローカルネットワーク上を転送され、それゆえ、攻撃者はパスワードを盗聴し攻撃することができます。小さなセキュリティホールを攻略することも可能でした。次に、これらのセキュリティホールは、前述のオフラインのパスワード復元テクニックを使うことによって、実際のアカウントにすることに成功する可能性があります。それゆえ、我々は、低レベルの積極的な攻撃をオフラインの待ち伏せ攻撃と組み合わせます。English攻撃がネットワークへの書き込みを含むとき、我々は、これを積極的な攻撃と呼びます。認証機能はありません。その結果、攻撃者が任意の発信元アドレスをもったパケットを作ることは、自然なことです。我々は、これを詐称攻撃(スプーフィング攻撃)と呼びます。特定の状況下において、このようなパケットは、ネットワークによってフィルタリングされる可能性があります。多くのパケットフィルタリングファイアウォールは、「外部」インターフェィスに到着する「内部」ネットワークの発信元アドレスをもったすべてのパケットをフィルタリングしています。「これはファイアウォール内部の攻撃者に対する防護を提供しないこと」を銘記してください。一般に、設計者は、「攻撃者はパケットを偽装できる」と想定する必要があります。パケットを偽装する能力は、任意のパケットを受け取る能力とは関連していません。事実、偽装されたパケットを送ることができてもレスポンスを受け取らない積極的な攻撃があります。我々は、これらを「ブラインド攻撃」と呼びます。「すべての積極的な攻撃がアドレス偽装を要求するわけではないこと」を銘記してください。送信者のアドレスを偽装することなく、しかけられて成功する可能性があります。攻撃が発見された場合、「身元を隠すために他人のアドレスにを偽装すること」は、よくあることです。各プロトコルは、特定の積極的な攻撃に影響されやすいですが、経験では、「数多くの攻撃の共通パターンがあらゆるプロトコルに当てはまること」を示しています。次節では、数多くのこのようなパターンを記述しており、既知のプロトコルに応用されたそれらの具体的な例を提供しています。Englishリプレイ攻撃において、攻撃者はメッセージの順序を回線外に記録し、それらを当初受け取った主体に再送します。「攻撃者はメッセージを理解できる必要がないこと」を銘記してください。それらを補足して再送するだけでよいのです。メッセージが使われる事例を検討します。回実行することを望む可能性があります。攻撃者はメッセージを補足し、たとえそれを理解できなくても再送することにより、結果的にトランザクションを2回実行させることが可能です。Englishメッセージ挿入攻撃において、攻撃者は、いくつかの選択された属性についてメッセージを偽装し、ネットワーク中に挿入します。このメッセージは、攻撃者の身元を偽装するために偽装された発信元アドレスをもちます。パケットを注入することによって、しかけられる可能性があります。応答し、新しいコネクションのためにカーネルデータ構造を用意します。ウェイハンドシェイクを完結させないので、用意しているコネクション終点は、ひたすらカーネルメモリを埋めながら待つことになります。開始することができません。処理する必要がないので、この攻撃はブラインド攻撃であること」を覚えておいてください。Englishメッセージ削除攻撃において、攻撃者は、回線上からメッセージを削除します。メッセージ削除攻撃に成功することを要求します。パケットを受け取ります。これは、不正なコネクションを切断します。パケットが失われて応答されないように、ホストのキューのバッファを溢れさせることを記述しています。Englishメッセージ変更攻撃において、攻撃者は、回線からメッセージを削除し、それを変更し、ネットワーク中に再投入します。攻撃者がメッセージ中にデータを送ることを望むが、同時に、その一部を変更することを望む場合、この種の攻撃は特に有効です。攻撃することを望む事例を考えます。攻撃者は、被害者のクレジットカード番号をもっていないので、被害者が発注するのを待ち、配送先を自身のものに(また、おそらく物品の記述を)書き換えます。「この特定の攻撃は、攻撃者がクレジットカード番号をメッセージの原本からカットして、新しいメッセージにペーストするので、カットアンドペースト攻撃として知られていること」を覚えておいてください。よって提供されています。暗号化されたトラフィックを読むことは可能です。攻撃者は、コントロールしているポートに対応するIPヘッダを、暗号化されたIPパケットに添付します。パケットがホストによって受信されるとき、これは自動的に復号され、攻撃者のポートに転送されます。同様のテクニックが、セッションハイジャック攻撃をしかけるのに使われます。両攻撃は、暗号化する際に常にメッセージ認証を使うことによって避けることができます。この攻撃は、以下の場合にのみ可能であることを銘記してください。関連づけられたポートと標的ポートの間の不整合をもたらす。受信するマシンが単一ユーザ用である場合、この攻撃は実現不可能です。English中間者による攻撃は、上記テクニックを特別な形態で組み合わせます。攻撃者は、「送信者から受信者宛」と「受信者から送信者宛」のふりをするために通信ストリームを破壊します。Bobこれは、上記の形態の攻撃とは根本的に異なります。これは、データストリーム自体ではなく、通信主体の身元を攻撃するからです。したがって、通信ストリームのインテグリティを提供する多くのテクニックは、中間者による攻撃に対して防護するのに不十分です。中間者による攻撃は、プロトコルが「エンティティ間認証」を欠いているとき、常に可能です。応答することによって)攻撃者は、サーバーへのコネクションを開いて、中間者による攻撃を始めることができます。詐称によってローカルネットワーク上でしかけること」もよくあることです。アドレスで詐称します。)この種の攻撃をしかけるためのツールが入手可能です。「中間者による攻撃を予防するために、トランザクションの一方を認証することのみが必要不可欠であること」を銘記してください。このような状況において、両者は、一方のみが認証されている協定を確立することができます。このようなシステムにおいて、攻撃者は、認証されていない相手のふりをして、協定を開始できますが、正規のコネクション上を送られたデータを転送したり、それにアクセスできません。電子商取引においては、許容可能な状況です。ここでは、サーバーのみが認証される必要があります。(あるいは、クライアントは、クレジットカード番号のような何らかの非暗号技術的メカニズムによって別個に認証されます。English実際には、「攻撃者がすべてのパケットを読むことと生成することは同等に容易である」という想定は誤りです。インターネットは、完全には接続されていないからです。これには、ふたつの主要な示唆があります。Englishデータグラムが、ホスト間を転送されるようにするためには、一般に、何ヵ所か中間リンクやゲートウェイを通過しなければなりません。このようなゲートウェイは、通常、パス上を転送されるいかなるデータグラムをも読むこと、変更すること、および削除することができます。あなたがパス上にいる場合、これにより多様な攻撃をしかけることが、はるかに容易になります。当然ながら、パス外のホストは、いかなるホストからでも来たように見える任意のデータグラムを転送できますが、他のホストを意図したデータグラムを受け取ることができるとは限りませんません。それゆえ、攻撃がデータを受け取ることができることに依拠する場合、パス外のホストは、まず、自身をパス上におくために、トポロジーを壊さなければなりません。これは決して不可能ではありませんが、よくあるとも限りません。可能であれば、プロトコルは、ネットワークを完全にコントロールできる攻撃者からの攻撃に耐えるように設計される必要があります(SHOULD)。設計者には、パス上の攻撃者のみならず、パス外の攻撃者によってしかけられる攻撃をより重視することが期待されます。Englishパス上の特殊ケースは、同一リンク上にいることです。状況によっては、ローカルネットワーク上のホストと、そうでないホストを区別することが望まれます。検証すること」を命令できます。次に、受信者は、「確認しているパケットは、同一のリンク上からのものである」と信じる根拠をもちます。トンネリングシステムがある状態でこのテクニックを使用するときは注意が必要です。そのようなシステムでは、TTLを減算せずにパケットを通過させる可能性があるからです。English各システムのセキュリティ要件は固有ですが、一定の共通要件が数多くのプロトコルにあります。単純なプロトコル設計者がこれらの要件に直面したとき、しばしば、彼らは、たとえより良いソリューションが利用可能でも、明らかではあるがセキュアでないソリューションを選択します。セキュリティ技術の共通部分を記述します。English要するに、資源に対するアクセスコントロールを行うすべてのシステムは、ユーザを認証する何らかのやり方を必要とします。ほとんど無数の、このようなメカニズムが、この目的のために設計されてきました。次節以降では、これらのテクニックのいくつかを記述しています。English最も普及したアクセスコントロールメカニズムは、単純なユーザ名/パスワードです。ユーザは、利用しようとしているホストに、ユーザ名と再利用可能なパスワードを入力します。このシステムは、単純な待ち伏せ攻撃に対して脆弱です。ここで、攻撃者は、回線外でパスワードを盗聴し、新しいセッションを開始し、そのパスワードを入力します。ような暗号化されたコネクション上にそのプロトコルを置くことによって緩和できます。標準において許容されていません。スキームかチャレンジレスポンスのいずれかを採用します。ひとつずつ使わなければならないものです。次のパスワードを計算できます。このスキームの流派です。チャレンジレスポンスのスキームにおいて、ホストとユーザは、何らかの秘密を共有します。(これは、しばしば、パスワードとして現れます。)ユーザを認証するために、ホストは、ユーザに(乱雑に生成された)チャレンジを提供します。ユーザは、チャレンジとその秘密に基づくいくつかの関数を計算し、それをホストに提供し、ホストはそれを検証します。カードのような携帯デバイスで処理されます。形態)に対して脆弱なままです。既述のように、しばしば、ワンタイムパスワードやレスポンスは、共有された秘密から計算されます。攻撃者が使われている関数を知っている場合、彼は、正しい出力を作り出すものを発見するまで、すべての共有された秘密の候補を単に試すことができます。共有された秘密がパスワードであり、「辞書攻撃」をしかけることができる場合、これは容易になります。(「単なる乱雑な文字列ではなく、通常の単語(もしくは文字列)のリストを試すこと」を意味します。)これらのシステムは、しばしば、積極的な攻撃に対しても脆弱です。通信セキュリティがセッション全体について提供されない限り、攻撃者は、単に、認証が行われるまで待って、コネクションをハイジャックすることができます。English「チャレンジレスポンス」タイプのシステムは、ユーザが生成したパスワードの代わりに乱雑に生成された共有鍵を使うことによって、辞書攻撃に対してセキュアにできます。鍵が十分に大きい場合、鍵検索攻撃は非現実的になります。このアプローチは、ユーザによって記憶されたり打鍵されるときよりも、鍵が終端に設定されるときに最もうまくいきます。ユーザには、十分に長い鍵を覚えるのに問題があるからです。パスワードに基づくシステムのように、共有鍵システムは、管理問題をわずらいます。通信主体の各ペアは、自らが合意した鍵をもたなければなりません。これは、そこにたくさんの鍵がある状況をもたらします。party)」を使うことです。Center)と呼ばれる)信用できる第三者は、共通鍵またはパスワードをシステム中の各主体と共有します。各主体は、まず、KDCと連絡を取ります。KDCは、ランダムに生成されて両者の鍵で暗号化された共通鍵を含むチケットを各主体に提供します。正しいペアのみが共通鍵を復号できるので、そのチケットを信用できる協定を確立するために使うことができます。もつようにすることです。証明書は、エンティティの身元をその公開鍵に結合する署名されたクレデンシャルです。よって署名される可能性があります。おける信頼は、オフラインで確立されなければなりません。クライアント/サーバーシステムにおけるこのアプローチに対する主要な障害は、「クライアントが証明書をもっていることを要求すること」であり、これは採用の問題である可能性があります。English上記のスキームより良いやり方ありますが、それらは、典型的には、通信セキュリティ(最低限、メッセージインテグリティ)がコネクションをセキュアにするために採用されない限り、あまりセキュリティを高めません。しないと、攻撃者は、まれに、認証が行われた後にコネクションをハイジャックできるからです。セキュアにユーザのパスワードを共有鍵に入れるようにすることができ、これは、暗号技術的プロトコルへの入力として使うことができます。