bcrypt 또는 SHA-512 (PBKDF2와 같은 적절한 알고리즘의 맥락에서)가 충분한 지 말하기 만하면 충분 합니다. 그리고 대답은 그렇습니다. 두 알고리즘 모두 암호화 분석이 아닌 구현 결함을 통해 위반이 발생할 수있을 정도로 안전합니다.
어떤 것이 "더 나은지"알기를 고집한다면, SHA-512는 NIST와 다른 사람들에 의해 심층적 인 리뷰를 받았습니다. 좋지만, 지금은 이용할 수 없지만 새로운 해시 알고리즘에 대한 SHA-3 경쟁으로 이어진 결함이 인식되었습니다. 또한 해시 알고리즘에 대한 연구는 암호에 대한 연구보다 "최신"이며 암호 전문가는 여전히 이에 대해 배우고 있습니다.
전체적으로 bcrypt가 Blowfish 자체만큼 많이 조사되지는 않았지만 잘 이해 된 구조의 암호를 기반으로하는 것은 해시 기반 인증이 부족한 고유 한 보안을 제공한다고 생각합니다. 또한 SHA-2 기반 해시 공격 도구로 일반 GPU를 사용하는 것이 더 쉽습니다. 메모리 요구 사항으로 인해 bcrypt를 최적화하려면 온보드 RAM이있는 FPGA와 같은보다 전문화 된 하드웨어가 필요합니다.
참고 : bcrypt는 Blowfish를 내부적으로 사용하는 알고리즘입니다. 암호화 알고리즘 자체는 아닙니다. 해시 함수를 사용하여 "단방향 해시"를 수행하는 것처럼 암호를 돌이킬 수 없게 숨기는 데 사용됩니다.
암호화 해시 알고리즘은 되돌릴 수 없도록 설계되었습니다. 다시 말해, 해시 함수의 출력 만 주어지면 동일한 해시 출력을 생성하는 메시지를 찾기 위해 "영원히"소요되어야합니다. 사실, 동일한 해시 값을 생성하는 두 개의 메시지를 찾는 것은 계산 상 불가능합니다. 암호와 달리 해시 함수는 키로 매개 변수화되지 않습니다. 동일한 입력은 항상 동일한 출력을 생성합니다.
누군가가 비밀번호 테이블에 저장된 값으로 해시되는 비밀번호를 제공하면 인증됩니다. 특히, 해시 함수의 되돌릴 수 없기 때문에 사용자는 해시를 잡고 공격자가 작동 암호를 찾기 위해이를 뒤집은 공격자가 아니라고 가정합니다.
이제 bcrypt를 고려하십시오. 암호에서 "파생 된"키를 사용하여 Blowfish를 사용하여 매직 문자열을 암호화합니다. 나중에 사용자가 비밀번호를 입력하면 키가 다시 파생되고 해당 키로 암호화하여 생성 된 암호문이 저장된 암호문과 일치하면 사용자가 인증됩니다. 암호문은 "암호"테이블에 저장되지만 파생 키는 저장되지 않습니다.
여기에서 암호화를 해제하려면 공격자가 암호문에서 키를 복구해야합니다. 이 공격은 "알려진 평문"공격이라고합니다. 공격은 암호화 된 매직 문자열을 알고 있지만 사용 된 키는 알고 있지 않기 때문입니다. 복어는 광범위하게 연구되었으며 공격자가 알려진 단일 텍스트로 키를 찾을 수있는 공격은 아직 알려져 있지 않습니다.
따라서 돌이킬 수없는 알고리즘 기반의 암호화 요약과 마찬가지로, bcrypt는 암호, 소금 및 비용 요소로부터 돌이킬 수없는 출력을 생성합니다. 그것의 장점은 알려진 평문 공격에 대한 Blowfish의 저항에 있으며 이는 다이제스트 알고리즘에 대한 "첫 번째 사전 이미지 공격"과 유사합니다. 암호를 보호하기 위해 해시 알고리즘 대신 사용할 수 있기 때문에 bcrypt를 혼동하여 "해시"알고리즘 자체라고합니다.
소금을 올바르게 사용하여 레인보우 테이블을 방해했다고 가정하면 진정으로 돌이킬 수없는 기능은 공격자가 시행 착오를 줄입니다. 공격자가 시험을 수행 할 수있는 속도는 돌이킬 수없는 "해시"알고리즘의 속도에 따라 결정됩니다. 해시 함수의 단일 반복을 사용하는 경우 공격자는 $ 1000 정도의 비용이 드는 장비를 사용하여 초당 수백만 건의 시험을 수행 할 수 있으며 몇 개월 동안 최대 8 자 길이의 모든 비밀번호를 테스트 할 수 있습니다.
그러나 다이제스트 출력이 수천 번 "피드백"되면 해당 하드웨어에서 동일한 암호 집합을 테스트하는 데 수백 년이 걸립니다. Bcrypt는 키 파생 루틴 내에서 반복하여 동일한 "키 강화"효과를 달성하며 PBKDF2와 같은 적절한 해시 기반 방법도 동일한 기능을 수행합니다. 이와 관련하여 두 가지 방법이 비슷합니다.
따라서 bcrypt에 대한 권장 사항은 1) Blowfish가 SHA-2 해시 함수 제품군과 비슷한 수준의 조사를 받았으며 2) 암호에 대한 암호화 분석 방법이 해시 기능에 대한 암호화 방법보다 더 잘 개발되었다는 가정에서 비롯됩니다.