問題タブ [encryption-asymmetric]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Java で対称暗号化を使用してディスク上の秘密鍵を保護する
中央サーバーからのコマンドをポーリングする分散アプリケーションがあり、それらのコマンドの内容は、各リモート サイトでアプリケーションと共に展開された公開鍵を使用して、秘密鍵によって「署名」されます。各コマンドは秘密鍵で署名され、その署名はコマンドが実行される前に検証されます。
Java で公開鍵と秘密鍵のペアを生成する方法を次に示します。(私は、1024 よりも多くのことを行う必要があることを認識しています)
新しい要件は、単純な比較的安全なコマンドを送信することに加えて、ソフトウェアにインストーラーをダウンロードして実行し、それ自体を更新するように指示するコマンドを送信することです。これは、正しく行わないと大きな穴が開く可能性があります。「更新インストーラーの実行」コマンドは、通常どおり署名され、ダウンロードして実行される実行可能ファイルの md5 も含まれます。そのため、コマンドの署名は正しく (md5 を含む) 必要があり、ダウンロードしたファイルで計算された md5 は、実行前に正しい必要があります。これは、私が考えることができるほとんどの攻撃ベクトルを処理するはずです. 他に気をつけなければならないことはありますか?
そのため、これらのコマンドが発信されたサーバーで秘密鍵を保護することに注意を向けています。その秘密鍵を入手するとゲームオーバーです。そのキーをディスク上でどのように保護すればよいですか?
私の考えは、パスフレーズを使用した対称暗号化を使用して、その秘密鍵を保護することです。
私の現在の解決策は次のとおりです。
(明確にするために例外を削除しました)
これは基本的にソルトをランダムに生成し、パスフレーズを使用してキーを作成し、結果のソルト、IV、および暗号テキストを復号化の準備が整ったファイルに保存します。
しかし、私はここに何かが欠けていると感じています。有効な説明を取得できるように、キーに何らかのタイプの MAC を含める必要がありますか? たぶん、秘密鍵の前に既知のテキストを 5 バイトまたは 6 バイト置くだけの簡単な方法でしょうか? 現在、パスフレーズが正しくない場合、パディング例外が発生するだけですが、常にそうであるとは限らず、一部のパスフレーズがデコードされてジャンクになる可能性があることを読みました。これを防ぐ必要があると感じています。
私がここで正しい軌道に乗っているかどうかを誰かに知らせて、フィードバックを提供してもらえますか。これを可能な限り安全にすることが重要です..
c# - RSA C# のキー サイズは変更されません。
キーペアを生成し、それらを使用してxmlファイルに保存しています
MSDN に従ってキー サイズを 2048 に設定する必要があります。これを行う唯一の場所は、RSACryptoServiceProvider のコンストラクターからです。
を使用してキーサイズを確認すると
私はいつも 1024 を取得するので、ここで何が問題なのですか??
security - エンタープライズ ソフトウェアのキー コンテナー内で非対称キーを管理する方法は?
こんにちは、企業全体のさまざまな PC にインストールする必要がある教育用ソフトウェアがあります。私のプログラムは、コンテンツのソースとして 5000 個のテキスト、xml、html ファイルを使用しています。ソースが改ざんされたり、コピーされたり、違法に使用されたりしたくありません。私がやろうとしているのは、ソースを個別に暗号化し、暗号化されたファイルをアプリ内のフォルダーに配置して、後でユーザーが要求した各ファイルをアプリが読み取って復号化できるようにすることです。アプリはどこにでもインストールして使用できます。しかし、問題は、アプリケーション内で暗号化キーを保護して保存するために、キー コンテナを使用する必要があることです (間違っている場合は修正してください)。どの PC にもインストールされているすべてのコピーに対してキーを修正する必要があります。
何か案が?
security - 署名と暗号化に別々の鍵ペアを使用する目的は何ですか?
たとえば、署名と暗号化に別々の公開鍵ペアを使用する必要があり、RSA では同じ鍵ペアを使用しないのはなぜですか? 同じキーを使用することでセキュリティ上の問題はありますか?
java - CallManager3とJavaの暗号化/復号化
サーバーと通信するフラッシュクライアントがあります。サーバー側のコードはJavaです。通信を暗号化できるようにしたいので、as3とjavaの両方のライブラリを持つアルゴリズムである必要があります。
暗号化のセキュリティよりも重要な場合は速度を上げ、理想的には非対称鍵暗号化を使用します。
AESとBlowfishは、私が見たものから機能するようです。ただし、どちらも対称鍵を使用します。
何か案は?
blackberry - BlackBerryでRSA暗号化を使用中にエラーが発生しました
BlackberryでネイティブAPIを使用してRSA暗号化を使用しようとしています。Javaで公開鍵と秘密鍵のペアを作成し、鍵のモジュラスと指数を文字列として保存して、暗号化と復号化のためにこれから鍵を生成できるようにしました。次のコードはクライアント側からのものであり、を取得していInvalidKeyException
ますが、バックトレースがnullであるため、何が起こっているのかわかりません。
そして、これは私が私のキーを生成するためにサーバー側で行ったことです:
何か案は?
編集:私はそこで暗号化と復号化を行うことでサーバー上で簡単なテストを試みました、そして私が復号化しようとするとIllegalBlockSizeException
これらは私の暗号化と復号化の方法です(サーバー側):
そして、これは私が試している簡単なテストです:
c# - C# 暗号化を行うにはどうすればよいですか?
私はコードを使ったチュートリアルを求めているのではなく、調査を行おうとしていますが、正しい質問をしていることを確認したいと考えています。
- .NET ですぐに使用できる暗号化の最適な形式は何ですか?
- 公開鍵/秘密鍵、これらをどこに安全に保管すればよいですか?
- これを適切に行うには、どのようなツールが必要ですか?
AESCryptoServiceProvider から始めて、渡した文字列を暗号化しました。満足しました。2回呼び出すと同じ値になることをテストしました。その後、何の形式のキーも提供していないことに気付き、アプリの 2 回目の実行で異なる結果が得られました。それで、私は読み始め、RSA公開/秘密鍵などを見ました。そして、私が行っている読みで正しい道を進んでいることを確認したいだけです。そこにはたくさんの例がありますが、これらのキーをどこに置くか、どこから取得するかについて言及しているものはほとんどありません.
java - BouncyCastleAPIを使用したJavaセキュリティ
BouncyCastleAPIがJavaの非対称暗号化に適しているかどうかを知りたいです。
現在、私はJavaのJCEAPIを使用してこれを行っています。非対称暗号化にBouncyCastleAPIを使用した場合、何か利点はありますか?