首页
社区
课程
招聘
默认密码的妙用
2019-9-26 15:38 9987

默认密码的妙用

2019-9-26 15:38
9987
  为加密软件设定默认密码将能大为提高软件性能。用户密码由用户输入往往是具有许多缺陷的,例如数量有限、内容简单、重复使用等等,设定默认的用户密码,可以选择较多的字节数,较复杂的内容,例如100个字节等等,如果用户没有输入密码,程序将使用默认密码加密,如果有用户密码输入,程序将根据用户输入的东西对默认密码进行全面的改造,程序使用改造后的密码进行加密,这样程序总能使用例如100字节较为复杂的密码加密了。
具体实现: 
  1)你可以让程序设定几个默认密码方式,由用户进行单选。程序将根据用户输入的数据,对选中方式的数据进行加工,形成密码数组。
  2)也可以让用户设定密码字节数,然后程序根据字节数例如由输入的密码算出种子,使用随机函数生成密码数组,再加工数组备用。
  这样就避免的单一入口容易受穷举攻击的弊端。

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

最后于 2019-10-16 16:01 被sjdkx编辑 ,原因: 丰富内容
收藏
点赞0
打赏
分享
最新回复 (18)
雪    币: 12
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
mb_cfwuvprq 2019-9-28 02:44
2
0
欢迎讨论,此法能确定密码位数,使用较长的密码。
雪    币: 32108
活跃值: (7105)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
ninebell 2019-10-2 17:14
3
0
可惜有点短啊,没看够。
雪    币: 10014
活跃值: (2012)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
sjdkx 2019-10-3 00:08
4
0
道理就是一点点,实际就是强制使用超长位用户密码而已。
雪    币: 2129
活跃值: (1611)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
goldli 2019-10-3 19:36
5
0
长密码,可以设置。但是,怎么保存?人为记忆可能性不大。只能靠第三方软件来保存了。那么这些密码统统在一起,安全性怎么保证?除非你使用密码字典。一个非常庞大的字典。
雪    币: 10014
活跃值: (2012)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
sjdkx 2019-10-4 00:14
6
1
不要误会,默认的长密码是程序设定的,用户输入的数据只是很少的字符,也好记忆,程序在收到用户输入后,利用这少量的数据,去改造默认的长密码,并将改造后的数组作为用户密码用于加密。这样就实现了少量输入字符而使用大量数据作为密码的目的。
雪    币: 2129
活跃值: (1611)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
goldli 2019-10-4 22:01
7
0
嗯。这个思路不错。
雪    币: 10845
活跃值: (1049)
能力值: (RANK:190 )
在线值:
发帖
回帖
粉丝
看场雪 3 2019-10-7 15:45
8
0
LZ的意思大概是:拿用户输入的口令(哪怕很简单),用一个确定性算法,算出一个看似较长较乱的结果,然后拿这个结果当做密钥,继续后面的操作
是吗?
如果是这样的话,攻击者会觉得这个结果是难猜的;
但是如果中间这个“确定性算法”是公开的,那么攻击者就可以直接攻击用户输入的口令即可

而且,如果口令的验证过程是攻击者可以反复高效使用的,那么不论这个确定性算法有多么复杂,攻击者对用户输入口令的尝试难度是不变的
雪    币: 10014
活跃值: (2012)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
sjdkx 2019-10-7 16:52
9
0
  不存在 【口令的验证过程是攻击者可以反复高效使用的】,程序不做口令正误的判断,如果尝试口令覆盖了真正的口令,你也需要自己将其找出。
举例说明:
  例如定义:从用户口令算出一个rand()种子,然后用rand()后面的100字节作为用户密码,程序用这100个字节衍生出密钥数组加密信息,解密也是一样 。所有操作离不开这100字节,若穷举攻击可以用它们的组合试试和用口令是等效的。
雪    币: 10014
活跃值: (2012)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
sjdkx 2019-10-9 10:54
10
0
确实有单一入口被动的问题。可以设几个默认的候选加长密码,有单选按钮控制,这样就主动多了,穷举攻击成功的可能性将趋于零。
雪    币: 797
活跃值: (1056)
能力值: ( LV5,RANK:78 )
在线值:
发帖
回帖
粉丝
bambooqj 2019-10-9 11:51
11
0
  主要 实际应用环境中 除保密单位需要 不然 没人会这样 太麻烦...不如找个简单的办法记住长密码..比如我的..百度一下.你就知道    Bdyx.Njzd.zdnm13    - -

     感觉这个思路  就和 我在数据库中储存用户MD5,用户使用简单密码   中间存在算法.但是,不影响我碰撞...如果,此方案用在网页后端..那么不影响我post猜解..如果此方法 用在前端..不影响我直接扒JS...   应用在软件中 也是同理...不太知道应用环境..望举例.
最后于 2019-10-9 11:55 被bambooqj编辑 ,原因:
雪    币: 10014
活跃值: (2012)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
sjdkx 2019-10-9 19:47
12
0
  上面说的不影响这个不影响那个是没有用好。方法的本质是使用少量输入数据,去控制大量的数据,就是用少量的数据实现对大量数据的非线性变换,例如受控的随机排序等,变换后的数据可以有多种用途,这里是作为代替用户输入大量密码。
雪    币: 2129
活跃值: (1611)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
goldli 2019-10-9 20:02
13
0
我想了想,这个想法不切实际。
首先你有一个常量A,然后通过各种算法得到口令X,再用X做其它的操作。那么,从你的常量A开始就全完蛋了。因为这个A是非常简的,如果使用暴力破解,我们就不关心你的算法是什么,只需要专心破解A就可以了。
雪    币: 2129
活跃值: (1611)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
goldli 2019-10-9 20:04
14
0
所以,回到问题点,那么生成的口令X,然后验证X的过程,是否可以使用Auth2来做呢?即使使用Auth2,也避不开第一口令的存在
雪    币: 2129
活跃值: (1611)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
goldli 2019-10-9 20:07
15
0
感觉除了使用密码矩阵之外没什么好办法了存储A了
雪    币: 10014
活跃值: (2012)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
sjdkx 2019-10-10 00:15
16
0
默认密码部分你可以认为它是一个相当规模的数组,它可以是多个备用,这个是程序设定的,也就是公开对破解者来说是公开的,当有用户输入了少量的密码后程序将根据密码的内容,从几个默认密码数组中选择一个,并对这个数组进行彻底的改造,生成新的数组直至生成密钥数组完成加密或解密。
雪    币: 451
活跃值: (117)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
老刘 2019-10-15 11:30
17
0
假如我需要加密一个文件,我就喜欢12345这个密码
于是我输入12345,你给我rand()成了100字节的符号去加密
那么问题来了
我需要解密的时候用什么密码?
解密需要的密码谁来告诉我?

雪    币: 10014
活跃值: (2012)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
sjdkx 2019-10-16 00:34
18
0
也许程序有几个默认密码供你单选,例如你选择了其中一个,程序将使用你的输入12345对这个默认的100字节密码进行改造形成新的数组,并以新数组为用户密码进行加密。
解密时你的密码仍然是12345,加上你的默认密码选择。
雪    币: 669
活跃值: (1770)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
XiZiRuMeng 2019-10-16 09:07
19
0
这不就是我输入123,程序md5存起来了么。。。
游客
登录 | 注册 方可回帖
返回