A Kind of Method of Implementing Windows Logon Based on Smart Card
LIANG Hao
(Third Research Institute of Ministry of Public Security, Shanghai 200031)
Abstract: Design a smart card logon with Windows operating system Windows Credential Provider program is implemented, the program automatically detects the smart card with the plug, PIN, user identification card, smart card reader notes saved automatically submit login information and features. In this design model, describes the design of Windows Credential Provider in the UI interface and replace the username and password login method.
Key words: smart card; credential provider; authentication; login
随着Windows操作系统的发展,Windows操作系统开机登录程序也在不断改进。在Windows Vista和Windows 7操作系统中,微软取消了Windows NT/2000中交互式登录支持的GINA(图形标识与身份验证)模型,使用了Windows Credential Provider(票据提供程序)模型接口。相对于GINA,Windows Credential Provider具有高安全性、高灵活性的特点。一些开发商在此技术上开发了一些Windows Credential Provider,如指纹Credential Provider,提高了用户登录系统的安全性。这里介绍一种使用智能卡登录操作系统的实现方式。
1 设计方案
实现Windows Credential Provider所使用的智能卡为自主研发的卡片,其API包括检测卡片插拔、PIN码校验、文件存储、密码运算等功能。本文的智能卡已格式化,具有存储设计方案所需的对称密钥、二进制文件等数据。
Windows Credential Provider默认使用的是用户名和密码进行身份认证。本文以智能卡文件作为载体,加密保存计算机账户的用户名和密码。使用Windows登录必须先通过智能卡PIN码认证后才得到解密用户名和密码的权限。相对于原只用用户名密码登录方式,智能卡登录具有双因素认证的特点,大大提高了Windows操作系统登录过程的安全性。
2 程序开发
设计方案将程序按模块分为2部分:一是用户名密码绑定程序;二是Windows Credential Provider COM库。
2.1 绑定用户名密码程序
用户名密码绑定程序,完成一些智能卡登录Windows的初始化工作,即输入系统用户名密码并写入到智能卡,实现系统密码和智能卡密码的绑定操作。
必须绑定用户名密码的智能卡才能使用智能卡登录Windows系统。完成绑定后,用户名和密码都加密保存到智能卡中,并长期有效。在系统不重装的前提下,以下情况可能导致正常的绑定无效:
1)通过用户名密码绑定程序删除绑定。
2)用户在绑定后修改了原用户名密码,导致绑定无效。
相对地,针对用户修改密码的情况,实现GINA程序相关接口可判断并自动修改绑定关系;而Windows Credential Provider没有相关的接口,因此,安装一个用户名密码绑定程序的辅助服务,该服务轮询检查绑定的用户名和密码是否有效,当绑定关系发送变化时,服务程序调用绑定程序重新更新绑定。
一般的,用户名密码绑定程序作为初始化工具,必须通过授权才可使用。因此,在使用用户名密码绑定程序前需通过智能卡的PIN码校验。完成身份认证后,用户名密码绑定程序将用户录入的用户名、密码、域名加以校验。
用户名密码绑定程序按功能分为两个部分:第一,当打开用户名密码绑定程序时,弹出输入对话框输入PIN码,进行PIN码校验,完成用户身份认证过程;第二,校验用户身份后,弹出用户登录凭据绑定输入框。为了简单说明设计方案,用户名密码绑定程序有且只能绑定一条Windows登录凭据。Windows登录凭据信息包括用户名、密码和域名(如果已经加入域的话)。用户确定绑定信息时,用户名密码绑定程序将登录凭据信息通过智能卡API加密保存到智能卡文件系统中,其中加密密钥是智能卡初始化时写入的对称密钥。至此,用户名密码绑定程序对智能卡的初始化工作就完成了。
2.2 Windows Credential COM库
Windows Credential Provider部分是设计方案的核心部分。它包括了自定义用户登录界面的接口以及处理和提交用户登录凭据的接口。设计方案的Windows Credential Provider通过新COM库的方式增量注册到Windows操作系统中,并不卸载Windows操作系统自带的Credential Provider。就是说,用户在登录Windows时可以选择原Windows登录方式或选择智能卡登录。
在Windows Vista的登录过程中,从界面上可区分为两个阶段:标题图片未选中阶段和标题图片被选中后显示密码输入框阶段。
标题图片未选中阶段,主要显示标题图片和登录用户名。智能卡Windows Credential Provider定制了以智能卡为图片的标题图片。
通过Windows Credential Provider可设置定制的智能卡登录凭据的按钮,用户点击智能卡图片的按钮即可使用智能卡登录计算机。
智能卡图片以资源方式插入到DLL中,资源ID为IDB_TILE_IMAGE,在ICredentialProviderCredential接口中的GetBitmapValue函数添加代码:
HBITMAP hbmp = LoadBitmap(HINST_THISDLL, MAKEINTRESOURCE(IDB_TILE_IMAGE));
*phbmp = hbmp;
默认的Windows Credential Provider标题图片下方为显示登录用户名,智能卡Windows Credential Provider将登录用户名修改了智能卡是否插入提示信息。static const FIELD_STATE_PAIR s_rgMessageFieldStatePairs[] =
{
{ CPFS_DISPLAY_IN_BOTH, CPFIS_NONE }, // SMFI_TILEIMAGE
{ CPFS_DISPLAY_IN_BOTH, CPFIS_NONE }, // SMFI_MESSAGE
{ CPFS_DISPLAY_IN_DESELECTED_TILE, CPFIS_NONE },// SMFI_STATUS
};
标题图片未选中阶段将原用户名输入的界面枚举信息替换为PIN码输入框,并添加PIN码输入提示文本(如PIN码输入错误等信息)。 PIN码输入框使用原Windows输入框的类型和风格。
static const CREDENTIAL_PROVIDER_FIELD_DESCRIPTOR s_rgCredProvFieldDescriptors[] =
{
{ SFI_TILEIMAGE, CPFT_TILE_IMAGE, L"Image" }, (责任编辑:南粤论文中心)转贴于南粤论文中心: http://www.nylw.net(南粤论文中心__代写代发论文_毕业论文带写_广州职称论文代发_广州论文网)