C#Webサービスでsoap通信を暗号化する簡単な方法を探しています。
WSE 3.0を調べていましたが、Microsoftがサポートを終了したようで、使用するのは簡単ではありません。
WCFはオプションだったようですが、私は.NET2.0からアップグレードしたくないと思っています。
シンプルでわかりやすい暗号化方法はありますか?
C#Webサービスでsoap通信を暗号化する簡単な方法を探しています。
WSE 3.0を調べていましたが、Microsoftがサポートを終了したようで、使用するのは簡単ではありません。
WCFはオプションだったようですが、私は.NET2.0からアップグレードしたくないと思っています。
シンプルでわかりやすい暗号化方法はありますか?
これが役立つと思います。昨年、これを使用してWebサービスを圧縮しましたが、非常に優れたパフォーマンスを発揮しました。暗号化クラスで拡張できると思います。
SSL/TLS を使用しない「暗号化」を提供するために行うことはすべて、脆弱である可能性があります。ここで自問する必要があります。ゴムチキンのセキュリティ対策の機能に費やすことができる開発時間を費やす価値はありますか? 多分そうです。
DPAPI や Win32 crypt32 API などの .NET API を使用すると、データのブロブを静的キーで簡単に暗号化できます。しかし、クライアントはどのようにキーを受け取りますか? インストールされた SOAP クライアントは、その構成にキーを焼き付けるか、安全でないインターネット経由で受け取る必要があります。
これは、SSL/TLS が解決する問題です。TLS 証明書で行うダンスは、信頼されていないチャネルを介して公開鍵を通信する問題を解決するものです。
おそらく私は素朴ですが、https経由での通信を強制することは許容されますか?私は2.0で実行されるWebサービスを開発し、IISに仮想ディレクトリにhttpsを適用させるだけで成功しました。
これがおそらく最も簡単な方法ですが、残念ながら私はIIS構成を制御できず、httpsを実行できることを保証できません。
その場合、おそらく最善の策は、SOAPメッセージの一部をケースバイケースで暗号化することです(結局のところ、メッセージ全体を暗号化する必要はないかもしれません-特定の機密フィールドだけですか?)、または使用することを選択できますすべてのメッセージをインターセプトしてコンテンツを操作するHttpModule。どちらの場合も、おそらくカスタムプロキシを提供する必要があります。
おそらく私は素朴ですが、https経由での通信を強制することは許容されますか?私は2.0で実行されるWebサービスを開発し、IISに仮想ディレクトリにhttpsを適用させるだけで成功しました。
または、さらに、HttpRequest.IsSecureConnectionプロパティを確認できます。
実際には、WCF以前に開発されたWebサービスでWSE3.0を使用しています。セキュリティのために、System.Securityの暗号化クラスに基づいて構築されたSAMLトークンベースのシステムを使用します。
それは非常にうまく機能します。ただし、この方法は決して「単純」ではありません。
System.Security.Cryptography 拡張機能を使用して、C# でパラメーター暗号化を使用できます。
パラメータを暗号化して復号化するのは困難ですが、はるかに安全です。
方法: 対称 (Rijndael) キーを使用してデータを暗号化および復号化する (C#/VB.NET)
OTP (ワンタイム パスワード) Web サービスにこのアプローチを使用していますが、問題なく動作します。