首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用.NET Fat客户端实现智能卡身份验证?

如何使用.NET Fat客户端实现智能卡身份验证?
EN

Software Engineering用户
提问于 2012-02-19 19:03:10
回答 2查看 3.1K关注 0票数 5

一般来说,我对智能卡的认证知之甚少,所以如果下面的内容没有意义的话,请指出或纠正我。

让我说:

  • 证书颁发机构"X"-s智能卡(不可出口私钥)
  • 用C写的智能卡的驱动程序
  • 智能卡读卡器
  • CA-s认证OCSP web服务
  • 在.NET胖客户端应用程序中通过智能卡实现用户身份验证的要求,CA "X“给出了这种要求。

我试着在网上搜索信息,但没有占上风。台阶会是什么?我的第一个想法是:

设置一个web服务,这将允许为每个用户保存(例如)乒乓球游戏的分数。每当有人试图通过客户端应用程序提交分数时,他只能将智能卡插入读取器。

然后,本机c调用通过.NET从智能卡读取公钥并发送到我的自定义web服务,该服务使用CA-s身份验证OCSP web服务来证明公钥/公钥证书(?)的有效性。如果公钥是安全有效的,则使用公钥加密随机字节序列,并将其发送到客户端应用程序。如果客户端应用程序将正确解密的随机字节序列与乒乓球游戏的分数一起发回,则将该分数保存在数据库中供给定用户使用。

我的问题是,这样做对吗?关于智能卡认证,我还应该知道些什么?

EN

回答 2

Software Engineering用户

发布于 2012-02-20 09:50:41

这听起来太复杂了,而且方向完全错误。

首先,“在.NET客户端应用程序中实现用户身份验证的要求”。.Net应用程序在用户会话中运行,这意味着用户身份验证已经发生。太晚了。

但是智能卡登录已经被支持了。这是由SCardSvr.exe (智能卡服务)与WinLogon一起完成的。作为一种服务,它并不局限于这种方式。但显然,WinLogon不会以这种方式与您的服务合作。那就不太安全了

正确的解决方案是实现“智能卡加密服务提供商”(CSP)。这是一个非常重要的解决方案,如果您遇到了像您这样的不可能的需求。

票数 0
EN

Software Engineering用户

发布于 2012-04-12 22:02:53

如果您想自己进行身份验证,而不是信任操作系统,是的,您是在正确的轨道上。

在os级别使用智能卡的AFAIK需要域身份验证。如果不是,您的所有用户都使用域,则必须进行身份验证。(例:因特网用户)

更实用的方法是;

  • 客户端得到分数的散列(sha1,sha2等)
  • 客户端加密哈希(实际上称为签名)
  • 客户端将签名+用户的公共证书发送到web服务
  • 服务器验证用户证书(ocsp)
  • 服务器得到分数的散列(再次)
  • 服务器解密发送散列
  • 服务器比较计算出的散列和发送的散列(验证签名)

这种方式更少的聊天和更少的数据传输。

您可以使用.net API计算散列,也可以自己使用智能卡,但是智能车通常比较慢,如果安全性不太严格,我建议使用.net API。

票数 0
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/135841

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档