データダイオード(一方向ネットワーク)は、セキュリティの高いサイトでハードウェアベースの「エアギャップ」を実現するためによく使用されます。 TCPなど、応答を必要とするプロトコルをどのように処理しますか?
データダイオードを双方向にインストールし、途中にある種のプロキシサーバーを配置することで解決できるかもしれませんが、それが一方向ネットワークの効率を低下させたり妥協したりしないかどうかはわかりません。ファイアウォールとプロキシサーバーはほとんど同じことをするようです。私は順調ですか?
それは実装とセキュリティ要件に依存します。バックチャネルがまったくないソリューションがあり、その場合、データが相手側で受信されることを100%確信することはできません。十分な頻度で、または十分なエラー修正を加えてデータを送信することにより、これを補償することができますが、最終的には、受信側システムが単に壊れている場合は通知されません。これは、確認応答を取得する方法がないためです。
そして、最小限のバックチャネルを提供することで、使いやすさとセキュリティの別の妥協点を見つけようとするソリューションがあります。私がより深く知っている1つの製品は、3つの部分で構成されています。中央のマイクロカーネルと、マイクロカーネルの両側のファイアウォールです。一方向の機能は、最小限のコードのみを使用するマイクロカーネルタスクを使用して実装されるため、機能の正確性と堅牢性をより適切にチェックできます。そして、このマイクロカーネルの両側には、アプリケーションがTCP、UDP、FTP、またはSMTPトラフィックをマイクロカーネルによって転送されるカスタム一方向プロトコルに変換し、戻す、より複雑なファイアウォールがあります。このプロトコルによって提供される最小のバックチャネルは、成功または失敗のみを通知できます。これは、たとえば受信機がクラッシュしてより多くのデータを受信できない場合や、パスワードが間違っていたためにFTP転送が失敗した場合でも、早期フィードバックを提供するのに十分です。 TCPフロー制御および同様の機能は、ファイアウォール上のアプリケーションによって実装され、マイクロカーネルを経由しません。
ファイアウォールとプロキシサーバーはほとんど同じことをするようです。
本当に真実ではなく、本当に間違っていません。必須の一方向機能を実装するコードベースが大きいほど、通信する一方向のみがあることを確認するのが難しくなります。物理的な一方向のプロパティ(発光器と受信機など)に基づくデータダイオードの良い点は、それらが明らかに一方向であり、攻撃者がシステムに物理的にアクセスできる場合にのみバイパスできることです。ただし、一方向のプロパティを自明性から遠ざけるほど、本当に一方向のみであることを確認するのが難しくなります。
例:物理的な一方向性の場合、ダイオードの両側に明らかに妥協し、それでも一方向性が維持されることを確認できます。マイクロカーネルベースのソリューションでは、一方向の特性を失うことなく、両側のファイアウォールも侵害される可能性があることを概説しました。しかし、マイクロカーネルが危険にさらされると、それは悪化します。しかし、このソリューションでは物理的なアクセスなしではそれは不可能だと考えられています。マイクロカーネルはまさにそのとおりです。最小限のコードベース、一方向のタスクを通じてのみ外部との相互作用、そしてこの最小限のタスクはエクスプロイトに対して安全であると期待されます。単一のファイアウォールアプライアンスのプロキシソリューションでは、一方向のプロパティを回避するために、このファイアウォールを危険にさらすだけで十分です。ファイアウォールが複雑であることを考えると、これはマイクロカーネルや物理的な分離を利用するよりも可能性が高いと考えることができます。
したがって、単純なプロキシソリューションを使用して一方向の機能を実現できますが、攻撃された場合でも、すべての場合に一方向にしか機能しないことを証明することは困難です。そして、データダイオードが使用される市場では、通常、高いセキュリティ要件があり、ソリューションが安全で攻撃に対して耐性があると主張するだけでなく、それを多かれ少なかれ証明できることも必要です(つまり、証明書、独立した評価...)。 。そして、この場合、設計による明らかな堅牢性が本当に役立ちます。
短いバージョンは次のとおりです。
データダイオードを使用している場合は、データを一方向にのみ流す必要があります。これは、一方向のトラフィックで機能するプロトコルのみを使用することを意味します。通常、シリアル経由のASCIIなどのプリミティブなプロトコルです。外部へのより洗練された接続が必要な場合は、一方向のプロトコルとTCP/IPのようなものとの間を変換する外側のコンピューター.