渗透测试中的密码学(一)现代密码学基本原理

渗透测试中的密码学(一)现代密码学基本原理

在渗透测试中,测试人员往往会面临这么一个场景:花了大量的精力终于发现一个问题进入了系统,本想扩大战果,但暮然回首,却发现关键的字段(比如用连接数据库的用户名、口令等)被加了密。破还是不破,这是个问题。不破,也许测试的结果不足以引起甲方的重视,在甲方看来不过是一个能进系统的漏洞嘛,数据库的账号你又没拿到,最关键的数据又没有丢失,问题哪有你说的那么吓人,又想吓唬我不是?在老板看来,找个漏洞就想交差,又想偷懒了不是,都这么干,怎么让甲方认可我们,怎么继续从甲方那里拿项目,你知道这个项目咱们拿的有多不容易么,blablabla。。。好好好,别说了,我破就是了,但这就如同一次出征,不知道何时才能结束,更不知道能不能成功。到底如何抉择呢?为了回答这个问题,或者为这个问题提供一个小小的帮助,还是先从密码学最最最基本的知识讲起吧,也算是对自己工作的一个简单的总结。

       密码这个东西大家都不陌生,但在生活中大家往往跟口令搞混了。密码的英文是Cipher,口令的英文是Password,口令的作用是提供鉴别,就是对用户身份做鉴别,这个好理解,比如银行卡取现,你知道口令就可以取现,输入了口令相当于银行对你的身份做了一个鉴别,当然这个鉴别安全等级不高。但密码的作用是保护信息的机密性,太文艺了是吧?那就换一个通俗易懂的说法,密码的作用是让你看不懂我发送了啥消息。比如我邮箱的口令是987654321,我把这个口令发给同事,让他自己上去下载一份文件,但是我直接把口令发给他万一中途被人网络监听窃取了怎么办?那就把口令加个密,即使被人监听了,拿到的也只是一串稀奇古怪的密码(明白口令和密码的区别了吧)。至于解密,只存在于理论上,啥叫理论上,ok,让我们进入正题,了解完密码学的基本原理后你就知道什么叫理论上了。

       从计算机的角度来说,密码就是一个用途比较特殊的算法,用途虽然特殊,但他还是一个算法,有固定的流程和步骤,为了保证这个算法不存在什么逻辑上的漏洞,现代密码学的密码算法一般都是公开的,大家都可以来分析找问题,有点众测的味道,大家都觉得没问题了,那就ok,那咱们就都用这种密码算法。当然,我这里说的是民用的,正规的说法是商用的,算法是公开的。至于军用这种的,不用想,算法肯定是保密的。为什么?为了安全!!如果公开,你觉得没漏洞,大家觉得没漏洞,那就真没漏洞了么?如果真这样,开源软件就不该有漏洞了,什么脏牛,Struts2漏洞啥的那就是个幻觉。所以说,安全永远是相对的,绝对的安全也许有吧,但真没见过。后面的章节里我提到的密码算法都指的是商用密码(民用密码),军用密码咱哪能接触到啊。。。。

       言归正传,咱们继续。那算法都公开了,还保啥密啊?这里就要说到另外一个重要的概念了,那就是密钥。算法虽然公开了,但是密钥是保密的。说到这里,现代密码学的一个最基本的原则其实也点出来了,那就是算法公开,密钥保密。从算法的角度说,密码算法的输入就是密钥和消息:加密的时候,密码算法输入密钥和明文消息,输出密码;解密的时候,密码算法输入密钥和密码,输出明文。如果不知道密钥,理论上是还原不出明文消息的。那密钥又是啥啥玩意呢?没啥神秘的,一串字符而已,比如12345678,abcdefgh都可以作为密钥。要破解,可以啊,把所有可能的字符串试一遍(自己想象8个字节的密钥空间有多大吧),肯定能找到那个正确的密钥,但啥时候能试完啊?别急,有点耐心,快的话几年,慢的话下辈子吧。

打个不太形象的比喻,密码算法就如同一个带锁的箱子,你把贵重物品放入箱子,上好锁,谁能开?那肯定是有钥匙的人啊,钥匙就是密钥。想开锁,可以啊,给你一巨堆钥匙,多少我不知道,但总重量超过了1千亿吨,自己挨个试吧,我虽然知道哪个才是开锁的钥匙,但我就不告诉你。。。。理论上你只要投入的时间足够多,足够有毅力,子子孙孙无穷尽,最终肯定会找到那把开锁的钥匙的。

       好了,现代密码学的基本原理就先说到这里,还记得是啥么?忘了?正常,刚学的时候我也忘。那我再强调一遍:算法公开,密钥保密。当然了,密钥的空间得足够大,为啥?想不明白的话就再读一遍吧。。。。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值