程序员将采取简单的方法 并且不会实施适当的密码安全性

最近的一项研究表明,需要明确要求自由开发人员编写以安全可靠的方式存储密码的代码。

在一个涉及通过Freelancer.com平台聘用的43位程序员的实验中,波恩大学的学者们发现,开发人员倾向于采取简单的方法,并编写以不安全的方式存储用户密码的代码。

对于他们的研究,德国学者请260个Java程序员小组为一个假的社交网络编写用户注册系统。

在260个开发人员中,只有43个负责这项工作,其中涉及使用Java,JSF,Hibernate和PostgreSQL等技术来创建用户注册组件。

在这43名学者中,学者们决定向小组中的一半人支付100欧元,另一半人为200欧元,以确定更高的薪水是否对实施密码安全功能有所影响。

此外,他们第二次划分了开发人员小组,促使一半的开发人员以安全的方式存储密码,而另一半则以他们首选的方式存储密码-因此,四分之四的开发人员支付了100欧元并提示使用安全密码存储方法(P100),开发人员支付200欧元,并提示使用安全密码存储方法(P200),开发人员支付100欧元但未提示输入密码安全性(N100),而开发人员支付200欧元但未提示输入密码密码安全性(N200)。

研究人员说,开发人员花了三天的时间提交他们的工作,并且在他们第一次发送以明文形式存储密码的项目时,他们不得不要求43个中的18个重新提交代码以包括密码安全系统。

在必须重新提交代码的18位开发人员中,有15位开发人员是该小组的成员,他们从未被告知用户注册系统需要安全地存储密码,这表明开发人员在编写代码时并没有固有的安全性。

另外三个来自被告知使用安全方法来存储密码的一半,但是谁仍然以明文形式存储密码。

结果表明,在Web开发社区中,对“安全密码”的含义的理解水平差异很大。

开发人员选择用于此研究的安全密码存储系统中,只有后两个PBKDF2和Bcrypt被认为是安全的。

8 -的Base64

10 - MD5

1 - SHA1

3 - 3DES

3 - AES

5 - SHA-256

1 - HMAC / SHA1

5 - PBKDF2

7 - Bcrypt

第一个是Base64,它甚至不是加密算法,而是编码功能,参与开发人员似乎并不知道。与MD5类似,它是一个哈希函数。

该研究小组在研究论文中说:“许多参与者使用哈希和加密作为同义词。”

研究人员说:“在收到额外安全要求的18位参与者中,有3位决定使用Base64并提出了争辩,例如:'[I]对其进行了加密,因此清晰的密码不可见','解密非常困难'。” -强调一些研究参与者不知道加密算法和仅使字符混乱的功能之间的基本区别。

此外,在43位开发人员中,只有15位选择实施Salting,这是通过添加随机数据因素更难以破解存储在应用程序数据库中的加密密码的过程。

该研究还发现,在43个开发人员中,有17个从互联网站点复制了他们的代码,这表明自由职业者没有必要的技能来从头开发安全系统,并选择使用可能已过时甚至充满bug的代码。 。

研究人员说,向开发商支付更高的费用并没有多大帮助。

但是,研究团队发现,给程序员特定的指令以实现安全的密码存储系统确实比不说任何话然后再让开发人员自己考虑安全性产生了更好的结果。

但是,在没有精确说明的情况下,开发人员会选择他们“认为”的安全密码存储系统,但实际上并非如此,这表明在设计任何类型的安全系统时都需要专业人员的监督。

当我是开发经理时,我在招聘过程中使用了非常类似的练习。至少90%的密码以纯文本格式存储。他们的数字比我想像的要好。

-Adam Caudill(@adamcaudill)2019年3月6日

该研究的结果清楚地表明,每个自由开发人员对网络安全最佳实践的了解因人而异。这可能是过时的培训或根本没有培训-但是再次提出了反对使用没有网络安全经验的开发人员从事此类工作的理由。

在过去的二十年中,已经左右披露了针对加密算法的攻击,而如今,开发人员可能已经在过时的学校手册中学到了一些东西。此OWASP速查表是更好的密码习惯的一个很好的起点。

有关波恩大学这项研究的更多详细信息,请参见标题为“ '如果需要,我可以存储加密的密码'的研究论文。自由职业者开发人员进行的密码存储领域研究。”

这项研究是2017年和2018年两项类似研究的延续,这些研究以学生为主体,而不是自由开发者。

在以前的研究中,学生们说,如果他们正在为公司创建代码,他们将实施安全的密码存储。” 2019年的研究表明,当前的开发人员没有比没有监督的学生更好。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。