欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

写给非专业人士看的 sha 简介 有大用

写给非专业人士看的 sha  简介

这个文章来源于一个朋友在科学上网的过程中,搞不清楚 sha  的配置问题,在这里我想按照我对 sha 的理解简单梳理一下,以便一些非专业人士也能了解

long long ago…

在很久很久以前,我们访问各种网站都是简单而直接的,用户的请求通过互联网发送到服务提供方,服务提供方直接将信息反馈给用户 ss-01

when evil comes

然后有一天,GFW 就出现了,他像一个收过路费的强盗一样夹在了在用户和服务之间,每当用户需要获取信息,都经过了 GFW,GFW将它不喜欢的内容统统过滤掉,于是客户当触发 GFW 的过滤规则的时候,就会收到 Connection Reset 这样的响应内容,而无法接收到正常的内容 ss-02

ssh tunnel

聪明的人们想到了利用境外服务器代理的方法来绕过 GFW 的过滤,其中包含了各种HTTP代理服务、Socks服务、VPN服务… 其中以 ssh tunnel 的方法比较有代表性

1) 首先用户和境外服务器基于 ssh 建立起一条加密的通道 2-3) 用户通过建立起的隧道进行代理,通过 ssh server 向真实的服务发起请求 4-5) 服务通过 ssh server,再通过创建好的隧道返回给用户

ss-03

由于 ssh 本身就是基于 RSA 加密技术,所以 GFW 无法从数据传输的过程中的加密数据内容进行关键词分析,避免了被重置链接的问题,但由于创建隧道和数据传输的过程中,ssh 本身的特征是明显的,所以 GFW 一度通过分析连接的特征进行干扰,导致 ssh 存在被定向进行干扰的问题

sha 

于是 clowwindy 同学分享并开源了他的解决方案

简单理解的话,sha 是将原来 ssh 创建的 Socks5 协议拆开成 server 端和 client 端,所以下面这个原理图基本上和利用 ssh tunnel 大致类似

1、6) 客户端发出的请求基于 Socks5 协议跟 ss-local 端进行通讯,由于这个 ss-local 一般是本机或路由器或局域网的其他机器,不经过 GFW,所以解决了上面被 GFW 通过特征分析进行干扰的问题 2、5) ss-local 和 ss-server 两端通过多种可选的加密方法进行通讯,经过 GFW 的时候是常规的TCP包,没有明显的特征码而且 GFW 也无法对通讯数据进行解密 3、4) ss-server 将收到的加密数据进行解密,还原原来的请求,再发送到用户需要访问的服务,获取响应原路返回 ss-04

  •                  

    网络安全问题实际是黑客之间的道高一尺魔高一丈的角逐。代码开源是很不利的,建议clowwindy同学修改关键部分,不要公开,或许能更有效些。

                           
    • 回复

    • 分享 ›


      • 头像            
                       

        非常感谢,网上的资料比较少,写的这么通俗易懂的就更少了。特别是配图非常有助理解!谢谢作者!

                               
      • 回复

      • 分享 ›


        • 头像            
                         

          感谢,懒得自己写了,已外链,希望不会404
          http://sobaigu.com/software...                                    

                                 
        • 回复

        • 分享 ›


          • 头像                
                             

            感谢博主深入浅出的介绍,想了解下如果server 端是自己搭建的,但是client 端是网上下载到的,或者app store买到的,想问下client 端有没有可能不安全,后果是什么,又因为ss并没有官方client 端,该如何规避呢谢谢!


          •                  

            感谢博主深入浅出的介绍,想了解下如果server 端是自己搭建的,但是client 端是网上下载到的,或者app store买到的,想问下client 端有没有可能不安全,后果是什么,又因为ss并没有官方client 端,该如何规避呢谢谢!

                                   
            • 回复

            • 分享 ›


              • 头像                    
                                         

                sha 有服务端有客户端,服务端是自己搭建的?这话要怎么理解?服务端的程式难道不是别人共享出来的吗?担心客户端程式,为何不担心服务端的程式?本都是开源程序,担心有些多余.不过,有一点说的没错,ss不保证安全,本质上只是设置了密码的网络代理协议,不能用作匿名通信方案

                                               
              • 回复

              • 分享 ›


              • 头像            
                               

                不错不错呢~

                                       
              • 回复

              • 分享 ›


                • 头像                
                                   

                  clowwindy 好像是个女的,
                  “于是 clowwindy 同学分享并开源了他的解决方案”,应该改一下啊。

                                         
                • 回复

                • 分享 ›


                  • 头像            
                                   

                    我工作所在的局域网环境处于被网络哨兵监控的环境当中(准确说是:中科新业网络哨兵)之前我在这局域网里使用付费VPN(海外加速模式)来登陆境外的站点。纯粹一次无聊想了解一下所在的局域网那些机器开了80端口,然后才发现原来部署了上述这货。然后我尝试用这货的默认密码登陆,让我登陆上了。然后搜索自己局域网的IP,好家伙!之前登陆过的网址都给它扒出来了,吓了一身冷汗。这段时间为此我暂时使用办公室外更不安全的公共WIFI。也为此一直想找办法来抵御这种监控?翻了很多资料 VPN的 SS的,所在知识水平有限,一直弄不懂。我想问的是像SS这种连接方式能否抵御我上述描述这种监控?烦请博主指点迷津,万分感谢。

                    • 从纯技术层面来看,只要使用到中间服务(不管是VPN、SS、传统代理),且这个服务不是自己搭建的话,都存在中间人攻击的风险;

                      不完全只是监控,可能是因为中间服务商缓存了数据,提升访问效率;

                      另外,即便中间服务商是会监控访问的网站,但如果是通过HTTPS进行访问的,因为传输的数据是有加密的,所以一般情况下不用担心数据的泄漏的,除非中间服务商别有用心的劫持了证书而你又恰好没有留意证书警告... 归根结底还是中间服务商的信任问题

                                                 
                    • 回复

                    • 分享 ›


                  • 头像                
                                     

                    普通网民想问一下,这个SS账号到底是啥。朋友扔了个配置好的软件就给我了。能用,但是我还是想知道这个SS账号是啥。为什么这一类软件都要这个。

                                           
                  • 回复

                  • 分享 ›


                    • 头像                    
                                               

                      私有的服务都需要身份验证,如果缺少验证,那岂不是只要知道IP地址就谁都能用了?(带宽的成本,数据的安全性都是提供服务的服务方需要考虑的)

                  • 头像            
                                   

                    多谢博主科普~另外想问下,可不可以理解成ss的价值主要体现在SS Local这部分呢?那和vpn技术区别在什么地方呢?

                                           
                  • 回复

                  • 分享 ›


                    • 头像                    
                                               

                      主要的价值在于 SS Local 和 SS Server 对数据传输特征的混淆,以及不需要保持长连接,本质上还是代理;
                      VPN 是构建虚拟专用网,本质上是构建了一个网络,数据通过虚拟网络的设置路径进出

                                                     
                    • 回复

                    • 分享 ›


                    • 头像            
                                     

                      博主,我想请问一下你这个配图是用什么画的,谢谢~

                    • 博主,我想请问一下你这个配图是用什么画的,谢谢~

                                             
                      • 回复

                      • 分享 ›


                        • 头像            
                                         

                          ssh -D 1080 user@remote-server

                          用这条命令启用SSH Tunnel动态端口转发后,本机的ssh client监听本地1080端口,把收到的请求转给ssh server。这跟sha 的原理好像是一样的啊?

                                                 
                        • 回复

                        • 分享 ›


                          • 头像                    
                                                     

                            主要是2个不同的地方:
                            1)SSH Tunnel 创建了的通道特征是明显的(socks),所以墙很容易识别,并进行干扰;而 sha 在这个基础上对通讯特征加入了混淆,墙识别不了特征就过去了;
                            2)SSH Tunnel 创建的通道是长连接的,一旦断线需要重连;sha 不需要保持实时连线;

                        •                

                          我有个问题:这种方案可以解决web基本数据访问,但是对于流媒体和数据下载这方面是怎么解决的呢?盼回复

                                                 
                          • 回复

                          • 分享 ›


                            • 头像                        
                                                       

                              全局代理。

                                                             
                            • 回复

                            • 分享 ›


                            • 头像                
                                               

                              谢谢,用简洁的语句为门外汉概括了整个流程。但是我有个疑问,未来sha 是否有可能像ssh隧道一样被封杀?

                                                     
                            • 回复

                            • 分享 ›


                              • 头像            
                                               

                                感谢,弄懂了不少知识~

                                                       
                              • 回复

                              • 分享 ›


                                • 头像                
                                                   

                                  写得通俗易懂;买个VPS,部署ss Server,本地安装SS客户端口就可以畅游网络了。



                                •                  

                                  sha 的工作方式和目的与其说是加密更倾向于是混淆 (。 因为本身用到的密码学方案的安全性已经被破坏了

                                                         
                                  • 回复

                                  • 分享 ›


                                    • 头像                
                                                       

                                      我源码安装之后,有这几个文件: ss-local ss-manager ss-redir ss-server ss-tunnel,我只用了ss-server,其他都要怎么用?完全没有教程啊。。。ss-local是linux版的客户端吧,我用mac就直接有mac客户端就不需要ss-local对吗?ss-manager从名字上看是用来管理的,但是要怎么管理?ss-redir是重定向?也不知道怎么用,ss-tunnel是什么隧道,也不知道怎么用,楼主能不能出个教程?或者告知一下哪里有教程?官网和github都没有啊

                                                             
                                    • 回复

                                    • 分享 ›


                                      • 头像                
                                                         

                                        请问ss-local和PC(和server的链接)的区别体现在哪里?

                                                               
                                      • 回复

                                      • 分享 ›


                                        • 头像                    
                                                                   

                                          ss local 实际上只是一个程序而已,它的主要目的是将请求加密,并发送给 ss server 端进行代理。

                                          更多的情况是,PC 和 ss local 是同一台物理机器,但是如果没有 ss local 的话,PC发出的是未加密的请求,所以在中途经过 GFW 这一层,就已经被过滤掉了,就算没有被过滤掉,ss server 也无法通过正确的解密转发 PC 的请求。



                                      • 头像                
                                                         

                                        深入浅出的说明了两者的关系。谢谢你有价值的工作。来自西部丘陵地区的网友。

                                                               
                                      • 回复

                                      • 分享 ›


                                        • 头像            
                                                         

                                          楼主的博客很清爽,是自己写的还是wordpress?能否告知

                                                                 
                                        • 回复

                                        • 分享 ›


                                          • 头像            
                                                           

                                            可以清理一下垃圾评论了

                                                                   
                                          • 回复

                                          • 分享 ›


                                            • 头像            
                                                             

                                              写的通俗易懂

                                                                     
                                            • 回复

                                            • 分享 ›


                                              • 头像            
                                                               

                                                看了好久还是没搞明白,都在说配置很简单,却要安装这个安装那个,注册这个注册那个,最后还是没搞好。想问在使用sha 之前是不是要先有一个什么帐号啊(没搞清)?那个帐号是不是要付费购买的?

                                              • 头像                
                                                                 

                                                被封了,博主是否有源代码啊

                                                                       
                                              • 回复

                                              • 分享 ›


                                                • 头像                    
                                                                           

                                                  因为是Git,在GitHub上被Fork过的源码就不会消失,可以看项目代码的network
                                                  https://github.com/sha ...

                                                                                 
                                                • 回复

                                                • 分享 ›


                                                • 头像            
                                                                 

                                                  clowwindy 的github页面被清空了。。。尼玛

                                                                         
                                                • 回复

                                                • 分享 ›


                                                  • 头像            
                                                                   

                                                    写的通俗易懂,博主我可以转载你的这个文章么,我会注明出处



                                                    •                      

                                                      博主的文章结尾处已经注明了CC BY-NC-SA 3.0协议,按这个协议转载。

                                                                                 
                                                    • 回复

                                                    • 分享 ›


                                                  • 头像                
                                                                     

                                                    请问一下,用ss登陆gmail的话,密码会被记录在vps服务器里面吗?换句话说,安全吗?谢谢!

                                                                           
                                                  • 回复

                                                  • 分享 ›


                                                    • 头像                    
                                                                               

                                                      这样说吧,ss 或者 vpn 或者其他代理服务,因为都是属于数据传输中的中间人,所以在传输的过程中原则上都能获取并且记录下 客户端<->服务端 之间的数据包数据;

                                                      但具体到 Gmail登录 这个例子,因为 Gmail 在登录过程中使用了 https,而 https 的机制会对每一次访问的客户端和服务端生成唯一的访问密钥,所以每一次传输的数据,只有建立起了通道的双方才能理解传输内容的意义,这样即使中间人获取到了这些信息,对于中间人来说,他是无法理解的,并且也无法通过记录下来下次继续使用,所以是安全的;

                                                      但是万一SSL证书被劫持了,那就又是另外一个问题了,建议去了解下相关的安全知识。

                                                      ----------

                                                      所以,总结来说,在一般情况下,用ss登录gmail的话,大部分是安全的 :)




                                                    • weweTom  Vincent  7 年前

                                                      证书是否被劫持,浏览器应该可以识别吧

                                                                 

                                                    • 回复

                                                    • 分享 ›


                                                    • 头像

                                                      Vincent 管理员  weweTom  7 年前            

                                                      正常是可以被识别出来的,但是当被浏览器认可的CA结合DNS劫持的情况下,虽然浏览器是绿灯而且你以为登录的是正确的网站,但是你的信息可能会被劫持方获取,下面是我之前访问Dropbox遇到的一个情况


                                                                 

                                                                 


                                                                 

                                                      在Chrome下是被默认检测出来了,但是在IE下被劫持了SSL证书时,是没有显示,和正常访问Dropbox时一样

                                                      查看更多            

                                                    • 回复

                                                    • 分享 ›



                                                  • 头像

                                                    wkl17  7 年前  edited        

                                                    sha 相比VPN如何呢?只用过VPN,早知道SSH Tunnel这种方式,但因为自己有VPN Server所以没尝试过,是否能简介,对比一下?



                                                  • 头像            
                                                                   

                                                    感谢分享

                                                                           
                                                  • 回复

                                                  • 分享 ›


                                                    • 头像            
                                                                     

                                                      还不错哦

                                                                             
                                                    • 回复

                                                    • 分享 ›


                                                      • 头像            
                                                                       

                                                        博主文章通俗易懂,功力深厚啊!不过有个地方不太明白,博主说:“由于创建隧道和数据传输的过程中,ssh 本身的特征是明显的,所以 GFW 一度通过分析连接的特征进行干扰”,这和我们平时在终端上用 ssh 连接 VPS 是一样的吗?这个过程是不是也就是和 VPS 建立一个 ssh tunnel,如果是的话,为什么这个过程不会被 GFW 干扰呢?




                                                      来自  http://vc2tea.com/whats-sha/


                                                      普通分类: