SSL/OPENSSL笔记
来源:互联网 发布:网络奇兵武器 编辑:程序博客网 时间:2024/05/07 00:42
SSL&OPENSSL
如果访问某宝,细心的朋友会发现,该网站已经从 http协议转变成了https协议。
http一直是明文传输了,对于某宝这样体量的网站,会遇到哪些问题呢? 为什么某宝需要从http协议更改成https呢?
举个栗子:
运营商劫持
用户在某宝网搜索羽绒服,发起请求之后,网站根据内部核心的算法和数据推算,向用户返回返回网站认为现在最好的top40个羽绒服的时候,一些地方的运营商,可以截获某宝的http包,然后篡改其内容。比如:插入4件质量低下的羽绒服置顶。 这是一个很恐怖的事情,相当于直接改变了某宝的排序规则,很多不法商家在退货率极高,次品率极高的情况下,能直接联系运营商,强行展示在用户面前。这不仅伤害了网站运营者,也直接伤害了用户的购买体验。
如果切换成https协议,那么这类事件将不会发生。
https协议是在http协议的基础上增加了ssl层。
SSL&TLS
SSL(Secure Sockets Layer)即安全套接字,设计目的是Web的安全传输,不过由于被发现存在漏洞,IETF将SSL作了标准化,即RFC2246,并将其称为TLS(Transport Layer Security)。
具体消息:2014年10月,Google发布在SSL 3.0中发现设计缺陷,建议禁用此一协议。攻击者可以向TLS发送虚假错误提示,然后将安全连接强行降级到过时且不安全的SSL 3.0,然后就可以利用其中的设计漏洞窃取敏感信息。Google在自己公司相关产品中陆续禁止向后兼容,强制使用TLS协议。Mozilla也会计划于11月25日发布的Firefox 34中,将彻底禁用SSL 3.0。微软也同样发出了安全通告。
关于TLS中文维基有很详细的描述,这里不再赘述。链接地址(需翻墙)
openssl
openssl,是目前被广泛应用的ssl的一个开源实现。 apache基金会的很多开源项目也都直接间接的引用openssl的实现。
其主要库是以C语言所写成,实现了基本的加密功能,实现了SSL与TLS协议。OpenSSL可以运行在绝大多数类Unix操作系统上(包括Solaris,Linux,Mac OS X与各种版本的开放源代码BSD操作系统),OpenVMS与 Microsoft Windows。它也提供了一个移植版本,可以在IBM i(OS/400)上运作。
算法
OpenSSL支持多种不同的加密算法:
加密:
AES、Blowfish、Camellia、SEED、CAST-128、DES、IDEA、RC2、RC4、RC5、Triple DES、GOST 28147-89
散列函数:
MD5、MD2、SHA-1、SHA-2、RIPEMD-160、MDC-2、GOST R 34.11-94[3]
公开密钥加密:
RSA、DSA、Diffie–Hellman key exchange、 Elliptic curve、GOST R 34.10-2001
某大牛说
“虽然openssl频繁爆出漏洞,代码实现很糟糕,甚至OpenBSD发起一个清理OpenSSL代码的项目。。。但是世界还是离不开它!”—蘑菇街 安全团队负责人 李润哲
Heartbleed bug
给自己也科普一下轰动全球的漏洞。
openSSL 1.0.1版本(不含1.0.1g)含有一个严重漏洞,可允许攻击者读取服务器的内存信息。该漏洞影响三分之二的活跃网站
心血漏洞是一个出现在加密程序库OpenSSL的程序错误,首次于2014年4月披露。该程序库广泛用于实现互联网的传输层安全(TLS)协议。只要使用的是存在缺陷的OpenSSL实例,无论是服务器还是客户端,都可能因此而受到攻击。此问题的原因是在实现TLS的心跳扩展时没有对输入进行适当验证(缺少边界检查),因此漏洞的名称来源于“心跳”(heartbeat)。该程序错误属于缓冲区过读,即可以读取的数据比应该允许读取的还多。
因为缺陷在于OpenSSL的实现,而不是SSL/TLS协议本身,所以除了OpenSSL之外的其他TLS实现方式,如GnuTLS和Mozilla的网络安全服务(NSS)都未受影响。此外,微软的产品或服务均不受影响。
Linux下的OPENSSL
对于像我这样的初学者,可以把OPENSSL一个功能强大的工具包,因为它集成了众多密码算法及实用工具。我们即可以利用它提供的命令台工具生成密钥、证书来加密解密文件,也可以在利用其提供的API接口在代码中对传输信息进行加密。
查看openssl提供了哪些加密算法:
$ openssl list-cipher-commands
下面对文件进行加解密的例子,用了AES
给”myfile.txt” 进行加密,用AES 的CBC模式, 在shell里运行:
$ openssl enc -aes-256-cbc -salt -in myfile.txt -out myfile.enc
会提示让你输入加密的密码~之后就加密完成了。
解密:
$ openssl enc -d -aes-256-cbc -in myfile.enc -out myfile.txt
在代码中使用的话,由于平时不做C++,就不进一步研究啦~
- SSL/OPENSSL笔记
- 【openssl学习笔记】SSL Server Cert制作
- lighttpd + fastcgi + ssl (openssl)
- OpenSSL的SSL/BIO_get_fd
- 【OpenSSL】ssl client
- QT SSL OpenSSL https
- OpenSSL-SSL协议
- SSL, SSL_CTX, SSL_SESSION(OPENSSL)
- SSL、openSSL、CA
- openssl 生成SSL证书
- openssl 生成 SSL证书
- openssl生成ssl证书
- openssl查看ssl证书
- OpenSSl生成 SSL证书
- openssl_context = OpenSSL.SSL.Context(OpenSSL.SSL.TLSv1_METHOD)
- 用openssl进行SSL编程
- OPENSSL关键数据结构之一:SSL
- openssl自建证书SSL+apache
- 记录-mysql的sql执行效率方法
- Java设计模式 状态模式(State)
- 遍历结果集,执行20条insert语句
- Python 换行符转换
- 文本分类与SVM
- SSL/OPENSSL笔记
- 142,Double和Float
- Linux init.d
- 车辆磨合篇
- (小笔记) android 直接拨打电话和进入拨打电话界面
- 进程的虚拟内存,物理内存,共享内存
- qmake 命令浅析
- Type 'jstring' could not be resolved.bug解决 eclips android jni mac
- 打印助手-打印暂停/开始问题原因调研记录