信息安全实验1:数据的机密性
1 实验环境
- 操作系统版本:Windows 11 家庭中文版23H2
- Microsoft Edge版本:122.0.2365.92(正式版本)(64位)
2 实验内容
2.1 运行RSA加密程序,并进行改进
RSA加密是一种非对称加密算法,它使用了一对密钥:公钥和私钥。RSA加密的安全性基于一个数学难题,即大素数分解。这个算法是由Ron Rivest、Adi Shamir和Leonard Adleman在1977年提出的,他们姓氏的首字母组成了这个算法的名字。
RSA加密的安全性基于大数分解问题的难度,即在已知n的情况下,将其分解为p和q的乘积。目前,除非使用非常大的素数并且密钥长度足够长,否则RSA加密是相对安全的。RSA算法在信息安全领域广泛应用于数据加密、数字签名和密钥协商等方面。
代码2.1是Python语言的RSA加密程序。
代码清单2.1 RSA加密程序Python实现
1 | import rsa |
首先,它导入了rsa和base64两个模块。然后,定义了两个函数rsaEncryption和rsaDecryption,分别用于RSA加密和解密操作。在main函数部分,程序生成了一对512位的RSA公钥和私钥,并将它们输出为PKCS#1格式。
接下来要求用户输入明文,并使用公钥对明文进行加密操作,加密了5次并打印出每次的密文。最后,程序使用私钥对最后一次加密的密文进行解密,并输出解密得到的明文。运行结果如图2.1所示。
当对上述RSA加密算法继续改进时,其中一个改进的思路是增加密钥的长度,即由512位变成1024位。使用1024比512更长的密钥长度可以提供更高的安全性。密钥长度越长,RSA算法的安全性就越高,因为更长的密钥长度增加了破解密钥的难度。`
2.2 SM2国密算法
SM2是一种由中国国家密码管理局发布的椭圆曲线密码算法,属于非对称加密算法。它基于椭圆曲线离散对数难题(ECDLP),提供了数字签名、密钥交换、公钥加密等功能。与RSA相比,SM2具有更高的安全性和更好的性能。
SM2算法的基本流程包括密钥生成、加密、解密、签名和验证等步骤,通常使用特定的参数集和椭圆曲线方程。由于SM2算法是非对称加密算法,因此在使用过程中需要配对的公钥和私钥,公钥用于加密和验证,私钥用于解密和签名。
代码2.2是Python语言的SM2加密程序。
代码清单2.2 SM2加密程序Python实现
1 | from gmssl import sm2, func |
SM2加密算法程序运行结果如图2.2所示。
图2.2 SM2加密算法执行结果
2.3 PostBook中越权删除帖子
在PostBook中新建两个用户,注册两个用户,分别为userone和usertwo,之后在userone账户下创建两个帖子。如图2.3所示。
图2.3 用户一创建两个帖子
之后登录usertwo进行查看,如图2.4所示,可以看到在用户二中虽然能看到相关帖子,但是已经没有了“编辑”和“删除”权限。
图2.4 用户二查看两个帖子
如图2.5,点开其中的一个帖子,并查看此时的url,可以看到在最后有一个“id=4”,我们知道id一般是用来标志一个唯一的资源,所以可以猜测,帖子“userone’s post1”的id是4。
图2.5 查看帖子1的url
之后,在用户二下创建一个帖子“usertow’s post”,如图2.6所示。
图2.6 用户二创建帖子
如图2.7所示,可以看到刚刚创建的帖子的id字段值为7,之后将“删除”按钮的链接复制出来,即https://xxx.ctf.hacker101.com/index.php?page=delete.php&id= 8f14e45fceea167a5a36dedd4bea2543,可以看到在这里id并不是明文7,而是一串毫无规律的数字,所以推测应当是密文,这样我们就得到了一对明密文对。
图2.7 帖子“usertow’s post”的id
之后对上述明密文对所采用的加密方式进行猜测,在图2.8的MD5加密网站中输入明文“7”,对其进行加密得到的32位密文为“8f14e45fceea167a5a36dedd4bea2543”,可以发现就是当我们执行删除操作时对应的id的值,所以使用的加密方式是MD5。
图2.8 MD5在线加密网站
在图2.4中,我们已经得到了用户一的一个帖子对应的明文id为4,使用MD5加密方式对4进行加密,得到密文“a87ff679a2f3e71d9181a67b7542122c”,现在把上面的删除链接中的id的值换成这个明文,并在浏览器中访问这个链接,结果如图2.9所示。
图2.9 进行越权删除帖子
系统返回了一个提示信息,标志删除成功,并且可以看到此时用户一的帖子1已经没有了,所以说越权删除成功。
2.4 替换MD5算法
MD5(Message Digest Algorithm 5)是一种哈希函数,用于产生128位(16字节)的散列值,通常用于对消息进行摘要或验证。然而,由于其设计上的一些弱点,MD5已经不再被推荐用于安全目的,正如内容2.3所示,MD5容易受到碰撞攻击和预图攻击的影响,从而导致安全性受到威胁。
因此想要提高系统的安全性,需要使用更安全的加密算法,例如使用SHA-256(Secure Hash Algorithm 256),SHA-256是SHA-2家族中的一种,产生256位(32字节)的哈希值。与MD5相比,SHA-256更安全,具有更高的抗碰撞性和预图攻击抵抗力。
3 实验总结
在实验1中,我运行了RSA加密程序,并对其进行了改进以提升其安全性。RSA算法的优点是其安全性较高,基于大数因子分解的数学难题,使得其在当前情况下仍被广泛应用于加密通信中。但同时,RSA算法的缺点是其加解密速度较慢,在处理大量数据时性能表现不佳。
其次,在实验2中,我了解了国密算法(SM2)并将其应用于替换RSA加密。相比于RSA算法,SM2算法在性能上有一定的优势,尤其是在移动设备等资源受限的环境下表现更好。此外,SM2算法也具有较高的安全性,可以满足中国政府相关安全标准的要求。
在实验3中,我意识到了加密算法选择的重要性。由于使用了不安全的加密算法,可以对系统中的帖子进行越权删除,这暴露了系统安全性的严重问题。因此,在实践中,我们需要认真选择合适的加密算法,并严格控制系统的安全性,以防止类似漏洞的发生。
通过这些实验,我不仅学到了加密算法的原理和应用,还提高了对系统安全性的认识,为今后的安全工作打下了坚实的基础。