Total Pageviews

Sunday, 30 July 2017

为shadowsocks开启chacha20加密

shadowsocks现在主流的加密方式有两种:aes-256-cfb和rc4-md5 前者加密强度高(指的并不是安全性高而是更难被GFW检测出来)但系统开销会更大一点,它是很多一键包默认的加密方式,后者加密解密速度比前者快得多,但安全性不够,虽目前使用还算正常,但已经不能保证通信内容肯定不会被GFW检测出来了。
加密强度高会增加一些额外的系统开销,现在的电脑手机之类的设备性能已经很强了,增加的这个负担在日常使用中基本很难察觉。所以如果你的ss只是在电脑或一些性能较强的手机平板之类设备上使用,我推荐使用aes-256-cfb。
但如果是用在路由器上,因为很多路由器CPU速度都在500MHz以下,性能并不强,使用aes-256-cfb多出来的那点性能开销在路由器上可能会构成一个影响性能的大问题,所以,之前使用在路由器上的加密方式一般都选rc4-md5。
因为在路由器等性能不强的设备上使用aes加密方式会影响性能,使用rc4-md5又加密强度不够,所以人们创造了Salsa20这个加密算法,它比前辈rc加密算法速度更快而加密强度更高,后来,Google又在这个算法的基础上开发了chacha20这个更快加密更强的算法。基本上,它现在算是性能不强的设备使用最佳的算法了。
我在家里的路由器上使用shadowsocks实现了自动翻墙,之前使用的加密算法是rc4-md5,了解到有chacha20这么个逆天的算法后,果断把加密算法改成这个。
服务器上的shadowsocks服务端为go版,自身不带这个算法,需要安装libsodium,让系统支持这个算法。
libsodium官网上的稳定版本已经更新到1.0.10,网上很多教程写的都是1.0.3或1.0.8版本,本着装新不装旧的原则,安装最新版的
系统为debian7 安装命令如下
apt-get install build-essential
wget https://download.libsodium.org/libsodium/releases/libsodium-1.0.10.tar.gz
tar zxvf libsodium-1.0.10.tar.gz
cd libsodium-1.0.10
./configure
make && make install
ldconfig
之后更改shadowsocks的加密方式
vi /etc/shadowsocks/config.json
"method""aes-256-cfb"改为"chacha20"就可以了。
之后重启shadowsocks
/etc/init.d/shadowsocks restart
注意客户端也要相应更改加密方式为chacha20。
-----------


为OpenSSL打补丁,添加ChaCha20-Poly1305加密套件


本教程是教你如何让你的 OpenSSL 支持 CHACHA20-Poly1305,使网站SSL安全更上一层楼
网站环境请自备,网上有很多一键包,推荐oneinstack,安装LNMP环境即可
本篇文章也是以OneinStack为基础写的,你可以发动大脑运用在你的环境上
使用oneinstack安装完环境后,重启,
进入src目录
cd /root/oneinstack/src
由于cloudflare的CHACHA20补丁目前支持的是openssl1.0.2j
我们需要删除自带的openssl1.0.2l
rm -rf /root/oneinstack/src/openssl-1.0.2l
再从官网下载openssl1.0.2j并解压
wget https://www.openssl.org/source/openssl-1.0.2j.tar.gz 
tar zxvf openssl-1.0.2j.tar.gz
进入openssl1.0.2j目录打补丁并编译
cd openssl-1.0.2j
curl https://raw.githubusercontent.com/cloudflare/sslconfig/master/patches/openssl__chacha20_poly1305_draft_and_rfc_ossl102j.patch
patch -p1 < openssl__chacha20_poly1305_draft_and_rfc_ossl102j.patch
#编译
./config
make && make install
查看自己的Nginx的configure arguments有哪些,下一步的安装编译需要用到
nginx -V
configure arguments: --prefix=/usr/local/nginx --user=www --group=www --with-http_stub_status_module --with-http_v2_module --with-http_ssl_module --with-http_gzip_static_module --with-http_realip_module --with-http_flv_module --with-http_mp4_module --with-openssl=../openssl-1.0.2l --with-pcre=../pcre-8.40 --with-pcre-jit --with-ld-opt=-ljemalloc
#在编译的时候,configure需要带上 --with-openssl=/usr/src/openssl-1.0.2j

解压oneinstack自带的nginx源码
tar zxvf nginx-1.12.0.tar.gz
cd nginx-1.12.0
#开始配置编译
./configure configure arguments: --prefix=/usr/local/nginx --user=www --group=www --with-http_stub_status_module --with-http_v2_module --with-http_ssl_module --with-http_gzip_static_module --with-http_realip_module --with-http_flv_module --with-http_mp4_module --with-openssl=../openssl-1.0.2j --with-pcre=../pcre-8.40 --with-pcre-jit --with-ld-opt=-ljemalloc
make && make install
至此 服务器已配置支持CHACHA20加密套件!
如何运用?
在站点conf下加入以下内容
ssl_prefer_server_ciphers on;
ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
from http://www.vpsps.com/21.html

No comments:

Post a Comment

Note: only a member of this blog may post a comment.