問題タブ [digital-signature]
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.
encryption - Openssl pkeyutl はどのような形式の署名を期待していますか?
SHA-1 でハッシュし、ハッシュを RSA 秘密鍵で暗号化することによって署名されたファイルを検証しようとしています。
明らかに、RSA 公開鍵を使用して検証しています。キーは DER 形式です。
署名の検証は、Java の署名クラスを使用して正しく機能します。
私が試しているopensslコマンド(および結果)は次のとおりです。
適用される openssl 構成ファイルには何も表示されないため、警告は重要ではないと思います。
savedDigitalSignature.txt ファイルには、署名バイトが含まれています。
私の理論では、openssl は特定のファイル形式であるデジタル署名を探しているということですが、それがどうあるべきかを示すドキュメントには何も見つかりませんでした。
考え?
digital-signature - アーカイブされたデータにデジタル署名する
製造プロセスからのデータを定期的に記録するアプリケーションがあります (さまざまなサンプル レート、最小 1 秒、通常の最大は 10 分以上)。顧客は、データが変更されたかどうかを知りたがっています (所定の場所で変更された、レコードが追加された、またはレコードが削除された)。
データはバイナリ レコードとして記録されます。複数のデータ ストリームが存在する可能性があり、それぞれが独自のファイルに送信され、それぞれが独自のデータ形式を持ちます。データは1レコードずつ書き込まれており、監視用PCや工程がダウンしても製造が停止するとは限らないため、アーカイブ工程が継続する保証はありません。明らかに、実際に録音したものしか認証できませんが、録音が開始および停止する可能性があります。
そのデータを認証するためにどのような方法を使用できますか? 下位互換性を維持するために、別の「ログ」ファイルを使用してデータを検証したいのですが、それが可能かどうかはわかりません。直接的な回答を除いて、いくつかの提案を見つけるための検索用語の提案はありますか?
ありがとう!
java - Java および .NET 相互運用 (RSA) 署名
.net ベースのスマートカードでデータに署名し、その署名を Java 環境で検証しようとしていますが、成功しません。
スマートカード (c#):
クライアント (Java):
次に、(テスト用に) Java クライアントで署名を作成しようとしましたが、Java クライアントで作成された署名がスマートカードで作成されたものと異なることがわかりました。私は次のように作成しました:
これで、署名が (渡されたデータ + 使用されたアルゴリズム) のハッシュのようなものであることがわかりました。ここで実装に互換性がない可能性はありますか? 他に何か不足していますか?ありがとう!
PS: はい、入力と出力の両方がカードとの間で正しく転送されていること、主要なパラメーターが設定されていること、および入力/出力がまったく同じであることを確認しました。
編集: Javaでのキー生成:
次に、カードの秘密鍵の exp と mod を設定しています。
c# - DSACryptoServiceProvider を使用した秘密鍵の保存
DSACryptoServiceProvider クラスを C# で使用して 2 つの DLL を作成しようとしています。基本的に、私は秘密鍵と公開鍵のペアを作成し、それに応じてそれらの鍵を (ファイルに) 保存しようとしています。
ExportParameters() の使用時に問題が発生しています。(シリアル化を使用して) 個人情報を含むキーをエクスポートしようとすると、個人情報が自動的に無効になります。
キーを保管するためのより良い方法はありますか?
前もって感謝します。
pdf - PDF を署名済み PDF に追加
デジタル署名されたPDFファイルにPDFファイルを追加し、署名を有効に保つ必要があります...おそらくリビジョンを使用していますか?...iTextSharp を使用していますか? どうすればいいですか?
いくつかのサンプルで私を助けてください。
c# - BER/DER でエンコードされた ASN.1 形式を使用する C# で DSA 署名を検証する
C# で DSA 署名を検証するにはどうすればよいですか?
与えられた:
- メッセージテキスト、
- 署名付きダイジェスト (通常は ASN.1 DER 形式)、
- 公開鍵 (署名付き X.509 証明書、PEM または DER 形式)
いくつかのアプローチを試しましたが、成功しませんでした:
OpenSSL.NET :ライブラリに関するさまざまな奇妙なエラー。SourceForge で作成者と一緒に開いているスレッドを実行していますが、まだ解決できていません。
Microsoft .NET API:比較のために DER 署名を解凍できません。DSA 署名は 40 バイト (2 つの 20 バイト整数) ですが、DER でエンコードされた 2 つの整数のシーケンスとして提示されるため、合計の長さは 46 から 48 バイトの範囲になります (簡単な概要については、この投稿を参照してください)。 NET には、ASN.1/DER を解析するためのコードが含まれています (証明書を DER 形式で読み取ることができるため)。コードは深く埋もれており、アクセスする方法がないため、ASN.1/DER でエンコードされた sig から 40 バイトを正しく取得できます。 . この問題は私を次の選択肢に導きました...
BouncyCastle:関数を使用して
Org.BouncyCastle.Asn1
、ASN.1 署名を解析し、それをコンポーネントの R および S 整数値に取り込むことができます。しかし、これらを署名検証ルーチンに渡すと、説明がなく失敗します。C# API は完全に文書化されておらず、Java のバージョンはほとんど文書化されていないため、私が何か間違ったことをしているのかどうかはわかりません (しかし、私が見つけることができる例や HOWTO 情報はありません)。
私は約1週間、この問題に身を投じてきました。誰かが以前にそれをやったに違いないことは知っていますが、完全な/実用的な例は見つかりませんでした.
ここには 3 つの C# プロジェクトがあり、それぞれ 95% 完了していますが、失敗の原因となる重大な欠陥が 1 つあります。動作するサンプルコードは非常に高く評価されます。
編集:これは、私が検証しようとしている署名の例で、Base64 と ASCII 16 進数に変換して投稿可能にしています。この特定のものは 47 バイトですが、適切なパーサーはそれを受け入れる必要があります。詳細については、DER 仕様を参照してください (BER/DER は、MSB が 1 の場合に符号を確認するために先頭に 00 を追加します)。
構造は DER 仕様に準拠しています。次のように解析します。
独自の DER パーサーを作成することは実際にはオプションではありません。エラーの余地が多すぎるため、これを適切に行う方法が必要です。
java - 署名されたjarにタイムスタンプが含まれているかどうかを検証するにはどうすればよいですか?
jarに署名し、-tsaオプションを使用した後、タイムスタンプが含まれていることを検証するにはどうすればよいですか?私は試した:
ただし、出力にはタイムスタンプに関する情報は何も指定されていません。-tsa URLパスにタイプミスがあっても、jarsignerは成功するので質問しています。これはGlobalSignTSAURLです:http://timestamp.globalsign.com/scripts/timstamp.dllとその背後にあるサーバーは、明らかに任意のパス(つまり、timestamp.globalsign.com / foobar)を受け入れるので、最終的には私の瓶にタイムスタンプが付いているかどうかはよくわかりません。
python - 特定のパディング技術を使用してM2CryptoでPythonでドキュメントに署名する方法は?
.pemファイルに保存されている秘密鍵を使用してPythonでテキストにデジタル署名する必要があります。最近はM2Cryptoが好ましい方法のようですので、それを使用しています。私はそれのほとんどを手に入れていると思いますが、パディングを構成する方法について混乱しています。具体的には、次のkSecPaddingPKCS1SHA1
ように呼び出されて説明されるパディングスキームを使用して、iPhoneアプリの署名を確認する必要があります。
署名されるデータはSHA1ハッシュです。標準のASN.1パディング、および基になるRSA操作のPKCS1パディングが実行されます。
暗号の専門家ではないので、私はこれが何を意味するのか曖昧な考えしか持っていません。私はRFCのいくつかを調べようとしましたが、それらは侵入できないことがわかりました。RSAオブジェクトの暗号化/復号化メソッドはパディングタイプを使用しているようですが、署名の検証に関連する同様の方法は見当たりません。
特にコードに関して、どんな助けでもありがたいです。
(ある意味で、これはこの質問の逆です。)
わかりました、以下の答えは正しいAFAICTです。次のコードは、パディングスキームtext
を使用してiPhoneで検証するための署名を生成します。kSecPaddingPKCS1SHA1
(編集して申し訳ありませんが、暗号ハッカーは宇宙で最もお粗末なドキュメンテーションライターの一部であると言えますか?)
winapi - ファイルにデジタル署名属性があることを知る方法
ファイルにデジタル署名属性があることを知るためのWindowsAPIはありますか?
java - カスタム JCE セキュリティ プロバイダに署名する方法
Sun の PKCS11 JCE セキュリティ プロバイダには、必要な機能がいくつか欠けています。
そこで、元のソースを使用して拡張バージョンを作成しました。
残念ながら、JCE インフラストラクチャは、
適切に署名されていないため
、「JCE がプロバイダーを認証できません」という新しいプロバイダーを拒否します。
javax.crypto.JceSecurity.verifyProviderJar(...)
投げます。
(それは を呼び出しますjavax.crypto.JarVerifier.verify()
)
新しいプロバイダーに署名して JCE で動作させる方法について何か提案はありますか?