1.基于比特自检PUF的身份认证系统的认证方法,包括设备端和服务器端;
设备端包括:
非易失性存储器模块,用于存储激励信号和辅助数据;
异或加密模块,实现异或加密功能;
BST‑PUF密钥生成模块,用于从BST‑PUF生成的响应中提取可靠且随机的密钥,包括BST‑PUF电路、鲁棒响应提取器和SPONGENT Hash算法模块;BST‑PUF电路在激励信号的作用下产生大量的响应r和相应的可靠标志位F;鲁棒响应提取器根据可靠位标志F,将可靠标志位为“1”的响应提取出来,将可靠标志位为“0”的响应丢弃,从而得到高可靠性鲁棒响应rc;
SPONGENT Hash算法模块以鲁棒响应rc作为输入,生成随机性好且固定长度的密钥;
设备真随机数产生器,产生L比特的真随机数;
设备第一伪随机函数模块,以L比特密钥和L比特信息为输入,产生长度为4个L比特的伪随机数;
设备第二伪随机函数模块,以L比特密钥和L比特信息为输入,产生长度为1个L比特的伪随机数;
控制器模块,产生控制信号,控制设备端内部各模块工作;
服务器端包括:
数据库模块,存储密钥信息;
异或加密模块,实现异或加密功能;
服务器真随机数产生器,产生L比特的真随机数;
服务器第一伪随机函数模块,与设备第一伪随机函数模块相同,以L比特密钥和L比特信息为输入,产生长度为4个L比特的伪随机数;
服务器第二伪随机函数模块,与设备第二伪随机函数模块相同,以L比特密钥和L比特信息为输入,产生长度为1个L比特的伪随机数;
其特征是,认证方法通过设备端和服务器端实现注册与密钥交换;
S1、注册包括以下步骤:
S1.1、服务器真随机数产生器随机产生一个L比特的激励信息c1,并将激励信息c1发送至设备端;
S1.2、设备端通过BST‑PUF密钥生成模块,以一个长度为L比特的激励信息c1作为BST‑PUF电路输入,输出一个L比特的PUF响应值r1和一个L比特的可靠性标识值F;再由鲁棒响应提取器将可靠性标志值为1的响应提取出来得到高可靠性鲁棒响应rc,输入到SPONGENT Hash算法模块中生成L比特的加密密钥k1,并将密钥k1返回服务器端;其原始激励c1和辅助数据h1存储在非易失性存储器NVM中;
S1.3、设定初始共享密钥k1=kold,kold为初始密钥;
S1.4、服务器端通过数据库模块存储设备端的初始共享密钥k1、初始密钥kold,设备端通过非易失性存储器模块存储设备端的激励信息c1和辅助数据h1,完成服务器端对设备端的注册;
S2、密钥交换包括以下步骤:
S2.1、服务器端通过服务器真随机产生器产生一个随机数m1并发送至设备端;
S2.2、设备端接收到随机数m1后,由设备真随机数产生器产生一个随机数m2;
S2.3、设备端读取存储在非易失性存储器模块内的激励信息c1输入到BST‑PUF电路中产生带噪声的响应r′;然后鲁棒响应提取器从NVM中读取辅助数据h1,并使用h1从r′中提取鲁棒响应rc;最后通过SPONGENT Hash算法模块恢复加密密钥k1;
S2.4、设备端以初始共享密钥k1、m1||m2为输入,通过设备第一伪随机函数模块产生4个伪随机数s1,...,s4,每个伪随机数的长度均为L,用于后续的认证和加密;
S2.5、设备端通过设备真随机产生器产生一个激励c2;
S2.6、设备端与步骤S1.2相同的方式,以激励c2作为输入,生成密钥k2和辅助数据h2;
S2.7、设备端将之前设备第一伪随机函数模块生成的一个随机数s2与k2利用异或加密模块生成加密数据u;
S2.8、设备端以s3,m2‖u作为输入,利用伪随机函数PRF'生成伪随机数v,将信息(s1,m2,u,v)发送至服务器端进行身份认证;其中,数据v作为消息认证码参与认证消息的传递,服务器端对信息传递的完整性进行验证,防止攻击者对认证信息的篡改;
S2.9、服务器收到信息(s1,m2,u,v)之后,在数据库模块中利用穷举的方法查找对应的初始共享密钥k1和初始密钥kold;
S2.10、服务器端以初始共享密钥k1、m1||m2为输入,通过服务器第二伪随机函数模块产生4个伪随机数s1′,...,s4′,若设备端是可信的,则伪随机数s1′,...,s4′和伪随机数s1,...,s4相同;
S2.11、服务器端首先验证伪随机数s1′和伪随机数s1是否相等,若相等,且参数v:=PRF'(s′3,m2||u)验证成功,则服务器端通过对设备端的认证,跳转至步骤2.14;
S2.12、若伪随机数s1′和伪随机数s1不相等,则服务器端使用初始密钥kold替代初始共享密钥k1再次通过服务器第二伪随机函数模块产生4个伪随机数s1′,...,s4′;
S2.13、服务器端验证伪随机数s1′和伪随机数s1是否相等,若相等,且参数v:=PRF'(s′3,m2||u)验证成功,则服务器端通过对设备端的认证,跳转至步骤2.14;否则,认证失败,服务器端通过服务器真随机产生器产生一个随机数s4′送至设备端;
S2.14、服务器端利用异或加密模块,将伪随机数s2和u异或得到密钥k2,并进行存储数据的更新(k1,kold):=(k2,k1);
S2.15、设备端接收信息s4′后,验证s4是否等于s4′,若相等则更新设备端的存储数据(c1,h1):=(c2,h2),作为下一次认证的认证信息,实现服务器端和设备端之间的安全认证,否则认证失败。