7

POSTリクエストを受け付けるサービスを開発中です。一部のデータは、フォームの非表示フィールドに保存されるためPOST、暗号化する前に暗号化する必要があります。POST

アプリケーションは C# で記述されていますが、サードパーティのクライアントが簡単に統合できるようにしたいと考えています。ほとんどのクライアントは、PHP、Classic ASP、または VB.Net を使用しています。

サードパーティは暗号化のみを行う必要があります。復号化を行います。双方向通信はありません。

暗号化アルゴリズム、パディング モード、およびその他のオプションの最も互換性のある組み合わせは何ですか?

4

8 に答える 8

4

キーを安全に共有する方法があると仮定すると(RSA暗号化、SSHまたはHTTPSリンクを介した取得、またはセキュリティで保護された電話回線で他の開発者に電話をかける)、主要な最新の暗号化(前述のAESなど) @Ed Haberによる)が適しています。私は彼のAESの提案を2番目にします。PHP、VB、Rubyなどのライブラリが必要です。

ただし、「双方向通信なし」では、暗号化パーティへの対称鍵を安全に取得するためのチャネル外の方法を見つける必要があることに注意してください。

于 2008-09-19T15:48:43.670 に答える
3

サードパーティがデータを解読できないようにする場合は、RSA などの非対称暗号化アルゴリズムを使用することをお勧めします。これにより、サードパーティは公開鍵でデータを暗号化し、公開していない秘密鍵でデータを復号化できるのはあなただけです。あなたが言及したすべての言語で利用可能なRSAの実装があるはずです。

サードパーティがデータを復号化できるかどうか気にしない場合は、AES が最適です。サードパーティと共有する 1 つのキーがあります。このキーは、暗号化と復号化の両方に使用されます。

于 2008-09-19T16:53:30.033 に答える
2

エド・ハーバーは言った

バルク データの暗号化には AES を使用し、AES キーの暗号化には RSA を使用します。データが十分に小さい場合は、RSA で全体を暗号化します。

これは良い解決策だと思います。私がすることは、公開 RSA キーを取得するための API をアプリケーションに公開させることです。第三者があなたに何かを送ろうとするとき、それは公開鍵を取得します。次に、ブロック暗号 (つまり AES) を使用して実際の暗号化を行うためのセッション キーを生成し、公開キーで暗号化してキーを送信します。秘密鍵を使用してセッション キーを復号化します。次に、サードパーティは、送信したいデータを AES で暗号化し (パディングスキームも公開しています)、送信します。セッションキーを使用して復号化します。

上記の方法にはいくつかの問題があります。(公開鍵を公開する以外に) 情報を送信していないため、セッション鍵の生成方法を制御することはできません。これは、第三者が非常に安全でない方法でセッション鍵を生成する可能性があることを意味します。データを送信したい人は皆、あなたと同じように AES 用にデータをパディングする必要があります. したがって、すべての人が座標を合わせていることを確認する必要があります. 2番目の問題はそれほど大きくありませんが、最初の問題は問題になる可能性があります.特に、暗号的に安全な乱数ジェネレーターから本当に優れたセッションキーを生成するサードパーティをそれほど信頼していない場合

于 2008-09-20T17:07:26.950 に答える
2

バルク データの暗号化には AES を使用し、AES キーの暗号化には RSA を使用します。データが十分に小さい場合は、RSA で全体を暗号化します。

于 2008-09-19T15:10:21.827 に答える
1

独自の XOR キーベースのビット暗号化を非常に簡単に実装できます。少し考えて創意工夫するだけで、用途に適したものを思いつくことができます。

PHP の例を次に示します。

function XOREncryption($InputString, $KeyPhrase){

    $KeyPhraseLength = strlen($KeyPhrase);

    for ($i = 0; $i < strlen($InputString); $i++){

        $rPos = $i % $KeyPhraseLength;

        $r = ord($InputString[$i]) ^ ord($KeyPhrase[$rPos]);

        $InputString[$i] = chr($r);
    }

    return $InputString;
}
于 2008-09-20T16:36:31.610 に答える
1

ColdFusion には、上記で推奨されている AES を含む、さまざまなアルゴリズムとエンコーディングを処理できる暗号化および復号化機能があります。

情報: http://www.cfquickdocs.com/cf8/?getDoc=encrypt#Encrypt

簡単なコード例:

Key = generateSecretKey( 'AES' , 128 )

EncryptedText = encrypt( Text , Key , 'AES' , 'Hex' )

Text = decrypt( EncryptedText , Key, 'AES' , 'Hex' )

PHP用のこのライブラリでも同様の機能を利用できます:
http://www.chilkatsoft.com/p/php_aes.asp

...そして Java、Python、Ruby など...
http://www.example-code.com/java/crypt2_aes_matchPhp.asp
http://www.example-code.com/python/aes_stringEncryption.asp

于 2008-09-20T17:06:38.153 に答える
0

サーバーを HTTPS 経由で公開しないのはなぜですか? そうすれば、HTTPS を処理できるすべてのクライアントがサービスを安全に使用できます。

于 2008-11-29T03:21:18.633 に答える
0

RSAがあなたのためのアルゴリズムであるように聞こえます。

于 2008-09-19T14:56:32.670 に答える