使用python语言,基于服务端/客户端实现身份认证协议: S/Key协议身份认证流程如下: 1.初始化 ①用户在客户端输入用户名(应限制用户名的格式,如长度、包含的字符等),并将其发送到服务器 ②服务器接收到客户端发送来的用户名,判断该用户名是否已经注册,如果未注册,则向用户发送一个种子:SEED(注意:客户端每次向用户发送的种子应当不同);然后再服务器端应当保存该用户名 ③客户端接收到种子之后进行预处理:先将用户名和种子拼接成一个字符串,然后对该字符串进行MD5哈希,再将MD5加密后的结果前16字节和后16字节进行异或运算,结果记为S 2.生成口令序列 ①对S进行MD5哈希,得到口令 ②将第一个口令发送到服务器,作为初始登录的密码;接下来依次使用第2—N个口令进行登录 3.登录流程 ①用户输入口令序列,将输入的内容发送到服务器,在服务器通过对保存下来的密码进行MD5哈希,与口令序列进行比对,验证口令是否正确 ②在用户输入用户名时,如果用户名已注册,则直接使用注册时生成的口令序列依次登录 ③如果口令验证成功,则服务器生成验证码,发送给用户,用户输入验证码进行登录
1
网络身份认证是网络安全技术的一个重要组成部分,是网络安全的第一道屏障。它的安全性直接影响到网络应用的安全,而动态口令身份认证系统可以有效地避免因用户密码被盗而带来的巨大损失。本文列举出静态口令网络身份认证存在的问题,并针对其弊端提出动态口令身份认证系统的解决方案。
1