我是一位在本地学区拥有父母帐户的父母,因此我可以登录他们的网站查看孩子的成绩等。

我单击了“忘记密码”按钮,密码以纯文本形式发送给我,这与我有关,因此我通过电子邮件向校长发送了电子邮件,包括此页面底部的一些链接。这是我从组织的IT部门收到的回复:


父密码不是以纯文本形式存储的,而是经过加密的。不是
1向加密而是2向加密。这就是系统
通过电子邮件将其重新呈现的方式。阿里安德(Ariande)的CoolSpool
实用程序。

出于支持的原因,某些工作人员可以看到父密码
,直到父母成功登录3次。工作人员可以看到该密码。但是,密码的存储方式使系统本身可以将其发送回经过验证的电子邮件。在父母的3个以后的将来成功登录后,如果他们忘记了
密码,则会向其已验证的电子邮件帐户发送一个链接,以重置他们的密码。

>此说明是否证明通过电子邮件发送的纯文本密码是正确的,我的密码是否安全?

如果没有,我可以用哪些参考文献或资源回复它们? />

评论

你能数吗?指望自己!不要重复使用密码,请使用密码管理器。

如果您没有超出问题标题的范围,那么我可以回答“否”,并可以99.999%的确定我的观点是正确的。主要关注互联网通信的公司和组织都犯了这个错误。一个资金不足的学区,其现有目的完全不同,仅使用电子通信作为随时可用的便利,很难理解安全性的微妙之处。真正的问题不是“他们是”,而是“为什么以及为什么不”。

“父母的密码对某些员工是可见的” –使用密码管理器,小心您在平台上输入的内容对此无助。您的密码被其他方知道,因此您可以被模拟

考虑到有多少人使用单个密码来处理所有事情,员工在任何情况下都可以看到密码这一事实确实令人担忧。用户注册时会收到通知吗?

该站点不在本主题的讨论范围内,但假设适用美国联邦法律,则“某些工作人员可以看到父母的密码”这一事实意味着该系统无法检测到该工作人员对受保护的教育记录和个人身份信息的非法访问。

#1 楼

不,这不是一个好习惯。有两个明显的问题。




加密密码而不是散列密码是一个坏主意,并且是存储纯文本密码的边界。慢速散列函数的整个思想是阻止用户数据库的渗透。通常,如果Web应用程序可以访问该数据库,则可以预期已经拥有数据库访问权限的攻击者也可以访问该加密密钥。

因此,这是边界明文。我几乎投票结束了这个问题,因为这个问题几乎是相同的,而且链接的答案几乎直接适用,尤其是有关明文犯规者的问题。还有一个关于明文违规者的答案。

通过纯文本电子邮件发送纯文本密码是一个坏主意。他们可能会争辩说,密码重用不会发生,但是我怀疑他们什至会知道那是什么以及为什么认为这是不好的做法。另外,密码重用非常普遍,以至于不是一个很好的答案。同样,例如可以从纯文本邮件中读取密码的威胁也可以读取链接(可能在您可以之前),您可以向他们解释有关不从我的答案中散列的问题,也可以直接直接链接此答案。

甚至可以解释加密是一种方法,但是总是可以通过所讨论的加密系统的反函数(适当地称为解密)来逆转。使用“单向加密”和“双向加密”之类的术语而不是“散列”和“加密”表示缺乏理解。

真正的问题是:他们实施密码重置并不意味着将来会(正确)进行哈希处理;除了使用密码管理器并创建一个长而强大的密码短语(对于该网站来说是唯一的,并希望获得最好的密码),您无能为力。

尤其如此,因为他们似乎想要保留告诉员工密码的系统部分(绝对没有充分的理由)。这意味着他们一直没有正确进行哈希处理-他们说工作人员只能在三个登录时间范围不正确的情况下看到密码;如果Web应用程序可以访问密钥,则管理人员也可以访问该密钥。也许不再是客户支持人员,但他们首先应该看不到它。这是非常糟糕的设计。

根据您所在的位置,学校作为公共部门的一部分,有义务拥有您可以直接联系的CISO,以表达您的担忧。而且像往常一样,在公共部门中,应该有一个监督学校的组织;他们至少应该有一个CISO,他们可能对此过程很感兴趣。

评论


可能还使他们(即学区的负责人)指出Adobe站点上的密码大量泄漏,这是可能的,因为密码没有正确地(单向)散列,而是因为所有地方(两向)使用相同的加密密钥加密。另外,将它们指向plaintextoffenders.com可能是一个好主意-因为也许他们不喜欢到此为止。

– Steffen Ullrich
17年11月23日在6:13



值得注意的是,可以对密码进行加密,并且Web服务/服务器无法访问解密密钥。使用其他服务器的reset方法有几种方法可以实现这种非对称密钥。存储密钥并用于加密/解密操作的HSM是另一种方法。当然,这两种情况都不是。

– DRF
17年11月23日在7:57

@SteffenUllrich明文违规者是我链接其他问题的原因

– Tobi Nary
17年11月23日在8:02

至少有可能不故意使用术语“哈希”和“加密/解密”,以免听起来过于技术性,而不是缺乏理解。他们只是使用非技术性读者通常会理解的描述性术语。 @ 43Tesseracts显然知道他在说什么,但是学校可能没有从他的电子邮件中得知。

–安德鲁·利奇(Andrew Leach)
17年11月25日在8:59

@AndrewLeach:他们使用了两个不同的术语“单向”和“双向”,这显然与“哈希”和“加密”相对应,并且使用了错误的术语。如果他们说“不可逆密码”和“可逆密码”听起来更具技术性,则不会改变-行为是最重要的而不是术语。

– Ben Voigt
17年11月25日在18:19

#2 楼

每个人都在关注加密与散列,但尽管这本身很不好,但我发现以下情况更加糟糕:


由于支持的原因,某些工作人员可以看到父密码
,直到父母成功登录3次为止。


您应该将其解释为“ IT员工知道我的密码”。他们公开承认某些职员可以知道您的密码。这是很糟糕的。我假设您更改密码后此计数器已重置,因此使用3次虚拟密码然后将其更改为“真实”密码将无济于事。不要在您不想公开的平台上放置任何东西,如果您在其他站点上使用了相同的密码,请进行更改。

评论


对每个站点使用随机生成的密码的另一个重要原因。

–丹
17年11月24日在13:06

以及在登录服务时如何阻止IT人员拦截密码?如果管理员需要,他们仍然可以提取您的密码。我的意思是不管这3个疯狂的登录政策。

–akostadinov
17年11月24日13:35



客户端哈希可以完成什么工作?无论发送给服务器的是“真实”密码,无论是“ password”还是“ 5f4dcc3b5aa765d61d8327deb882cf99”。

–布赖恩
17年11月24日在16:27

这意味着拦截器无法在其他站点上重复使用您的密码(假设该网站使用了某种特定于该站点的盐)。这与保护您在该站点上的帐户无关,而是与所有其他站点上的保护有关。

– MrZarq
17年11月24日在16:31

客户端上的哈希运算是否不会破坏存储密码哈希而不是存储密码本身的意义?如果攻击者知道我的用户名和密码的哈希值,他们只需将其发送出去即可访问我的帐户,而无需输入密码。

– alexgbelov
17年11月24日在19:59

#3 楼

不,正如您正确推测的那样,此行为显然是不安全的。

您可以而且应该做的是不信任他们的系统。请勿在学校系统上使用类似于银行密码或其他密码的密码。请不要输入比让孩子上学绝对需要的更多信息。如果您的孩子带回家的便条上写着“登录并更新您的信息”,请不要放任何您不愿意透露的内容。

至少他们的“未来”情况听起来像正在实现他们需要的行为以支持安全地哈希密码;他们是否会真正安全地对密码进行哈希处理(三个登录后)而不是对密码进行加密将是另一个问题。而且您将无法通过观察回答该问题。如果仍然担心,可以联系软件供应商并询问其工作方式。

评论


“您可以而且应该做的就是不信任他们的系统。”这应该是您的默认状态。假设所有网站都在滥用您的数据,并最大程度地减少了对它们的破坏。

– Qwertie
17年11月23日在1:39

“不要在学校系统上使用类似于银行密码或其他密码的密码”-听起来很奇怪。如果某个阴暗的网站说“我们对密码进行哈希处理,请保证!”你会做出“感谢上帝,我可以重用我的银行密码”的反应吗?

–el.pescado
17年11月23日在7:51

@ el.pescado,对我们来说也许很明显,但是许多人从未想过。鉴于仍有大量成功的“帐户接管”攻击正在进行,因此显然仍需要此建议。

–约翰·迪特斯
17年11月23日在23:50

@JohnDeters我的意思是,该建议听起来像是“不要在似乎没有散列密码的网站上重复使用密码”,而我认为应该是“不要重复使用密码。

–el.pescado
17年11月26日在21:16

@ el.pescado,我了解。我正在尝试为绝对始终使用密码的普通人写一个答案。我们实际上不希望改变这种情况,因此我们需要提供可能有所作为的答案。

–约翰·迪特斯
17年11月27日在16:01

#4 楼



您不应该假定密码是安全的。推荐使用密码管理器是有原因的。


现实是,在尝试自己处理所有这些密码时,您将犯下重用某些密码的主要错误。这实际上比使用密码管理器要冒险得多。如果使用此密码的单个站点掉线,则使用该密码的每个帐户都会受到威胁。您需要记住所有重复使用该密码的站点,然后将其全部更改。



推荐的重置方法是为用户生成唯一密钥,以便用户在TLS保护的网站上进行自己的重置。尽管启用了TLS的电子邮件仍然固有地不安全


尽管TLS和SSL无疑为任何公司的数据安全方法奠定了至关重要的基础,但仍有证据表明,一个带有许多潜在漏洞的系统。

弱点的主要原因是公司缺乏对如何加密电子邮件的理解,许多人认为传输通道以及电子邮件,以通过使用TLS得到完全保护。




散列从根本上不同于加密。堆栈溢出对此进行了很好的探讨。[加密函数]在任意长度的输入和输出之间提供1:1映射。而且它们始终是可逆的。

如SmokeDispenser所述,如果他们可以获取数据库,则可以获取加密密钥。散列总是单向的。数据进入,永不消失。换句话说,没有钥匙可以偷。


检查输入数据的有效性时,请使用哈希函数。这就是他们的目的。如果您有2个输入,并且想要检查它们是否相同,则通过哈希函数运行这两个输入。对于较小的输入大小(假设哈希函数良好),发生碰撞的可能性在天文上较低。这就是为什么建议使用密码的原因。

换句话说,您将密码存储在我的网站上。我用一个缓慢的东西(如bcrypt)反复地用一个随机字符串(称为salt)对其进行哈希处理。为了验证您的身份,您再次输入密码,然后我将其通过相同的哈希值洗净。使用相同的算法(再加上多次运行,称为成本),盐和密码,我应该获得与存储的相同的哈希值。因此,我不需要存储可逆的加密或未加密的密码。



评论


尽管我100%同意这是一个非常糟糕的系统,但我不确定我是否同意“如果他们可以获取您的数据库,他们可以获取加密密钥”。如果他们使用sql注入窃取了数据库,那将使他们无法获取加密密钥(位于Web服务器中)。敏感数据必须可检索的地方(即在这种情况下不是这样),加密才有价值

–Richard Tingle
17年11月23日在7:43

碰撞的可能性不取决于输入大小。它取决于输入的数量,但是我看不到它的相关性。

–马丁·邦纳(Martin Bonner)支持莫妮卡(Monica)
17年11月23日在16:26

对于较小的输入量,发生碰撞的可能性不仅在天文数字上较低,而且对于所有输入(无论大小),碰撞的可能性在天文数字上也较低。唯一的例外是当使用已知有缺陷的哈希函数(例如MD5)时,发现冲突比声明的要容易得多。编辑:对不起,我知道我重复了以上评论

–胸骨
17年11月23日在22:56



@RichardTingle-鉴于该系统的开发人员显然遵循“最佳实践”存在问题,因此我不希望他们不要使用将选定明文或已知明文攻击引入系统的方式进行加密(例如使用ECB模式密码)。

–法律
17年11月26日在4:02

我同意(1)的第一部分,您不应假设自己的密码是安全的。 //唯一可以做的就是使系统相对更安全,而不是绝对安全。任何复杂的系统都将具有备份。使用脱机服务器,可以还原备份,然后由设计代码和数据库的团队随意操作。

–MaxW
17年11月26日在18:02



#5 楼

根据定义,如果密码是由您以外的其他人存储的,则它不会安全存储。无需存储密码。

如果IT人员出于正当理由在没有您提供密码的情况下访问您的帐户,则他们不需要将密码存储在某个地方。他们可以重设密码,访问您的帐户,或将密码替换为原始密码。全部都不知道您的密码。

如果他们可以将您的密码发送给您,那么他们可以将其发送给假装为您的人。因此,这是不安全的。

PS。他们绝对不需要存储用于身份验证的密码。他们可以存储一个加盐的哈希,无法从中恢复密码。这是标准做法。他们如何将其发送给假装为您的人?这就是所谓的社会工程学。有人打电话给他们,说服他们是您,您的电子邮件地址已更改,然后他们将密码发送给错误的人。

评论


“发送”给您意味着自动化系统。 SocEng绕过此系统。您将不平等的过程等同起来。同样,语义,但是有点混乱。

– schroeder♦
17年11月26日在8:32