首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >采用AES 256加密处理的PyCrypto RSA 4096

采用AES 256加密处理的PyCrypto RSA 4096
EN

Security用户
提问于 2011-11-01 20:23:43
回答 2查看 6.2K关注 0票数 3

我有以下使用PyCrypto模块在python脚本中加密和解密数据的过程:

加密-服务器

  1. 生成AES 256共享密钥
  2. 生成关联的IV
  3. 数据使用AES 256共享密钥加密,相关IV使用CBC模式加密,并存储在db中。
  4. RSA 4096公钥用于加密AES 256密钥和相关的IV,这些密钥也存储在db中。

解密-服务器B

  1. 使用RSA 4096私钥解密加密的AES 256共享密钥和来自db的相关IV
  2. 来自db的数据现在使用解密的AES 256共享密钥和关联的IV解密。

在攻击者设法访问数据库的攻击模型中,上述过程是否确保了数据的安全性?

EN

回答 2

Security用户

回答已采纳

发布于 2011-11-03 06:51:17

我的主要反馈是:你没有提供足够的技术细节来对你的建议提供完整的批评,但是你提供了足够的信息,我可以看到你犯了几个常见的错误。到目前为止,我能看到的主要错误如下:

  • 错误1:发明自己的加密格式。通常,为存储加密数据设计自己的格式不是一个好主意。;您可能会出错。最好使用标准格式,如GPG或OpenPGP消息格式。
  • 错误2:未能包含消息完整性保护。在不进行身份验证的情况下加密数据将使您面临微妙但严重的攻击。。这是非常违反直觉的,也是一个非常常见的错误。很容易被认为,天哪,我想保守这个秘密,所以如果我用一个好的加密算法加密它,我会没事的。但不,你不会没事的。您还需要消息身份验证,以抵御选定的密文攻击。您需要使用正确的模式(例如,经过身份验证的加密,或加密后的MAC)和适当的密钥管理(用于身份验证和加密的独立密钥,或适当地使用密钥分离)。

为了避免这些问题,请遵循我在上面给出的链接中的建议。

其他杂项反馈:

  • 很可能还有其他的问题;您没有提供足够的信息来识别所有的问题。下面是一些潜在问题的例子:
    • 例如,您没有描述IV是如何生成的。在过去的系统中,不良的IV代偶尔会导致安全问题。(需要使用加密强度伪随机数生成器生成IV。)
    • 您没有描述AES密钥是如何加密的。(您需要使用适当的填充方案,例如OAEP或PKCS#2。)

  • 您选择的密钥长度过高。
  • 请记住,当现代密码学得到正确的实现和使用时,它几乎不是系统中最薄弱的环节。相反,攻击者通常击败密码不是通过破坏密码算法,而是通过绕过密码并攻击系统的其他方面--也许将社会工程应用于人类,可能在代码中发现一个安全漏洞并危及端点,可能利用密钥管理中的错误,或者其他攻击系统的任何方式。
票数 6
EN

Security用户

发布于 2011-11-02 23:24:02

  1. 只有AES密钥是秘密的。CBC IV不是一个秘密,只要你永远不重复使用一个IV。每次你用CBC加密一条消息时,你可以在密文前面加上IV,并把它作为密文存储。解密消息时,只需记住第一个块是IV。
  2. 你不包括任何诚信检查。您可以以各种方式生成签名,但您必须记住永远不要使用相同的RSA密钥来进行签名和加密。生成签名的一种方法是为HMAC生成第二个密钥,获取带有HMAC - the 512和生成密钥的密文摘要,然后在生成的AES密钥旁边加密并存储生成的HMAC密钥。如果您遵循将IV与密文连接的实践,则应该将HMAC- the 512应用于级联的IV+ciphertext,而不仅仅是原始的密文。
  3. 您没有指定这种或那种方式,但是AES密钥、CBC IV和HMAC密钥都必须由加密安全的伪随机数生成器(cryptorandom )生成,除非您正好有一个真正的RNG。
  4. 有用于序列化加密消息的通用标准格式。您可以选择使用它们来代替存储密文和摘要的原始字节。标准包括OpenPGP消息格式密码信息语法

请注意,#1并不是严格意义上的安全问题,但实际上的问题是,人们常常对系统的哪些部分必须是保密的,哪些部分可能是公开的,以及这些规则的正确上下文是什么而感到困惑,而这种混淆往往会导致错误。IV的目的是为明文第一个块的加密提供高度的熵,而不是某种第二个密钥。

票数 3
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/8571

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档