해싱 알고리즘을보고 있는데 답을 찾을 수 없습니다.
- Bcrypt는 복어를 사용합니다
- 복어는 MD5보다 낫다
- Q : 그러나 SHA512보다 Blowfish가 더 낫습니까?
감사..
최신 정보:
해싱과 암호화의 차이점을 이해하고 있음을 분명히하고 싶습니다. 무엇이이 방법은 질문 물어 저를 묻는 메시지가 이 문서 , 저자는 “적응 해시”로 bcrypt을 말한다
bcrypt는 Blowfish를 기반으로하기 때문에 Blowfish는 해싱 알고리즘이라고 생각하게되었습니다. 답변이 지적한대로 암호화 된 경우이 기사에서 자리를 차지해서는 안되는 것처럼 보입니다. 더 나쁜 것은 그가 bcrypt가 최고라는 결론을 내린다는 것입니다. 또한 나를 혼란스럽게하는 것은 phpass 클래스 (암호 해시에 사용됨)가 bcrypt (즉, 복어, 즉 암호화)를 사용한다는 것입니다. 이 새로운 정보를 바탕으로 (Blowfish는 암호화 임)이 클래스가 잘못 들립니다. 뭔가 빠졌습니까?
답변
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) 암호에 대한 암호화 분석 방법이 해시 기능에 대한 암호화 방법보다 더 잘 개발되었다는 가정에서 비롯됩니다.
답변
암호 인증의 경우 bcrypt가 SHA-512 의 단일 반복 보다 훨씬 낫습니다. 단순히 느리기 때문입니다. 이 특정 게임에서 왜 속도 저하가 유리한지 모르겠다면, 다시 연결 한 기사를 읽으십시오 ( ” 비밀번호 해시 기능에서 원하지 않는 속도입니다 “로 스크롤하십시오 ).
PHK의 MD5 알고리즘이 작동하는 방식과 마찬가지로 SHA-512 주변에서 안전한 암호 해싱 알고리즘을 수천 번 반복하여 작성할 수 있습니다. Ulrich Drepper는 glibc의 crypt ()에 대해 정확하게 이것을했습니다 . 그러나 이미 테스트 된 bcrypt 구현을 사용할 수있는 경우에는 특별한 이유가 없습니다.
답변
복어는 해싱 알고리즘이 아닙니다. 암호화 알고리즘입니다. 즉 복어를 사용하여 무언가를 암호화 한 다음 나중에 일반 텍스트로 해독 할 수 있습니다.
SHA512는 해싱 알고리즘입니다. 즉, 이론적으로 입력을 해시하면 원래 입력을 다시 가져올 수 없습니다.
그것들은 서로 다른 작업에 사용하도록 설계된 2 가지입니다. “SHA512보다 복어가 더 낫습니까?”에 대한 ‘올바른’대답은 없습니다. 당신은뿐만 아니라 요청할 수도 “사과가 더 나은 캥거루보다?”
주제에 대한 자세한 내용을 보려면 다음 링크를 참조하십시오.
답변
복어는 다른 용도로 사용되므로 MD5 또는 SHA512보다 낫지 않습니다. MD5와 SHA512는 해싱 알고리즘이고 Blowfish는 암호화 알고리즘입니다. 완전히 다른 두 가지 암호화 기능.
답변
Ulrich Drepper의 SHA-256 / SHA-512 기반 암호화 구현을 권장합니다.
이 알고리즘을 Java로 포팅했으며 ftp://ftp.arlut.utexas.edu/java_hashes/ 에서 무료 라이센스 버전을 찾을 수 있습니다 .
가장 현대적인 (L) Unices는 / etc / shadow 파일에서 Drepper의 알고리즘을 지원합니다.