2010-07-03 3 views
4

config/initializers/devise.rb에 "config.stretches"라는 구성이 있습니다.devise의 database_authenticatable의 "확장"은 무엇을 의미합니까?

# ==> Configuration for :database_authenticatable 
# For bcrypt, this is the cost for hashing the password and defaults to 10. If 
# using other encryptors, it sets how many times you want the password re-encrypted. 

config.stretches = 10 

나는 stretches의 의미를 이해하지 못합니다. 암호를 "다시 암호화"하고 싶다고 말합니다. 왜 우리는 암호를 다시 암호화합니까? 왜 "시간"을 지정해야합니까?

답변

7

간단히 말해서 무차별 사전 공격은 오래 걸립니다.

This blog post은 비교적 평범한 영어로 작성되었으며, 어떤 일이 벌어지고 있는지 더 잘 이해할 수 있습니다.

+0

답변 해 주셔서 감사합니다. 저 포스트는 저를 위해 조금 곤란하다, 나는 아직도 이해하지 않는다, 유감스러운. 왜 공격이 오래 걸릴 수 있다고 말합니까? 100으로 리셋하면 어떤 일이 일어날까요? – Freewind

+1

그러면 암호 해시를 계산하는 데 10 배 이상의 작업이 필요할 것입니다. 암호 해시를 생성하는 것은 비용이 많이 듭니다. 누군가가 로그인 할 때처럼 1을 필요로 할 때 큰 문제는 없습니다. 여분의 시간을 알 수 없습니다. 누군가 합리적인 시간 내에 사전 공격을 수행하는 것이 더 성가신/불가능하게하려고합니다. 그들은 많은 해시를 생성해야하므로, 느리게할수록 (당신이 아닌). – jdl

+0

위키 피 디아에는이 주제에 관해 상당한 기사가 있습니다. 나는 bcrypt가 정확하게 이것을하고 있다고 나는 믿지 않는다 (나는 어느 정도 bcrypt 알고리즘을 이해하지 못한다). 그러나 아이디어는 같다. http://en.wikipedia.org/wiki/Key_stretching – jdl