今天这篇算是补之前的欠债——俺在4年前写过几篇关于 CA 证书的扫盲(“这里”和“这里”),之后有不止一位热心读者建议俺写一篇关于 HTTPS 的扫盲。因为俺比较懒,当时没动笔,一拖就是两三年,都有点忘了。正好今年出了两个跟 HTTPS 相关的高危漏洞(Heartbleed 和 PODDLE),于是俺又想起这事儿。
本来想单独写一篇。等写完“背景知识”这一章节,发现篇幅已经很长了。所以就再开一个系列吧。
事先声明:
既然叫做“扫盲”,所以俺尽量避免讲太多的“技术实现细节”(当然,更不会去讲“代码实现”)。本系列侧重于:尽可能通俗地介绍“设计思路”、“实现原理”,最后再聊聊“针对 HTTPS 的攻击手法”和“相关的安全防范措施”。一开始计划写3~4篇,后来篇幅有点失控,估计要写7~8篇。
虽然是扫盲,或许也能让 IT 技术人员从中获益——因为俺发现:连安全行业的某些程序员,对 HTTPS 的原理也所知甚少。
为了方便阅读,把本系列帖子的目录整理如下(需翻墙):
1. 背景知识、协议的需求、设计的难点
2. 可靠密钥交换的难点,以及身份认证的必要性
3. 扫盲几种密钥交换(密钥协商)算法
4. 历史版本的演变及 Record 协议的细节
5. 握手过程的细节
6. 针对 HTTPS 的各种攻击手法
7. 各种相应的防范措施
俺博客上,和本文相关的帖子(需翻墙):
《计算机网络通讯的【系统性】扫盲——从“基本概念”到“OSI 模型”》
《扫盲 DNS 原理,兼谈“域名劫持”和“域名欺骗/域名污染”》
《对比4种强化域名安全的协议——DNSSEC,DNSCrypt,DNS over TLS,DNS over HTTPS》
《如何隐藏你的踪迹,避免跨省追捕》(系列)
《扫盲 netcat(网猫)的 N 种用法——从“网络诊断”到“系统入侵”》
《如何让【不支持】代理的网络软件,通过代理进行联网(不同平台的 N 种方法)》
版权声明
本博客所有的原创文章,作者皆保留版权。转载必须包含本声明,保持本文完整,并以超链接形式注明作者编程随想和本文原始地址:
https://program-think.blogspot.com/2014/11/https-ssl-tls-0.html
本博客所有的原创文章,作者皆保留版权。转载必须包含本声明,保持本文完整,并以超链接形式注明作者编程随想和本文原始地址:
https://program-think.blogspot.com/2014/11/https-ssl-tls-0.html
47 条评论
我不是抢沙发
回复删除呵呵
to:v499
删除能不能去看看博客界面升级——重新实现【全站搜索】,比 Google 更准确地搜索评论 18楼 14单元和18单元,因为谷歌误判顺序反了,您先看18单元,谢谢
TO v499
删除此地无银 :)
人气真高,顶
删除二楼,来看看
回复删除vpngate显示连接上了,但是浏览器察看ip还是自己的ip,上不去国外网站。还有这种事让我怎么放心用啊
回复删除vpagate有时不稳定,所以连接上以后我都要看自己IP有没有变。你说的还是自己的IP,其实是没有连接上。
删除TO 678
删除同意 1单元 的解释——你这种情况多半是 VPN 压根儿没有联上(或者已经断开)
保险的做法是:VPN + TOR(双重代理)
如果 TOR 能联上,说明 VPN 已经联上。
关于“双重代理”的教程,请参见《[url=http://program-think.blogspot.com/2010/04/howto-cover-your-tracks-0.html]如何隐藏你的踪迹,避免跨省追捕[/url]》
我觉得双重代理很好,只要tor连上,vpngate连接的的成功率会大大增加,不过有时tor会显示连接超时,麻烦问下编程兄如何解决,我的tor还是老版本的,是不是换了新版的会好些呢
删除TO 3单元的网友
删除你提到说:
“只要tor连上,vpngate连接的的成功率会大大增加”
你是不是说反了?
另外,TOR Browser 软件包已经出到 4.0 版本。用它内置的 meek 插件,可以独立联网。
具体教程请看《[url=http://program-think.blogspot.com/2014/10/gfw-tor-meek.html]“如何翻墙”系列:TOR 已复活——meek 流量混淆插件的安装、优化、原理[/url]》
博客界面升级——重新实现【全站搜索】,比 Google 更准确地搜索评论 14楼18楼顺序反了,这样的话从解决问题的顺序上就错了,14楼的解决方法不知道编程和v443感觉怎么样,能不能帮着解决一下,因为socks单代理不好找,解决这个问题可能会帮助很多人,谢谢了
回复删除是18楼 14单元和18单元顺序反了,我说错了在此补充
删除TO 678
删除待会儿俺去回复前一篇博文的留言。
to:编程随想
回复删除能到"每周转载:党国红人周小平惨遭围观——网友称:请不要辜负这个傻逼"能不能回复一下21楼,因为netsh的socks端口转发在虚拟机隐藏中不能连接不是个例,在1年前我问过此问题但是只是解决tor的socks问题几乎看明白标题的人都不能直接连接,是有个博友找到设置torrc文件的办法解决的,但是现在要解决赛风socks就不行了,因为赛风没有设置文件啊,如果没有解决的方法我就放弃了,老是认为能解决可是到最后解决不了的问题实在难受
rinetd按您的方法设置后cmd提示不是内部命令,麻烦您别凭自己的经验看这个问题,而是根据您的博文设置一下,看看哪里遗漏了,麻烦补上,因为看您博文的大多都是小白,既然是扫盲还是详细些才能起到效果
TO 678
删除关于 netsh 进行端口转发
这种方式确实存在兼容性的问题。
比如有的读者反馈说——在精简版的 Win7 上没法用。
兼容性比较好的是 rinetd——因为这个工具本身就是跨平台的(Windows 和 Linux),所以不会太依赖 Windows 本身的一些特性。
你碰到的错误提示——“rinetd 不是内部命令”
这是因为你没有正确地切换目录。
刚才俺已经在
《[url=http://program-think.blogspot.com/2013/01/cross-host-use-gfw-tool.html]多台电脑如何共享翻墙通道[/url]》
加了一些补充说明,你去看一下。
如果还是看不明白,俺再继续补充。
老实说,切换目录是命令行操作最基本的技能。
如果你稍微懂一丁点命令行操作,应该都不会碰到此问题了
TO 编程随想
删除直接 drag-n-drop rinetd 进cmd不行吗?
已经对socks在虚拟机中的转发不抱什么希望了,但是本着负责任的态度在此分享我的实验结果
删除主机rinetd 转发赛风 8080 端口10000 成功
主机rinetd 转发赛风 1080 端口10000 失败(主机中可以)
主机rinetd 转发tor 9050 端口10000 失败(主机中可以)
我觉得与兼容性应该没关系,因为和netsh结果完全一致
删除都说了是DNS问题...
删除虚拟机不知道目标网站的IP...自然上不了,
不信? 试试以 IP 为网址
Firefox用远端DNS就可以了...
sc32还有其他类似软件,有远程解析dns选项,也有本地解析。远程桌面连接就是ip阿tor可以,赛风不可以
删除重新说一下测试结果
删除tor在虚拟机中经过端口转发,直接输入ip可以访问
问题:既然是端口转发,那么转发的数据应该转回主机处理才对,为什么主机中直接在浏览器中设置可以在虚拟机中就不可以
关键问题:同样的socks协议为什么tor可以在主机和虚拟机中连接(远程桌面连接) 赛风确不可以呢?这个才是我真正要解决
的问题
TO v499
删除俺还真没用过你说的这招——把某个 exe 直接拖拽到 cmd 窗口。
因为俺很早就习惯用命令行的方式,经常用 cmd 进行各种操作。
所以都是先用 cd 切换目录,然后运行(非系统目录下的) exe
TO 678
删除如果你用 rinetd 和 netsh 进行端口转发,效果相同。
那么就可以排除 netsh 兼容性的问题。
有可能是赛风对 SOCKS 的实现有问题。
(俺没看过 赛风 的源代码,只是猜测)
to:编程随想
删除您能帮忙看看赛风是什么原因通过sc32及类似工具,不能调用远程桌面的原因吗?能解决最好,因为tor太慢了。虽然tor很安全
nginx配置tls后,浏览器上显示“连接使用rc4-128进行加密的”。据说使用rc4-128不太安全,求教应该怎么换成aes-256加密?
回复删除看此: http://blog.rlove.org/2013/12/strong-ssl-crypto.html
删除其实目前最好的应是: AES-256-GCM, 但mozilla的NSS只支援到aes128-gcm, 但都可以了~
另外别启动/SSLv3, 有POODLE...
TO v499
删除多谢替俺回答问题 :)
关于 SSL v3 的漏洞,前2月刚曝光的。
据说从 Firefox 34 版本开始,会把 SSL v3 的选项禁掉
其实在主机中使用vpngate来调用远程桌面是无奈的选择,虽然vpngate前置+tor的组的很犀利,但是对于墙内大多数同学来说是一种美好的折磨,所以忍痛寻找到赛风这个家伙,因为单独使用vpngate有时会出现假连接现象,这个太无语了。没想到赛风出现奇怪现象socks+sc32连不到远程桌面,tor却可以。再前面的博文18楼讨论了,可也没结果,心中不解。官方好像说赛风是开源的,麻烦编程君能不能研究下到底能不能解决?
回复删除因为单独使用vpngate有时会出现假连接现象,这个太无语了。
删除这个的确是个问题,我也遭遇过。
TO 678
删除或许可以换一个思路,用 TOR 直连。然后其它软件走 TOR 内置的 SOCKS 代理。
近期 TOR Browser 软件包升级到 4.0 版本之后,已经能够直接联网。
请参见《[url=http://program-think.blogspot.com/2014/10/gfw-tor-meek.html]TOR 已复活——meek 流量混淆插件的安装、优化、原理[/url]》
如此一来,既避开了 赛风 的奇怪问题,也避开了 VPNgate 断线导致的“公网IP暴露”
关于https的文章我之前也在博客中写过。
回复删除TO 枫之落叶
删除原来你也写过这个话题 :)
那可否对本系列提点意见?
博客 大概什么时候还会推出一个版本 ,以包含最新的博客全部内容?
回复删除TO 小明
删除本博客的打包下载,前一个版本是10月初发布的。
或许到下月初,俺再出一个版本放到网盘上。
因为博客的内容越来越多,打包文件已经超过100兆。
所以俺稍微把更新周期拉长了。
pozhu,第3 4 5 篇文章呢?找不到链接?
回复删除博主只写了个标题,还没写博文所以还没有链接
删除这个系列很赞,相比您的政治博文,我更喜欢您的技术博文,通俗易懂,又不失专业。期待此系列的后续,支持编程随想
回复删除哥,您的下边怎么没了?
回复删除老大,啥时候把3、4、5部分的介绍补上啊?很期待啊!
回复删除http://www.techug.com/https-ssl-tls
回复删除老大,有人盗用你的文章啊。
关于3、4、5剩下的部分,如果您没时间写的话,能不能给我们推荐下应该怎么学习呢,有没有推荐的参考书之类的。
回复删除大神,我最近在学习https相关知识,整理个博客记述https以及在iOS开发中的用法以便加深自己的理解,大量引(chao)用(xi)你的博客内容。希望得到大神允许,如果允许就在简书发出来
回复删除不用大神允许就能引用,请留意文章下方的版权声明。
删除翻了好久,原来大哥你真的没写这个系列的4,5,6。。。催更。。。
回复删除真心催更!!!
删除前些日子github被中间人攻击,博主是时候填这系列的坑了
回复删除催更!催更!!催更!!!
回复删除