gpt4 book ai didi

asp.net - 远程站点和客户端私钥

转载 作者:行者123 更新时间:2023-12-02 05:08:24 25 4
gpt4 key购买 nike

我遇到了一些困难,因为我需要一种方法让连接到 ASP.NET MVC 站点的客户端使用其私钥对 blob 进行签名和解密,这样服务器就永远看不到私钥 Material 。在解密的情况下,这些是加密的 session key 。服务器看到 session key ,而不是用户私钥,这是可以接受的。

也就是说,我需要在浏览器中向用户展示一些内容,让一些 javascript(或 java applets,或 silverlight 等)执行与客户端上的硬件 token 通信的客户端,并将结果返回给服务器。

这不是客户端身份验证。我不需要简单地使用证书通过 IIS 进行身份验证。硬件 token 是 HID OmniKey USB 读卡器。

我对可用选项的理解是:

<强>1。 Mozilla Javascript Crypto - 这似乎是最佳路线。 Firefox 似乎向远程站点公开了各种智能卡事件和功能。我看到了如何签署文本,但没有关于解密 blob(最大目标)的内容。似乎有加载 PKCS#11 模块的方法,但文档似乎在那之后停止了。

<强>2。 Silverlight with Elevated Trust - 这是我的第二条首选路线,因为我熟悉 Silverlight 和 .NET。 Silverlight 5 具有 P/Invoke 的能力,所以我总是可以调用 PC/SC 模块,但这需要在浏览器外运行,我做不到。似乎有一些关于在具有更高信任度的浏览器中运行 Silverlight 应用程序的帖子,但这是一个全局设置,因此我不想降低其他应用程序的安全性。

<强>3。 ActiveX - ActiveX 组件可以与 PC/SC 模块交互,但这将是一个仅限 Internet Explorer 的解决方案。如果被迫选择所需的浏览器,我更喜欢 Firefox 或 Chrome。

<强>3。 Firefox/Chrome 扩展 - 我的理解是 Firefox XPCOM 是 C++,我可以直接调用 PC/SC 库,扩展可以与远程站点上的脚本/DOM 交互。我不确定远程站点如何触发 Firefox 扩展。换句话说,远程站点如何告诉扩展程序“好的,该签名了”?这条路线的一个例子是 XSign (尽管它不使用硬件 token )。

<强>4。 Java Applet - 这可能最终是唯一的方法。我找到了几个示例/指南,但我不熟悉 Java。 Java Applet for Signing with a Smart Card .在这种情况下,它只是一个可以与 token 通信并将结果发布到站点的简单小程序。

还有其他选择吗?我相信选项 (1),Mozilla Javascript Crypto 是最好的方法,但文档非常稀疏。感谢您的指导。

最佳答案

我几乎检查了所有选项。最后一个选项(Java Applet)最适合您的情况并且最容易实现。缺点是 JRE(Java 运行时环境)应该已经安装在客户端并且可以很好地与浏览器配合使用。用户还必须授予小程序在首次运行时连接到他的智能卡的权限。

顺便说一句,如果你想使用 PKCS#7,你可以使用 Bouncy CaSTLe。它在 JDK 中没有标准的 API。

PS:不要使用 JavaScript 进行加密。 Javascript Cryptography Considered Harmful .

关于asp.net - 远程站点和客户端私钥,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8539223/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com