本期主要介绍随机数在密码学中生成Nonce的用法。
Nonce是Number once的缩写,顾名思义在密码学中将只能被使用一次的随机数称为Nonce。即该随机数一旦被应用过就失效了,无法再次使用。不论是伪随机数还是真随机数均可生成Nonce,其主要作用是防止重放攻击。在认证协议或者数据加密传输体系中,Nonce会作为种子数据、种子向量,参与到身份识别或数据有效性判别之中。
在基于对称算法实现的身份认证体系中,系统A作为认证发起方生成Nonce后,将其发送给未知身份的系统B,后者使用认证密钥对Nonce加密后将密文C返回给系统A。最终,系统A使用同样的认证密钥对Nonce进行加密处理生成密文D,通过比对C和D的值来判断系统B身份是否合法。Nonce在其中的作用很关键,如果Nonce的值是固定不变的,就意味着密文C是不变的,如此一来,攻击者可以通过监听截获认证密文C,每次系统A发起认证时,攻击者都将固定的密文C返回给系统A,伪造真实身份,此法叫做线路重放攻击。
在数据加密传输体系中,例如充值系统中,有的数据起着关键作用,例如账户充值信息。此时若Nonce不变或者发生规律性变化,则生成的充值指令也不会变化或者做有规律变动,那么攻击者就可以通过线路重放,可以伪造充值信息,完成对账户的非法充值操作。