私は暗号化プロジェクト(C#を使用)を使って作業しています。サーバ側で秘密鍵(証明書)を生成するのは悪い考えですか?
非対称暗号化用の秘密鍵を生成するにはクライアントが必要ですが、いくつかのライブラリを見直したので、それほどクリーンではありません&簡単な作業です。
なぜですか? makecert.exe
、pvk2pfx.exe
などを使用してそれらを生成
...しかし、これらのツール は、Windows SDKからであり、彼らがリンクされているように思わ:Windowsで秘密鍵を生成するための
、私は次の可能性を持っています クライアントがクリーンなOS(インストールされているライブラリなし)を持っている場合は、私は 1)とすることができます。クライアントのPCにWindows SDKをインストールする2)。コピー
makecert.exe
およびその他のユーティリティと は、プロジェクトの分布とそれを保持する(私が思うに、それは悪い考えですが異なるため、Windowsのバージョン(7〜10)と32/64ビットアーキテクチャが
Bouncy Castle
、悪くない道を(使用して生成します私はプログラミング言語を使用することができますし、外部ツールではありません)、C#のバージョンはよく文書化されておらず、ソースコードにいくつかの醜い場所がありますOpenSSL
を使用して、複数の関数があるので、ライブラリにエラーがある を呼び出す(マルチスレッドの場合)PowerShell
使用(またオプションを、私は7のようなWindowsの古いバージョンでそれをサポートして 問題があるだろうと仮定)私は、クライアントを解放した場合にどのようなものを事実により
、私が思います、秘密鍵の生成からですか?それは悪い考えですか?私はそれをサーバ側で生成することができ、秘密鍵を保存しないでください。秘密鍵はTLS経由で転送するだけです。
どのような脆弱性が存在しますか? TLSの使用がSTRICTオプションであると考えてください。
なぜ.NETで生成しないのですか(RSACryptoServiceProvider)? – Evk
@Evk .NETの場合はWindowsのみのため、私の答えは「はい」です。しかし、クライアントがAndroid、iOSベースのデバイスの場合はどうなりますか?また、Qはむしろ異なるものです。記載されているすべてのオプション(バックエンドと厳密にTLS経由で保存しない)でこのような転送を行うのは安全ですか? –
あなたがそこで使うものによって異なります。 mono(xamarin)を使用している場合、同じRSACryptoServiceProviderをそこで使用できるはずです。 – Evk