sjdkx的个人博客分享 http://blog.sciencenet.cn/u/sjdkx

博文

我的流密码加密

已有 1782 次阅读 2020-5-26 10:17 |个人分类:密码学相关|系统分类:论文交流| 流密码, 伪随机数, 真随机数, 穷举攻击, 分析法

  流密码加密是一种古老的对称加密方法,有的可能还借助于硬件,我的流密码只是个人对流密码加密的认识和实践,和教科书上的方法可能有些不同,我认为只要是用密钥流对明文流进行加密的都是流密码加密,流密码的技术关键是密钥流的形成,一般用伪随机函数生成的伪随机序列数组作为密钥数组,这样做是最简单的方式,拿来就用,任何随机函数都能胜任,不好的地方是窃密者也能用同样的随机函数组成密钥流,它们可以用这个密钥流,选择不同的位置去作用于密文流,怎么作用要看加密程序里面怎么写的,一般可能是用异或者加减法,本人从来不用异或只用加减法,原因是后者更为灵活,例如要对密钥进行二次运算前者就不行了,两次异或等于白做,而后者却可以。密钥流和密文流的相互作用是在寻找随机函数的加密起点,这个点一般也叫随机函数的种子,找到了起点破解就成功了。
  所以直接使用序列伪随机数是不安全的。怎么办简单的可以用两个种子,生成和明文同长的两个序列,然后将这两个数组综合起来作为密钥流,怎么综合例如加起来、加起来除以2、加起来除以3...方式任选,只要解密时用同样的数组即可。这样窃密者就很难找到这两个种子的位置了。
  当然也可以用两个或多个随机函数来完成建造密钥数组,这样加密强度将更大。
  还有一种方法建造密钥数组,就是做个与明文长度相同的顺序数组(从随机函数里截取也可),要求其中元素尽量均等,将这个数组进行加工使其转化为真随机数组,怎么转化,这要用到热力学第二定律之熵增加原理,我们用外部力量去干扰前面那个原始数组的排列顺序,这可以用随机排序来完成,用好的随机函数效率高些,不好的效率低些,但都能达到数组混乱的目的,最后熵值将稳定在某值附近,再多做也就没有意义了,也就是熵平衡了。这时密钥数组就完成了,可以加密或解密了。
  密钥数组的真随机化,使得分析法破解成为不可能。
  流密码加密程序一般从用户那里得到密码,用这些密码要算出一些参数,用这些参数来控制加密流程,例如使用哪几个候选的随机函数、各随机函数要用的种子、加密运算时的参数,一般要乘上一个参数加上一个参数。
  分析法破解没有希望,窃密者自然要用穷举攻击,程序不是需要密码吗,窃密者向程序提供大量伪密码如果侥幸碰上真密码解密就得逞了,穷举攻击也有弱点它怕 1.用户密码长 2.多入口输入。密码长了从时间上它也玩不起。见笔者的帖子【少量输入密码使用大量密码数组】这里面告诉你怎样用较小的代价使用超长的用户密码和多输入窗口。你将学会不受穷举攻击烦扰的方法。
  加密程序不判断加密的正误,如果做判断并应答,你的程序就是个筛选器,窃密者可利用来找到正解。否则破解者自己判断将给其造成极大的麻烦,判断粗糙可能落网,判断精细太耽误时间玩不起,这将大为提高系统的安全性。这样做的副作用是使用缺乏人性化,你可以这样前面为增加用户密码长度的方法中不是使用了默认密码吗,你考察这部分是否正确即可,这样就不用藏密码信息于密文中了,而且人机交互也照顾到了。
  如果你按照上面的处理方法加密你的加密将是不可破解的,谁有破解此加密的对策请告诉我。
  



https://blog.sciencenet.cn/blog-251800-1234995.html

上一篇:破解序列密码加密就是个笑话
下一篇:细分加密方法
收藏 IP: 121.28.120.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-3-29 22:49

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部