是否使用用户密码加密其用户名是一种可行且安全的方式来允许他们登录服务?

问题描述 投票:1回答:2

首先,这可能是一个复杂的问题(我不确定这是否是正确的问题)但我一直在考虑用户登录服务的安全方式(对于这个例子我们将使用用户名和密码来访问网站,而服务器本身不直接存储这些中的任何一个。

我在学校的哈希课程中想到了这一点,所以如果有一个简单的原因可以解释为什么网站没有使用它,我就不会感到惊讶,但我没有找到任何在线使用的例子。这将在服务器端使用一种形式的非对称加密,以将用户名和密码组合成将存储在服务器上的一个唯一“userLoginID”。类似于此的代码将在服务器端使用,其中“encrypt”将是单向加密函数:

userLoginID == "331845364410495642424788" # Just an example
if (encrypt(inputtedUsername,inputtedPassword) == userLoginID)
    return True
else
    return False

如果任何人有任何与此相似的过程的例子或解释为什么它不常用,那就太好了。使用此方法,如果需要,用户将具有不同的“显示名称”和“用户ID”,其他人/服务器将引用它们。我个人看不到使用这个系统的任何缺点,所以如果有更多服务器安全知识的人可以解释这类系统的缺陷,我希望如此。

据我所知,黑客必须强行使用用户名和密码,即使他们可以访问完整的用户登录ID列表,他们也无法对它们做任何事情,但我是这肯定是无法完美的,因为我只是随心所欲地想出来。谢谢,我很欣赏这可能不是最好的地方或方式来问这个。

security encryption passwords
2个回答
0
投票

处理此场景的当前标准方法非常相似,只是没有包含用户名。创建帐户时,将使用密码哈希算法(argon2,bcrypt等)对用户密码进行哈希处理。此哈希与用户名一起存储。与您的建议的唯一区别是用户名包含在此哈希中。

很多时候,保持用户名“秘密”并不是什么大不了的事。我不是说你的想法(经过一些调整)不会起作用,我说这可能没那么有用,或者只在特定情况下有用。


0
投票

你在做什么实际上hashing(非对称加密是一个奇怪的术语tbh)密码使用用户名作为salt,这是一个很好的方法来防止基于表查找的攻击,如彩虹表,在线查找等。

如果你使用的哈希函数是安全的,就像SHA-1一样,这根本不是一个糟糕的方法,但今天实际推荐的是使用密钥派生函数,你可以多次执行相同的哈希函数来防止暴力攻击(或者至少让它们变得难以置信),请参阅PBKDF2以获得相当不错的实现,您也可以将它与用户名+密码盐一起使用。

© www.soinside.com 2019 - 2024. All rights reserved.