2012-11-15 3 views
3

최근 SHA256을 사용하여 소금에 절인 암호에 대한 암호 해시를 생성하는 방법에 대해 알고 있습니다. 소금에 절인 암호 및 보안에 대해 조금 읽은 후에, .NET에서 rfc2898derivebytespasswordderivebytes 클래스를 보았습니다. rfc2898derivebytes 클래스를 일반적인 해싱 메서드 (소금 생성, 소금에 절한 암호 생성, 둘 다 db에 저장)보다 사용하면 어떤 이점이 있습니까?Rfc2898DeriveBytes 대 Sha2 암호 해시 생성

답변

4

SHA256과 같은 표준 해시는 최신 하드웨어에서 매우 빠르게 생성 될 수 있습니다.

이것은 일반적으로 좋은 것으로 간주되지만 단점이 있습니다. 비밀번호를 해킹하려고 시도하는 악의적 인 사람도 해시를 매우 빠르게 생성 할 수 있습니다. 즉, 무작위로 강제로 쉽게 비밀번호를 찾을 수 있습니다. 이러한 bcryptPBKDF2 (일명 Rfc2898DeriveBytes) 등

키 유도 알고리즘은 표준 해시 알고리즘을보다 많이 느린이다. 이들은 내부적으로 표준 해시 알고리즘 인 Rfc2898DeriveBytes의 SHA1을 사용하지만 파생 키를 생성하는 데 수천 번 반복합니다.

반복 키 유도 알고리즘을 사용하여 "해시"를 생성하려면 컴퓨터가 더 많은 작업을해야하지만 나쁜 사람은 암호를 해독하려고해도 많은 노력이 필요합니다. 이것은 좋은 일입니다.

Rfc2898DeriveBytes 클래스를 사용하면 specify the number of iterations to use (기본값은 1,000이라고 생각합니다.)을 허용합니다. 반복 횟수가 많을수록 공격자가 무차별 공격을 통해 암호를 해독하는 것이 더 어려워집니다.

+0

감사합니다. 문제를 해결합니다. PBKDF2 생성이 생성 (사용자 계정 생성) 중에 느리거나 사용자 로그인을 확인하기 위해이 방법을 사용할 예정입니까? – Bahamut

+0

생성 된 * 및 * 로그인 중에 (저장된 키와 비교하기 전에 입력 된 비밀번호로 키를 다시 생성해야하기 때문에) 속도가 느려집니다. PBKDF2와 같은 반복 알고리즘을 사용하면 트레이드 오프가 필요합니다. 비록 사용자가 무엇인지 결정할 수는 있지만 (시스템의 부하, 사용자의 수락 준비 지연 등으로 결정할 수 있음) 설 수있는 최대 반복 횟수를 사용하십시오. – LukeH

+0

맞습니다. 설명에 대한 결론은 다음과 같습니다. PBKDF2는 수천 번의 작업을하기 때문에 SHA256 _only_보다 낫습니다. 내 컴퓨터에서 SHA256 계산은 약 5 배 빨라서 PBKDF2 100K 대신 SHA256 500K라고 말하면 똑같은 보안을 유지할 수 있습니까? 감사! – Mar