問題タブ [gost3410]
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.
openssl - GOST エンジンを使用した OpenSSL
OpenSSL を使用して private/public/(Certificate Signing Request) を生成し、後でデータに署名したいと考えています。しかし、 OpenSSL GOST エンジンを使用したいのです。
OpenSSL 1.0.0をダウンロードし、 openssl.cfgファイルを変更しました。
秘密鍵と CSR ( 1 行のコマンド文字列)を生成できます。
私は2つのファイルを取得します:
- certificate_signing_request.csr
- privkey.pem
私はできることを知っています(秘密鍵と公開鍵の(暗号化されていない)テキスト表現を出力します):
私はRSAの代わりにGOSTを使用しているため、次のことができません。
私の質問は次のとおりです:gostを使用して公開鍵(秘密鍵またはcsrからmabye)を生成/取得するにはどうすればよいですか?
私が使う:
- Windows 7 プロフェッショナル x64;
- OpenSSL 1.0.0;
- ゴストエンジン。
助けてくれてありがとう。
cryptography - OpenSSL go エンジンの問題
OpenSSL 1.0.0d を使用して ECDH キー交換 GOST 34.10-2001 を実装しようとしています。次のようにgostエンジンをロードしています:
この時点で、GOST エンジンがロードされ、正常に動作します (そう思います)。ハッシュアルゴリズムと暗号化アルゴリズムを使用していくつかのテストを行いました。
しかし、ECDH (相手側の公開鍵をインポートして共有鍵を生成する) を実装しようとすると、不適切な結果が得られます (相手側と共有鍵が異なります)。
a、b、p、q、x、y パラメータをチェックし、コード フローをチェックしましたが、何が問題なのかわかりません。
1 つある: VKO 34.10-2001 アルゴリズムは openssl\engines\ccgost\gost2001_keyx.c (関数 VKO_compute_key) に実装されていますが、汎用関数 ECDH_compute_key を呼び出すと、VKO_compute_key につながりません (int3 を設定してこれを確認しました)。 VKO_compute_key の先頭)。
私は何かを誤解しましたか?または、誰かがopensslからgostエンジンを使用して共有キーを生成する例を示すことができますか?
security - OpenSSL と GOST エンジンの問題 (静的にリンク)
静的にリンクされた openSSL ライブラリと GOST 暗号化エンジンに問題があります。
GOST キーと証明書を使用する単純なクライアント/サーバー アプリケーションがあります。GOST キーで問題なく動作しますが、動的にリンクされたバージョンの openSSL ライブラリを使用している場合に限ります。静的にリンクされた openSSL を使用しようとすると、エラー メッセージが表示されます。
これは、openSSL ライブラリの初期化呼び出しです。
OPENSSL_config("正しい設定ファイルのパス");
SSL_library_init();
SSL_load_error_strings();
証明書ファイルを読み取ろうとすると、エラーが発生しました。
SSL_CTX_use_certificate_chain_file(ctx, CERTFILE)
ここでの戻り値は 1 ではありません。したがって、これはエラーです。
人間が読めるエラー メッセージは次のとおりです。
3084809868:エラー:0609E09C:デジタル エンベロープ ルーチン:PKEY_SET_TYPE:サポートされていないアルゴリズム:p_lib.c:239: 3084809868:エラー:0B07706F:x509 証明書ルーチン:X509_PUBKEY_get:サポートされていないアルゴリズム:x_pubkey.c:155: 308480C9868:エラー:1401BF ルーチン:SSL_SET_CERT:x509 lib:ssl_rsa.c:402:
外部 GOST エンジン ライブラリと動的にリンクされた openSSL ライブラリで同じコードを使用すると、すべて正常に動作します。では、静的バージョンと動的バージョンの違いは何ですか? 現時点で、ライブラリの初期化シーケンスが間違っているという唯一の考えがあります。
コンパイルされた libcrypto.a ライブラリのシンボルをチェックしました。
nm ./libcrypto.a | grep gost
このコマンドにより、libcrypto.a ライブラリに含まれる多くの GOST 関数が出力されました。したがって、ライブラリは適切にコンパイルされ、すべての GOST エンジン関数がスタティック ライブラリに含まれていたと思います。
「サポートされていないアルゴリズム」というエラー メッセージは、GOST 関数が正しく初期化されなかったことを意味します。問題は、静的にリンクされた openSSL を使用してエンジンを適切に初期化する方法です。
c - OpenSSL GOST パラメータ セット
プログラムによって設定された GOST 2001 パラメータにカスタム パラメータを挿入する方法がある場合、どの API を使用する必要がありますか? OpenSSLの機能をシミュレートして生成することができた後EVP_PKEY、パラメーターがNIDにバインドされていることがわかったので、そこにカスタムのものを追加する必要があります。アイデアはありますか?
java - GOST 34.10-2001 キーペアを生成し、キーストアに保存します
現在、GOST 34.10-2001 署名アルゴリズムの鍵ペアを生成する必要があります。バウンシーキャッスルプロバイダーがこのアルゴリズムをサポートしていることを発見してうれしく思いましたが、キーペアを生成して、任意のタイプのキーストアに保存することはできません. 現在、私はこのコマンドを試しました(このコマンドは、 keyalgisDSAおよび sigalg isの場合にうまく機能しますSHA1withDSA):
しかし、私はエラーがあります:
keysizeキーサイズを操作したり、コマンドからオプションを削除しようとしたときに表示されるエラーとまったく同じです。しかし、いくつかの特別なケースがあります。に設定keysizeする256と、別のエラーが発生しました:
現在、キーペアを生成する方法とキーストアに保存する方法がわかりません。また、GOST 34.10-2001 アルゴリズムのキー ペアを生成できる Java コードもあります。
このコード サンプルではECGenParameterSpec、クラスを使用してキー ペア ジェネレーターを初期化してい-providerArg provider_argます-Jjavaoption。
PS 曲線名をパラメーターとして指定する必要があると思いますが、使用するパラメーターを決定できません。
php - PHP、openssl、GOST
GOST で暗号化された証明書と秘密鍵のペアを使用して、PHP で S/MIME に署名しようとしています。
コンソールから openssl 自体を使用する場合は、すべて問題ありません。
PHPコードを使用するとき、私はちょっと立ち往生しています:
私は得る:
「秘密鍵の取得エラー」は常にここにありますが、実際にロードできない場合を除いて、「開始行なしエラー」が発生します。したがって、この出力は実際には PHP openssl モジュールが適切な暗号を見つけられないように見えます。
これが GOST 暗号であることを PHP に伝えるにはどうすればよいですか? 構成ファイルを使用するか、直接「-engine gost」オプションを使用して、これを openssl に伝えています。PHPに同じことを伝える方法はありますか?
私は実際にPHPをコンパイルし、GOST対応のopenss 1.0.1eにリンクしました(opensslモジュールはPHPと一緒に構築されました):
(これはデフォルトの構成出力であることに注意してください)
java - Java クライアントで GOST 暗号を有効にする方法
クライアント暗号リストで GOST 暗号を使用しながら、Java クライアントを使用して一部の Web サーバーに SSL 接続を確立したいと考えています。getEnabledCipherSuites()以下を使用して、Java で有効かつサポートされている暗号スイートを確認しようとしましたが、getSupportedCipherSuites()GOST 暗号を返すものはありませんでした。GOST 暗号を使用して、Java クライアントから Web サーバーへの SSL 接続を確立するにはどうすればよいですか? クライアントの暗号リストに GOST 暗号を含めるように指定する方法はありますか?
c - OpenSSL go エンジンのコード例
OpenSSL gost エンジンの使用例を教えてください。GOST R 34.10-2001 署名アルゴリズムを使用してデータに署名する必要がありますが、実際の例やドキュメントが見つかりません。ところで、その OpenSSL コマンド ライン ユーティリティを使用しない場合、その openssl.cnf ファイルを変更する意味はありますか? そうでない場合、エンジンをコードにロードするにはどうすればよいですか? また、静的 gost エンジンを使用して OpenSSL をビルドするには、どのようなコンパイル フラグが必要ですか? 前もって感謝します。
- - 解決 - -
最後に、以下が正常に検証されます。
java - java.security.Provider にエイリアスを追加するには?
PDF ファイルのデジタル署名を検証する必要があります。
私は使用itextpdfし、cryptopro
cryptopro必要なアルゴリズムに次のエイリアスを提供します。
itextpdf「GOST3411withECGOST3410」を取得しようとすると、「そのようなアルゴリズムはありません:プロバイダー JCP の GOST3411withECGOST3410」で失敗します
これは機能します:
それが正しい方法かどうかはわかりません。
java - ((A^z1 * y^z2) mod P) mod Q を速くする方法
BigIntegerValue.pow(整数値)
Javaの指数は整数ですが、Biginteger値がありました。
署名を検証しようとしました GOST 3410、私はこのコードを取得しましたが、長すぎます..
アイデアはありますか?P と Q を取得するために、私は弾むキャッスルを使用しています..しかし、値を確認する方法がわからないため、弾むキャッスルで確認する方法がわかりません..ありがとう。