1.移动云服务环境中具有隐私保护的认证和访问控制方法,其特征在于:包括以下步骤:
系统初始化阶段:注册中心协商初始化系统的参数{G,q,P,PK,h0,h1,h2,h3,h4},并向移动云服务环境中所有的服务提供商和用户发布系统的参数;
所述系统初始化阶段中,注册中心协商初始化系统的参数{G,q,P,PK,h0,h1,h2,h3,h4},并向移动云服务环境中所有的服务提供商和用户发布系统的参数的步骤,包括:注册中心RC协商选择一个阶数为q的椭圆曲线加法循环群G,P为G的生成元;注册中心RC协商确定5个安全哈希函数,分别为h0、h1、h2、h3、h4,有:* l
h0:{0,1}→{0,1}
* *
h1:{0,1}→Zq
*
h2:{0,1}→{0,1,2,...,1023}
* l
h3:{0,1}→{0,1}
* l
h4:{0,1}→{0,1}
其中,h0、h3、h4将输入的任意长度的二进制串转换成固定长度的输出二进制串,l为h0、*
h3、h4输出的二进制串的长度;h1中Zq表示集合{0,1,2,...,q‑1},将输入的任意长度的二进*
制串转换为集合Zq中的任意一个元素作为输出;h2将输入的任意长度的二进制串转换为集合{0,1,2,...,1023}中的任意一个元素作为输出;
注册中心RC选择一个系统私钥sk,计算系统公钥PK=sk·P,并向移动云服务环境中所有的服务提供商和用户发布系统的参数{G,q,P,PK,h0,h1,h2,h3,h4};
服务提供商注册阶段:服务提供商向注册中心提供相关信息以申请注册,若注册成功,则注册中心给服务提供商返回相关参数;
所述服务提供商注册阶段中,服务提供商向注册中心提供相关信息以申请注册,若注册成功,则注册中心给服务提供商返回相关参数的步骤,包括:服务提供商SPrj的服务资源Sj选择一个唯一的身份信息IDsj和可定制的服务权限映射表PMsj,并将身份信息IDsj和服务权限映射表PMsj通过安全通道发送给注册中心RC;其中,SPrj表示第j个服务提供商,1≤j≤m;
注册中心RC收到身份信息IDsj后,检测服务资源Sj的身份信息IDsj在服务身份信息表中是否已存在,如果存在,则拒绝本次注册请求;否则,注册中心RC随机生成一个随机整数swj,计算SPj=swj·P,其中SPj作为服务资源Sj的公钥;计算身份信息IDsj拼接公钥SPj的哈希值为HIDsj=h1(IDsj||SPj),SKj=swj+sk·HIDsj mod q,其中SKj为服务资源Sj的私钥,||为连接符,mod q为取模运算;
注册中心RC选择一个随机数Kj作为服务资源Sj的共享密钥,将一组元信息{IDsj,PMsj,SPj,Kj}插入到服务身份信息表中,将一组元信息{KSj,SPj,Kj}通过安全通道发送给服务资源Sj;服务资源Sj将来自注册中心RC发送的元信息{KSj,SPj,Kj}进行存储;
用户注册阶段:新的用户需要访问服务提供商时,向注册中心提供相关信息以申请注册,若注册成功,则注册中心给用户返回相关参数;
所述用户注册阶段中,新的用户需要访问服务提供商时,向注册中心提供相关信息以申请注册,若注册成功,则注册中心给用户返回相关参数的步骤,包括:用户Ui选择唯一的身份信息IDi、口令PWi和访问权限集合 ,其中,Ui
表示第i个用户,1≤i≤n,SETID表示各个服务资源的身份信息IDs1,IDs2,...,IDsm,SETP表示用户Ui在各个服务资源的访问权限P1,P2,...,Pm;用户Ui选择一个随机数bi,利用安全哈希函数h0进行加密,计算密文Ci=h0(IDi||PWi||bi);用户Ui通过安全通道将一组元信息{PI,IDi,Ci}和个人信息发送给注册中心RC;
注册中心RC收到用户Ui发送的元信息{PI,IDi,Ci}后,检测用户Ui的身份信息IDi在用户身份信息表中是否已存在,如果存在,则拒绝本次注册请求;否则,注册中心RC通过个人信息确认访问权限集合PI的访问权限,注册中心RC确认后的用户Ui的访问权限集合为PI`;
注册中心RC根据用户Ui的访问权限集合PI`与各服务资源Sj的共享密钥Kj为用户Ui构造一颗权限树MTi,并得出权限树MTi的根值Rt;注册中心RC随机生成一个随机整数wi,计算Gwi=wi·P,其中Gwi作为用户Ui的公钥;计算哈希值HIDi=h1(IDi||Gwi||Rt||LTi),KUi=wi+sk·HIDi mod q,其中KUi为用户Ui的私钥,LTi为对用户Ui的服务时限;
注册中心RC计算密文Fi=Ci⊕(KUi||Gwi||MTi||LTi),并为智能卡SC设置本地验证信息Ver=h3(h2(KUi||Gwi||MTi||LTi||Ci));
注册中心RC将一组元信息{IDi,Gwi,LTi,MTi}插入用户身份信息表中,将一组元信息{Fi,Ver,PI,Slt}通过安全通道发送给用户Ui,其中集合 ;用户Ui将接收到的元信息{Fi,Ver,PI,Slt}安全存储到智能卡SC中;
所述权限树为每个节点最多有两个子节点的二叉树,叶节点的路径值为Lj=h3(LTi||Pj||Kj),其中,Lj表示第j个服务提供商对应的叶节点,LTi表示第j个服务提供商对第i个用户约定的服务时限,Kj表示第j个服务提供商的共享密钥;
认证和授权阶段:用户需要访问服务提供商所提供的服务资源时,服务资源对用户的身份进行认证,并对用户的访问权限进行授权;
所述认证和授权阶段中,用户需要访问服务提供商所提供的服务资源时,服务资源对用户的身份进行认证,并对用户的访问权限进行授权的步骤,包括:用户Ui向智能卡SC输入身份信息IDi和口令PWi以认证自身的身份,智能卡SC利用安全哈希函数h0计算密文Ci=h0(IDi||PWi||bi),通过本地存储的Ci⊕Fi取出用户Ui的私钥KUi、公钥Gwi、权限树MTi以及服务时限LTi,计算本地验证信息Ver`=h3(h2(KUi||Gwi||MTi||LTi||Ci)),验证Ver`与Ver是否相等,若不相等,则禁止用户Ui访问服务资源Sj;否则,智能卡SC获取用户Ui对服务资源Sj的访问路径PT={Au1,Au2,...,Aua};
智能卡SC选择一个会话随机数rx,计算会话新鲜数x=h1(rx||KUi),通过x·P=X在公开信道传送X;通过智能卡SC存储的集合Slt取出需要访问的服务资源Sj的身份信息IDsj和对应的公钥SPj,通过安全哈希函数h1取其哈希值为hsi,利用公钥SPj与会话新鲜数x构造会话密钥k=x·(SPj+hsi·PK);用安全哈希函数h1计算(IDi,IDsj,Pj,X,k,T1)的摘要值为hi=h1(IDi||IDsj||Pj||X||k||T1),Pj为用户Ui对第j个服务资源的访问权限,T1为当前的时间戳;利用私钥KUi对摘要值hi进行签名得到签名信息δi=KUi+x·hi mod q,将用户Ui的信息异或操作至密文CT中,CT=(IDi||δi||Gwi||Pj||PT||LTi)⊕h0(IDsj||k||T1);智能卡SC给出用户Ui的用户验证值V1=h3(IDi||IDsj||δi||Gwi||Pj||PT||LTi||k||T1),用户Ui通过公开信道将一组元信息{T1,X,CT,V1}发送给服务资源Sj;
服务资源Sj接收到元信息{T1,X,CT,V1}后,检查时间戳T1的新鲜性,若已过期,则验证失败;否则,通过服务资源Sj的私钥KSj计算会话密钥k`=KSj·X,通过身份信息IDsj、会话密钥k`和时间戳T1从CT中取出需要验证的用户相关信息,即身份信息IDi、签名信息δi、公钥Gwi、访问权限Pj、访问路径PT、服务时限LTi,CT⊕h0(IDsj||k`||T1)=IDi||δi||Gwi||Pj||PT||LTi;
计算V1`=h3(IDi||IDsj||δi||Gwi||Pj||PT||LTi||k`||T1)与V1是否相等,若不相等,则服务资源Sj认证用户Ui失败,并结束会话;否则,服务资源Sj对用户Ui的访问权限进行授权;
服务资源Sj利用与注册中心RC的共享密钥Kj、访问权限Pj、访问路径PT、服务时限LTi恢复权限树MTi的根值Rt,恢复用户Ui的摘要值hi`=h3(IDi||IDsj||Pj||X||k`||T1),恢复用户Ui的HIDi`=h1(IDi||Gwi||Rt||LTi);检验等式δi·P=hi`·X+Gwi+HIDi`·PK是否成立,若不成立,则授权失败,并结束会话;否则服务资源Sj生成会话随机数ry,计算会话新鲜数y=h1(ry||KSj),计算y·P=Y,将y隐藏起来,给出服务验证值V2=h3(IDi||X||Y||k`);服务资源Sj通过公开信道将元信息{Y,V2}发送给用户Ui;
用户接收到元信息{Y,V2}后,计算V2`=h3(IDi||X||Y||k),检查V2`与V2是否相等,若不相等,则用户Ui认证服务资源Sj失败,否则认证成功;
用户访问权限更新阶段:用户需要更新对服务资源的访问权限时,用户向注册中心提交权限更新请求,注册中心更新用户的访问权限后,更新该用户的相关参数并发送给用户,用户更新智能卡中的相关参数;
所述用户访问权限更新阶段中,用户需要更新对服务资源的访问权限时,用户向注册中心提交权限更新请求,注册中心更新用户的访问权限后,更新该用户的相关参数并发送给用户,用户更新智能卡中的相关参数的步骤,包括:用户Ui在智能卡SC中输入身份信息IDi口令PWi和访问权限集合uPI=
智能卡SC选择一个会话随机数urx,计算会话新鲜数ux=h1(urx||KUi),通过ux·P=uX;
通过注册中心RC的公钥PK构造会话密钥uk=ux·PK;用安全哈希函数h1计算(IDi,uPI,uX,uk,T2)的摘要值uhi=h1(IDi||uPI||uX||uk||T2),T2为当前的时间戳;利用私钥KUi对摘要值uhi进行签名得到签名信息uδi=KUi+ux·uhi mod q;将注册中心RC验证用户Ui需要的身份信息IDi、签名信息uδi、访问权限集合uPI、会话密钥uk、时间戳T2、安全哈希函数h0封装到密文uC1中,有uC1=(IDi||uδi||uPI)⊕h0(uk||T2);智能卡SC给出用户Ui的用户验证值uV1=h3(IDi||uδi||uPI||Gwi||LTi||uX||uk||T2);用户Ui通过公开信道将一组元信息{T2,uX,uC1,uV1}发送给注册中心RC;
注册中心RC接收到用户Ui发送的元信息{T2,uX,uC1,uV1}后,注册中心RC检查时间戳T2的新鲜性,若已过期,则验证失败;否则,通过注册中心RC的私钥sk计算会话密钥uk`=sk·uX,通过会话密钥uk`和时间戳T2从用户Ui发送的密文uC1中取出用户Ui的身份信息IDi、签名信息uδi、访问权限集合uPI,有uC1⊕h0(uk`||T2)=IDi||uδi||uPI;
注册中心RC根据用户Ui的身份信息IDi在用户身份信息表中查询用户Ui的公钥Gwi、权限树MTi和服务时限LTi,利用会话密钥uk`计算摘要值uhi`=h1(IDi||uPI||uX||uk||T2),计算uHIDi`=h1(IDi||Gwi||Rt||LTi);使用用户Ui的公钥Gwi恢复出的签名信息uδi`,并判断与取出的签名信息uδi是否相等;以及计算uV1`,并判断与uV1是否相等,即uδi`·P=uhi`·uX+Gwi+uHIDi`·PK,uV1`=h3(IDi||uδi||uPI||Gwi||LTi||uX||uk`||T2),若任一等式不成立,则认证用户Ui失败,并结束会话;否则,注册中心RC继续根据用户Ui提供的信息确认访问权限集合uPI中用户Ui对各服务资源的访问权限;
确认后,注册中心RC生成uPI`为用户Ui对各服务资源的访问权限,根据访问权限Puj,、注册中心与各服务资源的共享密钥Kj以及各服务资源约定用户的服务时限LTi重构用户Ui的权限树MTi*,进而计算权限树MTi*的根植Rt*;注册中心RC生成一个随机整数wj`,更新用户Ui的公钥Gwi*=wj`·P,计算哈希值HIDi*=h1(IDi||Gwi*||Rt*||LTi),更新用户私钥KUi*=wj`+sk·HIDi* mod q;
注册中心RC生成会话随机数ury,计算会话新鲜数uy=h1(ury||sk),计算uY=uy·P;利用安全哈希函数h4计算哈希值uSk=h4(IDi||uX||uY||uy·uX||uk`),将验证后的用户Ui更新各叶节点的路径值Lu1||Lu2...||Lum、公钥Gwi*、私钥KUi*、会话密钥uk`、身份信息IDi和哈希值uSk经过异或操作至密文uC2中,有uC2=(Lu1||Lu2...||Lum||Gwi*||KUi*)⊕h0(IDi||uk`||uSk);注册中心RC计算用户Ui需验证的用户验证值uV2=h3(IDi||uX||uY||Gwi*||KUi*||Rt*||uk`||uSk);最后注册中心RC将一组元信息{uY,uC2,uV2}通过公开信道发送给用户Ui;
用户Ui接收到元信息{uY,uC2,uV2}后,恢复出uSk`=h4(IDi||uX||uY||ux·uY||uk),利用身份信息IDi、会话密钥uk和uSk`解密出注册中心RC发送的各叶节点的路径值Lu1||Lu2...||Lum、公钥Gwi*、私钥KUi*,有Lu1||Lu2...||Lum||Gwi*||KUi*=uC2⊕h0(IDi||uk||uSk`);用户Ui通过路径值Lu1||Lu2...||Lum恢复出权限树MTi*,进而获得权限树MTi*的根植Rt*;用户Ui计算uV2`=h3(IDi||uX||uY||Gwi*||KUi*||Rt*||uk||uSk),并uV2`与验证注册中心RC发送的uV2是否相等,如果不相等则更新权限失败;否则,计算密文Fi*=Ci⊕(KUi*||Gwi*||MTi*||LTi),Ver*=h3(h2(KUi*||Gwi*||MTi*||LTi||Ci)),使用Fi*、Ver*更新智能卡SC中的Fi、Ver;
用户口令更新阶段:用户需要更新口令时,用户使用旧的口令向智能卡确认身份后,更新智能卡中新的口令的相关参数;
所述用户口令更新阶段中,用户需要更新口令时,用户使用旧的口令向智能卡确认身份后,更新智能卡中新的口令的相关参数的步骤,包括:用户Ui在智能卡SC中输入身份信息IDi和旧的口令PWi,通过安全哈希函数h0计算Ci=h0(IDi||PWi||bi),利用智能卡SC保存的Fi,将Fi⊕Ci取出计算Ver`相关的值KUi||Gwi||MTi||LTi,计算Ver=h3(h2(KUi||Gwi||MTi||LTi||Ci)),验证Ver`与智能卡SC中保存的Ver是否相等,如果不相等,则拒绝修改口令;否则,输入新的口令PWi^;
智能卡SC计算出新的密文Ci^=h0(IDi||PWi^||bi),Fi^=Fi⊕Ci⊕Ci^,新的用户验证值Ver^=h3(h2(Fi⊕Ci)Ci^);分别用Fi^和Ver^更新智能卡SC中保存的Fi和Ver。