形式化地,我们用S代表服务器,P代表密码生成器,PIN代表用户启动密码生成器的身份识别码,U代表用户,N代表随机Nonce:
S→U: N
U→P: N,?PIN
P→U: {N,?PIN}K
U→S: {N,?PIN}K
这些设备在20世纪80年代早期开始出现,最早用在电话公司,之后在90年代被银行采用。有一些简化的设备中不包含键盘,只是每隔1分钟左右生成1个新的访问码(通过对计数器进行加密得到),比如最广为人知的RSA SecurID。美国国防部在2007年宣称,在上一年度,由于引入了一种基于DoD通用访问卡(CAC卡)的系统,网络入侵减少了46%[225]。
现在,这些技术已经开始在客户群中传播。在2001年之前,密码生成器主要在一些高级私营银行中使用(比如Coutts就使用密码生成器对其在线客户进行身份验证),并且这些银行从没有遭受过钓鱼式诈骗攻击。而到了2006年,荷兰与冰岛的一些银行将这些技术推广到其数以百万计的客户群中,之后,诈骗攻击开始出现了。典型情况下,钓鱼式攻击者会进行实时中间人攻击(下一节将对其进行描述),一旦用户通过了银行的身份验证,就对其进行会话劫持。在2007年晚些时候,英国以及欧洲其他国家的一些银行引进了芯片身份验证程序(CAP),这种机制会给银行客户派发一个计算器,并使用用户的银行卡进行加密。这个计算器在使用银行卡加载时,会询问客户的PIN,如果正确输入,就基于计数器(作为卡交易的一次性身份验证码,或银行Web站点的一步式登录凭据)或质询信息(用在两步式身份验证中)计算出一个应答码。还有另一种操作模式:如果会话劫持成为严重问题,CAP计算器也可以用于对交易数据进行身份验证,在这种情况下,应该由客户将金额与收款人账号的最后8位数字输入其CAP计算器中。