
密钥加密实验
本实验的学习目标是让学生熟悉密钥加密的概念以及一些常见的加密攻击。 通过本实验,学生将获得有关加密算法,加密模式,填充和初始向量(IV)的实践经验。 此外,学生将能够使用工具和编写程序来进行加密和解密。 开发人员在使用加密算法和模式时会犯许多常见的错误。 这些错误会削弱加密的强度,并最终导致出现漏洞。 该实验向学生展示一些错误,并要求学生利用这些漏洞来发起攻击。
查看课程资料 →
公钥基础设施(PKI)实验
公钥密码学是当今安全通信的基础。 但是当通信的一方将其公钥发送给另一方时,会受到中间人的攻击。 根本的问题是,验证公钥的所有权不是一个容易解决的问题。 也就是给定公钥及其声明的所有者信息,我们如何确保公钥确实由声明的所有者拥有? 公钥基础设施(PKI)就是解决此问题的一种方法。
查看课程资料 →
RSA 公钥加密与签名实验
RSA (Rivest–Shamir–Adleman)是最早的公钥密码系统之一,被广泛用于安全通信。 RSA 算法首先生成两个大的随机素数,然后使用它们生成公、私钥对。 公私钥对可用于执行加密、解密、数字签名的生成与验证。 RSA 算法是建立在数论之上的,可以利用已有的库函数来实现。
查看课程资料 →
传输层安全(TLS)实验
如今,越来越多的数据通过 Internet 传输。 但是,当数据在不受保护的公共网络上传输时,这些数据甚至可以被其他人读取或修改。 担心通信安全性的应用程序需要对数据加密并检测数据是否被篡改。 密码学解决方案可用于实现此目标,但 密码算法很多,即使对于同一算法,也可以使用许多参数。 为了方便不同的应用程序相互通信,应用程序需要遵循共同的标准。 TLS (传输层安全性)就是这样的一个标准。 如今,大多数 Web 服务器都使用基于 TLS 构建的 HTTPS 。
查看课程资料 →
MD5 碰撞攻击实验
一个安全的单向哈希函数需要满足两个性质:单向性和抗碰撞性。 有一些被广泛使用的单向哈希函数在抗碰撞性上存在问题。 在 CRYPTO 2004 的最后一场会议上,王小云及其合作者 展示了针对 MD5 的碰撞攻击。 2017 年 2 月, CWI Amsterdam 和 Google Research 宣布了 攻击可以攻破 SHA-1 的抗碰撞性。 尽管许多学生对于理解单向性的重要性没有什么困难, 但是理解为什么需要抗碰撞属性以及这些攻击会造成什么影响不是很容易。
查看课程资料 →
哈希长度扩展攻击实验
当客户端和服务器通信时,它们可能会受到中间人(MITM)攻击。 攻击者可以拦截来自客户端的请求,他可能选择修改数据,然后将修改后的请求发送到服务器。 在这种情况下,服务器需要验证收到的请求的完整性。 验证完整性的标准方法是在请求上附加一个称为消息认证码(MAC)的标签。 计算MAC的方法有很多,但其中一些方法并不安全。
查看课程资料 →
密码学实验:填充预言机攻击
本实验的学习目标是让学生亲手实践一种针对密码系统的有趣攻击。某些系统在解密密文时,会检查填充是否有效;如果填充无效,系统会返回错误。这种看似无害的行为会导致一类被称为填充预言机(Padding Oracle)的攻击。
查看课程资料 →
伪随机数生成实验
生成随机数是安全软件中的常见任务。许多开发者会借用以往生成随机数的经验(例如用于蒙特卡洛模拟的方法)来生成安全用途的随机数。然而,适合模拟的随机数序列未必适合用于生成加密密钥。
查看课程资料 →