相关疑难解决方法(0)

通过默默无闻,密码不是一种安全形式吗?

我知道通过默默无闻的安全性是不受欢迎的,并且被认为不是很安全,但通过默默无闻的密码安全性不是吗?只要没有人发现它,它就是安全的.

这只是默默无闻的问题吗?(即一个好的密码很好的盐渍和散列是不切实际的打破)

注意我不是在询问保存密码的过程(假设它们是正确的哈希和盐渍).我问的是整个想法使用密码,这是一条信息,如果知道可能会损害一个人的帐户.

或者我误解了默默无闻的安全意味着什么?我想这就是我认为的意思,就是存在一些信息,如果已知会损害系统(在这种情况下,系统被定义为密码意味着要保护的)

security passwords security-by-obscurity

28
推荐指数
3
解决办法
2239
查看次数

你如何在MySQL中安全地存储用户的密码和盐?

所以,我发现你应该将密码与"盐"一起散列.(文章可以在这里这里找到.)

这是代码:

$password = 'fish';

/* should be "unique" for every user? */
$salt= 'ABC09';

$site_key = 'static_site_key';

hash_hmac('sha1', $password . $salt, $site_key);
Run Code Online (Sandbox Code Playgroud)

现在我需要的方法来保存$password$saltMySQL中,就像这样:

+---------+--------+----------+-------+
| user_id |  name  | password |  salt |
+---------+--------+----------+-------+
|    1    | krysis |  fish**  | ABC09 |
+---------+--------+----------+-------+
Run Code Online (Sandbox Code Playgroud)

**fish当然会被散列,而不是以纯文本形式存储.

而我只是想知道这样做是否真的有意义,因为这样一个黑客或谁也知道盐?所以,如果他们破解密码并且看到fishABC09它们,他们会自动知道密码是fish什么?或者他可能"永远"无法破解密码,因为他不知道密码secret_key,因为它没有存储在数据库中?

如果我没有任何意义,我很抱歉.我只是一直用于sha1密码,今天我发现这些文章谈到了添加一个salt.

mysql passwords sha1

16
推荐指数
3
解决办法
4万
查看次数

如果存储在数据库中,使用salt如何使密码更安全?

我目前正在学习Rails,但答案不一定是Rails特定的.

所以,据我所知,安全密码系统的工作原理如下:

  • 用户创建密码
  • 系统使用加密算法(例如SHA2)加密密码.
  • 在数据库中存储加密密码的哈希值.

登录尝试后:

  • 用户尝试登录
  • 系统使用相同的加密算法创建尝试哈希
  • 系统将尝试的哈希与数据库中的密码哈希进行比较.
  • 如果匹配,他们会被允许进入.如果没有,他们必须再试一次.

据我所知,这种方法受到彩虹攻击 - 其中可能发生以下情况.

攻击者可以编写一个基本上尝试每个字符,数字和符号排列的脚本,使用相同的加密算法创建一个哈希值,并将它们与数据库中的哈希值进行比较.

因此,围绕它的方法是将哈希与唯一的盐结合起来.在许多情况下,用户注册的当前日期和时间(低至毫秒).

但是,此salt存储在数据库列'salt'中.

所以我的问题是,这是如何改变这样一个事实:如果攻击者首先获得了对数据库的访问权并且为"真实"密码创建了哈希并且还具有盐的哈希值,那么这又不仅如此受彩虹袭击?因为,理论上他会尝试每个排列+盐哈希,并将结果与​​密码哈希进行比较.可能需要更长时间,但我不知道它是多么万无一失.

原谅我的无知,我只是在学习这些东西,这对我来说从来没有多大意义.

encryption passwords cryptography salt

13
推荐指数
2
解决办法
2897
查看次数

我该如何存储密码盐?

使用PHP,我使用shama6算法使用hmac函数编码密码.我不确定的是如何正确储存盐.

散列密码的全部意义在于黑客可以访问数据库.如果我将数据库中的salt存储在与散列密码相同的行中,是不是就像我将黑客交给"密码"一样?我正拿着一把带锁的门,把入侵者递给钥匙.

任何人都可以向我解释他们如何储存他们的盐?

php security passwords salt

11
推荐指数
1
解决办法
775
查看次数

在数据库中存储用户和密码

我正在创建一个用户+密码的软件.在识别之后,用户可以访问一些半公共服务,但也加密一些只有用户可以访问的文件.

如果可能,用户必须按原样存储,无需修改.在auth之后,只要软件正在运行,用户和密码就会保存在内存中(我不知道是否可以).

问题是我应该如何将这个用户+密码组合存储在一个可能不安全的数据库中?

我真的不明白我应该揭露什么.

假设我创建了一个这样的增强键:

salt = random 32 characters string (is it okay?)
key = hash(usr password + salt)
for 1 to 65000 do
  key = hash(key + usr password + salt)

我应该在数据库中存储[纯文本用户],[增强密钥]和[盐]吗?

另外,我应该使用什么来加密(使用AES或Blowfish)每次使用新密码的某些文件?我应该生成一个新的盐并使用(存储在程序的内存中的密码+盐)创建一个新的增强密钥?在这种情况下,如果我将加密文件存储在数据库中,我应该只存储盐.数据库与我存储用户+密码组合的位置相同.

如果有人可以生成密钥,则只能对文件进行解密,但他不知道密码.对 ?

我使用Python和PyCrypto,但它并不重要,一般的例子就好了.我已经阅读了一些类似的问题,但它们并不是很明确.

非常非常感谢你!

python security passwords

10
推荐指数
1
解决办法
3015
查看次数

存储密码盐的位置以及如何获取密码

我负责在.Net MVC 4 Web应用程序中进行身份验证,我遇到了关于密码散列,存储和身份验证的问题.

计划是当前使用2 Salts,1 Dynamic(每用户)和1 Static(Web App Constant)和强Hashing功能.

给定一个包含用户名和密码的简单User表:

  • 我是否将每用户盐存储在用户表的列中?

我担心的是,通过这样做,我将不得不使用其用户名从Web应用程序内存中的数据库中获取用户.是否存在可能存在问题的某种攻击?理想情况下,我希望这是一步/一SQL请求身份验证.

我担心太多了吗?是否可以替代"每用户"盐,我仍然可以进行一步验证?

database security salt password-hash

7
推荐指数
1
解决办法
5227
查看次数

如何使用RFID徽章和PIN码保护访问

我有一个类似于门锁的场景,需要双因素身份验证才能获得访问权限:

  • 带GUID的RFID徽章
  • 通过键盘输入的4位PIN密码.

我需要在SQL Server 2008中安全地存储它们.我认为可以正常存储GUID,但是应该采取什么方法来保护数据库和整个系统中的PIN?

一个典型的哈希/盐方法是否足以支持4位数PIN?

保护这类系统的正确方法是什么?

编辑

更多信息......最终,这个系统最有可能需要比标准的"门锁"更安全.用户将使用RFID令牌和PIN码进行身份验证.在获得对系统的访问权限之后,用户将有机会通过链接到其帐户的信用卡浏览和购买项目(使用第三方网关/保险库服务进行存储).这对系统有什么影响?

编辑2

此外,案例是这不是一个基于Web的应用程序.用户只能从专用工作站访问系统.然后,工作站将利用Web服务与后端系统/ DB进行通信.如何将其纳入混合?

我可以使用@Remus建议的系统,其中认证/解密都是RFID卡的功能吗?然后,工作站将使用经过身份验证的用户ID与后端进行通信.有没有办法实现这样的系统?

.net c# sql-server security sql-server-2008

5
推荐指数
1
解决办法
1368
查看次数

如何在sql中生成随机字符串到salt passowrd?

在sql中有关于密码的问题:

下面的代码通过随机生成10个字符的字符串来限制特定密码:

Update Teacher 
SET    TeacherSalt = SUBSTRING(MD5(RAND()), -10), 
       TeacherPassword = SHA1(CONCAT('009b9b624aaecc4b3217dcd4bfee15ab704745d7',SUBSTRING(MD5(RAND()), -10)))
WHERE TeacherPassword = '009b9b624aaecc4b3217dcd4bfee15ab704745d7'
Run Code Online (Sandbox Code Playgroud)

但我的问题是我想要更改盐,以便它生成的字符串来自所有这些字符:

./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789

有63个字符.php的方式如下:

$salt = ""; 
for ($i = 0; $i < 40; $i++) { 
   $salt .= substr(
     "./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", 
     mt_rand(0, 63), 
     1); 
}
Run Code Online (Sandbox Code Playgroud)

但是我怎么能用上面的sql方式写这个呢?

php mysql sql database salt

5
推荐指数
2
解决办法
6593
查看次数

为什么在同一数据库中为哈希密码保存盐是安全的?

我了解散列和加盐的必要性,但是我不明白如何将盐存储在相同(可能受到威胁)的数据库中,因为整个散列是安全的。例如,我正在研究的一本书指示通过随机生成一个整数并使用RNGCryptoServiceProvider创建一个byte []来为每个用户(良好)创建唯一的哈希。很好,但是为了在登录时验证用户密码,有必要从数据库(或其他文件)中读取唯一的盐。这是储存盐的安全方法吗?

.net hash cryptography salt

5
推荐指数
2
解决办法
1042
查看次数

密码盐:其他最佳实践

像大多数程序员一样,我不是密码学方面的专家,但我理解基础知识.然而,正如Jeff的博客文章所述,一点点知识可能是一件危险的事情.考虑到这一点,我理解盐值的目的但我需要一些帮助来理解如何使用盐值.

我已经阅读过关于这个主题的其他帖子,最好使用随机盐值来加密每个密码.如果是这种情况,当我尝试对用户进行身份验证时,如何重现该随机盐值?在这种情况下,我会加密用户提供的明文密码,对其进行加密,并将其与存储在数据库中的密码进行比较.在创建密码时,是否将随机盐值与加密密码一起存储在用户记录中?如果黑客拥有完整的用户记录,这会使盐值无用吗?

cryptography salt

3
推荐指数
1
解决办法
3023
查看次数