2013-03-31 1 views
6

질문은 BCrypt에서 $ 2x $를 사용하는 것과 같은 제목입니까?여기서 2x 접두사는 BCrypt에서 사용됩니까?

다음 시나리오는 맞습니까?

서버 PHP 버전이 이전 버전 인 5.3.7 일 때 이미 $2a$으로 해시 된 암호 집합이 있습니다. 이제 PHP를 5.3.7+으로 업그레이드 했으므로 먼저 $2x$ 알고리즘을 사용하여 이전 암호를 확인한 다음 $2y$ 접두어로 암호를 다시 확인해야합니다. 그래?

+0

** [weblog] (http://daveyshafik.com/archives/35354-theblowfish-debacle.html) **에서 좋은 답변을 찾을 수 있습니다. 하지만이 문장에서 말하는 내용을 이해하지 못했습니다. _이 코드는 서버를 업데이트하기 전에 문제를 발견했다고 가정합니다. 업그레이드 이후 생성 된 새로운 암호가 있다면'$ 2x $ 검사가 실패하면 $ 2a $ 해시를 검사하고'$ 2y $'로 갱신하면됩니다._ **'PHP 5.3.7-'에서'$ 2a $'로 해시 된 비밀번호는''PHP 5.3.7+ '에서'$ 2x $'로 확인할 수 없습니까? ** – msoa

+0

다른 답변 : [CRYPT_BLOWFISH 보안 수정 정보] (http://www.php.net/security/crypt_blowfish.php) ** 결과 :'$ 2a $'로 해쉬 된 패스워드 세트가' PHP 5.3.7-'와 PHP를'5.3.7 +'로 갱신하고 싶다면 업그레이드 후에 이전 암호를'$ 2x $'로 확인해야합니다. 그래서,'$ 2x $'의 사용법은 똑같습니다. ** 누군가 실수를 범했다고 생각하면 저를 알고 계십시오. 감사합니다 – msoa

답변

23

위키 피 디아 편집자주의 사항 :이 답변의 내용은 공개 도메인입니다. 내가 그것을 썼기 때문에 나는 알고있다. 나는 그것을 처음으로 썼다. 그리고 나중에 Stackoverflow에 올려 놓았다. Stackoverflow의 모든 것이 카피 레프트이기 때문에 나는 또한 그것을 안다. 그렇지 않은 경우에도 누구든지 언제 어디서나 자유롭게 사용할 수 있습니다. 내가 어떻게 알아? 내가 그것을 썼기 때문에 나는 그렇게 말했다. 여기에는 Wikipedia의 Bcrypt 항목이 포함됩니다. Wikipedia의 설명에서 : 나는 그것을 기부한다.

당신이 무슨 말하는지 모르면 저작권 위반을 주장하는 것을 중지하십시오.

BCrypt는 $ 2 $

BCrypt

가 오픈 BSD 사람들에 의해 설계되었습니다 변형. 그것은 OpenBSD 패스워드 파일에 저장을위한 패스워드를 해싱하도록 고안되었다. 해시 된 암호에는 사용 된 알고리즘을 식별하는 접두어가 저장됩니다. BCrypt는 접두어 $2$을 받았습니다.

  • $1$ :

    다른 알고리즘 프리픽스에 대비했다 MD5
  • $5$ : SHA-256
  • $6$ : SHA-512

에게 $ 2A $

원래의 BCrypt 사양은 비 ASCII 문자를 처리하는 방법이나 널 종결자를 처리하는 방법을 정의하지 않았습니다. 사양은 지정 개정하는 문자열을 해싱 때

  • 문자열은 UTF-8
  • null 종결는

$ 2 배 $, $ 2Y $를 포함해야 인코딩되어야합니다 (2011 년 6 월)

BCrypt의 PHP 구현 인 crypt_blowfish에서 버그가 발견되었습니다. 8 번째 비트가 설정된 문자를 잘못 처리했습니다.

그들은 시스템 관리자가 $2a$$2x$으로 바꾸고 기존 암호 데이터베이스를 업데이트하여 해당 해시가 잘못되었음을 나타내므로 (예전의 깨진 알고리즘을 사용해야 함) 제안했습니다.그들은 또한 고정 알고리즘에 의해 생성 된 해시에 대해 crypt_blowfish가 $2y$을 내 보낸다는 아이디어를 제안했습니다. 정식 OpenBSD를 포함한 다른 누구도 2x/2y이라는 아이디어를 채택하지 않았습니다. This version marker was was limited to crypt_blowfish.

버전 $ 2 배 $$ 2Y $ 있습니다하지 "더 나은"또는 $ 2A $보다는 "더 강한". 그것들은 BCrypt의 버그를 수정 한 구현의 잔재입니다. 버그가 BCrypt의 오픈 BSD 구현에서 발견 된

$ 2B $ (2014 년 2 월). 그들은 그들의 문자열의 길이를 unsigned char에 저장하고있었습니다. 암호가 255자를 초과하면 오버플로되어 255로 바뀝니다.

BCrypt가 OpenBSD 용으로 작성되었습니다. 그들이 에있는 라이브러리에 버그가있을 때, 그들은 버전을 부딪 치기로 결정했습니다. 즉, 현재 에 ""으로 남아 있기를 원하면 다른 모든 사람들이 따라야 함을 의미합니다. http://undeadly.org/cgi?action=article&sid=20140224132743

  • http://marc.info/?l=openbsd-misc&m=139320023202696
  • 버전 $ 2B $

    • 는 "더 나은"또는 $ 2A $보다는 "더 강한"아니다. 그것은 BCrypt의 버그가있는 구현 중 하나입니다. 그러나 BCrypt는 정식으로 OpenBSD에 속하기 때문에 버전 마커를 원하는대로 변경할 수 있습니다.

      2A 사이에는 차이가 없다

      , 2Y및 2B. 구현을 올바르게 작성하면 모두 동일한 결과를 출력합니다. 당신은 처음부터 옳은 일을하고 있다면

      은 그리고 (UTF8 문자열을 저장하고 또한 null 종결를 해싱) : , 2A 사이에는 차이가없는 배, 2Y, 및 2b. 구현을 올바르게 작성하면 모두 동일한 결과를 출력합니다.

      2 배와 2 배를 신경 써야하는 사람은 crypt_blowfish입니다. 그리고 2b를 신경 쓸 필요가있는 유일한 사람들은 OpenBSD를 돌릴 수도있는 사람들입니다.

      다른 모든 올바른 구현은 동일하고 정확합니다.

    +2

    정말 고마워요. 내 친구. – msoa

    관련 문제