Web applications 对流程进行数字签名的策略?

Web applications 对流程进行数字签名的策略?,web-applications,digital-signature,digital-certificate,Web Applications,Digital Signature,Digital Certificate,我正在开发一个web应用程序,我想对流程中的某个步骤进行数字签名 也就是说,应用程序的用户执行某个操作,我希望该事件被数字签名 用户在发出数字签名操作时应使用和usb令牌 我想知道你推荐哪种方法来做这样的事情 例如: 签署数据库记录(如何完成它?)(缺点:我想你必须用应用程序本身验证它) 创建说明事件和用户的pdf,并对pdf进行数字签名(pro:pdf独立于应用程序) 创建、签名和xml文档(如何完成?数字签名存储在哪里?) 还有别的吗 萨卢多斯 sas在开始考虑实现之前,您应该先阅读并理解一

我正在开发一个web应用程序,我想对流程中的某个步骤进行数字签名

也就是说,应用程序的用户执行某个操作,我希望该事件被数字签名

用户在发出数字签名操作时应使用和usb令牌

我想知道你推荐哪种方法来做这样的事情

例如:

签署数据库记录(如何完成它?)(缺点:我想你必须用应用程序本身验证它)

创建说明事件和用户的pdf,并对pdf进行数字签名(pro:pdf独立于应用程序)

创建、签名和xml文档(如何完成?数字签名存储在哪里?)

还有别的吗

萨卢多斯

sas

在开始考虑实现之前,您应该先阅读并理解一些好东西


根据你的问题的程度,你甚至还不知道如何提出正确的问题,你这方面最微不足道的误解和整个安全系统的崩溃。你可能想考虑保护一个专家的服务,因为这样做99.9%的权利是徒劳的。

在你的情况下,每个用户都将拥有它的公钥和私钥。用户将使用其私钥对数据库记录(字符串等)、pdf或xml文档进行签名

您将获得签名的数据库记录(签名字符串等)、签名的pdf或xml文档

现在将已签名的数据库记录作为二进制记录存储在数据库中。 将签名的pdf或xml作为普通文档存储在存储位置。您可能需要在数据库中添加一个字段,以便将此文件集成到应用程序中

对于要进行签名的库,您可以使用AES,这里是各种语言的实现库:


无论如何,我不确定任何关心安全性的用户是否会将其私钥提供给您的应用程序进行签名。人们通常使用受信任的应用程序在分发前签名。

我目前正在从事一个项目,该项目的要求与您在问题中列出的要求几乎相同

我们正在使用USB设备生成签名。该设备来自一家名为的公司,它非常安全,符合许多安全标准。该设备具有硬件生成的密钥对,可用于签名和验证

当用户使用我们的应用程序提交数据时,我们将数据封装到xml文档中,然后使用sha256生成哈希,最后通过pkcs11使用设备对哈希进行签名。然后,签名和数据存储在客户机数据库中,然后提交到我们的服务器,在那里我们可以使用来自用户令牌(在令牌发出时存储在我们的服务器数据库中)的公钥执行验证

这不是使用web应用程序执行的,因为需要执行令牌的客户端访问


希望这有帮助,我已经错过了很多细节,如果你有任何其他问题让我知道

您可以使用浏览器扩展对“UserId | Action | TimeStamp”进行数字签名并发送到服务器执行,服务器可以使用已注册的公钥验证签名。(作为注册过程的一部分,您可能需要注册用户的公钥)。浏览器扩展支持使用USB令牌或智能卡进行数字签名

您可以在帖子中参考JavaScript:


这有两种方法来注册证书和签名令牌或任何字符串。

非常感谢您的回复,我们知道签名过程很难通过web应用程序实现。如果我理解正确,最终用户无法通过自己的方式执行验证,他们必须依赖您的应用程序。您是否考虑过生成pdf并对其进行数字签名?这样(如果我理解正确的话)任何拥有pdf的人都可以检查签名…@opensas:我们的数据,包括签名,作为xml文档存储在本地客户端数据库中,与pdf文档无关。我们的应用程序还可以从客户端数据生成pdf文档,这不是经过签名的,我们一直在使用iTextSharp生成pdf文档,可以使用Bouncy Castle API以编程方式对其进行签名。