标签: bcrypt

Rails 3设计停止更多加密"延伸"

每当我输入config.stretches = 20config/initializers/devise.rb,服务器就会超时加密请求.

重新开始时间可以承受15次延伸,然后随着我提高伸展值而迅速增加,并且在19时变得完全无法使用.我不太了解这个值可能造成的性能影响,但它当然不应该是指数级的,是我的经验.显然我不需要为除authlogic兼容性之外的任何东西提高此值,但无论如何它似乎都是错误的.

我通过全新安装的https://github.com/plataformatec/devise_example/验证了这一点.

在Ubuntu 11.04,任何3.0.x rails版本,3.1.0.beta1,设计1.3.1和1.3.4,mysql,pg,sqlite驱动程序上都会出现此行为.这适用brcyptsha1加密器以及加密器.

sha1 ruby-on-rails bcrypt authlogic devise

6
推荐指数
2
解决办法
1320
查看次数

使用弱密码加密文件,bcrypt或SHA-256 + AES-256?

我从一个弱密码(前8个小写字符)和一个文件开始.我需要使用该密码加密该文件.结果必须能够抵御已知攻击.

方法1:我可以使用SHA-256散列密码,然后使用生成的散列和文件作为AES-256的输入,给我一个加密文件.据我所知,SHA-256和AES-256都非常快.这不会使文件容易受到暴力攻击吗?

例如,可以抓住预先计算的SHA-256哈希的彩虹表,假设它的文件非常小并且密码非常弱,请尝试在合理的时间内使用该表中的每个哈希进行AES-256解密(一些几个月的专业硬件).

方法2:使用bcrypt.如果我理解正确,bcrypt比SHA-256 + AES-256更适合加密文件,因为它的密钥生成方案有一个工作因素,导致更强的密钥.还是我错了?

我见过的Ruby和Python实现(包装器?)专注于使用bcrypt作为密码的散列方案,而不是密码本身.我甚至可以使用bcrypt来散列弱传递并在"一步"中加密文件吗?

方法3:使用bcrypt散列传递,使用该散列和文件作为AES-256的输入,给我加密文件.这样可以解决"密钥太快而无法生成"的问题.(假设它有问题.)但是,bcrypt哈希长448位,AES-256需要256位密钥.天真的解决方案是简单地删除散列的尾随位并将其用作AES-256的密钥.我不会走这条路,因为我对密码学知之甚少,不知道后果是什么.

编辑:我不能限制通行证,因为这是一个离线应用程序.即.没有合理的地方储存盐.我可以将通道加盐,并将未加密的盐与加密文件一起存储.如果说数据库受到损害,盐几乎就是公共的/可见的.盐的目的是防止彩虹表攻击.感谢Nemo,吼叫.

encryption cryptography aes sha bcrypt

6
推荐指数
1
解决办法
3248
查看次数

Bcrypt安全性

我知道这是一个"过度询问"的话题,Bcrypt但是我对它的安全性有一些担忧.

我一直在使用sha512($password.$salt),然后寻找更好的解决方案,并遇到了Bcrypt.

关注我的是,在阅读它时,它表示rounds($02$)和salt的数量存储在3个单独的'块'中的哈希值中,就像这样,$rounds$.$salt.$hash(或者至少我是如何解释它的).

我的问题是:这不是不安全吗?显示使用的轮次数和明显可用的盐.因为攻击者可以"好吧我需要2轮,盐是123salt,那就是哈希",对吗?

我理解在阅读时,并不是"全部"都是安全的,破解密码需要多长时间,而这是Bcrypt的好处,它很慢.

有人可以澄清我的误解/误解吗?

谢谢.

php bcrypt

6
推荐指数
1
解决办法
1251
查看次数

无法在Azure上部署node.js项目,Bcrypt是罪魁祸首

我目前正在开发一个部署在Azure上的node.js项目.我刚刚使用bcrypt添加了密码加密.在我的测试计算机上一切都很好但是当我在Azure上部署时,部署失败了,我收到了这条消息:

node-gyp rebuild
C:\DWASFiles\Sites\invata\VirtualDirectory0\site\wwwroot\node_modules\bcrypt>node  "D:\Program Files (x86)\nodejs\node_modules\npm\bin\node-gyp-bin\\..\..\node_modules\node-   gyp\bin\node-gyp.js" rebuild 
gypnpm ERR! bcrypt@0.7.6 install: `node-gyp rebuild`
npm ERR! `cmd "/c" "node-gyp rebuild"` failed with 1
An error has occurred during web site deployment.
npm ERR! 
npm ERR! Failed at the bcrypt@0.7.6 install script.
Run Code Online (Sandbox Code Playgroud)

BCrypt安装有点棘手,因为它需要下载和安装openSSL.那么有可能在azure上部署这样的模块还是没有希望?

谢谢,Stéphane

azure bcrypt node.js

6
推荐指数
1
解决办法
1676
查看次数

将用户密码从salted SHA1升级到bcrypt

我被聘请在新的PHP 5.3服务器上使用Laravel 4重建一个在CodeIgniter 1.7.3(在PHP 4.2服务器上)上构建的活跃应用程序.

该系统有大约500个用户,其密码使用salted SHA-1哈希进行加密.我想使用bcrypt来提高应用程序的安全性以及与Laravel 4的身份验证系统集成.

您如何建议迁移这些用户密码?

php sha1 codeigniter bcrypt laravel

6
推荐指数
2
解决办法
1928
查看次数

使用jbcrypt时性能可变且性能下降

我正在使用jbcrypt来哈希项目中的密码.验证我正在使用的硬件上的密码时性能大约为500毫秒(log_rounds设置为12).然而,经过一段时间的常规使用后,表演时间突然下降到惊人的15秒.下降非常突然,没有累积,并且在重新启动过程之前保持不变.

分析显示在密钥(..)方法中使用了额外的时间.

来源:http://jbcrypt.googlecode.com/svn/tags/jbcrypt-0.3m/src/main/java/org/mindrot/jbcrypt/BCrypt.java

此方法仅使用xor,shift等基本函数计算哈希值.没有对象分配,外部资源的使用,随机数生成等.

在同一进程中,性能不会因其他功能而下降.内存分配稳定且低.不涉及完整的GC.

有没有人见过这个或为什么会发生这种情况的任何线索?我可以理解一种可变性能在某种程度上取决于其他情况,但这是一个非常突然和稳定的下降,从大约500ms.到大约15000毫秒.

java security performance bcrypt jbcrypt

6
推荐指数
1
解决办法
661
查看次数

无法在ubuntu上安装npm bcrypt

我正在尝试安装bcrypt以在ubuntu系统上使用sails js和passport但无法安装它.在运行时,他在终端上生成以下命令来安装bcrypt的命令:

    manav@tantraadmin:~$ npm install bcrypt
            \
            > bcrypt@0.8.0 install /home/manav/node_modules/bcrypt
            > node-gyp rebuild

            make: Entering directory `/home/manav/node_modules/bcrypt/build'
              CXX(target) Release/obj.target/bcrypt_lib/src/blowfish.o
            make: g++: Command not found
            make: *** [Release/obj.target/bcrypt_lib/src/blowfish.o] Error 127
            make: Leaving directory `/home/manav/node_modules/bcrypt/build'
            gyp ERR! build error 
            gyp ERR! stack Error: `make` failed with exit code: 2
            gyp ERR! stack     at ChildProcess.onExit (/home/manav/.nvm/v0.10.31/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:267:23)
            gyp ERR! stack     at ChildProcess.emit (events.js:98:17)
            gyp ERR! stack     at Process.ChildProcess._handle.onexit (child_process.js:810:12)
            gyp ERR! System Linux 3.11.0-12-generic
            gyp ERR! command "node" "/home/manav/.nvm/v0.10.31/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
            gyp ERR! cwd …
Run Code Online (Sandbox Code Playgroud)

ubuntu bcrypt node.js sails.js

6
推荐指数
1
解决办法
3912
查看次数

为什么bcrypt.hashpw可用于散列和验证密码?

使用bcryptPython 2.7,我可以看到该示例使用bcrypt.hashpw散列密码进行存储并验证给定的密码是否与散列密码相匹配,如下所示:

哈希

import bcrypt
password = b"somepassword"
hashed = bcrypt.hashpw(password, bcrypt.gensalt())
Run Code Online (Sandbox Code Playgroud)

好的,到目前为止一切顺利.现在使用bcrypt对给定的密码进行哈希处理,因此它是一个哈希字节的字符串.


验证

现在,这是令我困惑的部分:要检查明文密码是否与哈希密码匹配,使用相同的函数,使用哈希密码作为salt:

if bcrypt.hashpw(password, hashed) == hashed:
    print("It Matches!")
else:
    print("It Does not Match :(")
Run Code Online (Sandbox Code Playgroud)


发生了什么?

两种bcrypt.hashpw调用的结果不应该不同,因为输入盐是不同的吗?

我能想到的唯一合理的答案是,在将前缀添加到哈希密码之前,盐被截断为固定长度.这样一来,使用散列的结果时,仅将所生成的盐是左(剥离后散列密码后),和散列与截短的盐密码的结果是相同的原件.但是,我没有任何证据支持这一点.

为什么这样做?

python hash salt bcrypt

6
推荐指数
2
解决办法
5571
查看次数

jBcrypt:BCrypt.checkpw突然需要大约30倍的时间

在我们的Web应用程序中,我们使用jBcrypt进行散列密码.在对密码进行散列时,我们使用13个log_rounds.

通常,BCrypt.checkpw()大约需要1秒钟.但是不时(几天之后),它突然开始变慢,从那个时间开始需要将近30秒并且没有恢复到正常速度.重新启动Tomcat是唯一有用的东西.

我不会怀疑这是否会不时发生,例如,如果CPU负载很高或GC正在运行.但情况并非如此,它只是突然开始变慢.只有登录过程受到影响,应用程序的其余部分仍然很快.我们也没有任何可确定的内存泄漏或其他性能问题.只是BCrypt.checkpw()很慢.线程转储显示BCrypt.checkpw和后续方法调用消耗的时间,尤其是BCrypt.encipher:

Thread 8597: (state = IN_JAVA)
 - org.mindrot.jbcrypt.BCrypt.encipher(int[], int) @bci=0, line=490 (Interpreted frame)
 - org.mindrot.jbcrypt.BCrypt.key(byte[]) @bci=122, line=562 (Interpreted frame)
 - org.mindrot.jbcrypt.BCrypt.crypt_raw(byte[], byte[], int) @bci=89, line=629 (Compiled frame)
 - org.mindrot.jbcrypt.BCrypt.hashpw(java.lang.String, java.lang.String) @bci=226, line=692 (Interpreted frame)
 - org.mindrot.jbcrypt.BCrypt.checkpw(java.lang.String, java.lang.String) @bci=3, line=763 (Interpreted frame)
Run Code Online (Sandbox Code Playgroud)

我在SO上只发现了一个类似的问题,但在我们的例子中,多个类加载器不是问题: 使用jbcrypt时可变性能和降级性能

有谁知道这里发生了什么?

bcrypt jbcrypt

6
推荐指数
0
解决办法
1068
查看次数

将用户身份验证迁移到Firebase Auth

我是一家公司的开发人员,该公司的应用程序是用PHP和MySQL构建的.我们有大约300个用户使用bcrypt对其密码进行哈希处理并存储在users表中的用户.我们希望使用Angular和Firebase重建应用程序.

我的问题是,如何通过Firebase迁移这些用户并使用Firebase Auth.迁移配置文件信息很容易,但我想确保用户在登录新应用程序时仍然可以使用相同的电子邮件/密码.

以下是我想到的一些方法.在我看来,所有这些都很可怕.

A)创建一个使用bcrypt的自定义身份验证系统,然后只复制哈希值.这不是我想要的,因为我不想维护自定义身份验证解决方案.

B)每次用户登录旧系统时,从登录字段中获取密码,以明文形式存储,然后使用电子邮件/密码在Firebase中手动创建每个用户.在我们切换到新应用程序之前,这将要求100%的用户登录.这不太可能.这显然也是对隐私的侵犯.我敢肯定它违反了某种法律或标准.但它有效,这是最后的选择.

C)每次用户登录旧系统时,请以明文形式将电子邮件/密码发送到脚本,该脚本使用相同的用户/电子邮件自动创建新的Firebase用户.在我们切换到新应用程序之前,这将要求100%的用户登录.这不太可能.它比选项B更难建立.

这些选项都不是很好看.他们都有缺点.有更好的选择吗?如果不是,在B和C之间,哪个是最合法/合乎道德的?选项B诱惑我,因为它非常简单,但我不想破坏任何法律或失去我公司客户的信任.

authentication bcrypt firebase firebase-authentication

6
推荐指数
2
解决办法
2893
查看次数