首页> 中国专利> 一种登录Windows操作系统的方法及系统

一种登录Windows操作系统的方法及系统

摘要

本发明公开了一种登录Windows操作系统的方法及系统,方法包括绑定过程和登录过程;绑定过程包括:绑定工具将根据要绑定的用户名获取的密钥句柄生成参数发送给认证设备;将认证设备返回的凭证公钥和根据密钥句柄生成参数生成的密钥句柄与安全描述符对应保存在预定文件中;登录过程包括:凭据提供装置接收登录数据,根据用户名获取安全描述符,根据安全描述符从预定文件中检索对应的密钥句柄和凭证公钥;将密钥句柄和待签名数据发送给认证设备;接收认证设备返回的根据密钥句柄所对应的私钥和待签名数据生成的签名值;使用凭证公钥对签名值进行验签,在验签成功时,根据用户名和密码组成登录系统所需的凭据信息。

著录项

  • 公开/公告号CN112287312A

    专利类型发明专利

  • 公开/公告日2021-01-29

    原文格式PDF

  • 申请/专利权人 飞天诚信科技股份有限公司;

    申请/专利号CN202011619772.5

  • 发明设计人 陆舟;于华章;

    申请日2020-12-31

  • 分类号G06F21/31(20130101);G06F21/44(20130101);

  • 代理机构

  • 代理人

  • 地址 100085 北京市海淀区学清路9号汇智大厦B楼17层

  • 入库时间 2023-06-19 09:44:49

说明书

技术领域

本发明涉及信息安全领域,特别涉及一种登录Windows操作系统的方法及系统。

背景技术

Windows域是计算机网络的一种形式,其中所有用户账户等安全主体都在位于称为域控制器的一个或多个中央计算机集群上的中央数据库中注册, 身份验证也在域控制器上进行。 在域中使用计算机的每个人都会拥有一个唯一的用户账户,然后可以为该账户分配对该域内资源的访问权限。现有技术的Windows操作系统登录方式中,通常使用用户名和密码的方式进行登录,但是用户名和密码很容易被窃取,此种登录方式的弊端为不安全,随着技术的发展,出现了使用硬件认证设备与用户名和密码的结合进行登录的方式,提高了登录的安全。

但是某些硬件认证设备不能实现在非域环境下的登录,因此局限了登录方式的应用范围。

发明内容

本发明提供了的一种登录Windows操作系统的方法及系统,解决了上述技术问题。

本发明提供了一种登录Windows操作系统的方法,该方法包括:绑定过程和登录过程;

绑定过程包括:

步骤01,绑定工具根据要绑定的用户名获取安全描述符,生成与安全描述符对应的密钥句柄生成参数;

步骤02,绑定工具将密钥句柄生成参数发送给认证设备;

步骤03,绑定工具接收认证设备返回的凭证公钥和根据密钥句柄生成参数生成的密钥句柄;

步骤04,绑定工具将密钥句柄和凭证公钥与安全描述符对应保存在预定文件中;

登录过程包括:

步骤1,凭据提供装置的类型声明接口被系统调用,凭据提供装置向系统声明凭据提供装置的类型;

步骤2,凭据提供装置的登录数据接收接口被系统调用,凭据提供装置接收登录数据,登录数据包括用户名和密码;

步骤3,凭据提供装置根据用户名获取安全描述符,根据安全描述符从预定文件中检索对应的密钥句柄和凭证公钥;

步骤4,凭据提供装置将密钥句柄和待签名数据发送给认证设备;

步骤5,凭据提供装置接收认证设备返回的根据密钥句柄所对应的私钥和待签名数据生成的签名值;

步骤6,凭据提供装置使用凭证公钥对签名值进行验签,并判断验签是否成功,如果是,执行步骤7,如果否,凭据提供装置设置异常码;

步骤7,凭据提供装置根据用户名和密码组成登录系统所需的凭据信息。

本发明提供了一种登录Windows操作系统的系统,该系统包括:

绑定工具和凭据提供装置;

绑定工具包括:

获取与生成模块,用于根据要绑定的用户名获取安全描述符,生成与安全描述符对应的密钥句柄生成参数;

第一发送模块,用于将获取与生成模块生成的密钥句柄生成参数发送给认证设备;

第一接收模块,用于接收认证设备返回的凭证公钥和根据密钥句柄生成参数生成的密钥句柄;

保存模块,用于将第一接收模块接收的密钥句柄和凭证公钥与安全描述符对应保存在预定文件中;

凭据提供装置包括:

类型声明接口模块,用于被系统调用时,向系统声明凭据提供装置的类型;

登录数据接收接口模块,用于被系统调用时,接收登录数据,登录数据包括用户名和密码;

获取与检索模块,用于根据登录数据接收接口模块接收的用户名获取安全描述符,根据安全描述符从预定文件中检索对应的密钥句柄和凭证公钥;

第二发送模块,用于将获取与检索模块检索到的密钥句柄和待签名数据发送给认证设备;

第二接收模块,用于接收认证设备返回的根据密钥句柄所对应的私钥和待签名数据生成的签名值;

验签模块,用于使用凭证公钥对第二接收模块接收到的签名值进行验签;

第一判断模块,用于判断验签是否成功;

组成模块,用于当第一判断模块的判断结果为是时,根据用户名和密码组成登录系统所需的凭据信息;

设置模块,用于当第一判断模块的判断结果为否时,设置异常码。

本发明的有益效果:本发明提供了一种登录Windows操作系统的方法及系统,克服了硬件认证设备无法提供非域环境下的登录方式的限制,在保证登录方式安全的前提下,扩大了登录方式的应用范围。

附图说明

图1和图2为本发明实施例一提供的一种登录Windows操作系统的方法流程图;

图3为本发明实施例二提供的一种登录Windows操作系统的方法的绑定过程流程图;

图4为本发明实施例二提供的一种登录Windows操作系统的方法的登录过程流程图;

图5为本发明实施例三提供的一种登录Windows操作系统的方法的登录过程流程图;

图6为本发明实施例四提供的一种提供了一种登录Windows操作系统的系统框图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本申请涉及的名词如下:

SID: security identifier, 安全描述符。

CP: Credential provider, 凭据提供装置。

实施例一

本实施例提供了一种登录Windows操作系统的方法,包括:绑定过程和登录过程;

如图1所示,绑定过程包括:

步骤01,绑定工具根据要绑定的用户名获取安全描述符,生成与安全描述符对应的密钥句柄生成参数;

步骤02,绑定工具将密钥句柄生成参数发送给认证设备;

步骤03,绑定工具接收认证设备返回的凭证公钥和根据密钥句柄生成参数生成的密钥句柄;

步骤04,绑定工具将密钥句柄和凭证公钥与安全描述符对应保存在预定文件中;

如图2所示,登录过程包括:

步骤1,CP装置的类型声明接口被系统调用,CP装置向系统声明CP装置的类型;

步骤2,CP装置的登录数据接收接口被系统调用,CP装置接收登录数据,登录数据包括用户名和密码;

步骤3,CP装置根据用户名获取安全描述符,根据安全描述符从预定文件中检索对应的密钥句柄和凭证公钥;

步骤4,CP装置将密钥句柄和待签名数据发送给认证设备;

步骤5,CP装置接收认证设备返回的根据密钥句柄所对应的私钥和待签名数据生成的签名值;

步骤6,CP装置使用凭证公钥对签名值进行验签,并判断验签是否成功,如果是,执行步骤7,如果否,CP装置设置异常码;

步骤7,CP装置根据用户名和密码组成登录系统所需的凭据信息。

在本实施例中,密钥句柄生成参数为安全描述符哈希值。

在本实施例中,步骤3具体为:CP装置根据用户名获取安全描述符,根据安全描述符从预定文件中检索对应的密钥句柄和凭证公钥,根据安全描述符计算安全描述符哈希值;

步骤4具体为:CP装置将密钥句柄和包含安全描述符哈希值的待签名数据发送给认证设备。

在本实施例中,步骤4具体为:CP装置将密钥句柄,预置参数和安全描述符哈希值发送给认证设备;

步骤5具体为:CP装置接收认证设备返回的根据密钥句柄对应的私钥、预置参数和安全描述符哈希值生成的签名值,预定值和计数器值;

步骤6具体包括:

步骤61,CP装置根据凭证公钥对签名值进行运算得到第一哈希结果;

步骤62, CP装置根据安全描述符哈希值、预定参数和认证设备返回的预定值和计数器值组成第五数据,并对第五数据进行哈希运算得到第二哈希结果;

步骤63,CP装置判断第一哈希结果与第二哈希结果是否相同,如果是,执行步骤7,如果否,CP装置设置异常码。

在本实施例中,步骤04之后还包括:

步骤05,绑定工具根据安全描述符生成唯一恢复码相关数据,按照预定的算法根据唯一恢复码相关数据生成并显示唯一恢复码,将唯一恢复码相关数据与安全描述符对应保存在预定文件中;

步骤1之后还可以包括:

步骤M1, CP装置的命令链接点击函数接口被系统调用,CP装置调用系统的栏状态设置函数将恢复码显示控件的状态由隐藏状态修改为显示状态;

步骤3- 6可以为:

步骤M1,CP装置的登录数据接收接口被系统调用,CP装置接收登录数据,登录数据包括用户名和密码及唯一恢复码;

步骤M2, CP装置根据登录数据中的用户名获取安全描述符,根据安全描述符从预定文件中检索安全描述符所对应的唯一恢复码相关数据,并对唯一恢复码相关数据进行运算,生成唯一恢复码认证数据;

步骤M3, CP装置比对唯一恢复码认证数据和登录数据中的唯一恢复码是否相同,如果是,则执行步骤7,如果否,CP装置设置异常码。

在本实施例中,步骤2之前还包括:

步骤M’, CP装置的命令链接点击函数被系统调用,CP装置调用系统的栏状态设置函数将恢复码显示控件的状态由显示状态修改为隐藏状态。

在本实施例中,步骤05具体包括:

步骤C1, 绑定工具生成随机数;

步骤C2, 绑定工具根据随机数和安全描述符生成唯一恢复码相关数据;

步骤C3, 绑定工具根据唯一恢复码相关数据生成唯一恢复码;

步骤C4, 绑定工具显示唯一恢复码,并将唯一恢复码相关数据与安全描述符对应保存在预定文件中。

在本实施例中,密钥句柄生成参数为随机数;

步骤04具体为:绑定工具将密钥句柄、随机数和凭证公钥与安全描述符对应保存在预定文件中。

步骤3具体为:CP装置根据用户名获取安全描述符,根据安全描述符从预定文件中检索对应的密钥句柄和凭证公钥和随机数;

步骤4具体为:CP装置将密钥句柄和包含随机数的待签名数据发送给认证设备。

在本实施例中,步骤02之前还包括步骤02’, 绑定工具判断是否存在合法的认证设备,如果是,执行步骤03,如果否,绑定工具提示用户插入认证设备,返回步骤02’。

实施例二

本实施例提供了一种登录Windows操作系统的方法,包括:绑定过程和登录过程,如图3所示,绑定过程包括:

步骤201,绑定工具启动,枚举系统所有的用户名;

在本实施例中,本步骤具体可以包括如下步骤:

步骤a1,绑定工具启动,枚举系统所有的用户名,并获取所有用户名的SID;

具体的,在本实施例中,绑定工具调用NetUserEnum函数枚举系统所有的用户名,调用系统的API函数获取所有用户名的SID。

上述调用系统的API函数获取所有用户名的SID具体为:绑定工具将用户名和Null作为输入参数调用LookupAccountName函数函数得到SID所需缓冲区的大小; 调用LookupAccountName函数得到SID的数据结构;调用GetSidSubAuthorityCount函数得到SID的数据结构中描述符的个数,以描述符的个数为调用次数循环调用GetSidSubAuthority函数得到SID的文本格式。

例如,在本实施例中,绑定工具将用户名Zhangsan和Null作为输入参数调用LookupAccountName函数函数得到SID所需缓冲区的大小为need1 = 28, need2=15; 调用LookupAccountName函数得到SID的数据结构0x000x000x000x000x05;调用GetSidSubAuthorityCount函数得到SID的数据结构中描述符的个数[Count]subAuthorities=5,以描述符的个数为调用次数循环调用GetSidSubAuthority函数得到SID的文本格式S-1-5-21-2794738240-551954774-3323151909-1002。

根据上述举例,在非域环境下,用户名为zhangsan, 获取的用户名的SID为S-1-5-21-2794738240-551954774-3323151909-1002。

在本实施例中,例如在域环境下,用户名为cptest\test2,其中cptest为域名称,test2为用户名,则获取的SID为S-1-5-21-2066426287-1520587021-951550908-1134。

步骤a2,绑定工具枚举预定文件中的所有SID;

步骤a3,绑定工具将各用户名的SID分别与预定文件中的SID进行比对,判断是否有比对一致的SID,如果是,则执行步骤a4,如果否,执行步骤202;

步骤a4,绑定工具对比对一致的SID对应的用户名进行标记;

步骤202,绑定工具接收用户选定要绑定的用户名的确认信息,确定要绑定的用户名的SID,对要绑定的用户名的SID进行哈希运算得到SID的哈希值;

步骤203,绑定工具判断是否存在合法的认证设备,如果是,执行步骤204,如果否,绑定工具提示用户插入认证设备,执行步骤203;

具体的,在本步骤中,绑定工具通过设备供应商的信息来判断认证设备是否为合法的认证设备。

在本实施例中,本步骤具体包括如下步骤:

步骤b1, 绑定工具判断是否存在合法的认证设备,如果是,执行步骤b2; 如果否,绑定工具提示用户插入认证设备,执行步骤203;

步骤b2, 绑定工具判断认证设备的个数,如果等于1,执行步骤204,如果大于1,绑定工具提示用户拔除认证设备,返回步骤b1。

步骤204,绑定工具提示用户触发认证设备确认键,根据SID的哈希值和预定的应用参数生成注册指令,将注册指令发送给认证设备;

具体的,在本步骤中,预定的应用参数为32字节的预定值。

具体的,在本实施例中,绑定工具调用ulResult = m_ftApdu.usApdu_Transmit(szSendBuf, ulSendLen, szRecvBuf, &ulRecvLen)函数将注册指令发送给认证设备。

步骤205, 认证设备接收到注册指令后对注册指令进行解析,得到SID的哈希值;

步骤206, 认证设备判断是否在预定的时间内接收到用户通过触发认证设备确认键发送的确认信息,如果是,执行步骤207,如果否,认证设备向绑定工具发送报错信息,绑定工具显示报错信息;

步骤207,认证设备根据SID的哈希值生成唯一认证数据,根据唯一认证数据生成注册指令的响应;

在本实施例中,唯一认证数据包括密钥句柄和凭证公钥。

具体的,本步骤具体为:

步骤A1,认证设备根据预定的第一算法生成密钥对;

具体的,在本步骤中,认证设备根据椭圆曲线算法(ECC算法)生成椭圆曲线密钥对,即ECC密钥对;

步骤A2, 认证设备使用预定的算法对密钥对中的私钥进行运算得到第一数据;

具体的,本步骤具体为,认证设备使用预定的算法根据ECC密钥对中的私钥和预定的应用参数(AP)生成Nonce数据;

具体的,本步骤可以为认证设备对ECC密钥对中的私钥和预定的应用参数进行异或运算得到Nonce数据;

步骤A3, 认证设备将第一数据、SID哈希值和认证设备芯片的唯一标识进行拼接得到拼接数据,对拼接数据使用预定的第二算法进行加密得到第二数据;

具体的,本步骤为,认证设备将32字节的Nonce数据、32字节的SID哈希值和16字节的认证设备芯片唯一标识进行拼接得到拼接数据,对拼接数据使用AESenc算法进行加密得到80字节的第二数据;

步骤A4, 认证设备使用预定的第三算法对第二数据进行计算得到第三数据;

具体的,在本步骤中,认证设备使用AESmac算法对第二数据进行CMAC运算,得到第三数据;

步骤A5, 认证设备根据第二数据和第三数据生成密钥句柄;

步骤A6,认证设备将密钥对的公钥作为凭证公钥,根据凭证公钥和密钥句柄生成注册指令的响应;

具体的,在本步骤中,认证设备将ECC密钥对中的公钥作为凭证公钥,根据凭证公钥和密钥句柄生成注册指令的响应。

步骤208,认证设备将注册指令的响应发送给绑定工具;

步骤209,绑定工具对注册指令的响应进行解析得到唯一认证数据;

具体的,本步骤为绑定工具对注册指令的响应进行解析得到凭据公钥和密钥句柄。

步骤210,绑定工具将唯一认证数据与SID对应的保存在预定文件中;

在本实施例中,预定的文件还可以为注册表。

在本实施例中,本步骤具体为绑定工具将密钥句柄、凭证公钥与SID对应保存在注册表中。

具体的,在本实施例中预定文件或者注册表的位置为预定位置, 例如:SOFTWARE\\Feitian\\Logon\\+sid +keyhandle。

具体的,注册表的表项的内容示例如下:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\FeiTian]

[HKEY_LOCAL_MACHINE\SOFTWARE\FeiTian\Logon]

[HKEY_LOCAL_MACHINE\SOFTWARE\FeiTian\Logon\S-1-5-21-2794738240-551954774-3323151919-1001]

[HKEY_LOCAL_MACHINE\SOFTWARE\FeiTian\Logon\S-1-5-21-2794738240-551954774-3323151919-1001\1]

"KeyHandle"=hex:99,ce,e5,ff,b2,3b,d6,e8,09,52,41,17,34,bb,28,29,9d,4c,1f,92,f3,\

c7,95,09,c2,a4,d8,a1,93,5f,e7,8a,6e,f6,a9,07,45,92,66,3a,35,d4,1c,e1,7e,25,\ 54,00,fb,51,63,55,71,53,33,6d,32,a4,b5,ba,8b,cc,2b,d4,e1,85,29,e2,40,e9,68,\

89,ab,2e,15,02,c8,94,61,13,2a,5d,b5,49,23,88,0d,22,bc,ad,f3,cf,3d,58,c9,cf

04876D3449C0E14247EE5A785EAD075C3A949BA61F7F835A8B7B1E605B21718FF663E5FBBEE54CB0466CFE965B8AF88515557760CF4ECC64BD0E6E47F7671FB3D2

其中,SID为S-1-5-21-2794738240-551954774-3323151919-1001;

密钥句柄为 99,ce,e5,ff,b2,3b,d6,e8,09,52,41,17,34,bb,28,29,9d,4c,1f,92,f3,\

c7,95,09,c2,a4,d8,a1,93,5f,e7,8a,6e,f6,a9,07,45,92,66,3a,35,d4,1c,e1,7e,25,\

54,00,fb,51,63,55,71,53,33,6d,32,a4,b5,ba,8b,cc,2b,d4,e1,85,29,e2,40,e9,68,\

89,ab,2e,15,02,c8,94,61,13,2a,5d,b5,49,23,88,0d,22,bc,ad,f3,cf,3d,58,c9,cf;

公钥为:04876D3449C0E14247EE5A785EAD075C3A949BA61F7F835A8B7B1E605B21718FF663E5FBBEE54CB0466CFE965B8AF88515557760CF4ECC64BD0E6E47F7671FB3D2。

图4所示,登录过程包括:

步骤301,CP装置的第一接口被系统调用,CP装置声明自身为用户名和密码型CP装置;

具体的,在本实施例中,CP装置的第一接口为:CreateInstance接口函数;

步骤302,CP装置的第二接口被系统调用,CP装置接收登录数据;

具体的,在本实施例中,CP装置的第二接口为:GetSerialization接口函数,CP装置接收到的登录数据具体为用户名和密码。

在本实施例中,本步骤中CP装置接收登录数据具体为:CP装置接收用户输入的用户名和密码;

步骤303,CP装置根据登录数据中的用户名获取SID,根据SID从预定文件中检索SID所对应的密钥句柄和凭证公钥,对SID进行哈希运算得到SID哈希值;

本步骤具体为:CP装置将用户名和Null作为输入参数调用LookupAccountName函数函数得到SID所需缓冲区的大小; 调用LookupAccountName函数得到SID的数据结构;调用GetSidSubAuthorityCount函数得到SID的数据结构中描述符的个数,以描述符的个数为调用次数循环调用GetSidSubAuthority函数得到SID的文本格式。

例如,在本实施例中,CP装置将用户名Zhangsan和Null作为输入参数调用LookupAccountName函数函数得到SID所需缓冲区的大小为need1 = 28, need2=15; 调用LookupAccountName函数得到SID的数据结构0x000x000x000x000x05;调用GetSidSubAuthorityCount函数得到SID的数据结构中描述符的个数[Count]subAuthorities=5,以描述符的个数为调用次数循环调用GetSidSubAuthority函数得到SID的文本格式S-1-5-21-2794738240-551954774-3323151909-1002。

步骤304,CP装置将密钥句柄和SID哈希值发送给认证设备;

具体的,在本实施例中,CP装置调用m_ftApdu.usApdu_Transmit(&APDU_CREDENTIAL[0], sizeof(APDU_CREDENTIAL), ucRecv, &ulRecvLen)函数,将密钥句柄和SID哈希值发送给认证设备。

本步骤具体为: CP装置将密钥句柄,预置参数(AP)和SID哈希值发送给认证设备。

步骤305,认证设备根据密钥句柄获得私钥,使用私钥对根据SID哈希值组成的待签名数据进行签名运算生成签名值;本步骤具体包括如下步骤:

步骤D1, 认证设备根据密钥句柄获得私钥;

本步骤具体为认证设备根据密钥句柄获得Nonce, 根据Nonce获得私钥;

本步骤具体为:认证设备对密钥句柄进行解析,得到第二数据和第三数据,使用预定的第三算法对第二数据进行计算得到第四数据,判断第三数据与第四数据相同时,对第二数据进行解密,得到Nonce、预定参数(AP)和芯片标识符(Chip ID);

步骤D2,认证设备根据预定参数(AP)、预定值(01)、计数器值和SID哈希值组成待签名数据;

步骤D3, 认证设备对待签名数据进行哈希计算得到第一哈希结果,使用私钥对第一哈希结果进行签名得到签名结果,对签名结果进行编码运算生成签名值;

步骤306;认证设备将签名值发送给CP装置;

具体的,本步骤为,认证设备将签名值,预定值(01)、计数器值发送给CP装置;

步骤307,CP装置根据凭证公钥对签名值进行验签,判断验签结果是否为成功,如果是,执行步骤308,如果否,CP装置设置异常码;

在本实施例中,本步骤具体包括:

步骤E1,CP装置对签名值进行解码得到签名结果,使用凭证公钥对结果进行运算得到第一哈希结果;

步骤E2, CP装置根据SID哈希值、自身存储的预定参数(AP)和认证设备返回的预定值(01)、计数器值组成第五数据,并对第五数据进行哈希计算,得到第二哈希结果;

步骤E3,CP装置判断第一哈希结果与第二哈希结果是否相同,如果是,执行步骤308,如果否,CP装置设置异常码。

步骤308,CP装置根据用户名和密码组成登录系统所需的凭据信息,并将凭据信息发送给系统。

具体的,在本步骤具体包括:

步骤F1, CP装置调用GetComputerNameW函数获取系统所在的计算机的计算机名称;

步骤F2, CP装置ProtectIfNecessaryAndCopyPassword函数获取密码并对密码进行加密保护;

步骤F3, CP装置调用KerbInteractiveUnlockLogonInit函数,将计算机名称,用户名和密码初始化;

步骤F4, CP装置调用KerbInteractiveUnlockLogonPack函数将计算机名称、用户名和密码打包;

步骤F5, CP装置调用RetrieveNegotiateAuthPackage函数获取认证数据包;

步骤F6, CP装置将认证数据包发送给系统。

在本实施例中,上述步骤F1为域环境下的操作步骤,当本方案的执行环境为非域环境时,步骤F1则为:CP装置调用GetComputerNameEx函数获取系统所在的计算机的计算机名称。

在本实施例中绑定过程中的步骤202可以被替换为:绑定工具接收用户选定要绑定的用户名的确认信息,确定要绑定的用户名的SID,对要绑定的用户名的SID对应生成随机数;

在本实施例中,随机数代替SID哈希值参与实施例一中绑定过程中的步骤202的后续步骤的所有运算;

步骤210具体为:绑定工具将唯一认证数据和随机数与SID对应的保存在预定文件中。

相应的,在登录过程中,步骤303则被替换为:CP装置根据登录数据中的用户名获取SID,根据SID从预定文件中检索SID所对应的密钥句柄和凭证公钥和随机数;

在本实施例中,随机数代替SID哈希值参与实施例一种登录过程中的步骤303的后续步骤的所有运算。

实施例三

本实施例提供了一种登录Windows操作系统的方法,包括绑定过程和登录过程,其中绑定过程为在实施例二中的绑定过程步骤210后面添加了如下步骤:

步骤211,绑定工具根据要绑定的用户名的SID生成一个唯一恢复码相关数据,根据唯一恢复码相关数据生成唯一恢复码并显示唯一恢复码,将唯一恢复码相关数据与要绑定的用户名的SID对应保存在预定文件中;

在本实施例中,本步骤具体为:

步骤c1, 绑定工具生成第一随机数和第二随机数;

步骤c2, 绑定工具将第一随机数,SID和第二随机数顺序拼接生成唯一恢复码相关数据;

步骤c3,绑定工具对唯一恢复码相关数据按照预定算法进行运算生成第一数据值;

在本步骤中,预定算法可以为HAMC-SHA1算法;

步骤c4, 绑定工具将第一数据值转化为第一字符串,将第一字符串作为唯一恢复码;

步骤c5, 绑定工具显示唯一恢复码,并将唯一恢复码相关数据与要绑定的用户名的SID对应保存在预定文件中。

具体的,保存到预定文件的如下位置:

SOFTWARE\\Feitian\\Logon\\+sid +\\Recovery\\RecoveryCode。

在本实施例中,预定文件可以为注册表,示例如下:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\FeiTian]

[HKEY_LOCAL_MACHINE\SOFTWARE\FeiTian\Logon]

[HKEY_LOCAL_MACHINE\SOFTWARE\FeiTian\Logon\S-1-5-21-2794738240-551954774-3323151919-1001]

[HKEY_LOCAL_MACHINE\SOFTWARE\FeiTian\Logon\S-1-5-21-2794738240-551954774-3323151919-1001\1]

"KeyHandle"=hex:99,ce,e5,ff,b2,3b,d6,e8,09,52,41,17,34,bb,28,29,9d,4c,1f,92,f3,\

c7,95,09,c2,a4,d8,a1,93,5f,e7,8a,6e,f6,a9,07,45,92,66,3a,35,d4,1c,e1,7e,25,\

54,00,fb,51,63,55,71,53,33,6d,32,a4,b5,ba,8b,cc,2b,d4,e1,85,29,e2,40,e9,68,\

89,ab,2e,15,02,c8,94,61,13,2a,5d,b5,49,23,88,0d,22,bc,ad,f3,cf,3d,58,c9,cf

04876D3449C0E14247EE5A785EAD075C3A949BA61F7F835A8B7B1E605B21718FF663E5FBBEE54CB0466CFE965B8AF88515557760CF4ECC64BD0E6E47F7671FB3D2

[HKEY_LOCAL_MACHINE\SOFTWARE\FeiTian\Logon\S-1-5-21-2794738240-551954774-3323151919-1001\Recovery]

"RecoveryCode"=hex:1d,0b,33,64,20,32,e5,9c,53,2d,31,2d,35,2d,32,31,2d,32,37,39,\

34,37,33,38,32,34,30,2d,35,35,31,39,35,34,37,37,34,2d,33,33,32,33,31,35,31,\

39,31,39,2d,31,30,30,31,19,b5,29,7a,b9,c7,fb,a9;

其中,S-1-5-21-2794738240-551954774-33231519为SID;

99,ce,e5,ff,b2,3b,d6,e8,09,52,41,17,34,bb,28,29,9d,4c,1f,92,f3,\

c7,95,09,c2,a4,d8,a1,93,5f,e7,8a,6e,f6,a9,07,45,92,66,3a,35,d4,1c,e1,7e,25,\

54,00,fb,51,63,55,71,53,33,6d,32,a4,b5,ba,8b,cc,2b,d4,e1,85,29,e2,40,e9,68,\

89,ab,2e,15,02,c8,94,61,13,2a,5d,b5,49,23,88,0d,22,bc,ad,f3,cf,3d,58,c9,cf为密钥句柄;

04876D3449C0E14247EE5A785EAD075C3A949BA61F7F835A8B7B1E605B21718FF663E5FBBEE54CB0466CFE965B8AF88515557760CF4ECC64BD0E6E47F7671FB3D2为凭据公钥;

1d,0b,33,64,20,32,e5,9c,53,2d,31,2d,35,2d,32,31,2d,32,37,39,\

34,37,33,38,32,34,30,2d,35,35,31,39,35,34,37,37,34,2d,33,33,32,33,31,35,31,\

39,31,39,2d,31,30,30,31,19,b5,29,7a,b9,c7,fb,a9为唯一恢复码相关数据。

如图5所示,登录过程包括:

步骤401, CP装置的第一接口被系统调用,CP装置声明自身为用户名和密码型CP装置;

具体的,在本实施例中,CP装置的第一接口为:

CreateInstance接口函数。

在本实施例中,本步骤具体包括:

步骤d1,CP装置的CreateInstance接口函数被系统调用,CP装置声明自身为用户名和密码CP装置;

步骤d2,CP装置的Getfielddescriptor接口函数被系统调用,CP装置向系统返回所有控件的总数量;

步骤d3,CP装置的Getfielddescriptorat接口函数被系统调用,CP装置向系统返回控件的字段描述符;

在本步骤中,系统将所有控件的总数量作为调用次数,对CP装置的Getfielddescriptorat接口函数按照调用次数进行多次调用,依次得到所有控件的字段描述符;

步骤d4, CP装置的Getfieldstate接口函数被系统调用,CP装置向系统返回控件的状态;

在本步骤中,系统将所有控件的总数量作为调用次数,对CP装置的Getfieldstate接口函数照调用次数进行多次调用,依次得到所有控件的初始状态。

步骤402,CP装置的第三接口被系统调用,CP装置调用系统的成员函数将恢复码显示控件的状态由隐藏状态修改为显示状态;

具体的,第三接口为CommandLinkClicked()函数。

在本实施例中,恢复码显示控件的状态的初始状态为隐藏状态。

CP装置调用系统的栏状态设置函数将恢复码显示控件的状态由隐藏状态修改为显示状态。本步骤具体为: CP装置的CommandLinkClicked()函数被系统调用,CP装置调用系统的ICredentialProviderCredentialEvents的成员函数SetFieldState,将恢复码显示控件的状态从隐藏状态修改为显示状态。

在本实施例中,恢复码是用户通过恢复码控件输入的。

步骤403,CP装置的第二接口被系统调用,CP装置接收登录数据;

具体的,在本实施例中,CP装置的第二接口为: GetSerialization接口函数,CP装置接收到的登录数据具体为用户名、密码和恢复码。

步骤404,CP装置根据登录数据中的用户名获取SID,根据SID从预定文件中检索SID所对应的唯一恢复码相关数据,并对唯一恢复码相关数据进行运算,生成唯一恢复码认证数据;

具体的,在本实施例中,CP装置调用RegQueryValueEx(hKey, _T("RecoveryCode"),NULL, &dwType, (LPBYTE)&byRecoverHex[0], &dwKeyLen)函数,从预定的文件中检索与SID所对应的唯一恢复码相关数据。

在本实施例中,本步骤具体为:CP装置根据登录数据中的用户名获取SID,根据SID从预定文件中检索SID所对应的唯一恢复码相关数据,对唯一恢复码相关数据按照预定算法进行运算,得到唯一恢复码认证数据;

具体的,预定算法可以为HAMC-SHA1算法。

步骤405,CP装置比对唯一恢复码认证数据和登录数据中的唯一认证恢复码,判断两者是否相同,如果是,执行步骤406,如果否,CP装置设置异常码;

步骤406, CP装置根据用户名和密码组成登录系统所需的凭据信息,并将凭据信息发送给系统。

在本实施例中,步骤402之后还可以包括:

步骤402’, CP装置的第三接口被系统调用,CP装置调用系统预定函数的预定成员函数将恢复码显示控件的状态由显示状态修改为隐藏状态;

则所述步骤402’之后执行实施例二中的步骤302-步骤308。

实施例四

本实施例提供了一种登录Windows操作系统的系统,如图6所示,包括:绑定工具和凭据提供装置;

绑定工具包括:

获取与生成模块 51,用于根据要绑定的用户名获取安全描述符,生成与安全描述符对应的密钥句柄生成参数;

第一发送模块 52,用于将获取与生成模块 51生成的密钥句柄生成参数发送给认证设备;

第一接收模块 53,用于接收认证设备返回的凭证公钥和根据密钥句柄生成参数生成的密钥句柄;

保存模块 54,用于将第一接收模块 53接收的密钥句柄和凭证公钥与安全描述符对应保存在预定文件中;

凭据提供装置包括:

类型声明接口模块 61,用于被系统调用时,向系统声明凭据提供装置的类型;

登录数据接收接口模块 62,用于被系统调用时,接收登录数据,登录数据包括用户名和密码;

获取与检索模块 63,用于根据登录数据接收接口模块 62接收的用户名获取安全描述符,根据安全描述符从预定文件中检索对应的密钥句柄和凭证公钥;

第二发送模块 64,用于将获取与检索模块 63检索到的密钥句柄和待签名数据发送给认证设备;

第二接收模块 65,用于接收认证设备返回的根据密钥句柄所对应的私钥和待签名数据生成的签名值;

验签模块 66,用于使用凭证公钥对第二接收模块 65接收到的签名值进行验签;

第一判断模块 67,用于判断验签是否成功;

组成模块 68,用于当第一判断模块 67的判断结果为是时,根据用户名和密码组成登录系统所需的凭据信息;

设置模块 69,用于当第一判断模块 67的判断结果为否时,设置异常码。

密钥句柄生成参数为安全描述符哈希值。

获取与检索模块 63,具体用于根据登录数据接收接口模块 62获取的用户名获取安全描述符,根据安全描述符从预定文件中检索对应的密钥句柄和凭证公钥,根据安全描述符计算安全描述符哈希值;

第二发送模块 64,具体用于将获取与检索模块 63检索到的密钥句柄和包含安全描述符哈希值的待签名数据发送给认证设备。

第二发送模块 64,具体用于将获取与检索模块 63检索到的密钥句柄,预置参数和安全描述符哈希值发送给认证设备;

第二接收模块 65,具体用于接收认证设备返回的根据密钥句柄对应的私钥、预置参数和安全描述符哈希值生成的签名值,预定值和计数器值;

验签模块 66具体包括:

运算单元,用于根据凭证公钥对第二接收模块 65接收到的签名值进行运算得到第一哈希结果;

组成运算单元,用于根据安全描述符哈希值、预定参数和认证设备返回的预定值和计数器值组成第五数据,并对第五数据进行哈希运算得到第二哈希结果;

判断单元,用于判断第一哈希结果与第二哈希结果是否相同;

组成模块 68,具体用于当判断单元的判断结果为是时,根据用户名和密码组成登录系统所需的凭据信息;

设置模块 69,用于当判断单元的判断结果为否时,设置异常码。

绑定工具还包括:

显示与保存模块,用于根据获取与生成模块 51获取的安全描述符生成唯一恢复码相关数据,按照预定的算法根据唯一恢复码相关数据生成并显示唯一恢复码,将唯一恢复码相关数据与安全描述符对应保存在预定文件中;

凭据提供装置还包括:

命令链接点击函数接口模块,用于被系统调用时,凭据提供装置调用系统的栏状态设置函数将恢复码显示控件的状态由隐藏状态修改为显示状态;

登录数据接收接口模块 62,用于被系统调用时,接收登录数据,登录数据包括用户名和密码及唯一恢复码;

获取与检索模块 63、第二发送模块 64、第二接收模块 65和验签模块 66可以为:

运算与生成模块,用于根据登录数据接收接口模块 62接收的登录数据中的用户名获取安全描述符,根据安全描述符从预定文件中检索安全描述符所对应的唯一恢复码相关数据,并对唯一恢复码相关数据进行运算,生成唯一恢复码认证数据;

第一判断模块 67,用于比对唯一恢复码认证数据和登录数据中的唯一恢复码是否相同;

组成模块 68,用于当比对第一判断模块 67的判断结果为是时,根据用户名和密码组成登录系统所需的凭据信息;

设置模块 69,用于当比对第一判断模块 67的判断结果为否时,设置异常码。

凭据提供装置还包括:

命令链接点击函数接口模块,用于被系统调用时,凭据提供装置调用系统的栏状态设置函数将恢复码显示控件的状态由显示状态修改为隐藏状态。

显示与保存模块包括:

生成单元,用于生成随机数;还用于根据随机数和安全描述符生成唯一恢复码相关数据;还用于根据唯一恢复码相关数据生成唯一恢复码;

显示单元,用于显示生成单元生成的唯一恢复码;

保存单元,还用于将唯一恢复码相关数据与安全描述符对应保存在预定文件中。

密钥句柄生成参数为随机数;

保存模块 54,用于将密钥句柄、随机数和凭证公钥与安全描述符对应保存在预定文件中。

获取与检索模块 63,用于根据用户名获取安全描述符,根据安全描述符从预定文件中检索对应的密钥句柄和凭证公钥和随机数;

第二发送模块 64,具体用于将密钥句柄和包含随机数的待签名数据发送给认证设备。

绑定工具还包括:

第二判断模块,用于判断是否存在合法的认证设备;

第一发送模块,用于当第二判断模块的判断结果为是时,将密钥句柄生成参数发送给认证设备;

提示模块,用于当第二判断模块的判断结果为否时,提示用户插入认证设备,并触发第一判断模块 67。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号