問題タブ [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.
security - RSA:複数のキーを使用したメッセージの暗号化
2つ以上のRSAキーを使用してメッセージを暗号化することで、セキュリティを強化することはできますか?
編集: いくつかの説明:
これを行うために私が最も興味を持っているコンテキストは、ランダムに生成された対称鍵を暗号化することです。
質問を2回続けて暗号化することに限定したくありません。目的は、大きなRSAキーの高い計算コストを回避することです。メッセージを部分に分割し、それらを個別に暗号化するなど、それほど単純ではない戦術を使用することは、オプションとして検討する必要があります。
メッセージの一部のみを取得することは許容できると想定する必要があります。
これが専門家によって具体的に議論されている出版物、または複数のRSAキーを使用するアルゴリズムを知っている場合は、貢献してください。
c# - 秘密鍵と公開鍵の代わりに、非対称暗号化で純粋な暗号化および復号化鍵を使用することは可能ですか?
秘密鍵と公開鍵の代わりに純粋な暗号化および復号化鍵を使用することは可能ですか?.Net非対称RSA実装で知っているように、秘密鍵RSAParameters parameters = (new RSACryptoServiceProvider()).ExportParameters(true)
は公開鍵のスーパーセットです。また、秘密鍵を使用して、データの暗号化と復号化の両方を行うことができます。しかし、私はデータを解読するためだけに鍵が必要です。どうやってするの?
RSAParametersフィールドを無効にすることを試みましたが、RSACryptoServiceProviderオブジェクトはそのようなパラメーターをインポートできません。
android - Android の非対称暗号
Android 携帯電話で非対称暗号 (RSA や ECC など) を使用できるかどうか、どのように、どのライブラリを使用するのが最適かをお尋ねしたいと思います。
java - データベースまたはキーストアへの公開鍵と秘密鍵の保存
各レコードの公開鍵と秘密鍵をデータベーステーブルに格納するWebサービスを作成しています。
キーはJavaを使用して作成されていますが、キーストアを作成したり、データベースのフィールド内にキーを直接配置したりするのは天気がよくわかりません。
どのオプションをお勧めしますか?また、各方法の利点は何ですか?
encryption-asymmetric - 非対称鍵システム?
公開鍵と秘密鍵の基本的なシステムと、人に何かを送信したい場合、公開鍵が必要で、秘密鍵で復号化する方法を理解していますが、秘密鍵ができるようにどのような論理メカニズムが機能しているのかを理解しています暗号化された公開鍵を解読しますか? たとえば、独自の非対称鍵システムを書きたいとします。これらのキーをペアで生成するにはどうすればよいですか? また、それらをどのように実装しますか?
それを行う方法が1つだけではないことは知っていますが、あらゆる方法で頭を包み込もうとしています。
c# - BouncyCastleはPKCS7暗号化ファイルを作成しますか?C#
BouncyCastleを使用して、PKCS7ファイル標準を使用してファイルを暗号化しようとしています。これが私が持っているp7mファイルを出力するコードです。(Entrustを使用して)ファイルを復号化しようとすると、キーストアのパスワードの入力を求められるため、ファイルがAES 128を使用して暗号化されていることがわかりますが、ファイルの本文を復号化できません。暗号化で問題が発生している必要があります。
そして、BouncyCastleを使用してファイルを復号化しようとすると、ファイルの内容をCMSEnvelopedオブジェクトに渡すときに次のエラーが発生します。
ここで何が起こっているのかアイデアはありますか?
c# - RSA秘密鍵暗号化
C# で秘密鍵の暗号化を実行する方法はありますか?
の標準については知っていますRSACryptoServiceProvider
がSystem.Security.Cryptography
、これらのクラスは公開鍵の暗号化と秘密鍵の復号化のみを提供します。また、内部で秘密鍵暗号化を使用するデジタル署名機能を提供しますが、秘密鍵暗号化と公開鍵復号化を実行する公的にアクセス可能な機能はありません。
この種の暗号化を実行するための非常に良い出発点であるcodeproject でこの記事を見つけましたが、記事のコードは任意の長さのバイトをほとんど暗号化できないため、すぐに使用できるコードを探していましたランダムな値を含む配列(ゼロを含む任意の値を意味します)。
秘密鍵の暗号化を実行するための優れたコンポーネント (できれば無料) を知っていますか?
私は使用します.NET 3.5
。
注: これは一般的に、非対称暗号化 (秘密鍵を使用して暗号化し、公開鍵を使用して復号化する) を使用する悪い方法と見なされていますが、そのように使用する必要があるだけです。
追加説明
あなたが持っていると考えてください
2048bit RSA
そして、誰もこの配列で何も変更していないことを確認するために使用したいと考えています。
通常、デジタル署名 (つまりRIPEMD160
) を使用し、それを元のバイトに添付して受信者に送信します。
したがって、30 バイトの元のデータと、追加の 256 バイトのデジタル署名 ( であるため2048bit RSA
) があり、全体で286 バイトになります。ただし、その256 バイトのうち実際にハッシュされるのは160 ビットのみであるため、正確に1888 ビット( 236 バイト) が未使用です。
だから、私の考えはこれでした:
元のデータの30 バイトを取得し、それにハッシュ ( 20 バイト) を添付して、これらの50 バイトを暗号化します。「デジタル署名内の実際のデータをプッシュできた」ため、 286バイトよりもはるかに短い256バイトの長さのメッセージが表示されます。
ECDSA リソース
MSDN
Eggheadcafe.com
c-plusplus.de
MSDN ブログ
Wiki
DSA リソース
CodeProject
MSDN 1
MSDN 2
MSDN 3
最終的解決
私がこの問題をどのように解決したかに興味がある場合は、さまざまなバージョンの Windows (およびそれ以降) で広くサポートされている1024bit DSA
andを使用します。セキュリティは十分です (注文に署名していません。一部の子供が自分の iPhone で署名をクラックできないようにするため (:-D))、署名のサイズは40 バイトのみです。SHA1
Windows 2000
javascript - クライアント側の暗号化-推奨事項/ベストプラクティス-正しい方向に向けてください。
クライアントのブラウザとベンダーの間に「安全な」チャネルが存在することを保証するために、データクライアント側を暗号化する必要があります。
基本的な前提は次のとおりです。ベンダーはパブリック/プライベートキーペアを生成します:VendorPubとVendorPriv
クライアントは機密データを入力します。フォームのJavaScriptを送信すると、データの機密部分が暗号化され、サーバーに送信されるのはVendorPub(SensitiveData)です。
そのパッケージをVendorPub(SensitiveData)としてベンダーに送信しますが、ベンダーのみがそのデータを利用できます。
キーの長さと承認されたアルゴリズム(それぞれRSAと4096)に関係なく、もちろんすべてがSSL接続を介して行われます...
実行可能に見えますが、まだモックアップしていません...何か提案はありますか?落とし穴?
私たちの開発環境は、Visual Studio 2k5 / 2k8 /ASP.net2.0または3.0です。
ありがとうございました
encryption - どっちがいい?非対称キーを事前に生成するか、リアルタイムで生成しますか?
キーストアが安全で、約 100 万個のキーを処理する必要があると仮定すると、非対称キーをリアルタイムで生成する方がよいでしょうか、それとも一連のキーを生成して保存し、必要なときに使用する方がよいでしょうか?
編集 1: リアルタイムとは、ユーザーが初めて登録したときにキー ペアを生成することを意味し、それ以降、そのキー ペアはユーザーとのすべての通信に使用されます。
java - Java 非対称暗号化: 公開/秘密鍵を格納するための推奨される方法
このコードは、公開鍵と秘密鍵のペアを生成します。
私が知りたいのは、公開鍵を通常どのように保存するかです。
オプション 1: バイトを保存する
私が嫌いなのは、コードをPKCS8EncodedKeySpec
やなどの具体的な実装に結びつけることですX509EncodedKeySpec
。
オプション 2: モジュラスと指数を保存する
2 番目のオプションは実装が簡単ですが、パフォーマンスが低下する可能性があるかどうかはわかりません。
アドバイスはありますか?