2

Web アプリケーションを開発しており、プロセスの特定のステップにデジタル署名したいと考えています。

つまり、アプリのユーザーが特定のアクションを実行し、そのイベントをデジタル署名したいと考えています。

ユーザーは、アクションを発行してデジタル署名するときに USB トークンを使用する必要があります。

そのようなことを行うためにどのアプローチをお勧めしますか知りたいです。

例えば:

データベース レコードに署名します (どのように達成しますか?) (短所: アプリケーション自体で検証する必要があると思います)

イベントとユーザーを示すPDFを作成し、PDFにデジタル署名します(プロ:PDFはアプリケーションから独立しています)

ドキュメントを作成して署名し、XML を作成します (どのように作成しますか? デジタル署名はどこに保存されますか?)

他の???

サルドス

サス

4

4 に答える 4

2

私は現在、あなたが質問に挙げたものとほぼ同じ要件を持つプロジェクトに取り組んでいます。

USBデバイスを使用して署名を生成しています。このデバイスはIronKeyという会社のもので、非常に安全で、多くのセキュリティ基準を満たしています。デバイスには、署名と検証に使用できるハードウェアで生成されたキーペアがあります。

ユーザーがアプリケーションを使用してデータを送信すると、データをxmlドキュメントにカプセル化し、次にsha256を使用してハッシュを生成し、最後にpkcs11を介してデバイスを使用してハッシュに署名します。次に、署名とデータはクライアントデータベースに保存され、後でサーバーに送信されます。サーバーでは、ユーザートークン(トークンの発行時にサーバーデータベースに保存されている)の公開鍵を使用して検証を実行できます。

トークンのクライアント側アクセスを実行する必要があるため、これはWebアプリケーションを使用して実行されません。

これがお役に立てば幸いです。他にご不明な点がございましたら、詳細をお伝えしていません。

于 2010-07-16T02:11:59.637 に答える
1

ブラウザ拡張機能を使用して、「UserId|Action|TimeStamp」にデジタル署名し、サーバーに送信して実行することができます。サーバーは、既に登録されている公開鍵で署名を検証できます。(登録プロセスの一環として、ユーザーの公開鍵を登録する必要がある場合があります)。ブラウザ拡張機能は、USB トークンまたはスマート カードを使用したデジタル署名をサポートしています。

投稿で JavaScript を参照できます: https://stackoverflow.com/a/55757349/9659885

これには、証明書を登録し、トークンまたは任意の文字列に署名する両方の方法がありました。

于 2019-05-24T12:02:29.770 に答える
1

あなたの場合、各ユーザーは公開鍵と秘密鍵を持っています。ユーザーは、自分の秘密鍵を使用して、データベース レコード (文字列など)、pdf または xml ドキュメントに署名します。

署名されたデータベース レコード (署名された文字列など)、署名された pdf または xml ドキュメントを取得します。

署名されたデータベース レコードをバイナリ レコードとしてデータベースに保存します。署名済みの pdf または xml を通常のドキュメントとして保存場所に保存します。そしておそらく、このファイルをアプリケーションに統合するには、データベースにフィールドを追加する必要があります。

ライブラリで署名を行うには、AES を使用できます。ここでは、さまざまな言語の実装済みライブラリを使用します: http://en.wikipedia.org/wiki/AES_implementations

とにかく、セキュリティを懸念しているユーザーが、アプリケーションに署名用の秘密鍵を与えるかどうかはわかりません。人々は通常、信頼できるアプリケーションを使用して、何かを渡す前に署名します。

于 2010-07-16T01:55:13.640 に答える
0

実装について考え始める前に読んで理解しておくべき、公開鍵暗号の優れた入門書があります。

あなたの質問のレベルに基づいて、あなたはまだ正しい質問をすることさえ十分に知りません.あなたの側の最も些細な誤解とセキュリティシステム全体が崩壊します. 99.9% 正しく行うことは無駄な労力であるため、専門家のサービスを確保することを検討することをお勧めします。

于 2010-07-16T01:47:50.183 に答える