内容简介:上述示例代码操作是读取请求中的内容并将其加密处理,在第49行获取读取配置文件的实例 benchmarkprops。在第50行加载配置文件,在第52行~53行读取配置文件中的属性 cryptoAlg1,若无此属性默认使用 DESede/ECB/PKCS5Padding 给 algorithm 赋值。第54行将使用 algorithm 作为加密算法构造加密对象c。接下来准备加密的密码。第57~58行实例化了一个DES加密算法的密钥生成器。第59行指定加密对象 c 的操作模式为加密,其中 key 为密钥。第62行
1、弱加密
加密指以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已加密的信息,但因不知解密的方法,仍然无法了解信息的内容。常见的加密算法主要可分为:对称加密、非对称加密、单向加密。各类加密算法的使用场景不同,根据加密算法的特性如运算速度、安全性、密钥管理方式来选择合适的算法,但安全性是衡量加密算法优劣的一个重要指标,容易被破解的加密算法被称为弱加密算法,例如可以使用穷举法在有限的时间内破解DES算法。本篇文章以 JAVA 语言源代码为例,分析弱加密产生的原因以及修复方法。详细请参见CWE ID 261: Weak Cryptography for Passwords(http://cwe.mitre.org/data/definitions/261.html)。
2、 弱加密的危害
对于抗攻击性弱的加密算法,一旦被利用会造成个人隐私信息泄漏甚至财产损失。从2018年1月至2019年4月,CVE中共有2条漏洞信息与其相关。漏洞信息如下:
| CVE | 漏洞概况 |
|---|---|
| CVE-2018-9028 | CA Privileged AccessManager 2.x中传输密码时使用弱加密,降低了密码破解的复杂性。 |
| CVE-2018-6619 | 在 Easy Hosting Control Panel(EHCP)v0.37.12.b通过利用无盐的弱加密算法,使攻击者更容易破解数据库密码。 |
3、示例代码
本章节中使用示例代码来源于Benchmark (https://www.owasp.org/index.php/Benchmark),源文件名:BenchmarkTest00019.java。
3.1缺陷代码
上述示例代码操作是读取请求中的内容并将其加密处理,在第49行获取读取配置文件的实例 benchmarkprops。在第50行加载配置文件,在第52行~53行读取配置文件中的属性 cryptoAlg1,若无此属性默认使用 DESede/ECB/PKCS5Padding 给 algorithm 赋值。第54行将使用 algorithm 作为加密算法构造加密对象c。接下来准备加密的密码。第57~58行实例化了一个DES加密算法的密钥生成器。第59行指定加密对象 c 的操作模式为加密,其中 key 为密钥。第62行~76行对将请求中的输入流转换为字节数组input,在第77行进行对 input 进行加密,加密结果是字节数组 result 。其中使用 DES 算法生成的密钥短,仅有56位,运算速度较慢,而且DES算法完全依赖密钥,易受穷举搜索法攻击。
使用代码卫士对上述示例代码进行检测,可以检出“弱加密”缺陷,显示等级为中。在代码行第57行报出缺陷,如图1所示:
图1:弱加密的检测示例
3.2 修复代码
在上述修复代码中,第58行使用AES算法替代DES算法,AES最少可生成128位,最高256位的密钥,且运算速度快,占用内存低。
使用代码卫士对修复后的代码进行检测,可以看到已不存在“弱加密”缺陷。如图2:
图2:修复后检测结果
4、 如何避免弱加密
安全性要求较高的系统中,建议应使用安全的加密算法(如AES、RSA)对敏感数据进行加密。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Responsive Web Design
Ethan Marcotte / Happy Cog / 2011-6 / USD 18.00
From mobile browsers to netbooks and tablets, users are visiting your sites from an increasing array of devices and browsers. Are your designs ready? Learn how to think beyond the desktop and craft be......一起来看看 《Responsive Web Design》 这本书的介绍吧!