五千年(敝帚自珍)

主题:【原创】国内的墙越筑越高 -- kk

共:💬282 🌺942 🌵29
全看分页树展 · 主题 跟帖
家园 深入的磨叽下

首先墙这玩意真没你想的这么聪明,至少你要知道某些运作方式后,会觉得挺傻的,这点待会说。

SOCKS5用的是BASE64加解密(其实应该叫BASE64编码解码才对,这玩意加密性能只能用挖鼻孔来形容)

但是就是这个加密性能堪称挖鼻孔的东西,墙就是抓不住哦。

加密算法按照类型划分为两种,对称加密和非对称加密。对称加密也叫私钥加密,它使用一个密钥和一个初始化向量 (IV) 对数据执行加密转换。对于给定的私钥k,一个不使用初始化向量的简单块密码将把相同的明文输入块加密为同样的密文输出块。

私钥加密的缺点是它假定双方已就密钥和 IV 达成协议,并且互相传达了密钥和 IV 的值。并且,密钥必须对未经授权的用户保密。

从上面来看可以得出私钥管理存在很大的不便且潜在危险,因为一旦有人掌握了密码所有内容将毫无保留地被人掌握。

那么 非对称加密即公钥加密就诞生了。公钥加密的好处在于使用一个必须对未经授权的用户保密的私钥和一个可以对任何人公开的公钥。公钥和私钥都在数学上相关联;用公钥加密的数据只能用私钥解密,而用私钥签名的数据只能用公钥验证。公钥可以提供给任何人;公钥用于对要发送到私钥持有者的数据进行加密。两个密钥对于通信会话都是唯一的。公钥加密算法也称为不对称算法,原因是需要用一个密钥加密数据而需要用另一个密钥来解密数据。对称算法的根本原理就是单向函数,f(a)=b,但是用b很难得到a。

但是公钥加密也有个很大的弊端,那就是它采用固定的缓冲区,无法像私钥算法那样将数据链接起来成为流,因此 公约加密只用来加密私钥密码。

以上仅仅是泛泛而谈,涉及到对称加密和非对称加密在加密通信里各自的分工,具体的工作机制不展开说了。

但是网络是公开的,如何确定你手上的这个加密数据不是伪造的?而且有可能的话,密码最好是不断改变的。那么 让数据包加上一个单向且不可逆的标签,就可以解决这个问题了。

现在该HMAC(Hash Message Authentication Code) 散列消息鉴别码,上场了。

消息鉴别码实现鉴别的原理是,用公开函数和密钥产生一个固定长度的值作为认证标识,用这个标识鉴别消息的完整性。使用一个密钥生成一个固定大小的小数据块,即MAC,并将其加入到消息中,然后传输。接收方利用与发送方共享的密钥进行鉴别认证。

也就是说,一个完整的加密通信链接里的数据包里必须包含一条HMAC值,以此作为验证消息的凭证。

就你上面提到的SSH里使用MD5产生的hash值而言,通信双方必须各自执行函数计算来验证消息。举例来说,发送方首先使用HMAC算法和共享私钥对消息检查,然后将计算结果A封装进数据包中一起发送;接收方再对所接收的消息执行HMAC计算得出结果B,并将B与A进行比较。如果消息在传输中遭篡改致使B与A不一致,接收方丢弃该数据包。

一旦私钥改变HMAC值也发生改变,对称加密算法(DES)保护数据安全传输,而对称加密算法的密钥是通过非对称加密算法(RSA)来完成交换的。

下面说下SSH建立通信的过程;

Client端向Server端发起SSH连接请求。

* Server端向Client端发起版本协商。

* 协商结束后Server端发送Host Key公钥 Server Key公钥,随机数等信息。到这里所有通信是不加密的。

* Client端返回确认信息,同时附带用公钥加密过的一个随机数,用于双方计算Session Key。

* 进入认证阶段。从此以后所有通信均加密。

* 认证成功后,进入交互阶段。

仔细看上面会发现一个很明显的漏洞,那就是在握手过程中是明文。事实上这是N多tunnel软件包括SSL通信时一个极大的问题,因为你在明确告诉墙你在干什么,你说墙不墙你墙谁呢

某些声称能绕过墙的的SSH最核心的商业机密就是将报文里的软件版本号更改为浏览器版本号,然后将连接端口改为443 然后齐活。

那啥 文采不咋地,学的也不好,写的错漏,词不达意之处还望各位看官海涵。

PS;我说的是DSA被NSA遛钩子了不是RSA。当年是被登哥给出爆出来的,那时我还在某bitcoin论坛混,所以印象特别深。

通宝推:佛之战国,舞动人生,陈王奋起,
全看分页树展 · 主题 跟帖


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河