2

ネットワーク通信 (UDP および TCP) のセキュリティ保護を検討しています。「IPSec を使用する」が良い解決策のようです。これは下位レベルで実装されており、アプリケーションがそれを見る必要がないことはわかっています。しかし、私は自分の Java アプリケーションが安全であること、そしてそれが安全であることを知りたいと思っています。

実際には、Java アプリケーションで IPSec を使用するにはどうすればよいでしょうか? DatagramSocket/java.net.Socket.Socket を引き続き使用しますか? System.getSecurityManager() で何かする必要がありますか? OS (Amazon クラウドと通信する Windows XP) レベルで構成を行う必要がありますか?

ある時点で、セキュリティ資格情報を確認/提供する必要があります。それはどのように行われますか?

私はかなりの量のグーグルを行い、ネットワーク層でそれがどのように機能するかを見てきました。しかし、IPSec を利用するサンプル アプリケーション コードの行に沿ったものは何も見つかりませんでした。

誰かがこれをしましたか?

ありがとう!

4

3 に答える 3

2

わかりました、探していた情報を見つけました。たぶん、質問は私が何を望んでいたかを正確に明確にしなかったかもしれませんが、これが私が見つけたものです:

オペレーティング システムで IPSec を構成する必要があります (単純化するため)。2 台のマシン間の接続をセットアップし、接続を開始します。そのマシンでのみ安全な接続を許可するため、安全な接続があることがわかります。IPSec が構成されていない場合は安全ではないため、確実に構成する必要があります。

セキュリティは、共有シークレットまたは X509 証明書にすることができます

そして、いくつかの便利なハウツー:

Linux の場合http://www.ipsec-howto.org/x304.html

Windows の場合: http://www.elandsys.com/resources/ipsec/wincert.html

于 2011-06-13T15:25:20.097 に答える
1

古い回答を拡張するには: 2 つのエンドポイント間で IPSec をセットアップする必要があり、それが適切に設定されているかどうかを知りたいとします。IPSec 暗号化が行われている場合は、それが最適なソリューション (ハードウェア暗号化、マシン上の他のサービスと一元的に共有されるキー) かもしれませんが、IPSec 暗号化が適用されていない場合は、接続を中止するか、アプリケーション プロトコルを使用することをお勧めします。機密データを送信する前にレベルの暗号化。

残念ながら、ソケット上の IPSec を検出するための標準 API はありません (これを行うための Java は、ネイティブ システム コールと連携する必要があります)。さらに、IPSec はルート上のどこかで透過的にルーターによって適用される可能性があるため、OS カーネルによって適用されている場合にのみ IPSec を検出できることに注意してください。

API:

  • WSAQuerySocketSecurity
  • setsockopt(sock, IPPROTO_IP, IP_SEC_OPT, &opts) Solaris 8 以降 (すばらしいチュートリアルはこちら)
  • Linux では驚くほど完全に (?) 文書化されていない IP_IPSEC_POLICY
  • FreeBSD および MacOS の IP_IPSEC_POLICY について十分に文書化されています (十分に確立された KAME 実装を使用)。/usr/src で例を検索します。
于 2013-05-29T14:26:07.523 に答える
1

あなたはそれを行うことはできません-あなたが言ったように、それはより低いレベルにあります-はるかに低いです!

「SSL を使用する」が適切な解決策ではない特定の理由はありますか?

于 2011-06-10T11:05:19.053 に答える