在网络应用程序中对数据进行数字签名

2024-03-23

我有一个 Web 应用程序,其中一些数据(不是文件)需要使用 PKI 私钥进行数字签名。 PKI 证书和私钥将位于 USB 加密令牌中,当插入 USB 插槽时,该加密令牌会向浏览器注册证书。这减轻了使用证书进行身份验证的痛苦,因为我是通过在应用程序中触发 ssl 重新协商来实现这一点的。

然而,使用证书进行数字签名似乎有点棘手。我可以想到几种方法来做到这一点

  1. 卡皮康 -http://en.wikipedia.org/wiki/CAPICOM http://en.wikipedia.org/wiki/CAPICOM这适用于支持 CAPICOM 的浏览器(例如 IE)。然而微软似乎已经停止了这一点。

  2. Mozilla 加密对象 -https://developer.mozilla.org/en-US/docs/JavaScript_crypto https://developer.mozilla.org/en-US/docs/JavaScript_crypto

  3. WebCrypto API - 大多数浏览器尚不支持。

  4. 自定义 Java Applet 或一些开源的免费 Java Applet 控件。

  5. 还有其他选择吗?

我试图找出在网络应用程序中执行此操作的常见、方便且安全的方法是什么。

Note:

  1. 我只支持流行的浏览器就可以了。
  2. 我正在签署一小段数据 - 比如说 100-200 字节而不是文件。
  3. 我更喜欢 PKCS#7 签名。

[披露:我为 CoSign 工作。]

您遇到的问题是旧式 PKI 系统中常见的问题,该系统将签名者的私钥存储在边界处(例如,在智能卡、令牌等中)。该系统是在 PC(及其上运行的应用程序)成为焦点时设计的。但本世纪情况并非如此。现在浏览器或移动设备都是焦点。

Web 应用程序的性质(它们要么在主机上运行,​​要么是浏览器上的沙箱 JavaScript)与“保护”私钥的本地硬件的概念之间存在着紧张关系。

突破浏览器的沙箱

一种设计方向是尝试突破浏览器的沙箱来访问本地硬件私钥存储。您列出了许多选项。另外一个是Chrome USB 访问库 http://developer.chrome.com/apps/usb.html。但所有这些解决方案都是:

  • 仅限于特定浏览器
  • 安装困难(且昂贵)
  • 维护困难(且昂贵)
  • 高水平的管理开销来帮助用户解决有关保持系统正常运行的问题。

关于您的问题 5“还有其他选择吗?”

是:集中签名

更好的选择(恕我直言)是集中签名。这样,密钥就保存在集中式 FIPS 安全服务器中。同时,签名者只需使用网络应用程序来授权签名。签名者不需要持有私钥,因为它存储在安全服务器中。

要对签名者进行身份验证,您可以使用应用程序所需的任何安全级别:用户名/密码;一次性密码;通过短信进行两因素身份验证; ETC。

The 联合签名 API http://www.arx.com/digital-signatures/sapi and CoSign 签名网络代理 http://www.arx.com/digital-signatures/cswa都是为此而设计的。其他供应商也提供集中式 PKI 签名。

添加以回复评论

从你的答案的第二部分开始 - 如果证书存储在服务器中并通过使用 uname/pwd 或 2FA 对用户进行身份验证来检索,那么为什么要进行数字签名呢?即,与仅使用 uname/pwd 或 2FA 验证交易相比,它有什么优势?

A:在中心化设计中,私钥的作用是not离开中央服务器。相反,将要签名的文档或数据发送到服务器并进行签名,然后将签名的文档或数据(例如 XML)返回到 Web 应用程序。

回复:为什么要这样做?因为经过数字签名的文档或数据集(例如 XML)可以verified保证文档自签名后没有被更改,并提供信任链来保证签名者的身份。相比之下,即使通过 2FA 等加强密码,密码也只能提供app具有签名者身份保证,而不是第三方。

PKI 数字签名使第三方通过验证过程确保签名者的身份。并且可以根据需要通过选择不同的 CA 来设置保证的强度。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在网络应用程序中对数据进行数字签名 的相关文章

  • 安全灵活的跨域会话

    我有一个问题希望你能帮忙解决 假设我在一家名为 Blammo 的假设公司工作 我们有一个名为 Log 的假设产品 我正在尝试建立一个系统 人们可以登录 logfromblammo com 并订购我们的一些产品 然后当他们准备好购买时 前往
  • 允许用户将自己的 JavaScript 添加到您的网站是否存在安全问题?

    我计划创建一个开源教育网络应用程序 人们可以在其中添加和编辑内容 有点像维基百科 不过 我希望添加另一个功能 允许用户使用 JavaScript 添加自己的交互式内容 类似于 JSFiddle 的做法 这样做有哪些安全问题 可选问题 如何克
  • 是否可以将密码以纯文本形式存储在 php 变量或 php 常量中?

    根据问题 在 php 页面上存储密码是否安全 例如 password pa w0rd 如果用户看不到它 那就安全了 对吗 编辑 确实有人建议使用hash 但是数据库服务器连接密码会有问题不是吗 简短的回答是否定的 而且要看情况 以纯文本形式
  • 使用 KMS 的 AWS RDS 加密是否会影响性能?

    Amazon states https aws amazon com about aws whats new 2015 01 06 amazon rds encryption with kms mysql postgresql that 加
  • 从 .NET Core 1.1.1 升级到 .NET Core 1.1.2 后,Azure 上的 ASP.NET Core 网站无法启动并出现 502.5 错误

    我有一个 NET Core Web 应用程序 我将其部署为 Azure Web 应用程序 直到昨晚我应用 Visual Studio 2017 升级 v15 2 为止 这一直工作得很好 net core版本从1 1 1升级到1 1 2 当我
  • 保护客户端 API 的安全

    我正在为基于 JavaScript 的游戏构建服务器端 API 和客户端库 其中必须确保两个非常重要的功能的安全 用户每次游玩都必须扣款 我们必须确保提交的分数是玩家实际获得的分数 解决第一个问题看起来很简单 在每次游戏开始时 我们都会调用
  • Java Keystore 是否存在性能问题? [复制]

    这个问题在这里已经有答案了 我们开发了一个应用程序来加密 解密来自服务器的请求 响应 我们正在做性能测试 加密 解密应用程序 我们观察到加密 解密过程需要时间 而许多线程 正在同时做 为了识别问题 我们记录了加密 解密过程中的所有方法 从记
  • 尝试利用?

    我看到我的 nopCommerce 网站记录了以下搜索 ADw script AD4 alert 202 ADw script AD4 我有点好奇他们想要完成什么 我搜索了一下 似乎是ADw script AD4 以 UTF7 编码为
  • 网站性能衡量

    我需要一个免费的工具来测量网站的性能 并且不需要对代码 jsp asp 页面 进行任何更改 感谢所有帮助 对于绩效衡量 我建议您YSlow http developer yahoo com yslow 它是一个 Firefox 插件 集成了
  • 不需要 UserProvider 的自定义身份验证

    我在网上寻找适合我的配置的解决方案 但找不到满足我需求的东西 到目前为止 我已经为此工作了整整三天 但我无法使其正常工作 我确信有几件事我不明白 我正在分支 2 1 上开发我的 symfony 应用程序 为了让这个简短 我有一个网络服务 我
  • 企业 Web 应用程序中的 JavaFX - 经典网页的良好替代方案?

    我们为不同的客户开发了多种 Web 应用程序 从为那些可怜的管理员提供的简单 看起来很无聊的 CRUD 风格的 GUI 到为那些互联网用户提供的奇特的 AJAX 增强型 GUI 所有这些都基于 JSF 1 2 与 JBoss Seam 2
  • 数字签名的值错误

    我正在尝试为文本块创建数字签名 虽然我似乎能够创建签名 但它与我们的测试用例所需的数字测试签名不同 我正在使用的代码如下 X509Store store new X509Store StoreName My StoreLocation Cu
  • 如何加密然后解密数据库类文件中使用的用户名和密码文本

    我创建了一个类文件database php 它处理所有sql 查询并连接到数据库 我将数据库的用户名和密码存储在一个变量中 如果可以访问 php 文件 很容易看到 我想加密该用户名和密码 这样即使在拥有该 php 文件之后 人们也无法知道原
  • 如何在 Jboss 7.1 中配置简单身份验证

    我正在从事由以下人员编写的项目纯jsps 脚本 不使用任何框架 jboss版本 jboss as 7 1 0 Final 我现在正在尝试在其上添加简单的身份验证 因此 当用户尝试浏览 jsp 时 比如说 http localhost myC
  • antisamy 解析器强制关闭标签

    我使用 Antisamy 来验证 HTML 我的政策允许 iframe 例如 YouTube 视频 问题是 如果标签为空 像这样 清洗后会是这样的 但它应该有正常的结束标签 这会破坏之后页面上的所有内容 我已经将指令设置为使用大部分 HTM
  • 使用链接进行电子邮件验证是一个坏主意

    在我的注册过程中 用户注册后 他们会收到通过电子邮件发送的验证链接 如果他们单击该链接 那么他们的帐户才会得到验证 但这种验证方法对于机器人来说是不是太容易了 我认为电子邮件可以由机器人创建 但可以肯定的是 如果验证只是单击链接 那么它也可
  • 具有桌面应用程序安全性的 OAuth2

    我有一个 Electron 应用程序 它基本上是一个 Google Drive 客户端 我打算使用 OAuth 2 但是 Google API 要求我在生成 client secret 的地方注册我的应用程序 由于这是一个桌面应用程序 因此
  • Bash 中的 Shellshock 漏洞背后的行为是有记录的还是有意为之?

    最近的一个漏洞 CVE 2014 6271 http web nvd nist gov view vuln detail vulnId CVE 2014 6271 如何Bash http en wikipedia org wiki Bash
  • (Java) 在 Mac OS X 上以编程方式访问“系统根目录”下的 SSL 证书

    我正在编写一个 Java 应用程序 它可以通过远程 Https 站点进行 REST Api 调用 远程站点由受信任的证书签名 它在 Windows 上运行良好 但由于 SSL 证书问题 在 OS X 上运行时遇到问题 我做了一些挖掘 发现原
  • 上传的白名单或黑名单文件扩展名?

    我正在制作一个新闻通讯编辑器 它将允许文件上传 新闻通讯的发件人可以将文件上传到将在电子邮件中链接到的服务器 该站点的设置使得只有 do URI 实际由 servlet 执行 处理 因此不会有太大的安全风险 但有人告诉我将 jsp php

随机推荐

  • 带参数的累积正态分布函数的反函数

    我想在 C 中实现与 matlab icdf 函数等效的功能 我已经找到了这篇有用的文章 https www johndcook com blog cpp phi inverse https www johndcook com blog c
  • Pyspark AWS 凭证

    我正在尝试运行一个 PySpark 脚本 当我在本地计算机上运行它时 它可以正常工作 问题是我想从 S3 获取输入文件 无论我如何尝试 我似乎都无法找到设置 ID 和秘密的位置 我找到了一些有关特定文件的答案 前任 通过 Spark 或更好
  • 如何在 F# 中编写枚举而不显式分配数字文字?

    我在 F 中有一个枚举 如下所示 type Creature SmallCreature 0 MediumCreature 1 GiantCreature 2 HumongousCreature 3 CreatureOfNondescrip
  • 在 R 中将文本框保存为 pdf

    我正在尝试在 R 中创建项目符号类型列表 并希望将其保存为 pdf 格式 这成功地在窗口上打印了项目符号列表 a paste0 Starting portfolio value prettyNum 1000000 big mark scie
  • JPQL (JPA) 如果列表有交集则查找对象

    我有两个类 每个类都有一个标签列表 现在我想找到每一个对象ClassA包含列表中的任何项目ClassB 这可以用 JPQL 实现吗 或者使用单个查询 public class ClassA private List
  • 在 Qt 中解析 HTML 的最佳方法?

    在 Qt 中 我将如何解析充满 BAD html 的页面上的所有 a html 标签 href 属性 我会使用内置的 QtWebKit 不知道它的性能如何 但我认为它应该捕获所有 坏 HTML 就像是 class MyPageLoader
  • Unity:编辑器模式不支持 VRDevice 纸板。请在目标设备上运行

    卡板测试时存在屏幕无法分割的问题 我使用的 goolge sdk 版本为 unity 1 6 和 Unity 5 6 2f1 在模拟器 unity游戏场景 中 游戏场景在玩时不会分裂 控制台显示 编辑器模式不支持 VRDevice card
  • 如何动态加载和使用/调用 JavaScript 文件?

    我需要动态加载 JavaScript 文件 然后访问其内容 File test js test function var pub pub defult id 1 return pub 在这种情况下它有效 但我需要动态加载
  • 如何从 C# 连接到正在运行的 Outlook 实例 [重复]

    这个问题在这里已经有答案了 在VBA中 我通常使用appOutlook GetObject Outlook Application 获取正在运行的 Outlook 实例 如果 Outlook 未运行 则会引发错误 我通常在 Excel 中执
  • Android中的卡片翻转动画[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 I have tired to make a flip card in android Please make an image vi
  • 如何为 Owl Carousel 2 可见项目中的第一个和最后一个项目添加类?

    我需要向 Owl Carousel 2 上当前可见项目的第一个和最后一个项目添加一个类 DEMO http plnkr co edit t9URfKq9Mwh9jO705h7u p preview http plnkr co edit t9
  • 如何使用 16 或 24 列的 bootstrap

    我需要一些帮助将 bootstrap 2 0 4 设置为 16 或 24 列 而不是默认的 12 列 我无法理解我做错了什么我尝试了 bootstrap 站点上的自定义选项 并尝试更改变量中的网格变量 less 文件并使用 Crunch 重
  • 硒批判

    我只是想听听运行 Selenium 的人的一些意见 http selenium openqa org http selenium openqa org 我对 WaTiN 有很多经验 甚至还为它写了一个录音套件 我让它生成了一些结构良好的代码
  • 寻找 Lua 4.1 alpha

    我正在帮助为一款相当老的游戏 孤岛惊魂 开发多人模式 我想编译lua代码 但游戏使用版本4 1 alpha 我在任何地方都找不到 lua 4 1 alpha tar gz http www lua org work old lua 4 1
  • 适用于 Windows 的 Docker.io [已关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在读一个关于 docker 的好问题 答案概述了docker 实现细节 https stackoverflow com questio
  • ReSharper 忽略 TODO 资源管理器上的某些文件夹

    我在我的解决方案中使用 SignalR 他们的 Nuget 包引入了 java 脚本 没关系 但问题是 那里有待办事项 现在显示在我的待办事项列表下 因此 当 ReSharper 扫描 TODO 时 我想忽略特定文件夹或文件 我尝试从 代码
  • Attribute.IsDefined 看不到应用于 MetadataType 类的属性

    如果我通过以下方式将属性应用于分部类元数据类型属性 http msdn microsoft com en us library system componentmodel dataannotations metadatatypeattrib
  • Android 中失败 [INSTALL_FAILED_USER_RESTRICTED:无效的 apk]

    我使用的是Android Studio 3 0 1 当我尝试运行应用程序时 INSTALL FAILED USER RESTRICTED 无效的 apk 发生错误 我还禁用了即时运行 我再次运行应用程序 但出现同样的错误 04 04 10
  • Java 调用 GCC 编译的 C 库可以工作,但使用 G++ 编译时会失败

    我尝试调用这个最小的 C 代码 文件TEST c void Java TEST run 从这个Java代码 文件Example java public class Example public static void main String
  • 在网络应用程序中对数据进行数字签名

    我有一个 Web 应用程序 其中一些数据 不是文件 需要使用 PKI 私钥进行数字签名 PKI 证书和私钥将位于 USB 加密令牌中 当插入 USB 插槽时 该加密令牌会向浏览器注册证书 这减轻了使用证书进行身份验证的痛苦 因为我是通过在应