用Python加密数据-

用Python加密数据-,python,encryption,pycrypto,Python,Encryption,Pycrypto,我正在编写一个客户机-服务器模型(客户机是服务器上收集数据并通过REST将其发送到服务器的脚本),并希望对发送的数据进行加密 目前,我有一个生成随机键的函数,它从特定时区添加时间-IP-HOSTNAME-YEAR-MONTH-DAY-HOUR-(分钟/2) 密钥的每个部分通过SHA256从3000到10000次运行,最后生成128位密钥。全部脚本总共需要约0.8-1秒才能完成 数据通过AES加密,使用部分128位密钥作为密钥和iv 服务器脚本侦听任何连接,验证是否列出了IP地址,然后继续解密数据

我正在编写一个客户机-服务器模型(客户机是服务器上收集数据并通过REST将其发送到服务器的脚本),并希望对发送的数据进行加密

目前,我有一个生成随机键的函数,它从特定时区添加时间-IP-HOSTNAME-YEAR-MONTH-DAY-HOUR-(分钟/2)

密钥的每个部分通过SHA256从3000到10000次运行,最后生成128位密钥。全部脚本总共需要约0.8-1秒才能完成

数据通过AES加密,使用部分128位密钥作为密钥和iv

服务器脚本侦听任何连接,验证是否列出了IP地址,然后继续解密数据(使用相同的方法生成密钥和iv)

我的问题是: -我是在重新发明轮子吗?
-是否有更好的做法来生成用于数据加密的动态、有时间限制的密钥

我的目标是拥有一个限制在60-120秒的密钥,然后丢弃它,使用多个周期生成密钥(感谢阅读Truecrypt的python方式),这样,如果捕获到任何数据,就不会“轻松”解密。 此外,服务器模型将有一个SSL证书,它将使用该证书加密加密的数据

我正在考虑为每个客户端脚本(RSA生成)提供一个静态密钥,用于AES加密


感谢您诚实的回答和任何改进这一点的新想法

是的,不要!密码技术需要数年的时间来开发和测试,因为很难正确使用。听起来您可能想看看如何使用RSA或其他PKI基础设施。如果我是你,我会调查PyCrypto。不管是哪种方式,都不要实现自己的制图系统,因为它将被破坏和不安全

是的,不要!密码技术需要数年的时间来开发和测试,因为很难正确使用。听起来您可能想看看如何使用RSA或其他PKI基础设施。如果我是你,我会调查PyCrypto。不管是哪种方式,都不要实现自己的制图系统,因为它将被破坏和不安全

使用最简单的SSL/TLS(没有PKI)作为REST的传输保护可能是第一次正确操作的最有效方法

除此之外,您还应该澄清几个主题。例如:

  • 客户端不被可能模拟服务器的攻击者欺骗是否很重要?如果是,则必须正确设置PKI,以便客户端可以使用证书对服务器进行身份验证。或者,您可以使用TLS-SRP
  • 服务器不被可能模拟真实用户的攻击者欺骗是否重要?如果是,则必须设置身份验证方案:例如HTTP摘要、SSL客户端证书、TLS-SRP等
  • 客户机或服务器上的妥协不危及以前会话中交换的数据是否重要?如果是,则必须将密码套件限制为提供完美前向保密(DHE)的密码

  • 只有在设置SSL时遇到困难,你应该考虑自己的协议。

    < P>使用最简单的SSL/TLS(不带PKI)作为REST的传输保护可能是第一次获得轮盘的最有效的方法。 除此之外,您还应该澄清几个主题。例如:

  • 客户端不被可能模拟服务器的攻击者欺骗是否很重要?如果是,则必须正确设置PKI,以便客户端可以使用证书对服务器进行身份验证。或者,您可以使用TLS-SRP
  • 服务器不被可能模拟真实用户的攻击者欺骗是否重要?如果是,则必须设置身份验证方案:例如HTTP摘要、SSL客户端证书、TLS-SRP等
  • 客户机或服务器上的妥协不危及以前会话中交换的数据是否重要?如果是,则必须将密码套件限制为提供完美前向保密(DHE)的密码

  • <> P>只有在设置SSL时遇到问题,你应该考虑卷起你自己的协议。

    “数据加密的限时密钥”“SSL证书”,它将用来加密“重新生成密码”是最容易出错的方法。“时间限制的数据加密密钥”“它将用于加密”的SSL证书。重新发明加密技术是最容易出错的方法。