2つのセキュリティ概念について非常に基本的で単純な質問があります。
暗号化とアクセス制御の両方がプライバシーのために使用され、権限のないユーザーが特定のオブジェクト(ファイル、プロセスなど)にアクセスできないようにします。
実際の環境の違いは何ですか?いつ暗号化を使用し、いつアクセス制御を使用しますか(例:ACL、RBACなど)?
たとえば、1つのファイルを暗号化して不正アクセスを防止できますが、ACLメソッドを使用することもできます。
暗号化は、信頼できないエンティティがmayまたはwillにアクセスするデータの機密性を提供するために使用されます。アクセス制御は、オブジェクトへのエンティティのアクセスを制限または制御するために使用されます。 「いつ使用するか」という質問は未解決の問題です。
アクセス制御は、ゲートの南京錠からファイルシステムに設定されたアクセス許可まで何でも可能です。それらは単純でも複雑でもよく、さまざまな操作タイプを個別に制御でき(読み取り、書き込み、削除など)、監査ログが含まれる場合がありますが、一般的に人為的に実施された制限です。つまり、すべてにアクセスできれば、物理的にバイパスすることを妨げるものは何もないということです。例として、Windows上のファイルシステムDACLは、ディスクを直接読み取るか、アクセス制御を無視するシステム(Linux NTFSドライバーなど)にロードするだけでバイパスできます。物理的な領域では、南京錠やチェーンをボルトクロッパーで切ったり、壁に穴を開けたり、爆薬でゲートを爆破したりできます。
暗号化は、許可されたユーザー(つまり、正しいキーを持つユーザー)と無許可のユーザー(つまり、正しいキーのないユーザー)の間の計算の複雑さの違いに基づいて、ある程度の機密性を提供することを目的としています。正しいキーを持つユーザーは、データの復号化に少量のリソースを費やして、メッセージを取得できます。そのキーを持たないユーザーは、メッセージを解読するために非常に多くの計算リソースを費やす必要があります。ここでの主な違いは、強力な暗号化がアクセスへの実際の避けられない境界を提供することです。ディスクに直接読み取りを行ったり、別のアクセサーを実装したり、データストアを爆発物で爆破したりして、単純にそれを回避することはできません。
これらの2つの概念の目的と使用法は異なります。暗号化はデータの機密性を非常に強力に制御できますが、正しく行うのは難しく、計算コストが高くなる可能性があり、多くのユーザーが同じデータにアクセスする必要がある場合、大規模な管理が困難になります。暗号化は、一部のユーザーが読み取りはできるが書き込みはできない、または書き込みはできるが読み取りはできない(たとえば、ログファイルへの書き込みはできるが、他のログエントリを見ることができない)必要がある複雑なモデルにも簡単には適用できません。アクセス制御ははるかに柔軟であり、特にユーザーとデータの間に複雑な関係が存在する場合は実装が簡単ですが、システムで実行されているコードによってのみ適用されます。そのため、ローカル/物理アクセスが潜在的な可能性がある(たとえば、ハードディスクの盗難)脅威モデルでは、アクセス制御ははるかに弱く(または価値がありません)ます。
あなたの質問に対する本当の答えは、それらが特定のシナリオのビジネスロジックと脅威モデルに適している場合はいつでも使用されるということです。
暗号化メカニズムを使用して、特定の結果を達成できます。
セキュリティのための暗号化の主な関心の1つは、暗号化プリミティブを使用して、データが格納されている場所に関係なく、データにいくつかのプロパティを適用できることです。暗号化されたオブジェクトを操作するには、キーにアクセスする必要があるか、非常に複雑な(申し立てによると、十分に速く実行するには複雑すぎる)数学を実行する機能が必要です。
アクセス制御メカニズムは主に、データのintegrityおよびconfidentialityに対する保護を実装します。アクセス制御には、データオブジェクトにポリシーを適用する信頼できる参照モニターが必要です。ポリシーは任意にすることもできます。その場合、各データ項目の所有者(参照モニターによって識別される)は、誰がデータにアクセスできるかを決定します。必須。この場合、参照モニターの管理者は誰が何にアクセスできるかを決定します。または2つの混合物。
重要なのは、参照がポリシーに対してチェックオブジェクトへのすべてのアクセスを監視することです。したがって、アクセス制御は、ユーザーが制御するシステム内でのみ適切です。
アクセス制御にはauthenticationとauthorizationの両方が必要です。認証を使用すると、説明責任を提供できます。つまり、どのプリンシパルがどのリソースにアクセスしたかがわかります。データを暗号化し、2人以上の個人間で秘密鍵を共有した場合、これは不可能です。
結論として、暗号化とアクセス制御にはさまざまなアプリケーションがあり、さまざまな適用範囲でさまざまなプロパティを適用します。それらは非常に異なるので、それらを比較することは実際には意味がありません...
暗号化とアクセス制御の両方が機密性を強制する可能性がありますが、暗号化は、使用した暗号化キーが盗まれない限り実行されますが、アクセス制御は、データが参照の境界内に格納およびアクセスされる限り実行されます。モニター。
ファイルストレージに両方の方法を組み合わせるのは非常に一般的です。ハードウェアを介した不正アクセスを回避するためにドライブが暗号化され(参照モニターが利用できない場合があります)、オペレーティングシステムが参照モニターとして機能します。ソフトウェアアクセスが目的のポリシーを尊重することを保証するアクセス制御チェックを実行する。
TL-DR:暗号化は、データが格納されている場所にプロパティを具現化するデータ表現を生成します。一方、アクセス制御は任意に複雑なプロパティとポリシーを適用しますが、1つが制御するシステムにのみ適用されます。
これらは2つの別個の概念であり、類推を試みます。
アクセス制御メカニズムが家の窓やドアをロックするようなものだと想像してください。あなたは安全な家を作るためにそれらのすべてがロックダウンされていることを確認する必要がありますが、それらを破壊することはまだエントリのために可能です。家の中には、このレベルのセキュリティで十分なものもあります。しかし、ドアが壊れていても、お金、パスポート、家族の宝石など、安全に保管したいものは何でも持っているとしましょう。
これが暗号化の出番です。暗号化が安全だと想像してください。さまざまなセキュリティレベル(DES、3DES、AES128、AES256など)のさまざまな金庫(暗号化のタイプ)がたくさんあります。今では、ユーザーがはるかに安全なものに侵入する必要があるアクセス制御も通過しました。暗号化によって何が保護されるかは、この追加の機密性が必要と思われるデータによって異なります。金庫のように、拡張性は厳しい場合があります。確かに銀行は大量の貴重品(Google)のために大きな金庫を用意することができますが、家庭用のほとんどの人々は、より小さなもの(安全なWebブラウジング、GPGなどに類似)しか必要としません。
企業全体で暗号化を使用する場合は、インフラストラクチャに投資する必要がありますが、これはシステムに大きく依存します。何を保護しようとしているか、どれだけの保護が必要か。
それらは異なることに同意しますが、答えのいくつかは、基本的な違いではなく、典型的な実装に関するものです。
暗号化情報(アルゴリズム、キーなど)はデータの属性であり、明確なデータは特別なケースです。アクセス制御は、一部のデータとその属性に対して誰が何を実行できるかを管理します。アクセス制御では、「ユーザーAはこれをクリアデータとして読み取りアクセス権を持つ」と言い、「ユーザーBは同じデータの暗号化されたバージョンにのみアクセス権を持つ」と言うのが適切です。または「このユーザーはこのデータを再暗号化できます」。