首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >python是加密的安全编程语言吗?

python是加密的安全编程语言吗?
EN

Cryptography用户
提问于 2014-11-02 07:41:11
回答 3查看 18.8K关注 0票数 3

我知道Python是一种强大的编程语言,但它对密码学安全吗?我的意思是,是否有可能对程序进行逆向工程(用python编写),并发现密码算法或其他东西?

EN

回答 3

Cryptography用户

回答已采纳

发布于 2014-11-02 16:13:45

Python是一种脚本语言,所以如果您有这个程序,通常也有源代码。所以你甚至不需要逆向工程。这并不重要,原因有二:

  • 其他语言很容易进行逆向工程(或者它们对程序员和攻击者来说都很复杂);
  • 由于柯克霍夫原理的原因,该算法不需要被安全地保存。

现在,以上这些并不能直接使Python适用于密码学。密码学的主要问题之一是安全性。如果没有安全的编程环境,您就可以拥有任何加密技术,而且仍然没有安全的系统。

语言有许多构造,使它们或多或少适合于安全性和密码学,因此,我将展示一些,并说明Python的性能:

  • 类型系统:它有一个具有强类型的动态类型系统--在安全性方面,这并不像静态类型系统那样好,但它比弱类型系统更好;
  • 字符编码:不好,如果不使用专用类,python可能会混淆字节和字符;
  • 对字节、16位字、32位字和64位字的操作:不好,python只是把所有的东西都看作一个无界的数字;
  • 对大整数的运算:很好;模幂可以直接用pow()对数字进行;
  • 键的破坏&状态:对于任何不能直接管理其内存的语言来说,这都是一个问题;Python不太可能比其他语言更公平,在程序运行时很难证明密钥可以被安全销毁。

最后,总的来说,人们喜欢他们的系统是快速的。不幸的是,对于对称加密(SHA-256,AES)所需的二进制操作,脚本语言往往不够快。像Java这样的解释语言已经快得多了,但是C和程序集这样的语言要快得多(如果正确使用的话)。

对于密码学的常规使用来说,更重要的是库中提供的加密支持的成熟程度。Python有一个相对完善的密码库,名为PyCrypto,PyOpenSSL可用;然而,这些库主要是在C中实现的。这些库和其他库将讨论这里。PyOpenSSL的一个优点是应该可以安全地存储和使用来自硬件模块(例如智能卡或HSM)的密钥。

注意,当使用Python直接实现加密原语时,可能会应用侧通道。我要说的是,Python对于密码原语的快速原型来说特别好,而不是创建库。

总之,我想总结一下,Python是好的,但是对于密码学来说,如果能做出这样一种通才的声明,那就不太好了。

票数 14
EN

Cryptography用户

发布于 2014-11-02 08:54:03

密码学的要点是,即使攻击者知道,算法也是安全的。谷歌的安全通过默默无闻,看看为什么它是坏的。

我将根据otus的评论添加以下内容。Python可以反向工程,所以你不能隐藏你的算法。基本上,如果有人可以运行您的代码,他们可以反向工程算法。密码的意义在于,你可以将你的所有算法发布给世界,除非你告诉他们一些秘密密钥,否则他们就无法破解加密。

然而,在实践中,您会遇到诸如侧通道攻击之类的问题,即代码泄漏它正在处理的数据的信息。这包括秘密钥匙。这在任何编程语言中都会出现,除非您真正知道自己在做什么。如果您使用Python中的密码库,那么大多数这些问题或多或少都是库编写人员的问题,因此您需要相信他们知道自己在做什么,但是即使用户也可能以不好的方式使用库。

总之,只要您使用一个好的密码库,Python就不会比任何其他编程语言更好或更糟。然而,如果您正在考虑实现类似RSA或其他您在书/论文中找到的密码算法,那么代码很可能是脆弱的,除非您是一个专家,并且您真正知道自己在做什么。这适用于任何语言。

票数 10
EN

Cryptography用户

发布于 2015-12-10 02:14:02

首先,python被解释,并且几乎总是存在于源代码中.因此,逆向工程毫无意义。源代码已经公开了。然而,正如Maarten和Edvard所说,这并不重要。RSA算法是安全的,即使每个人都想知道它是如何工作的。

python唯一真正关心的是它具有动态类型,并且是一种托管语言,这两种语言都使得用.跑得更慢。这意味着python需要更长的时间来加密相同数量的数据。

然而,这与语言的真正“安全性”无关。Python运行相同的算法需要更长的时间,但是由于它是相同的算法,结果加密将与另一种语言的加密相同。语言对实际安全没有任何影响。

随着这一澄清,我还认为我应该处理副业攻击,这肯定是一个安全问题。副业攻击仍然是正在使用的算法问题,而不是运行它的语言。当算法没有对发送被截获消息的修改版本的攻击者充分隐藏信息时,旁线攻击可能会引起关注。例如,在大多数情况下,CTR模式AES算法具有相当强的安全性,但实际上很容易受到边线攻击。另一方面,一种更好的算法,如GCM模式AES,可以识别出它试图破译修改后的消息,并且会给攻击者提供更少的信息,使副线攻击变得不切实际。

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

https://crypto.stackexchange.com/questions/19959

复制
相关文章

相似问题

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