首页
社区
课程
招聘
[讨论]密码认证的实现
发表于: 2005-11-22 11:15 3756

[讨论]密码认证的实现

2005-11-22 11:15
3756
小弟现在在致力于写一个加密软件,底层预包括了常见的AES,IDEA
TEA一类的加密算法
但在写系统设计分析时遇到一个问题:密码如何认证

就是如何才能在用户输入错误密码的时候能够有效的通知用户(一个错误提示对话框)
而又能有效的防止穷举攻击?

我给出了如下设计草案:
1. 在被加密文件的某个位置处,保留一个密码50万次的Sha256的值(以实现密码认证)(借鉴QQ本地密码的防护措施)
   for(int i = 0; i < 500000; i++)
   {
       pw = Sha252(pw);
   }
2. 认证通过后,采用密码1次的Sha256值的某些位作为对称密码算法的密钥进行解密数据(加密模式可以选择)

我知道我这样设计存在着一个比较严重的漏洞:
Hash次数是个固定的值,这会给攻击者一个以空间换时间攻击的机会,加入攻击者有密码字典的50万次Sha256值,
这样穷举密码的速度PIII的机子可达到10亿次/秒(或许更快,决定于计算机的时钟周期了),这样以来系统不堪一击。QQ本地密码能够有效阻止
这样的攻击是因为它的Hash次数不是一个定值,
在这在密码认证中是不可能使用的。

这方面是不是早以有了比较成熟的方案,只是我还不知道?
以前我曾就真对此种情况假设了对PGP的攻击,但好像那个主题也没有讨论出一些实质性的东西。
本来想借鉴PGP的密码认证机制,但也找不到相关的资料。
那位了解这方面的东西,能否指点小弟一下?也欢迎大家就此主题讨论一下了

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 3686
活跃值: (1036)
能力值: (RANK:760 )
在线值:
发帖
回帖
粉丝
2
为什么没用公钥?
2005-11-23 15:05
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ASM
3
加密软件还有市场?我很久前倒是写了个快速高强版来加密代码和XX……

你的设计草案只能说太简单,其实只需借鉴软件注册的方式,不采用明码比较即可……公钥算法在此处并不好用……
2005-11-24 05:48
0
雪    币: 205
活跃值: (171)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
cnbragon,
你觉得这样的应用情况用公钥吗?
当然如果重新改变策略,公钥更好,
我现在是想实现静态加密及认证,
我所迷惑的是:如何实现这种安全的认证机制?

ASM,可否借鉴一下你的设计思路?当然,如果你感到难为情,就另当别论啦,
2005-11-24 09:29
0
雪    币: 205
活跃值: (171)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
还有,哪位兄弟用过crypto++库?能否共享一下经验?
搞了半天才能让测试代码跑起来,但如何在自己的工程中使用,还没有搞懂,一大堆c++的东西,本来觉得的自己的c++学的勉强够用了,但看了这个库的代码,看来还是差的太远了,真是郁闷
btw:我用的是crypto++5.2.1
2005-11-24 09:34
0
雪    币: 3686
活跃值: (1036)
能力值: (RANK:760 )
在线值:
发帖
回帖
粉丝
6
http://www.eskimo.com/~weidai/cgi-bin/fom-serve/cache/1.html
http://www.mail-archive.com/cryptopp-list@eskimo.com/maillist.html

可以参考这个。学习Crypto++有个好办法,就是按照Crypto++的设计思想,自己用C++的一些高级特性如template,virtual function...实现一个加密算法库,这样就会理解Crypto++的使用了。

公钥对于一个加密软件来说不怎么适用,但是用在你说的这个验证的地方还是可以考虑的...

btw:偶使用crypto++的时候就是这么做的... :P
2005-11-24 10:49
0
雪    币: 205
活跃值: (171)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
下边好好考虑了一下,采用公钥密码算法确实是唯一可行的办法了,
惭愧没有去看他们的FAQ和邮件列表,
不过也许还会有问题,感觉这个库的帮助文档有点不足,其它密码库的文档相对还算全面一点
2005-11-24 14:00
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ASM
8
加密时,保存c=f(k,m)
解密时,比较m'=f'(k,c)和m

k为用户输入密码,f、f'为对称或非对称高强度加密算法,m为加密数据相关变量。

我自己的库里RSA存在了很久,很多时候想拿来用一下,但发现除了降低速度、减少理论安全性外没有其他好处,结果一次都没用过。
2005-11-25 02:21
0
雪    币: 205
活跃值: (171)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
9
多谢了,这对我很有参考意义
2005-11-25 17:05
0
游客
登录 | 注册 方可回帖
返回
//