問題タブ [ecdsa]

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.

0 投票する
1 に答える
184 参照

encryption - (現在のプログラムで使用されている CPU 時間のピコ秒数 + クロック時間) は、疑似乱数ジェネレーターの暗号解読の影響を受けないシードですか?

Haskell でこのECDSA実装を使用しようとしています。15 行目を見ると、k 値がグローバル乱数ジェネレーターを使用するrandomRIOを使用していることがわかります。そのゲッターは、シードを作成するmkStdRNGを使用する theStdGenを使用します。

(壁時計の現在の秒数) * 12345 + (壁時計の現在のピコ秒) + (現在のプログラムで使用されている CPU 時間のピコ秒数)

これは、数十億ドルの価値があるデータに署名するのに十分ですか?

0 投票する
2 に答える
8184 参照

java - RFC テスト ベクトルに従って Java で ECDSA 署名を計算する

ikev2 プロトコルに関連するプログラムのテスト ハーネスを Java で作成しています。この一環として、ECDSA 署名を計算できるようにする必要があります (具体的には NIST P-256 曲線を使用)。

RFC 4754は、IKEv2 での ECDSA の使用について説明し、一連のテスト ベクトルを提供します (必要な p256 曲線を含む)。

次のコードを使用して、Java の ECDSA 署名実装を介して ECDSA-256 テスト ベクトル値 ( RFC のセクション 8.1 ) を実行しようとしています。

結果は次のようになります。

CB28E099 9B9C7715 FD0A80D8 E47A7707 9716CBBF 917DD72E 97566EA1 C066957C 86FA3BB4 E26CAD5B F90B7F81 899256CE 7594BB1E A0C89212 748BFF3B 3D5B0315

代わりに私は得る:

30460221 00dd9131 edeb5efd c5e718df c8a7ab2d 5532b85b 7d4c012a e5a4e90c 3b824ab5 d7022100 9a8a2b12 9e10a2ff 7066ff79 89aa73d5 ba37c868 8e 7d7fa6e 2e 613

長さの違いは、署名の Java ASN.1 エンコードが原因であることを知っています。しかし、残りの部分は完全に間違っており、その理由がわかりません。

どんな助けやアドバイスも大歓迎です!

PS私はECDSAまたはJava暗号の専門家ではないので、おそらく私が犯している愚かな間違いです

0 投票する
1 に答える
4707 参照

c - OpenSSL C ライブラリを使用して、複数のスレッドで楕円曲線キー ペア (EC_KEY_generate_key) を生成します。

多くの ec キーペアを生成したい。プロセスを少し高速化するために、このジョブに複数のスレッドを使用するようにアプリケーションを書き直しました。以下は、各スレッドがキーを生成する方法のコード スニペットです。

一見すると、すべてが正常に機能しているように見えました。i5 520m で 4 つのスレッドを使用すると、アプリケーションは 2 倍の速さで実行されました。しかし、その後 3 ~ 4 回の E6 キー生成の後、突然セグメンテーション違反が発生します。EC_KEY_generate_key 操作をロックすると、セグメンテーション違反はなくなりますが、複数のスレッドを使用する利点はなくなります。今私の質問。メモリを破損することなく、キーの作成を複数のスレッドに分割することは可能ですか? グーグルを使っても情報が見つかりませんでした。ただし、SSL ドキュメントでは、スレッド セーフについては何も言及されていません。どんな助けでも大歓迎です。どうも

0 投票する
2 に答える
3301 参照

openssl - ECDSA 秘密 16 進キーを公開キーに変換する

以下の 2 行を使用して、ECDSA 秘密鍵の 16 進数を生成しています。

それらの出力は次のようになります。

次に、その 16 進キーを使用して公開 ECDSA キーを生成するにはどうすればよいでしょうか?

どんな助けでも大歓迎です。

0 投票する
1 に答える
1293 参照

node.js - node.js で ECDSA キーを 16 進エンコードする

APIサーバーと通信するnodejsアプリを構築しています。API サーバーは、私が行う各リクエストに、 ECDSA 曲線と特定のデータ セットのハッシュX-Signatureを使用するヘッダーが含まれていることを要求します。prime256v1sha256

cryptotlsのドキュメントを調べましたが、適切なものは見つかりませんでした。で秘密鍵を正常に生成しましopenssl ecparam -name prime256v1 -genkeyたが、PEM 形式です。DER 形式のキーも生成しました。これらには両方とも、使用される曲線や、PEM の場合はコメントなどの追加のメタデータが含まれます。

これらのキーを使用して署名操作を行うことができますが、サーバーでは、16 進エンコードを使用して公開キーをアップロードする必要があります (サーバーは、要求に対して行った署名を検証できます)。

具体的には、サーバーは次の Python コードの出力のようなものを必要としています。

pubkey の出力例 (改行なし):c5bd76cd0cd948de17a31261567d219576e992d9066fe1a6bca97496dec634e2c8e06f8949773b300b9f73fabbbc7710d5d6691e96bcf3c9145e15daf6fe07b9

ノードアプリへの依存関係としてPythonを追加したくない... PEMまたはDERファイルから秘密鍵を表すバイナリデータを抽出できる方法を知っている人がいるので、それをバッファに入れて呼び出すことができますbuffer.toString('hex')か? または、ネイティブcryptoライブラリを使用して ECDSA キーペアを生成する方法はありますか? または同じことをするライブラリ?

0 投票する
1 に答える
236 参照

java - ECDSA で基点の順序が長い短いハッシュを処理する方法

私は CVC 証明書を使用しています (聞いたことがない場合は、X509 のふりをしてください)、brainpool256r1 曲線と SHA1 ハッシュを使用した楕円曲線署名を使用しています。バウンシーキャッスルを使用したJavaでは、次のように確認するだけです。

そして、すべてがうまくいきます。ただし、組み込みデバイスでもそれらを検証する必要があり、ウィキペディア ECDSA の記事z によると、少なくとも左端の 256 ビットのハッシュを使用して値を取得することになっているため、問題が発生しました。しかし、SHA1 には 160 ビットしかありません。

これは bouncycastle によってどのように解決されますか?また、これを処理する方法に関する一般的な理論はありますか?

0 投票する
0 に答える
4612 参照

php - PHP での secp256k1 (ECDSA) の実装 (ビットコイン用)

熱心な支持者および/またはクローザーへ: これが SO のトピック外であると思われる場合は、この質問がより適切な他の StackExchange サイトを教えてください。


PHPでECDSA曲線secp256k1を実装するには?

というか、解決策はありますか?含まれる特殊なクラス - すでに完了していますか?

オープンソースのライブラリ、クラス、その他の言語 (JavaScript、Python など) で利用できるものがたくさんあることがわかりますが、PHP ソリューションの一部またはすべてをグーグルで検索したところ、何もありませんでした。.

これは私のビットコイン プロジェクトのためのもので、秘密鍵から公開鍵を生成する方法が必要です...そして、最終的なビットコイン アドレスを生成したいと考えています

私は秘密鍵を生成する方法を知っており (ランダムかどうかは気にしないでください - ここでは問題ではありません)、256 ビットの 16 進数と WIF 表記の両方を持っています。しかし、次のステップ:公開鍵を考え出し、最終的なビットコイン アドレスを取得することは、私にとって一種の問題です。私は文字通り暗号のようなバックグラウンドがなく、解決策が secp256k1 を何らかの形で利用することであることを知っているからです。

これは私がこれまでに持っているものです:

tl;dr PHP でこれを実装する方法は? (..そしてその前にprivKey->pubKey変換)

http://i.stack.imgur.com/U2neg.png

私は知っている...

  • http://github.com/mikegogulski/bitcoin-php ..これはかなりきちんとしていて、RPC 経由でbitcoindを制御するための便利なメソッドと方法がたくさんありますが、残念ながらprivKey->pubKeyメカニズムを処理できる純粋な PHP メソッドがありません。
  • http://bitcoinphp.com/ ..そこには見つかりませんでした。
  • 残念ながら、OPENSSL-PHP ドキュメントで言及されている唯一のダイジェスト メソッドは「ecdsa-with-SHA1」です。間違っている場合は修正してください。ただし、「ecdsa-with-SHA256」または何かが必要ですそんな(?)
  • アルゴリズムをbitcoinjs.jsから変換しようとさえしましたが、私の暗号知識では要点を抽出できませんでした。私は単にそれらの曲線とそのビット操作、およびその他の不気味なものを理解していません。

PURE PHP ソリューションを探しています。bitcoind を実行しているシェルを使用してから、JSON を解析してキーペアを探しているわけではありません。

PHP でこれを完全に処理できるコードがないのはなぜですか? それともありますか?:)

0 投票する
3 に答える
6235 参照

python - paramiko の実行中に Python モジュール ecdsa エラーが発生する

paramiko モジュールをインストールしようとしています..以下のエラーで失敗します

paramiko のインストールを進める方法について何か提案はありますか?

0 投票する
1 に答える
309 参照

signing - 送信者から圧縮された y 値を回復するにはどうすればよいですか?

私は次のシナリオに取り組んでいます:

  1. 秘密鍵と公開鍵を生成する
  2. 以下を使用して圧縮された公開鍵を生成します。

    PublicKey.AccessGroupParameters().SetPointCompression(true)

  3. 一部のデータに署名し、圧縮された公開鍵で相手に送信します。

  4. 【相手側】公開鍵で署名を検証

ステップ 4 では、y 値を回復する必要があります。Crypto++ で使用できる API はありますか?