一种支持部分出示的属性证明方法与系统与流程

文档序号:12133552阅读:230来源:国知局
一种支持部分出示的属性证明方法与系统与流程

本发明属于计算机技术与信息安全技术领域,涉及使用一个公私钥对进行属性签发和属性出示,并具有隐私保护的方法,具体表现为一种属性证明方法与系统。



背景技术:

进入21世纪以来,互联网的发展已成为推动世界经济可持续发展和社会进步的最重要的推动力之一。随着网络普及率和互联网用户数量不断提升,互联网的应用得到了迅速发展,特别是即时通讯、个人空间、微博、社交网络、电子商务和在线娱乐等应用大大改变了我国人民的生活方式和习惯,使得网络真正成为我国人民获取信息、交流讨论、购物娱乐的载体。然而,在互联网上,由于用户的身份及相关信息难以识别,互联网络被恶意的用户利用,成为违法犯罪的工具。例如恶意网民通过在网络上发布各种谣言,对某些个人和政府进行攻击和恶意诽谤,以达到各种不可告人的目的,从个人到政府机关都可能成为不实言论的受害者。目前我国已经要求一些网络服务例如微博等等实行实名制,但实名制也带来了用户隐私(例如身份证号码、年龄、性别)信息泄露等等新的问题。因此如何在保护隐私的同时证明用户的属性(例如年满18周岁)等等成为亟需解决的问题。

用户的属性可以分为两类,一种是自然属性,包括用户的姓名、年龄、性别、出生地等等与自身相关的属性,另一种是可获得属性,包括用户的职业、职务,还包括其它一些电子属性,保护电子购票记录、诊疗记录等等。

为了证明用户的属性是真实的,目前采用的方法一般通过专用接口,向用户属性的管理机构进行查询,由权威管理机构给出属性的证明。但这种方法要求应用系统都通过接口调用属性提供方的服务,属性提供方成为了瓶颈。不仅增加了用户和应用系统的使用成本,而且用户的隐私也无法得到保障。

随着公钥基础设施应用的推进,在公钥基础设施的基础上通过授权管理基础设施管理用户的属性和权限,以完成授权和访问控制。其中属性通过属性证书的形式进行发布和证明。但这种方法主要用在访问控制系统中,需要完整的授权管理基础设施支持,应用和维护成本都较高。



技术实现要素:

本发明的目的在于提供一种支持部分出示的属性证明方法和系统,实现用户属性的签发和出示,并具有部分出示和隐私保护能力。

具体的说,本发明包括以下两个重要的方面:

一、属性证明方法

本发明的属性证明方法包括一个基于公钥密码学的属性证明方案,该方案包括系统建立、属性签发和属性出示三部分。完成用户从属性提供方(或称属性服务提供方)获取属性,并向依赖方(向用户提供服务并信任属性提供方的信息系统)证明该用户具有可信属性提供方签发的属性,并出示相应的属性值。

该属性证明方案的基本性质包括:

1)基于公钥密码学实现,可以支持RSA算法和ECC算法;

2)属性提供方可以在一个属性证书(属性凭证)中签发多个属性,且属性的名称和顺序不需要预先确定;

3)在包含多个属性的属性证书中,用户可以选择任意数量的属性进行出示,同时保证剩余属性的机密性;

4)用户出示凭证时无需出示公钥证书,具有隐私保护性质。

该签名方案包含三个主要的算法,各算法的功能如下:

A.系统建立算法:该算法是由属性提供方完成的算法,输入安全参数,输出系统公开参数;

B.属性签发协议:该算法是由属性提供方和用户完成的协议,输入一个用户的属性集,属性提供方密钥和系统公开参数,生成用户的属性凭证;

C.属性出示算法:该算法是由用户和依赖方完成的协议,用户通过协议向依赖方证明该用户拥有属性提供方签发的有效的属性凭证。

二、属性证明系统

属性证明系统的主要参与方有属性服务提供方(Attribute Service Provider,ASP),用户代理(User Agent,UA),以及依赖方(Rely Party,RP)三部分,其中ASP为用户签发属性凭证;用户代理UA代理用户完成属性凭证签发协议和出示协议等;依赖方使用用户的属性验证用户具有相应的权限并提供相应的服务。

该属性证明系统的构架如图1中所示,图中为一个ASP,一个用户User,一个依赖方RP。在实际应用中,ASP可以为多个用户和RP提供属性服务,同时RP也可以信任多个ASP,即RP可以接受不同的ASP签发的属性凭证。

系统可以分为三部分:ASP子系统、用户代理子系统和属性凭证验证子系统(该子系统通常嵌入在RP中)。图2给出了各个子系统的的模块和接口,详细说明如下:

A.ASP子系统

用户属性管理模块:管理用户的属性信息;

用户身份鉴别模块:验证用户身份(持有的公钥证书)的有效性;

属性凭证签发模块:为用户属性签发凭证;

审计模块:记录属性凭证签发信息。

B.用户代理子系统

属性凭证管理模块:存储用户获取的属性凭证;

属性凭证签发模块:与ASP完成属性签发协议,获取属性凭证;

属性凭证出示模块:与RP完成属性出示协议;

USBKey、智能卡等通信模块:在支持USBKey和智能卡存储用户密钥对的系统中,该模块负责与相应的硬件通信,完成获取公钥证书,获取数据签名等操作;

身份鉴别模块:完成用户身份的鉴别协议,并建立安全信道。

C.属性凭证验证子系统(通常嵌入RP)

该子系统包括属性凭证验证模块:与用户完成属性出示协议,获取用户的属性,并验证用户属性的有效性。

ASP子系统从相关系统(例如电子售票系统等赋予用户某种属性的系统)中获取用户的属性,根据用户的请求,验证用户身份的有效性,并为用户签发属性凭证。其中,用户的身份通过由可信机构签发的公钥证书进行证明,即需要验证用户拥有有效的从可信机构获取的公钥证书,且持有与公钥匹配的私钥信息。用户的密钥对可以是RSA算法和ECC算法产生的。用户的密钥对可以是存储在UKey、智能卡等硬件设备中,也可以存储在用户的计算机等终端设备中。

用户代理子系统运行在用户端,负责管理用户的属性、与ASP完成属性签发协议、与RP完成属性出示协议。其中用户的属性可以存储在用户代理内部、也可以存储在硬件中,例如USBKey、智能卡等。用户的私钥可以存储在硬件中(例如USBKey、智能卡等),也可以加密存储在用户代理内部。当存储在硬件设备中时,用户代理通过接口调用硬件完成签名过程。

属性验证子系统通常嵌入到RP中,对用户的身份进行验证,并验证用户属性凭证的有效性。

和现有技术相比,本发明的优势主要体现在:

1)无需为用户的每个属性生成对应的密钥,只需要用户拥有一对公私钥即可;

2)支持RSA和ECC算法,同时支持基于RSA和ECC的证书,支持国产公钥密码算法SM2;

3)一个属性凭证中可以包含多个属性,属性的名称和在属性凭证中顺序无需预先指定;

4)属性出示过程中可以仅出示部分属性,依赖方不能获取到未出示的属性的任何信息;

5)属性出示过程无需出示公钥证书。

附图说明

图1是本发明的属性证明系统的架构图。

图2是本发明的属性证明系统的模块及流程示意图。

具体实施方式

为使本发明的上述目的、特征和优点能够更加明显易懂,下面通过具体实施例和附图,对本发明做进一步说明。

本发明的属性证明系统包含三个主体:用户,属性提供方和依赖方三部分。用户是属性的拥有者,通过属性提供方获得属性凭证,并在需要出示属性凭证时证明其拥有有效的属性凭证。在实际系统中,用户和用户代理(运行在计算机、读卡器中的软件,帮助用户实现属性证明的过程)合作共同完成属性签发的过程。属性提供方提供属性的签发服务,其中属性的来源与具体的应用相关,例如在电子购票系统中,用户付款购票后,属性提供方即可为用户签发购票凭证。依赖方为用户提供应用服务,并需要使用用户的某些属性,依赖方一般是网络应用系统。

本发明的属性证明方法包含三个系统过程:系统建立,属性凭证签发协议,属性凭证出示协议。系统建立过程为系统产生必须的公共参数,并通过公开通道发布,便于用户获取。凭证签发协议由用户和属性提供方执行签发协议,最终用户得到由属性提供方签发的有效的属性凭证。属性出示协议由用户和依赖方执行属性凭证出示协议,最终用户向依赖方证明其拥有由属性提供方签发的有效的属性凭证。

实施例1.属性证明方法

下面给出一个本发明涉及的属性证明方法的具体实例:

1.系统建立算法

系统建立算法仅在属性提供方初始化时执行一次,为系统选择合适的公开参数,并把公开参数通过公开信道分发,使得用户和其它使用属性服务的参与方可以方便的获取。

属性提供方生成一对公私钥对,并从可信的CA机构获得相应的公钥证书,用来证明属性提供方的身份和生成签名(身份鉴别的密钥对和生成属性凭证的密钥对可以不同,在这种情况下,属性提供方有两对密钥)。该公私钥对既可以是基于RSA算法,也可以基于SM2算法,具体的算法并不影响本系统。

首先属性提供方选择一个阶为素数p的素数阶循环群G,其中p是群的阶。属性提供方设定系统支持的最大属性个数n;选择一个哈希函数H:{0,1}*→Zp(即任意长度的比特串到整数的映射,其中Zp是p阶整数群);并随机选择n+4个G中的元素e0,e1,e2,e3,g1,g2,g3,...gn,则方案的公共参数为{G,p,e0,e1,e2,e3,g1,g2,g3,...gn},其中e0、e1、e2、e3用来把公钥的两个分量、随机化和用户唯一标识信息映射到循环群中,在实际应用中,可以根据需要嵌入的数据数量选择合适的元素。例如如果需要再嵌入一个属性凭证的有效期信息,则需要再选择一个参数e4,在计算时则把e4加入连乘部分即可。g1至gn用来把属性信息映射到循环群中,数量和系统支持的单个属性凭证中可包含的最大属性个数相同。为了保证公开参数的有效性,属性提供方可以在分发公共参数的同时,生成并分发他对公共参数的签名信息。

2.签发协议

用户与属性服务提供方通过签发协议,实现属性服务提供方为用户签发属性凭证。在执行签发前,用户应从可信的CA机构获取公钥证书,作为身份的证明。属性提供方应确认持有相应证书的用户具有待签发的属性。用户和属性提供方的交互流程如下:

1)用户向属性提供方发送属性凭证签发申请,申请应提交用户的公钥证书和要获取的属性列表{Certuser,AttrList=[AttrName1,AttrName2,…,AttrNamen]}。属性列表可包含多个属性,也可为空值。若属性列表为空,则属性提供方按照管理要求签发默认属性。

2)属性提供方接收并验证用户证书的有效性,并发送响应给用户。响应应包括属性提供方的公钥证书和用户请求签发的属性列表中该属性提供方具有签发权限的部分:{Certissuer,AttrList=[AttrName1,AttrName2,…,AttrNamen]}。

3)用户验证属性提供方的公钥证书的有效性,并与属性提供方执行一次基于公钥的身份鉴别协议。身份鉴别协议可以采用国家标准《GB/T 15843.3信息技术安全技术实体鉴别第三部分:采用数字签名技术的机制》中的公钥鉴别方案。也可采用其它基于公钥的鉴别协议。最终属性提供方验证了用户拥有公钥证书对应的私钥。

4)属性提供方在鉴别协议完成后,获得了用户的公钥(记做(PK1,PK2))和用户的公钥证书识别码(记做ID_Code)(该标识符唯一标识了用户的公钥证书)。本发明把用户的公钥信息分成这两部分嵌入在属性凭证中。该方法可以支持RSA和ECC公钥密码算法。采用一个 ID_Code字段把属性证书和用户的身份(通过公钥证书)绑定在一起。该ID_Code是证书中包含的唯一性标识,可以采用证书的序列号、DN字段等;在网络电子身份标识(eID:electric Identity)中可以采用eID标识码(eID_Code)。属性提供方根据用户ID_Code和证书签发机构信息检查并确认用户具有的属性信息,并根据用户的请求属性列表,采取如下操作生成属性凭证:

a)选择一个随机数r∈Zp,计算待签名数据:

其中:

i.在RSA体制下PK1=N(即模数),PK2=e(即公钥);在椭圆曲线体制下PK1=公钥的x坐标,PK1=公钥的y坐标;

ii.k是要签名的属性个数;

iii.随机数r和是可选的,对属性凭证进行盲化,保护属性隐私。

iv.对每一个属性,构造成名值对的形式:AttrNamei:i:AttrValuei,其中AttrName表示属性名,AttrValue表示属性的值,中间字段i表示属性在属性签名中的位置,从1开始计算,半角冒号作为分隔符。此外,任何非字母、汉字和数字的可打印字符都可以作为分隔符,不影响本发明的正确性。

本发明采用算法生成属性凭证,该算法的模式为对每一个属性名和属性值进行散列计算并映射到循环群中,然后对属性映射的群元素进行连乘。因此用户可以选择属性凭证中包含的任意数量的属性进行出示。

b)使用属性提供方的签名私钥对数据进行签名,签名σ=Sigsk(data),其中Sig表示公钥签名算法,sk表示签名使用的私钥。

c)按照《GB/T 16264.8-2005信息技术开放系统互联目录第8部分:公钥和属性证书框架》的要求生成一个有效的属性证书。其中仅σ作为证书的Attribute字段。同时,为了保护用户的隐私,Holder字段的用户信息可以不填写,或者填写假名。

d)发送属性凭证{r,<AttrNamei:i:AttrValuei>,σ,AttrCert}给用户,其中AttrCert表示属性证书。

5)用户收到属性服务方签发的属性凭证时采用Verify算法对属性凭证的有效性进行验证。验证过程如下:

a)验证属性列表是否正确;

b)计算使用属性提供方的公钥验证签名σ是否有效;

c)验证属性证书的有效期、签发者信息是否正确;

d)使用属性提供方的公钥验证属性证书的签名是否有效;

e)如果上述验证过程都正确,则接受属性提供方签发的属性凭证,否则拒绝接受属性凭证,并通知属性提供方验证失败的信息。

3.出示协议

用户与属性提供方通过出示协议,实现用户向依赖方证明其拥有有效的由属性提供方签发的属性凭证。在执行协议前,用户应从信任提供方获得公钥证书,并从属性提供方获取了所需的属性凭证。用户和依赖方的交互流程如下:

1)为了防止中间人攻击,用户首先验证依赖方的公钥证书,并与依赖方建立TLS安全会话信道,本协议的后续部分在TLS的保护下完成;

2)若用户只需要出示其中的某一部分属性,则属性凭证中的属性列表减去要出示的属性构成的集合设为V,然后计算然后发送<PK1,PK2,<要出示的属性列表>,σ’,σ,AttrCert>给验证者。

3)依赖方首先验证属性证书的有效期,验证签发者信息是否有效;

4)如果属性证书验证通过,则与用户进行一次挑战响应协议,确认用户拥有公钥对应的私钥,流程如下:

a)依赖方选择一个随机数,发送给用户;

b)用户收到随机数后,使用私钥对随机数进行签名,并返回签名数据;

c)依赖方使用公钥验证签名是否正确。若验证通过,则继续进行;否则结束协议。

5)验证用户的有效性之后,验证者计算

然后使用属性提供方的公钥验证σ是否是data的一个有效签名,如果是有效的签名,则认为用户的属性证明有效,否则认为用户的属性证明无效。

实施例2.属性证明系统

本实施例旨在提供本发明的属性证明系统的一个具体实例。

该系统包含三个主体:ASP、UA和RP。具体的实施过程为三段:系统初始化,属性签发协议和属性出示协议。

本实施例基于如下的情景设定:用户User需要访问RP的某项服务,RP需要获得用户的 某个属性(例如年龄大于18岁)来确定用户具有访问该项服务的权限。具体过程如下:

1)ASP运行系统建立算法,保存生成的主密钥,并将系统公开参数发布出来,RP和User通过公开信道获取公开参数;

2)User访问RP的某项服务,RP要求用户出示一个属性证明;

3)如果User已经有相应属性的凭证,则跳转到6)。否则,跳转到4);

4)User通过用户代理向ASP发起凭证签发请求,其中要签发的属性列表中包含需RP要求的属性;

5)UA与ASP执行属性签发协议,获取到属性凭证;

6)UA与RP执行属性出示协议,向RP出示该RP需要的特定属性,而隐藏属性凭证中的其它属性;

7)RP如果验证用户属性有效,则向User提供服务,否则拒绝提供服务。

以上实施例仅用以说明本发明的技术方案而非对其进行限制,本领域的普通技术人员可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明的精神和范围,本发明的保护范围应以权利要求书所述为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1