SecurID 卡的原理实现的动态口令认证,RSA SecurID 动态密码令牌 RSA,俗称:token卡,IT男标配。使用TC采用RSA算法制作C语言代码,RSA发布iPhone版应用 - SecurID软件令牌。

jackxiang 2012-3-3 15:12 | |
163为它的游戏用户推出了动态口令卡。售价才10元。这让我非常的诧异。首先,我觉得这几乎是无懈可击的密保技术。其次,RSA的 SecurID卡在国内在几百RMB一个。而163的这东西,实在是便宜……

RSA 令牌 SID700 RSA SecurID

以前一直对这东西的原理很好奇。今天翻了些文档,略微整理如下:

1、密码:
登陆密码=f(静态密码,动态密码)。
静态密码就是用户自己设置的一个密码。
动态密码是通过卡动态生成的密码。
f是一个简单函数。例如不进位的加法、字符串拼接。
用户的静态密码最好是不要通过电脑键盘输入不通过网络传输的,所以很不推荐采用字符串拼接的方式。

2、构成
一个8位的处理器,一个时钟,一个LCD显示屏,一块电池。可能还会有一个键盘。
外壳的设计目标:一旦打开外壳,那么立即清空内存数据。
内部的设计目标:存储一个种子文件。然后按文件中的数据和当前时间拼起来进行AES,然后hash成6-8位的数字,显示在LCD上。

如果有键盘,那么用户可以通过键盘输入一串数字(用户的静态密码)。卡把这串数字(静态密码)与卡实际生成的数字(动态密码)用一种公开的算法(前面所说的那个f)进行组合,然后显示出来。通常采用的是不进位的加法。因此这个部件不是我们所需要关心的部分。

理论上来讲,如果知道种子、如果知道时间、如果知道生成器内部所采用的算法,那么我们就可以自行的算出这个动态密码。既然RSA公司敢发布软件版的生成器,那么就意味着它不怕这个算法被知道。事实上这个算法被hacker们公开已经是10年前的事情了。一个俄国hacker在发布自己的软件模拟器后留下这样一段话:
“RSA公司的伙计们:
如果你需要人帮助你设计安全的加密算法和协议,告诉我们,我们将会帮助你做出来。俄罗斯人并不都是熊。我们的国际象棋比你们下的好,记住!”

但是难点在于从卡中取走种子文件。就目前而言,是不可能通过它产生的随机序列反推回去得到它的种子文件的。

在网上看到了另一种类似方案:
1、用户输入一个用户名,发送给服务器
2、服务器返回一个随机数,记做C
3、用户使用自己的密码unlock动态口令卡
4、用户输入C。动态口令卡计算f(C,time,seed),然后显示出来
5、用户把口令卡的结果发送给服务器6
6、用户锁住口令卡

将DKEY动态密码结合PAM认证方案,在PAM静态密码认证基础之上,增加一层宁盾动态密码(该密码是由硬件令牌产生,每隔60秒变化一次,密码一次使用有效)认证,用以提升Linux/Unix服务器安全。
网址:http://ndkey.com/zh/dkey_for_linux.html
Linux Pam认证:http://www.chineselinuxuniversity.net/articles/35383.shtml
Tencent 也有类似的产品:http://item.taobao.com/item.htm?spm=a230r.1.10.156.Stwlht&id=15704549799&_u=119u1sf4e9
淘宝一堆这样的产品:http://s.taobao.com/search?q=%C1%EE%C5%C6%CB%F8&initiative_id=staobaoz_20121201
RSA SecurID Software Token:
http://m.163.com/android/software/31teqh.html


使用TC采用RSA算法制作C语言代码:http://wenwen.soso.com/z/q188326537.htm
——————————————————————————————————————————
rsa编程1
要求输入p,q,e
输出d
算法描述为求逆元的方法

作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:https://jackxiang.com/post/5038/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!


最后编辑: jackxiang 编辑于2013-12-2 22:33
评论列表
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]