为保障一枚好的口令,早期通常使用规则驱动的方式,譬如要求用户在创建口令时,确保口令必须由数字、大写字母、小写字母、特殊字符等不同字符类型组成,且一个口令必须包含两种或两种以上的不同种类的字符,并且口令的长度必须不少于8个字符;在不同账户中的口令必须不同。然而,当前的深入研究发现,实施上述四项规则并不能保证生成一枚平衡好记、好输且难猜这三点的好口令。因此,当前的主流研究通过口令猜测攻击的角度,建议用户使用非常少见的口令。这里的少见,既会要求非常复杂,又要求与其它已知口令比较,使得既不是重复出现的口令,也不是经过简单变形的口令。这里给研究人员出了一个难题:如何判定一枚口令在当前网络空间是“少见”的?为此,研究人员提出了数据驱动的方法:将已知口令作为训练集,训练一个口令猜测模型,对用户创建的口令进行猜测,如果猜测次数非常多或者猜不到,则判定为好口令。由于已知口令集数据量庞大,所训练出的模型也非常复杂,不适合直接放在用户浏览器或其他客户端。因此有两种方案用于这一基于数据驱动方式的对保障好口令的方案,一种是将模型预先训练好并进行有效压缩,然后放置在客户端对创建的口令进行猜测,这一方式响应速度快,且不需要传输用户口令;另一种是将创建的口令实时地安全传回服务端,由服务器端的模型进行判断,这一方式由于模型的完整能获得更准确的结果。
图表 1猜测攻击模型示例
图表 2口令认证系统示例