打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Windows下密码服务开发指引----CryptoAPI/CSP体系

写完上一篇,密码学这棵大树的主干,基本就勾勒完了。我们要开始为它添加枝叶和果实,就是一个个重要的知识点。今天介绍的是Windows下密码体系的实现和调用机制。

密码学是科学,PKI是技术体系,而不同操作系统平台有不同的PKI实现方式。Windows采用的是CryptoAPI/CSP体系。CryptoAPI是标准密码功能接口,包括了对称加解密、非对称加解密、数字签名与验证、数字摘要以及证书管理这些主要功能以及众多辅助功能。通过包含WinCrypt.h头文件,可以浏览并引入所需要的功能接口。如下图,调用CertOpenStore打开计算机上的证书存储集。

CryptoAPI足够强大全面,但它本质上只是调用接口,真正实现密码功能的是加密服务提供程序,英文全称CryptographicService Provider,简称CSPWindows定义了一套标准的密码服务接口,CSP实现了这些接口,而CryptoAPI则通过这套接口调用CSP的相关功能。那么,CSP从哪来的呢?是由各个安全厂商提供的。比如,研发加密机、加密卡、USBKey的安全企业。根据密码学“私钥永远不出Key”的圭帛,涉及到密钥的运算都需要由硬件完成,而不同硬件的原生接口千差万别,应用系统如果直接调用硬件的接口,会带来很多的重复开发,程序的可移植性和兼容性也会差很多。因此,CSP机制的意义在于屏蔽了硬件实现的不同,各个厂商提供自己的CSP,使CryptoAPI可以用同样的接口调用不同的安全硬件功能。整个CryptoAPI/CSP体系的结构如下图。

从上往下看,应用层就是要实现密码
服务的应用,系统层是CryptoAPI,而服务提供层里就是各个产品的CSP了。这样的结构层次界限清晰,上层应用无需知道下层CSP细节,更重要的是,通过使用不同的CSP,就可以实现不同级别的安全运算,而应用系统本身可以做到无需改造。以电子印章系统为例,我们在开发时可以使用软实现(通过计算机软件功能实现)的CSP,以便于调试;在一般用户使用时,可以设置成使用某款USB KeyCSP;而在安全性要求更高,签章量很大的应用场景下,就可以配置成使用加密卡甚至加密机的CSP。而电子印章系统却不用因密码服务的不同而做代码的二次开发。打开Windows注册表的HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\Defaults\Provider位置,可以看到目前所安装的CSP。而Microsoft Base CryptographicProvider v1.0MicrosoftEnhanced Cryptographic Provider v1.0Microsoft Strong Cryptographic Provider都是Windows提供的缺省CSP,以保证在没有安装任何第三方安全产品时,系统的密码功能还能正常运行。

2000年左右CSP由微软推出后,迅速成为市场上主流的密码服务调用机制,应用系统实现密码服务的门槛被大幅度降低。据我了解,JavaAndroidIOS还没有类似的机制。而微软的这一机制倒是启发了国内很多CA厂商,它们也通过定义一套标准接口,实现接入多种安全硬件设备。

CryptoAPI/CSP机制虽然强大,但它毕竟比较复杂,而且不适合所有的应用场景,尤其是JavaScript这样的客户端页面脚本。你当然可以自己把CryptoAPI封装成COM控件,供脚本语言调用。但这里推荐CAPICOM,全名是 Cryptographic API ComponentObject Model,它是微软为了方便使用,将CryptoAPI封装成的COM安全组件。最新版本的CAPICOM2.1.0.2。因为它是由微软原厂商提供,又和CryptoAPI同源,所以使用起来还是很方便的,尤其它对数字证书的管理使用做的很不错。比如用下面的语句就可以在JS中调用CAPICOM的证书组件。

varsmcerts = new ActiveXObject ("CAPICOM.Certificate");

关于Windows下密码体系的实现和调用机制就介绍到这里,如果大家有任何问题和建议,欢迎评论交流。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Windows 7可以直接查看无线密码
给USB接口加密,谁想在你的电脑上随便用U盘?没门!
Microsoft CSP简介
Microsoft CryptoAPI加密技术(一)
bombing:2证书认证系统设计与实现
银行U盾安装使用说明
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服