转载请注明作者:欧阳洋葱——也就是我本人!
有很多人常把口令和加密混为一谈,口令也可以叫做密码,而加密则是指对信息进行某种策略,把信息变成无可识别的符号或乱码,而要使这些乱码可见,则使用解密方法。
我学了三个月的网络基础知识,有兴趣的同人可以来看看加密以及口令对信息的作用。
有很多人说:我搞不清别人怎么来窃听我和其他人或网站的通讯。比如我和某个在qq上聊天,为什么说这是不安全的?为什么说信息内容可能被黑客窃听到——我怎么就没办法看到其他人之间的聊天。
有稍微懂点电脑知识的人说,我可以查看本地文件的聊天记录——这个是软件工程师的事情,和网络安全无关。对于在Internet上通讯的人来说,除非采取某些技术手段,例如VPN,才能对自己发送和接收的信息的安全性进行一些保护,实际上internet是非常不安全的通讯网络,大部分信息几乎都不加密而以明文形式发送,包括账户与密码。那么究竟黑客们是怎么嗅探网络通讯的内容的呢?
这里不讨论太高深的内容,也不讲解体系知识,就简单说说。有人不明白什么是局域网,其实很简单。我家里用ADSL宽带接入,除了我之外,我爸爸和我妈妈又各有一台电脑,我们三台电脑通过一台路由器连接DSL调制解调器上网。——实际上我们三个人构成的家庭网络就是一个小型的局域网。如果这个电脑台数扩大到10台,那也还是局域网,但是需要添加一台集线器,因为路由器的接口不够多,添加一台接口更多的集线器就可以连接更多的电脑(注意:这里为了简要介绍,所以以集线器为例,而不用交换机,交换机的工作原理与集线器不同)
我们可以简单谈谈集线器的工作方式。其实很简单,当我们从internet接收信息的时候,比如下载,集线器先收到这些信息然后再转发给电脑。——要注意的是,因为集线器内部很简单,不跟踪任何目的地或源地址,所以当集线器从internet接收到信息之后,他并不知道他究竟应该把这些信息发给局域网中的哪台电脑,所以他会把从internet收到的信息以广播的形式发给所有局域网的成员,也就是同时把这些信息发给10台电脑。——然而实际上或许只有一台电脑需要这些信息,那么这台需要信息的电脑会接受这些信息,而另外9台根本没有索取这些信息,所以在另外9台电脑的网卡上,就会把这部分收到的信息丢弃——计算机本身就不用去处理这些无用的信息了。
这种工作方式其实是有安全隐患的。因为几乎每台电脑都会收到彼此之间所求的信息,只需要用一些特别的软件让电脑接收对自己无用的信息。——例如假如我爸在用qq聊天,他的好友给他发送的消息,我的电脑网卡也会收到(前面说了,这是因为集线器的工作原理导致的),只不过因为我的网卡知道——这些信息并不会发给我的,所以它将把这些信息丢弃。——不过只要我用一些软件就可以让我的网卡不丢弃而接受这些信息,并且最终用数据包分析工具就可以把这部分数据拼起来看具体的内容。不仅是qq聊天信息,这样的话,整个局域网内,任何人对internet所求的信息内容我都可以收的到,这样他们在做什么我甚至能够一清二楚。
有人说:那你只是在局域网内获取信息有什么意义。我上面举的这个例子当然意义不大。但是很多企业网络内有成百上千的电脑,他们共同构成一个局域网,一旦我成为他们其中的一员,从中就能获取很多机密信息。
--------------------------------------
其实上面这种侦查方式还是比较普遍,再说并不是所有人都会用集线器的,比如交换机的工作方式和集线器就不同,交换机的机制比集线器聪明很多,交换机就能够知道要把信息转发给谁——虽然我们也可以专攻交换机,让它变成痴呆并且像集线器一样工作。
有一种叫数据包嗅探器的软件可以让你捕获许多不是给你的数据包。这样你所能获取的信息就很多了,这里就不详谈使用方法之类的东西了。有人会问,那捕获了这些数据包究竟有什么用呢,光是看别人在干嘛也太无趣了吧
确实如此,不过我们可以用他来捕获更为有趣的东西。
*捕获密码
既然我们可以捕获各种他人收发的信息,大可以捕获点儿有用的东西,比如密码,什么密码呢?我举个简单的例子。
假如你用wireshark(一款数据包嗅探器软件)捕获自己电脑和internet或他人收发的信息,就会看到所有你发出和你收到的信息或数据包(捕获别人的也一样,这里仅以捕获自己的为例)。相对简单的一些网站,例如人人网,以文本框形式在登录的时候要求我们输入账户和登录密码。——你输完之后,点击登录提交按钮,这个账户和密码就会被发送出去,发给人人网的服务器以确定你输入的账户和密码信息是否正确。——这一过程所发出的登录请求里面就会有账户和密码信息,而wireshark就能够捕获这一数据包,并且直接列出你的账户与密码。
——那么这个方法用来捕获别人的数据的话,是不是非常轻易地就能够获得别人的账户与密码呢?就是如此。结合上面我谈到的集线器的工作方式,假如我要捕获我爸的一些账户和密码信息可能就非常容易了。
*关于加密
说了半天,到底什么是加密啊?加密和密码可是两回事。
qq密码我没捕获过,所以不知道他具体的发送机制。不过我相信,qq密码的发送肯定是经过加密的。现在我们可以来解释什么是加密。
就像我上面所说的捕获密码的过程一样,只要你向互联网提交账户和密码的登录请求,就一定会被数据包嗅探器截获。加密的概念就是:你截获就截获吧,你截了去也看不懂——就是将你的密码以另外一种形式呈现。例如,如果你的qq登录密码是12345,那么截获这个包含密码的数据包,会发现,数据包里的密码是一串乱七八糟的东西,而并不是12345.——这就是加密过程,对整个内容进行包含某种规则的加密,例如我用字符串ab表示1,用字符串bc表示2,cd表示3,de表示4,ef表示5,那么数据包中显示的加密后的密码就是abbccddeef——假如截获数据包的人不知道这个加密规则,他也就不可能知道你的密码究竟是什么。
现在还可以继续延伸一下,实际上,qq聊天信息的获取也并没有我上面说的那么简单,因为腾讯对聊天信息也是进行加密的,所以我截取我爸收到的qq信息应该也是一堆我看不懂的乱码。
有人说:那只要你知道加密规则不就可以自己解密了吗?确实如此。相对于任何加密信息来说,接收方本身,比如我爸的qq要查看他好友给他发的这则加密信息,qq客户端肯定也是要先解密才能让我爸看到具体信息的,要不然他也看不懂发的究竟是什么。
*关于信息的一致性
黑客并不只是侦测信息这么简单,他们在截获数据包后经常会篡改数据包的内容,然后再发给接收方——这样接收方收到的信息将产生歪曲,因为发送方本意并没有要发送那部分信息。——相对于单纯的文本信息来说,这个歪曲事实的事例算是小事,搬弄是非嘛。
假如是传送文件,就更麻烦。首先必须搞清楚的是,如果双方传送文件,并不是单个文件哗哗一股脑全部往接收方那边一倒的,而是以单个数据包的形式一个一个地发出去,接收方一个一个地接收然后再组合起来形成文件。——黑客可以在此过程中截获部分数据包,然后进行修改,比如加入一些病毒代码之类的东西,再发给你,这样组合成文件后,这个文件就带有了问题代码,可能是病毒、木马或是漏洞搜寻工具。假如你去怪发送文件的人可就不对了,因为人家的原始文件可是好好的呢。
这里涉及到的概念就是加密和完整性检查。我们不说具体的加密或检查机制。
回到刚才的一个问题,关于加密解密的,有人说:那你搞清楚加密机制不就行了?这里涉及到一个密钥的概念。比如某人发信息给另一个人,信息内容是“secret”,经过加密之后,信息就变成了“ugetgv”,加密规则很简单,就是每个字母都后移两位,比如s之后的第二个字母是u,e之后两位的字母是g……这样就构成了加密信息。接收方收到的也是ugetgv,接收方那边需要对信息进行解密,且接收方是知道加密规则的,自然就能够解密成secret。
所谓的密钥就是指加密规则。通常规则不是固定的,所以并不是像很多人想当然的那样知道一个规则就打遍那里的天下。加密前先产生密钥,这个密钥由发送方和接收方同时持有,一般是他们协商后产生的密钥,接收方只有手持这个密钥才能最终对信息进行解密。——黑客就算截获了所有的信息,也会因为没有密钥——也就是加密规则,而无法解密。
至于说密钥如何由两方共同持有,可以是人工的告知,也可以是机器间的密钥协商。不过有一点是肯定的:两边的设备本身都必须知道密钥是什么,要不然就不能解密或加密了。——有人就说了:那我直接去攻那些设备,然后把密钥搞定不就行了——确实是这样,但是你必须清楚,任何加密手段都不是万无一失的,最多也就是让黑客攻陷或窃取数据的难度增加。黑客如果去攻击设备当然也可以,但这样就增加了他获取信息的难度。这是加密手段的宗旨所在。
关于信息在发送方和接收方保持一致的问题,除了让黑客难以获取信息外。发送方本身会对自己要发送的信息进行某种公式的计算,进行信息浓缩得出一个值——这个值是通过发送的信息算出来的,具体的不同验证机制的公式也不一样。然后把这个值也放在数据包里。——接收方收到信息后,首先也对信息内容进行浓缩的公式计算,并且得出一个值,随后将他得出的值与数据包里发送方给的值进行比较,如果两个值相同就代表数据包的信息内容没有被修改,如果两个值是不一样的,就说明数据包在传输中途出了点问题。——这个是验证数据完整性的最普遍方法,例如现在的哈希值(hash)计算——MD5等等。
*破解密码和解密的区别
解密应该容易理解了吧,经过我上面的讲解,解密和加密相对。
破解密码则是另一回事,破解密码例如破解qq的密码。严格来说破解就是通过暴力手段来获得。不过现在把上面的截获数据包来获取密码的方式也算作一种破解。
破解的方法无非就是暴力破解和字典破解。——暴力破解指的是用尽各种可能的密码来尝试——因为字符的组合肯定是有限的,我组合10000次,尝试一万次,或者更多更多,无穷无尽的组合方法,最终肯定能获得密码的。——不过暴力破解需要很多时间,因为本身组合起来就很耗时,加上现在的网站重试密码次数有限,暴力破解是最后考虑的办法。
字典破解也差不多,字典破解本身有一个密码字典,字典里列出了人们最常会用到的密码方式,比如你的生日啦,或是你喜欢的词,电话号码等等。——这是一种投机取巧的方式。对于那些设置密码不按章法的人来说是没用的。
*最为薄弱的无线网络部分
其实无线局域网的安全性是最薄弱的,因为只要你的电脑带有无线网卡然后进入无线节点覆盖区域内就可以一定程度地采取措施。他不像有线网络那样,一定需要物理接入那个有线网络才能进行信息侦测。
因此wifi最普遍的必定携带wpa或wpa2安全机制。其实非法攻击者进入网络覆盖区域内截获数据包是一个相当容易的过程。绑定mac地址之类的方法并不是很靠谱的。
有人认为禁止无线路由器广播存在性是不错的做法。就是无限路由器虽然发出无线信号覆盖一个范围,但是不告诉任何电脑他的存在性,让所有电脑都不知道有这样一个无线节点的存在。——而用户可以通过自行输入网络名和密钥来使用路由器。——其实这并不安全,因为只要有人用数据包嗅探工具截获射频中数据包,就能够在数据包中发现ssid也就是你的无线路由器的无线节点名称。至于说捆绑mac地址,那也不安全,因为软件可以修改欺骗性的mac地址。
其实启用wpa2还是相对有安全保证的,128位密钥。
---------------------------
今天的洋葱课程就先到这儿吧。要成为黑客,任重而道远啊。另外,数据包嗅探工具并不是黑客专用的,那些工具的设计初衷是为了排除网络故障,不是用于非法用途。
另外,密码窃取的其他方法,例如木马、病毒部分,那是软件工程师考虑的方式,和黑客的攻击和窃取有些不同。