問題タブ [trusted-timestamp]
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.
pdf - PDF 署名にタイムスタンプを含める手順
良い一日、
署名がタイムスタンプであることがアドビから報告されるように、タイムスタンプ情報を PDF 署名に埋め込もうとしています。現在、私が達成したのは、アドビが「署名には埋め込まれたタイムスタンプが含まれていますが、検証できませんでした」と報告し、日付/時刻のプロパティを表示すると、「タイムスタンプ機関」が利用できず、「ショー証明書」はグレー表示されています。
明らかに、私は PKCS#7 メッセージを作成する際に何か間違ったことをしています。しかし、私は今何を知りません。署名にタイムスタンプを付けるために必要な手順を説明して、誰か助けてくれませんか? または、問題を見つけるのに役立つツールを提案してください。
Crypto API を使用しています。私が現在従う手順は次のとおりです。
- CryptHashMessage関数 (SHA256)を使用して、pdf データのダイジェストを作成します。
- CryptRetrieveTimeStamp関数を使用して、このダイジェストを TSA に送信します。*TIMESTAMP_DONT_HASH_DATA* フラグを設定して、ダイジェストが再度ハッシュされないようにしました。
- TSA からの応答は *CRYPT_SIGN_MESSAGE_PARA* 構造に非認証属性として追加され、署名時刻は認証済み属性として追加されます。
- 次に、CryptSignMessage関数を使用して、上記の構造を使用する元のデータに署名します。
Adobe が署名にタイムスタンプが付けられていることを示すことができるように、データが正しいことを確認するにはどうすればよいですか?
よろしく、マグダ
digital-signature - RFC 3161 の信頼できるタイムスタンプを確認する
ビルド プロセスに、RFC-3161 準拠の TSA からのタイムスタンプを含めたいと考えています。実行時に、コードはこのタイムスタンプを検証しますが、できればサードパーティ ライブラリの支援は必要ありません。(これは .NET アプリケーションなので、標準のハッシュおよび非対称暗号化機能を自由に使用できます。)
ASN.1 や X.690 などに依存する RFC 3161 の実装は簡単ではありません。そのため、少なくとも今のところ、Bouncy Castle を使用して TimeStampReq (要求) を生成し、TimeStampResp (応答) を解析しています。応答を検証する方法がよくわかりません。
これまでのところ、署名自体、公開証明書、タイムスタンプが作成された時刻、および送信したメッセージ インプリント ダイジェストと nonce (ビルド時の検証用) を抽出する方法を理解しました。私が理解できないのは、このデータをまとめて、ハッシュされ署名されたデータを生成する方法です。
これが私がやっていることと私がやろうとしていることの大まかな考えです。これはテスト コードなので、いくつかのショートカットを使用しています。うまくいくものを手に入れたら、いくつかのことを片付けて、正しい方法で行う必要があります。
ビルド時のタイムスタンプ生成:
実行時のタイムスタンプ検証 (クライアント サイト):
ご想像のとおり、私が行き詰っていると思うのはMagicallyCombineThisStuff
関数です。
pdf - iText を使用したオフライン PDF タイムスタンプ
iText またはその他のコンポーネントを使用して PDF ドキュメントをオフラインでタイムスタンプすることは可能ですか?
iText と TSAClient クラスを利用した標準的なソリューションをグーグルで検索しましたが、オンライン サービスとして TSA が必要です。タイムスタンプ署名を作成することを目的とした TSA からの証明書 (秘密鍵を含む) がありますが、iText でそれを行う技術的な方法が見つかりません。
ご指導ありがとうございます。リッチモンド
java - Java のタイムスタンプ付きデジタル署名
信頼できるタイムスタンプを使用して、Bouncy Castle で有効な CMS 署名を作成する際に問題があります。署名の作成はうまく機能し (署名を PDF ファイルに含めたい)、署名は有効です。しかし、信頼できるタイムスタンプを署名の unsigned 属性テーブルに含めた後も、署名は引き続き有効ですが、リーダーはThe signature includes an embedded timestamp but it is invalid と報告します。これにより、ハッシュIタイムスタンプは正しいものではないと信じるようになりますが、何が問題なのかわかりません。
署名コード:
createTSToken
コード:
timestampData
:
ご協力いただきありがとうございます!
サンプル ファイル:
LTV 付きの署名済み PDF - 編集済み
java - 署名とタイムスタンプを同時に作成 VS 署名とタイムスタンプを後で作成
EU デジタル署名指令に準拠する必要があるデジタル署名モジュールを構築しています。
私は古いがうまく機能しているJavaモジュールから始めて、CAdES
フォーマットでドキュメントに署名しています。また、アプリケーションは、クライアント (デスクトップ JAR 実行可能ファイル) とサーバー部分によって作成されます。クライアントは、USB リーダーに接続されたスマート カードとやり取りするためだけに開発されており、残りは Web サーバー上で行われます。
現在の署名クライアントは、ファイルに署名してタイムスタンプを付ける 2 つの方法をサポートしています。「署名とタイムスタンプ」機能を使用するか、最初にドキュメントに署名してからタイムスタンプを付けることができます。
法的観点からは、どちらも同じ結果になります。
私の質問は次のとおりです。技術的な観点から、CAdES (RFC 5126、140 ページ、すべてを読み取ることができませんでした) を使用してドキュメントに署名すると、出力ファイルは同じであると述べるのは正しいですか?「サインとタイムスタンプ」機能を組み合わせて使用するか、2 つの機能を順番に使用しますか?
言い換えると、標準によれば、デジタル署名とタイムスタンプの両方を表すエンクロージャを持つことはできないのでしょうか? 標準では、署名された文書にタイムスタンプを付ける必要がありますか? またはその逆ですか?
私が達成したいのは、クライアント側で(スマートカードを使用して)ドキュメントに署名し、サーバーでファイルにタイムスタンプを付け(古いクライアントコードに触れることなく)、クライアントでファイルに署名してタイムスタンプを付けている場合とまったく同じ結果を生成することです。
android - デジタル署名にタイムスタンプを実装する方法
以下は、署名の生成に関する私のコードのスニペットです。
署名は正常に機能しますが、現在、署名が場合によっては 30 日後に期限切れになるタイムスタンプ機能を実装したいと考えています。ただし、タイムスタンプを扱った経験がなく、十分に説明されている例やチュートリアルも見つかりませんでした。したがって、開始方法のリンク/説明/チュートリアルをお願いしたいと思います! 可能であれば、私が使用できるコードのスニペット! 前もって感謝します!
java - クライアントで生成済みのファイル ハッシュを含むタイムスタンプ リクエスト
大きなデータ ファイルの tsa にタイムスタンプ リクエストを作成する必要があるため、javascript crypto-js を使用してクライアントでハッシュを生成しています。
問題は、後でJavaでリクエストを作成しようとしたときに発生します。どうやらメソッド TimeStampRequestGenerator.generate には byte[] パラメーターが必要なようです。例では、それはファイルのコンテンツから生成された MessageDigest オブジェクトであり、既に生成されたハッシュのみを使用する方法が見つかりません。
生成済みのファイルのハッシュだけでリクエストすることはできますか?
ありがとう