脆弱的SSL加密算法漏洞原理以及修复方法

漏洞名称:弱加密算法、脆弱的加密算法、脆弱的SSL加密算法、openssl的FREAK Attack漏洞

漏洞描述:脆弱的SSL加密算法,是一种常见的漏洞,且至今仍有大量软件支持低强度的加密协议,包括部分版本的openssl。其实,该低强度加密算法在当年是非常安全的,但时过境迁,飞速发展的技术正在让其变得脆弱。黑客可利用SSL弱加密算法漏洞进行SSL中间人攻击,即强迫服
务器和用户之间使用低强度的加密方式,然后再通过暴力破解,窃取传输内容。强度较弱的加密算法将不能较好的保证通信的安全性,有被攻击者破解的风险。对于linux中openssl的FREAK Attack漏洞,该漏洞是由于OpenSSL库里的s3_clnt.c文件中,ssl3_get_key_exchange函数,允许客户端使用一个弱RSA秘钥,向SSL服务端发起RSA-to-EXPORT_RSA的降级攻击,以此进行暴力破解,得到服务端秘钥。此问题存在于OpenSSL版本0.9.8zd之前, 或1.0.0p之前的1.0.0,
或1.0.1k之前的1.0.1。

检测条件:

1、 已知Web网站开放443端口(https)。
2、 开启了SSL协议。

检测方法:

1、 对于windows中的检测方法:通过加密算法检测工具,与网站系统进行加密算法枚举通信,
探测系统存在的加密算法及位数情况。利用SSLciphercheck软件,通过CMD下运行,进行协议探测进行检测命令:‚sslciphercheck.exe -h ip地址或者域名 -p 443‛,或者是利用web扫描工具,如AWVS,APPscan等进行扫描检测,相关检测截图:

2、 对于openssl的FREAK Attack漏洞,检测如下:https远程检查方法(看一个网站是脆弱的
RSA弱密钥攻击,你可以使用OpenSSL命令):openssl s_client -connect www.fbi.gov:443
-cipher EXPORT,如果你看到‛alert handshake failure‛这句话就说明该网站是安全的:


RedHat系列检查命令:rpm -qa|grep openssl

Debian\Ubuntu系列检查命令: dpkg -l|grep openssl

修复方案:以下为针对脆弱的SSL加密算法漏洞的修复建议,其中包括IIS、apache、和windows本身的一些安全建议方法:

对于linux中openssl的FREAK Attack漏洞,如果因为生产环境无法直连外网或是变更配置管理等原因而不便更新补丁,可以采取以下临时修复方法:

1、 禁用出口级弱加密算法在命令行使用:openssl ciphers MEDIUM。
2、 禁止apache服务器使用出口级加密算法:vi /etc/httpd/conf.d/ssl.conf;增加如下配置:SSLCipherSuite HIGH:!aNULL:!MD5:!EXP;需要重启apache服务:/etc/init.d/httpd restart。
3、 关于nginx加密算法:1.0.5及以后版本,默认SSL密码算法是HIGH:!aNULL:!MD5;0.7.65、0.8.20及以后版本,默认SSL密码算法是HIGH:!ADH:!MD5;0.8.19版本,默认SSL密码算法是:ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM;0.7.64、0.8.18及以前 版 本 , 默 认 SSL 密 码 算 法 是
ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;低版本的nginx或没注释 的 可 以 直 接 修 改 域 名 下 ssl 相 关 配 置 为 ssl_ciphersHIGH:!aNULL:!MD5;需要nginx重新加载服务:/etc/init.d/nginx reloa

对于IIS中SSL,修复方案为:

1、 在 IIS 管理器中,双击本地计算机,然后右键单击所需的某个网站、目录或文件,然后单击‚属性‛。
2、 在‚目录安全性‛或‚文件安全性‛选项卡的‚安全通信‛下面,单击‚编辑‛。
3、 在‚安全通信‛框中,选中‚需要安全通道 (SSL)‛复选框。
4、 如果需要使用 128 位加密,请选择‚要求 128 位加密‛复选框。
5、 单击‚确定‛。

对于Apache的修复方案为:

1、 禁用它只需几分钟的时间。例如,在Apache v2中,你只需要改变默认设置:

SSLProtocol all
To
SSLProtocol all -SSLv2

2、 如何建立一个仅使用SSLv2的服务器:

可以这样建立一个仅使用SSLv2协议及其密码算法的服务器:
httpd.conf
SSLProtocol -all +SSLv2
SSLCipherSuite SSLv2:+HIGH:+MEDIUM:+LOW:+EXP

3、 如何建立一个仅接受强加密请求的SSL服务器:

如下设置为仅使用最强的七种密码算法:
httpd.conf
SSLProtocol all
SSLCipherSuite HIGH:MEDIUM

4、 如何建立一个仅接受强加密请求的SSL服务器,而又允许对外浏览器使用更强的加密:这个功能被称为以服务器为网关的加密(Server Gated Cryptography[SGC]), 在README.GlobalID文档中有详细说明。 简单地说就是:服务器拥有一个由来自Verisign的一个特殊的CA证书签发的服务器身份证, 从而在对外浏览器上实现强加密。 其过程如下:浏览器使用对外密码进行连接,服务器返回其全局ID身份证, 浏览器校验后在后继HTTP通讯产生之前提升其密码组。 现在的问题是:如何允许这样的提升,而又强制性地使用强加密。 换句话说就是:浏览器必须在开始连接时就使用强加密,或者提升到强加密, 但是维持对外密码是不允许的。以下巧妙地解决了这个问题:

httpd.conf
# 允许在初始握手阶段使用所有的密码,
# 以允许对外服务器通过SGC功能提升密码组
SSLCipherSuite
ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
<Directory /usr/local/apache2/htdocs>
# 但是最终会拒绝所有没有提升密码组的浏览器
SSLRequire %{SSL_CIPHER_USEKEYSIZE} >= 128
</Directory>

5、 如何建立接受所有类型密码的SSL服务器,但对特定的URL实施强加密:显然,不能使用服务器全局设置SSLCipherSuite,它会限制密码为强类型。 但是,mod_ssl允许重配置针对目录的密码组,并自动进行一个带有服从新配置的SSL参数的重协商。 因此,其解决方案成了:

httpd.conf
# 在一般情况下的处理是宽松的
SSLCipherSuite
ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
<Location /strong/area>
# 但对于https://hostname/strong/area/ 及其以下的内容
# 要求强密码
SSLCipherSuite HIGH:MEDIUM
</Location>

对于windos系统中,禁用SSL弱加密算法修复方案:

1、 windows server 2003注册表可能与以下的不同。解决方案:Windows Server 2008支持下列协议:•SSL 2.0 •SSL 3.0•TLS 1.0。Windows Server 2008 R2 和Windows 7 支持下列协议:•SSL 2.0 •SSL 3.0•TLS 1.0•TLS 1.1•TLS 1.2,对于服务器或客户端体系结构,可以禁用这些协议。这意味着可以省略该协议,或将其禁用。如果要禁用SSL-V2.0,采用如下方案:

SSL 2.0 的 服 务 器 计 算 机 上 的 注 册 表 位 置 如 下 所 示 :
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Server
(1)若要启用 SSL 2.0,请执行以下步骤: 1.在客户端计算机上,将DisabledByDefault DWORD 值设置为 00000000。 2.在服务器计算机上,将启用的 DWORD 值设置为 0xffffffff。 3.重新启动计算机。
(2)若要禁用 SSL 2.0,请执行以下步骤: 1.在客户端计算机上,将DisabledByDefault DWORD 值设置为 00000001。2.在服务器计算机上,将启用 DWORD 值设置为 00000000。 3.重新启动计算机。

1、 SCHANNEL 键部分、 方法或任务包含一些介绍如何修改注册表的步骤。但是,如果不正确地修改了注册表,可能会出现严重的问题。因此,请确保仔细按照下列步骤操作。为增加保护,对其进行修改之前备份注册表。然后,您可以在出现问题时还原注册表。:

SCHANNEL 键位置:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL
以下为常见的SCHANNEL键子项,包含弱加密算法的一些禁用方法:
(1)56/128 SCHANNEL\Ciphers\RC4 子项:RC4 64/128,若要允许此密码算法,更改到已启用值的 DWORD 值数据 0xffffffff.否则,更改到的 DWORD 值数据 0x0.如果您不配置启用值,默认情况下启用。


(2)56/128 SCHANNEL\Ciphers\RC2 子项:RC4 56/128,56 位 RC4 引用此注 册 表 项 。 若 要 允 许 此 密 码 算 法 , 更 改 到 已 启 用 值 的 DWORD 值 数 据0xffffffff.否则,更改到的 DWORD 值数据 0x0.如果您不配置启用值,默认情况下启用。


(3)SCHANNEL\Ciphers\RC2 56/56 子项:RC2 56/128,56 位 RC2 引用此注册表项。若要允许此密码算法,更改到已启用值的 DWORD 值数据 0xffffffff.否则,更改到的 DWORD 值数据 0x0.如果您不配置启用值,默认情况下启用。


(4)SCHANNEL\Ciphers\RC4 40/128 子项:DES 56,56 位 DES 作为指定 FIPS46-2 中 引 用 此 注 册 表 项 。 FIPS 140-1 加 密 模 块 验 证 计 划 下 , 它 的Rsabase.dll 和 Rsaenh.dll 文件中的实现进行验证。若要允许此密码算法,更改到已启用值的 DWORD 值数据 0xffffffff.否则,更改到的 DWORD 值数据0x0.如果您不配置启用值,默认情况下启用。


(5)SCHANNEL\Ciphers\RC2 40/128 子项:RC4 40/128,这指的是 40 位 RC4。若要允许此密码算法,更改到已启用值的 DWORD 值数据 0xffffffff.否则,更改到的 DWORD 值数据 0x0.如果您不配置启用值,默认情况下启用。


(6)SCHANNEL\Ciphers\NULL 子项:RC2 40/128,40 位 RC2 引用此注册表项。若要允许此密码算法,更改到已启用值的 DWORD 值数据 0xffffffff.否则,更改到的 DWORD 值数据 0x0.如果您不配置启用值,默认情况下启用。


(7)SCHANNEL\Hashes\SHA 子项:MD5,若要允许此哈希算法,将启用值的DWORD 值数据更改为默认值 0xffffffff.否则,更改到的 DWORD 值数据 0x0.有效地禁用此算法时,不允许以下:•SSL_RSA_EXPORT_WITH_RC4_40_MD5,•SSL_RSA_WITH_RC4_128_MD5 , • SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5 , •TLS_RSA_EXPORT_WITH_RC4_40_MD5 , • TLS_RSA_WITH_RC4_128_MD5 , •TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5。


(8)SCHANNEL/KeyExchangeAlgorithms 子项:SHA,此注册表项是指安全哈希算法 (sha-1),指定 FIPS 180-1 中。FIPS 140-1 加密模块验证计划下,它的 Rsabase.dll 和 Rsaenh.dll 文件中的实现进行验证。若要允许此哈希算法,将启用值的 DWORD 值数据更改为默认值 0xffffffff.否则,更改到的DWORD 值 数 据 0x0. 有 效 地 禁 用 此 算 法 时 , 不 允 许 以 下 :

•SSL_RSA_WITH_RC4_128_SHA , • SSL_RSA_WITH_DES_CBC_SHA , •SSL_RSA_WITH_3DES_EDE_CBC_SHA,•SSL_RSA_EXPORT1024_WITH_DES_CBC_SHA,
• SSL_RSA_EXPORT1024_WITH_RC4_56_SHA , • TLS_RSA_WITH_RC4_128_SHA , •
TLS_RSA_WITH_DES_CBC_SHA , • TLS_RSA_WITH_3DES_EDE_CBC_SHA , •TLS_RSA_EXPORT1024_WITH_DES_CBC_SHA , •TLS_RSA_EXPORT1024_WITH_RC4_56_SHA。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/591386.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RDS快速入门

目录 实例创建 设置白名单 RDS&#xff08;Relational Database Service&#xff09;是一种托管式的关系型数据库服务&#xff0c;它为用户提供了一种简单、可靠、安全的方式来部署、操作和扩展数据库。具有安全可靠、解决运维烦恼、有效降低成本和自研增加等四大特性&#x…

腾讯云服务器CVM和轻量应用服务器优惠价格表2024年更新

腾讯云服务器租用价格表&#xff1a;轻量应用服务器2核2G3M价格62元一年、2核2G4M价格118元一年&#xff0c;540元三年、2核4G5M带宽218元一年&#xff0c;2核4G5M带宽756元三年、轻量4核8G12M服务器446元一年、646元15个月&#xff0c;云服务器CVM S5实例2核2G配置280.8元一年…

无监督关键词提取算法:TF-IDF、TextRank、RAKE、YAKE、 keyBERT

TF-IDF TF-IDF是一种经典的基于统计的方法&#xff0c;TF(Term frequency)是指一个单词在一个文档中出现的次数&#xff0c;通常一个单词在一个文档中出现的次数越多说明该词越重要。IDF(Inverse document frequency)是所有文档数比上出现某单词的个数&#xff0c;通常一个单词…

LT8713SX高性能Type-C/DP1.4到Type-C/DP1.4/HDMI2.0转换器,USB3.0高速双向无源开关,支持同屏异显

LT8713SX是一款高性能Type-C/DP1.4到Type-C/DP1.4/HDMI2.0转换器&#xff0c;具有三个可配置的DP1.4/HDMI2.0/ dp输出接口和音频输出接口。LT8713SX支持DisplayPort单流传输(SST)模式和多流传输(MST)模式。当接收到多个视频/音频流&#xff0c;这些视频/音频流被打包并通过单个…

【Java系列】文件操作详解

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【Java系列专栏】【JaveEE学习专栏】 本专栏旨在分享学习JavaEE的一点学习心得&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 目录 …

计算机网络——基础知识汇总(八)

个人名片&#xff1a; &#x1f981;作者简介&#xff1a;一名喜欢分享和记录学习的在校大学生 &#x1f42f;个人主页&#xff1a;妄北y &#x1f427;个人QQ&#xff1a;2061314755 &#x1f43b;个人邮箱&#xff1a;2061314755qq.com &#x1f989;个人WeChat&#xff1a;V…

学习Go语言Web框架Gee总结--上下文Context(二)

学习Go语言Web框架Gee总结--上下文Context context/go.modcontext/main.gocontext/gee/context.gocontext/gee/router.gocontext/gee/gee.go 学习网站来源&#xff1a;Gee 项目目录结构&#xff1a; context/go.mod module examplego 1.21.5require gee v0.0.0 replace gee…

【23-24 秋学期】NNDL 作业13 优化算法3D可视化

编程实现优化算法&#xff0c;并3D可视化 1. 函数3D可视化 分别画出 和 的3D图 代码如下&#xff1a; from mpl_toolkits.mplot3d import Axes3D import numpy as np from matplotlib import pyplot as plt import torch from nndl.op import Op# 画出x**2 class Optimized…

查看ios 应用程序性能

目录 摘要 前言 性能概括 CPU内存监控 内存监控 磁盘监控 网络监控 GPU fps 摘要 本篇博文将介绍一款重量级性能测试工具——克魔助手&#xff0c;针对iOS应用程序的性能监控进行详细介绍。通过克魔助手&#xff0c;开发者可以方便地查看应用程序的CPU、内存、GPU性能…

【Python】配置环境变量

Python配置Windows系统环境变量 打开电脑属性 ——> 高级系统设置 ——> 高级 ——> 环境变量 Python安装目录 D:\Program Files\Python39 winR打开运行&#xff0c;输入cmd打开命令窗口 python -V

基于Java SSM框架实现停车场管理系统项目【项目源码+论文说明】计算机毕业设计

基于java的SSM框架实现停车场管理系统演示 摘要 以往的停车场管理事务处理主要使用的是传统的人工管理方式&#xff0c;这种管理方式存在着管理效率低、操作流程繁琐、保密性差等缺点&#xff0c;长期的人工管理模式会产生大量的文本车辆上报与文本数据&#xff0c;这对事务的…

Latex使用BibTeX添加参考文献,保持专有名词原格式,如全部大写方法

一、背景 当我们使用Latex写文章时&#xff0c;通常使用BibTeX的方式添加参考文献&#xff0c;这种方式非常方便&#xff0c;可以使用期刊定义好的参考文献格式。但有时&#xff0c;某篇参考文献题目中含有专有名词时&#xff0c;如DMPs&#xff0c;参考文献会自动将其转为小写…

Android ImageView的Bitmap在scaleType情况下Bitmap顶部与底部RectF坐标,Kotlin

Android ImageView的Bitmap在scaleType情况下&#xff0c;Bitmap顶部与底部RectF坐标&#xff0c;Kotlin 通常&#xff0c;在ImageView设置scaleType后&#xff0c;Android会把原始图片通过缩放放在ImageView里面&#xff0c;例如&#xff1a; <ImageViewandroid:id"id…

【心得】PHP反序列化高级利用(phar|session)个人笔记

目录 ①phar反序列化 ②session反序列化 ①phar反序列化 phar 认为是java的jar包 calc.exe phar能干什么 多个php合并为独立压缩包&#xff0c;不解压就能执行里面的php文件&#xff0c;支持web服务器和命令行 phar协议 phar://xxx.phar $phar->setmetadata($h); m…

Redis:原理+项目实战——Redis实战2(Redis实现短信登录(原理剖析+代码优化))

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位大四、研0学生&#xff0c;正在努力准备大四暑假的实习 &#x1f30c;上期文章&#xff1a;Redis&#xff1a;原理项目实战——Redis实战1&#xff08;session实现短信登录&#xff08;并剖析问题&#xff09;&#xff09…

实现CodeWave 低代码开发平台快速应用开发的完整指南

目录 前言1 CodeWave开发流程2 应用创建2.1 新建应用2.2 从应用模板创建应用 3 数据模型设计3.1 实体设计3.2 结构设计3.3 枚举设计 4 逻辑设计4.1 查询数据源设置4.2 组件和属性配置4.3 属性设置与服务端全局变量 5 页面设计5.1 选择页面模板5.2 前端全局变量设计5.3 事件逻辑…

cocos creator + vscode debug

安装插件 安装插件&#xff1a;JavaScript Debugger 配置 7456 为本地cocos creator的启动端口 启动debug调试 选择对应的启动方式

彻底理解前端安全面试题(2)—— CSRF 攻击,跨站请求伪造攻击详解,建议收藏(含源码)

前言 前端关于网络安全看似高深莫测&#xff0c;其实来来回回就那么点东西&#xff0c;我总结一下就是 3 1 4&#xff0c;3个用字母描述的【分别是 XSS、CSRF、CORS】 一个中间人攻击。当然 CORS 同源策略是为了防止攻击的安全策略&#xff0c;其他的都是网络攻击。除了这…

免费下载的高清影像如何使用?

由于该影像数据为DAT格式&#xff0c;因此这里以“北京”影像数据为例&#xff0c;为大家分享一下它的查看与导出等使用方法。 卫星影像数据示例 我们上传到百度网盘中的北京高清卫星影像数据有37.8GB&#xff0c;除了卫星影像数据和地名标签外&#xff0c;还包括接图表和常用…

SpringBoot灵活集成多数据源(定制版)

如来说世界&#xff0c;非世界&#xff0c;是名世界 如来说目录&#xff0c;非目录&#xff0c;是名目录 前言前期准备代码实现演示扩展 前言 本篇博客基于SpringBoot整合MyBatis-plus&#xff0c;如果有不懂这个的&#xff0c; 可以查看我的这篇博客&#xff1a;快速CRUD的秘诀…