学习啦>学习电脑>网络知识>网络技术>

如何正确地使用加密与认证技术(6)

时间: 恒辉636 分享

  0x06 使用关联数据的认证加密

  在我们前面的示例中,我们集中精力于,同时使用加密和认证,使其作为必须小心使用的单独组件,以避免加密的悲剧。具体而言,我们专注于密码段链接模块的AES加密。

  然而,密码学家已经开发出更新,更具有弹性的加密模型,其加密和认证信息在同一操作。这些模型被称为AEAD模型(Authenticated Encryption with Associated Data)。关联数据意味着,无论你的应用程序需要什么进行认证,都不加密。

  AEAD模型通常用于有状态的目的,如网络通信中,其中一个随机数可以很容易地管理。

  AEAD两个可靠的实现是AES-GCM和ChaCha20-Poly1305。

  AES-GCM是Galois/Counter模式中的高级加密标准(又名Rijndael算法加密)。这种模式在OpenSSL的最新版本中加入,但它目前在PHP中还不被支持。

  ChaCha20-Poly1305结合了ChaCha20流密码与Poly1305消息认证码。这种模式在libsodium PHP扩展可用。Sodium::crypto_aead_chacha20poly1305_encrypt() Sodium::crypto_aead_chacha20poly1305_decrypt()

  总结一下,你该记住的

  加密不是认证

  加密提供机密性

  认证提供完整性

  将两者混为一谈你就得自担风险

  为了完成CIA triad,你需要单独解决可用性。这通常不是一个加密问题。

  更重要的是:在密码学专家的监督下,使用具有韧性被证实记录的库,而不是自己在那里闭门造车,你会好得多。

如何正确地使用加密与认证技术(6)

0x06 使用关联数据的认证加密 在我们前面的示例中,我们集中精力于,同时使用加密和认证,使其作为必须小心使用的单独组件,以避免加密的悲剧。具体
推荐度:
点击下载文档文档为doc格式
168319