問題タブ [public-key-encryption]
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.
ssl - 信頼されていないサーバーの SSL 証明書戦略
次の制約の下で、他のクライアント アプリケーションが接続するためのローカル ネットワーク経由でサーバーとして機能する必要がある製品を開発しています。
- 交換されるデータは非常に価値があり、ユーザーのネットワークまたはサーバーとして機能するマシンのセキュリティについては保証されません。したがって、どの SSL 証明書も「悪用」される可能性があります。
- ユーザー エクスペリエンスの混乱を最小限に抑えるために、クライアントがサーバーを識別する非電子的手段は、ポストイットに書き込むことができる情報に制限する必要があります (キー ファイルの交換ではなく、IP アドレス、パスコードなど)。
これらを考慮して、現在の SSL 戦略は次のとおりです。
- 信頼できるストアに SSL 証明書をインストールしたり、CA 証明書に対して証明書に署名したりしないでください。これにより、潜在的な攻撃者がすべてのクライアント マシンへのフロント ドア キーを取得する可能性があります。
- したがって、SSL 証明書は自己署名されます。サーバーを検証する方法がないため、中間者保護は提供されません。ただし、安全でないネットワークを使用しているがサーバーは安全なユーザーに盗聴保護を提供します.
- Rijndael 対称暗号化を使用して「パスコード」システムを上に実装します。これにより、証明書が侵害された場合でも、盗聴保護が行われます (多くの漏れのあるバケツは知っていますが、何もないよりはましです)。このパスコードは、クライアントのユーザー エクスペリエンスの中断を最小限に抑えて定期的に再生成できます。
これらの制約の中で、クライアントとサーバーが通信するためのより安全な戦略はありますか?
bash - 公開鍵認証の bash/ssh テスト
ssh が公開鍵を使用して認証できるかどうかをプログラムでテストする方法はありますか? 私はこのようなことをしたいと思います(できればbashで、しかしpythonソリューションを受け入れています):
リモートホストで公開鍵が一致しない場合ssh-test-thingy
、ゼロ以外の終了ステータスを返します。
web-services - X.509とは何ですか?どのように使用しますか?
X.509とは何ですか?
認証のためにRESTWebサービスでどのように使用しますか?
linux - PKCS#12 を Seahorse にインポートする方法
Firefox に正常にインポートされた PKCS#12 ファイルがあります。ここで、これらの鍵で公開鍵暗号化を使用するために、同じファイルを Linux にインポートしたいと思います。Seahorse を使用してインポートしようとしましたが、失敗しました。PKCS#12 ファイルは、ブラウザーでのみ使用するように設計されているのでしょうか? 私が知りたいのですが...
ありがとう!
c++ - クライアントとサーバー間の暗号化と復号化に Crypto Api を使用する正しい方法は何ですか?
多くの頭痛の種と人々が停止するようアドバイスした後、私は最終的にサーバー/クライアント アプリをこの API で動作させ、必要なキー、つまりセッションと Exchange を作成することができました。
公開鍵をクライアントに送信すると、鍵が正常にインポートされ、その鍵を使用してメッセージも暗号化されますが、サーバーに戻すと; セッションキーを使用してメッセージを復号化しますが、メッセージはガベージとして返されます (うーん.. 秘密キーが必要です!)。これは、暗号化されたメッセージを rpc 経由で返す方法が原因である可能性がありますが、何か別のものであることがわかります。理想的には、私が現在取得している情報はかなり混乱しているため、これらすべてのキーを使用して何をすべきかについての明確でわかりやすい説明が必要です。
メッセージを暗号化し、復号化のために返すことができるように、交換公開鍵をクライアントに渡しますか?
または:
クライアントのセッション キーをサーバーの公開キーで実際に暗号化し、それを返す必要がありますか? (これは私には正しく聞こえませんが、私はすべての耳です!!!)
コメントを残して別の API に移動するか、MSDN から貼り付けをコピーしてください (私は既にすべて読んでいます)。私はCrypto APIを使用していますが、サーバーがクライアントに渡す必要があるキーと、クライアントが何をして何を返すべきかについて明確な説明が必要なだけで、最終的に先に進むことができます...
java - シリアル化されたオブジェクトとしての公開鍵の交換
公開鍵をクライアントの場所に交換する方法。秘密鍵を使用して RSA アルゴリズムを使用してドキュメント (テキスト ファイル) を暗号化し、公開鍵をシリアル化を使用してファイルに java.security.Key オブジェクトとして格納しました。シリアル化された公開鍵オブジェクトの整合性について知りたいそれは安全なオプションであるか、利用可能な他のオプションです。
iphone - URL パラメータを暗号化するためだけに OpenSSL を使用できますか?
必要なのは、iPhone アプリからサーバー上の PHP に送信されるパラメーターを暗号化するために使用できる公開鍵暗号化スキームだけです。ライセンスが原因で GnuPG を使用できません。
要件は、ユーザーが資格情報を入力しなくても、電話のアプリがサーバーと通信できることです。ここでの私の目標は、URL のパラメーターの検査と、なりすましによるシステムの悪用を防ぐことです。したがって、暗号化のために、公開されているアプリのすべてのコピーが同じユーザーのように見える可能性があります。
HTTPS を使用する予定はありません。なぜなら (私が間違っていなければ) セッションまたは証明書が必要であり、過剰に思えるからです (そうでない場合はお知らせください)。URL のパラメーター部分を暗号化および復号化するだけです。
RSA 公開鍵で暗号化するデータは鍵よりも短くする必要があるため、標準的な手順では、対称秘密鍵を生成し、それを公開鍵で暗号化し、生成した秘密鍵でデータを暗号化し、生成した秘密鍵を送信します。キーと暗号化されたデータをサーバーに送信します。生成されたキーを暗号化するために必要なもののほとんどを持っているようです (プロセスでの RSA_size() クラッシュを除く)。しかし、Blowfish や PHP でサポートされているその他のアルゴリズムを使用して、バルク データのエンコーディングを指定および設定する方法がわかりません。
洞察をありがとう。
php - PHP からの PGP 暗号化
コマンドを実行すると
UNIX コマンド プロンプトから、正常に動作しています。しかし、PHP を使用して同じコマンドを使用しようとすると、機能しません。
解決策を教えてください。
public-key-encryption - 公開鍵暗号化
正しい軌道に乗っていることを確認したかっただけです
- 送信者は秘密鍵を生成し、メッセージを暗号化します
- 送信者が受信者の公開鍵を要求する
- 「シークレット」はこの公開鍵で暗号化されます
- 復号化のために受信者に送信されるデータ
論理的に言えば、「秘密」は受信者の公開鍵でのみ暗号化できると思いますが、暗号化された秘密は暗号化されたファイル/ドキュメントに添付されていますか?
.net - openSSL によって生成された RSA 公開鍵を RSACryptoServiceProvider にロードする方法は?
中央認証サーバーから Cookie を読み取る .Net クラスを作成しています。これには、UserId、いくつかのタイムスタンプ、および 2048 ビット RSA キーと SHA1 ハッシュを使用して openssl_sign() によって作成された署名が含まれています。
現在の公開鍵は、サーバー上で openssl PEM 形式で提供され、場合によって変更されます。.Net マネージ コードだけを使用して (まだ) キーを読み取ることができず、次の手順を実行して機能させました。
- 公開鍵から指数とモジュラスを抽出する
- チェックキーはまだ2048ビットです
- キーの長さを格納し、ソースに係数を指数付けし、コンパイルして展開します (モジュラスから先頭のゼロを削除して機能させます)。
次に、クラスは を作成し、構造体を使用してパブリック コンポーネントを CSP にnew RSACryptoServiceProvider(2048)
フィードします。RSAParameters
その後、署名の検証は成功します。
キーが変更されるたびに新しいアセンブリを作成、コンパイル、および展開することなく、これを機能させたいと思います。興味深いものにするために、マネージド コードのみに固執したいと思います (私が見つけたほとんどの例を除外します)。完璧に聞こえるのは、インスタンスを作成するときの内部 ASN.1 Reader ですAsnEncodedData(oid, data)
が、一致することがわかった唯一の oid、RSA 別名 1.2.840.113549.1.1.1 は機能せず、生のバイトのみを生成しました。
追加: 以前の公開鍵
-----BEGIN PUBLIC KEY-----
MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAMW90O6C17fapbS35auKolsy7kI0FOE1
C08y5HqgZ0rMXoocV4nHSHYBm2HVx2QSR5OLQtERgWDmxOu+vwU1GXUCAweAAQ==
-----END PUBLIC KEY-----
openSSL のソースコードを使用してこれを解決しているように見える pempublic.cs を見つけました。他の解決策があるかどうかを確認するために、質問を開いたままにします。