代码乱了(靳如坦的技术blog)

专注于.net,c#,Ajax、Sql Server、SmartClient等相关的开发
posts - 88, comments - 411, trackbacks - 6, articles - 0
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

        最近在很多社区都有人问到B/S下的IC卡的读写,当然要用ActiveX了,不知道有没有其他好的办法。
        但是他们都忽略了一个问题----安全性。
        B/S下的IC卡的读写需要使用ActiveX来辅助完成,ActiveX是下载到每个客户端执行的,任何个用户都可以得到该ActiveX。如果对IC卡在安全性方面要求很高,在加密数据或密码的过程中很难做到完美,原因是客户端的ActiveX需要配合脚本如js或vbs来完成,而客户端脚本通常都是透明的,目前尚未找到特别安全的基于B/S的解决方案。


       我在实际应用中用到两种方法:

       第一种:利用加密解密技术   
       流程如下:
       1.用户的浏览器发出浏览登陆网页的请求。
       2.服务器生成一个长的随机串A,并纪录A,把这个串写在网页中的activex的参数里。
       3.浏览器收到该页面, 显示,并创建 activex 实例, acrivex 实例将此字串发给刷卡机, IC卡用其内部的算法(复杂的如私钥加密)对A加密,返回串 B 到 activex实例。
       4.网页提交时, 将 activex实例 中的B读出, post给 服务器。
       5.服务器收到B后, 使用相应的算法(复杂的如公钥解密)算出 xA, 比较 A?=xA, 就知道使不是合法登陆了。
      

        第二种方法, 利用 M$的用户验证方法。
        客户机先利用IC卡登陆本地系统(M$有此项接口), 之后,利用M$身份认证机制,让 服务器检查,是不是指定的用户。


         个人认为,你用第一种会更好点。

 

Feedback

#1楼    回复  引用    

2005-09-19 15:50 by CsOver [未注册用户]
对智能卡方面的知识还很欠缺,楼主能否介绍个学习的地方.

#2楼 [楼主]   回复  引用  查看    

2005-09-19 16:11 by 代码乱了,不知道该怎么办!      
呵呵!目前这方面的资料还很欠缺啊,特别是基于B/S下的安全,目前的解决方案都不是很完善!我的email:jrt324@126.com

#3楼    回复  引用  查看    

2005-09-19 16:53 by mikespook      
呵呵,第一种方法有点像一次一密,一次一钥的验证方法~~

#4楼    回复  引用    

2005-09-19 21:09 by luguo [未注册用户]
没什么用,别人下载了你的activex不是一样的用?

#5楼 [楼主]   回复  引用  查看    

2005-09-20 08:29 by 代码乱了,不知道该怎么办!      
to luguo
用第一种方法可以杜绝别人非法使用的问题,一旦要使用ActiveX,他必须要知道我的算法!

#6楼    回复  引用  查看    

2005-09-20 13:40 by 吕震宇      
不知道你用的是基于IC的智能卡吗?我曾经使用过基于USB的智能卡,我是在服务器端对所需数据加密,通过XMLHTTP技术实现ajax(通过WebService或直接aspx返回XML),从XML中解析出加密字串,在客户端由JavaScript调用ActiveX功能实现智能卡解密,然后用DHTML技术动态显示出来。只是速度比较慢。

也可以自己创建ActiveX实现对称密钥加密、解密,而利用XMLhttp实现密钥的加密传递以及利用智能卡解析密钥,这样速度会更快一些。

不过普遍存在的问题就是绑定在了IE浏览器上面。

#7楼 [楼主]   回复  引用  查看    

2005-09-20 13:50 by 代码乱了,不知道该怎么办!      
to 吕震宇
我用的是基于IC的智能卡,目前我用另一种比较有趣的方法,看用或效果怎么样,但是基本原理都是我所说的第一种方法!

我也考虑到用Ajax技术,但是还有很多东西没有搞定,接触Ajax也不太多,可能以后要改进吧!

#8楼    回复  引用  查看    

2006-12-23 11:08 by KeithDan      
我曾经做过影片加密,其中指定1个密钥服务器,当需要解密的时候从密钥服务器取得密钥,再进行解密.
个人觉得这样还是不错的,因为别人必须知道你两个东西,即密钥和算法
当然,我那个是C/S系统,在B/S里从XMLhttp取得密钥还是不错的选择^_^

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      


相关链接: