算法挑战应答设计包括对称加密解密、非对称加密解密、数字签名、Hash函数等算法设计。
1.对称加密/解密的运用。
挑战应答验证的几种方法都运用该对称密钥加密。在这里该秘密是提证和验证者都知道的共享密钥。函数就是应用于挑战中的加密算法。
①第一种方法。
在第一种方法中,先要保证提证者、验证者共享密钥,随后验证者向提证者发送一个随机数来挑战提证。随机数一定是随时间变化的,每次都要创建一个不同的随机数。提证方运用在提证与验证者间共享的密钥来应答挑战。
②第二种方法。
在第二种方法中,随时间变化的值是个时间戳。很明显,在这种方法中,本来挑战信息是由验证者发送给提证的。然而,假设提证方客户端和验证者服务器时钟是同步的,提正方知道现在的时刻,这就意味着不需挑战信息。
结果是验证可用一个(当前时刻)信息实现挑战应答。
2.带密钥Hash函数的应用。
该方式运用了一个带密钥的散列Hash函数(MAC),该方案的优势是保护了挑战信息和应答信息的完整性,且同时用了一个秘密,即密钥。
3.非对称加密/解密的挑战应答。
应答挑战方式是解密挑战方法,该方法是一种单向加密。在实体验证中,应运用非对称加密解密的密钥,而不是对称加密/解密的密钥。
提证方为了表明自己拥有的私钥与公钥有关,首先需要公布公钥。
验证者用提证方的公钥加密挑战内容,从而提证方就可用自己私钥来解密该内容。并报告验证者所加密的内容,从而应答验证者的挑战。
4.数字签名的应用。
实体验证也可用数字签名实现。如果用实体验证一个数字签名,提证方就要用私钥签名。
首先,提证方公布公钥,然后服务商验证者发送明文挑战提证方,提证方随后用私钥签名。由此验证者可解密,验证的摘要若等于签名,则提证方应答正确。