最近、すべてのDB接続が、Base 64エンコード、md5sum、その他のさまざまな手法を含むさまざまな方法で隠されたルーチンによって管理されているシステムに出会いました。
それは私だけですか、それともやり過ぎですか?代替手段は何ですか?
あいまいなセキュリティは、お金を木の下に埋めることになります。安全にする唯一のことは、それがそこにあることを誰も知らないことです。本当のセキュリティとは、たとえば金庫の中など、錠前または組み合わせの後ろに置くことです。安全を確保するのは、誰も入ることができないが、yoであるため、街角に金庫を置くことができます。
以下のコメントで@ ThomasPadron-McCartyが言及したとおり:
誰かがパスワードを発見した場合、パスワードを変更するだけで簡単です。誰かがその場所を見つけたら、お金を掘り当てて他の場所に移動する必要があります。また、プログラムで不明瞭なセキュリティを使用する場合は、プログラムを書き直す必要があります。
隠蔽によるセキュリティは、隠蔽がセキュリティの主要な手段として使用されていることを意味することが多いため、悪いと言えます。あいまいさは発見されるまで問題ありませんが、誰かが特定のあいまいさを解決すると、システムは再び脆弱になります。攻撃者の永続性を考えると、これはセキュリティがまったくないことに相当します。
あいまいさは、適切なセキュリティ手法の代替として決して使用しないでください。
コピーを防ぐためにソースコードを隠す手段としてのあいまいさも、別の問題です。私はそのトピックでかなり分裂しています。私はあなたがそれをしたい理由を理解することができます、個人的に私はそれが望まれるであろう状況に決してありませんでした。
あいまいさによるセキュリティは興味深いトピックです。効果的なセキュリティの代替として(正しく)悪意のあるものです。暗号化の典型的な原則は、メッセージは不明ですが、内容はそうではないということです。暗号化のアルゴリズムは一般的に広く公開され、数学者によって分析され、しばらくすると、その有効性にある程度の自信が築かれますが、それらが効果的であるという保証はありません。
暗号化アルゴリズムを隠す人もいますが、このようなアルゴリズムは同じ精査を受けていないため、これは危険な行為と見なされます。かなりの予算と数学のスタッフを抱えるNSAのような組織のみが、この種のアプローチで逃げることができます。
近年のより興味深い展開の1つは、 ステガノグラフィ のリスクです。これは、画像、音声ファイル、またはその他の媒体にメッセージを隠すことです。ステガナリシスの最大の問題は、メッセージが存在するかどうかを識別し、このセキュリティを不明瞭にすることです。
昨年、私は 研究者がステガノグラフィチャンネルのキャパシティを計算する という話に出くわしましたが、これに関する本当に興味深いことは:
このようにステゴチャネルを調べると、直感に反する結果が生じます。たとえば、特定の状況では、隠されたデータを探すアルゴリズムの数を2倍にすると、ステガノグラフィチャネルの容量が増加します。
つまり、メッセージを識別するために使用するアルゴリズムが多くなるほど、メッセージの効果は低下します。これは、あいまいさによるセキュリティの通常の批判に反します。
興味深いもの。
それが悪い考えである主な理由は、根本的な問題を修正するのではなく、単にそれらを隠そうとすることです。遅かれ早かれ、問題は発見されるでしょう。
また、暗号化を追加すると、追加のオーバーヘッドが発生します。
最後に、過度の不明瞭さ(チェックサムの使用など)により、メンテナンスが悪夢になります。
より優れたセキュリティの代替策は、インジェクション攻撃を防ぐための強制入力など、コードの潜在的な弱点を排除することです。
1つの要因は、セキュリティ侵害から回復する能力です。誰かがあなたのパスワードを見つけたら、それをリセットしてください。しかし、誰かがあなたのあいまいなスキームを発見した場合、あなたはうんざりしています。
これらすべての人々が同意するようにあいまいさを使用することはセキュリティではなく、自分で時間を購入することです。それはまともなセキュリティシステムを実装し、それから不明瞭さの余分な層を追加することはまだ有用です。明日誰かがsshサービスですぐにパッチを当てることができない無敵の亀裂/穴を見つけたとしましょう。
原則として私は社内で実装しました...すべての公開サーバーは必要なポート(http/https)のみを公開し、それ以上は公開しません。 1つの公開サーバーは、いくつかのあいまいな大きな番号のポートでsshをインターネットに公開し、それを見つけようとするIPをブロックするためのポートスキャントリガーのセットアップを行います。
あいまいさは、セキュリティの世界では重要な位置を占めていますが、防衛の第一線や最終線ではありません。上記の例では、非標準のsshサービスポートの検索に時間を費やしたくないため、sshでスクリプト/ボット攻撃を受けません。セキュリティが介入し、それらを遮断します。
セキュリティとは、自分が知っていること、自分が誰であるか、持っているものに応じて、人を入れたり入れないようにすることです。現在、バイオメトリクスはあなたが誰であるかを見つけるのが得意ではなく、常に問題があります(悪い事故に遭った人の指紋リーダー、偽造指紋など)。したがって、実際には、セキュリティの多くは何かを難読化することです。
優れたセキュリティとは、秘密にする必要のあるものを最小限に抑えることです。適切に暗号化されたAESチャンネルを持っている場合、悪者にパスワード以外のすべてを見ることができ、安全です。これは、攻撃できる領域がはるかに狭いことを意味し、パスワードの保護に集中できます。 (それは些細なことではありません。)
そのためには、パスワード以外のすべてに自信を持つ必要があります。これは通常、多くの専門家が検討した業界標準の暗号を使用することを意味します。誰もが破ることができない暗号を作成できますが、誰もが暗号を作成できるわけではありません。ブルース・シュナイアーは破ることができません。暗号セキュリティの理論的基礎が完全に欠如しているため、暗号のセキュリティは、非常に賢明で知識のある多くの人々が、実際的でなくても攻撃を考え出すことによって決定されます(暗号に対する攻撃は常に良くなります、悪化することはありません)。これは、暗号アルゴリズムが広く知られている必要があることを意味します。私はAdvanced Encryption Standardに非常に強い自信を持っていますが、Joeが書いて難読化した独自のアルゴリズムにはほとんど自信がありません。
ただし、暗号アルゴリズムの実装には問題があります。鍵を見つけたり、他のいたずらをしたりするために、不注意で穴を開けるのは簡単です。 PGPの代替署名フィールドで発生し、Debian Linuxに実装されたSSLの弱点がありました。 OpenBSDでも起こりました。OpenBSDは、おそらく最も安全なオペレーティングシステムで、おそらくすぐに利用できます(10年で最大2つのエクスプロイトがあると思います)。したがって、これらは評判の良い会社によって行われるべきであり、実装がオープンソースであった方が良いと思います。 (閉じたソースは決意した攻撃者を止めることはありませんが、ランダムな善人が閉じられる穴を見つけることを難しくします。)
したがって、セキュリティが必要な場合は、システムの信頼性をできるだけ高くするようにします。つまり、パスワードを除き、できるだけオープンにするようにします。
すでに安全なシステムの上に隠蔽によってセキュリティを階層化することは一部の人を助けるかもしれませんが、システムが安全であればそれは必要ではなく、それが安全でない場合は安全にすることが最善です。あいまいさは、評判の悪い「代替医療」のようなものだと考えてください-助けになることはほとんどありません。
最後に、私は Bruce Schneierのブログ の完全に未承諾で無関心なプラグを作成したいと思っています。セキュリティについて多くのことを学びました。
利用可能なセキュリティのすべての形式は、実際には、あいまいさによるセキュリティの形式です。各方法は複雑さが増し、セキュリティが向上しますが、暗号化されたデータを復元するためにすべてのアルゴリズムと1つ以上のキーに依存しています。 「あいまいさによるセキュリティ」と呼ばれるのは、最も単純で簡単なクラックアルゴリズムのいずれかを誰かが選択したときです。
文字シフトなどのアルゴリズムは、実装が簡単で、クラックしやすいため、悪い考えです。おそらく、何もないよりはましですが、せいぜい、データが簡単に読めないようにするだけです。
インターネットには、利用可能なすべての暗号化方法とその長所と短所について教育するために使用できる優れたリソースがあります。
セキュリティ製品を評価、テスト、または改善する最良の方法の1つは、大規模で巧妙なピアグループに製品を叩き付けることです。
「ブラックボックス」であることにセキュリティを依存している製品は、この種のテストの恩恵を受けることができません。もちろん、「ブラックボックス」であることは、とにかくその種の精査に耐えられないという疑い(しばしば正当化される)を常に招きます。
あるケースでは、パスワード保護は本当にあいまいさによるセキュリティだと主張しました。私が考えることができる唯一のセキュリティはSTOではないだろう、ある種の生体認証セキュリティです。
ちょっとしたセマンティクスと細かい選択に加えて、STO(隠蔽によるセキュリティ)は、実際のセキュリティが必要な場合には明らかに悪いです。ただし、問題ではない場合もあります。私は頻繁にXORテキストファイルをパディングします。だれにも読んでほしくありません。大文字と小文字は区別されません。XORパッドは、STOを簡単に見つけられる完璧な例です。
ほとんどない 良いアイデアです。言っても同じですが、シートベルトなしで運転するのは良い考えですか?もちろん、それが適合するいくつかのケースを見つけることができますが、経験によるアンサーは明らかです。
OSがWindowsの場合、Data Protection API(DPAPI)の使用を確認してください。あいまいさによるセキュリティではなく、無人プロセスのログイン資格情報を保存するのに適した方法です。ほとんどの人がここで言っているように、あいまいさによるセキュリティはあなたに多くの保護を与えません。
弱い暗号化は、最もやる気のないハッカーを阻止するだけであるため、特にAESのような強力な暗号化が利用可能な場合、価値がないわけではなく、あまり価値がありません。
あいまいさによるセキュリティは、あなたが賢く、ユーザーが愚かであるという仮定に基づいています。その仮定が経験的データではなく慢に基づいている場合、ユーザーとハッカーは、隠しメソッドを呼び出す方法、リンクされていないページを表示する方法、.dllからプレーンテキストのパスワードを逆コンパイルして抽出する方法などを決定します.
ただし、包括的なメタデータをユーザーに提供することはお勧めできません。暗号化、承認、認証、およびその他すべてのセキュリティ原則でバックアップする限り、隠蔽は完全に有効な手法です。
私が付け加えなければならない1つの点は、まだ触れられていないが、インターネットが隠蔽によってセキュリティを破壊する信じられないほどの能力です。
何度も示されてきたように、唯一の防御が「裏口/バグ/悪用が存在することを誰も知らない」という場合、1人の人がそれを偶然見つけ、数分以内に何百人もの人が知っています。翌日、知りたいと思うほとんどの人が、そうするでしょう。痛い。