2011-09-21 4 views
1

데이터베이스에 암호를 저장하는 FIPS 유효성 검사 해시 알고리즘을 찾고 있습니다. 다음 코드를 사용했지만 여전히 오류가 발생합니다.데이터베이스에 암호를 저장하는 FIPS 검증 알고리즘?

이 구현은 Windows 플랫폼의 FIPS 유효성이 확인 된 암호화 알고리즘에 포함되어 있지 않습니다.

SHA1CryptoServiceProvider Testsha1 = new SHA1CryptoServiceProvider(); 
byte[] hashedBytes; 
UTF8Encoding encoder = new UTF8Encoding(); 
hashed = Testsha1.ComputeHash(encoder.GetBytes(strPassword)); 
StringBuilder sb = new StringBuilder(); 
for (int i = 0; i < hashed.Length; i++) 
{ 
    sbuilder.Append(hashed[i].ToString("x2")); 
} 
string Password = sb.ToString(); 
+0

정확히 어디에서 오류 메시지가 표시됩니까? – n8wrl

+0

@ n8wrl EnableFIPS 보안 정책이 적용될 때 SHA1Managed와 같은 일부 보안 클래스에 의해 예외가 throw됩니다. – vcsjones

+0

내 웹 응용 프로그램을 실행하려고하면 오류가 발생했습니다. – Macnique

답변

2

system.web 섹션에서의 web.config에 다음 줄을 추가

<machineKey validationKey="AutoGenerate,IsolateApps" ecryptionKey="AutoGenerate,IsolateApps" validation="3DES" decryption="3DES"/>

2

일반 SHA-1은 암호를 저장하는 데 사용되어서는 안된다. PBKDF2는 좋은 선택입니다. .net에서는 Rfc2898DeriveBytes 클래스와 함께 사용할 수 있습니다. https://security.stackexchange.com/questions/2131/reference-implementation-of-c-password-hashing-and-verification/2136#2136

기본 해시 기능을 SHA-256으로 변경해야 할 수도 있습니다. 내가 기억하는 바로는 SHA-1은 NIST의 승인을받지 못했습니다.

+2

SHA1 is is NIST (FIPS Pub 180의 일부)에서 허용됨 - Microsoft에서 SHA256을 사용하기 위해 사용 된 HMAC 알고리즘을 제어하면 좋을 것입니다. Microsoft가 CSP에 구현 한 내용은 [140-2 승인] (http://csrc.nist.gov/groups/STM/cmvp/documents/140-1/1401val2004.htm#405)입니다. – vcsjones

+0

system.web 섹션의 문제가 해결되었습니다. – Macnique

0

나는 데이터베이스에 암호를 저장하는 해시 알고리즘의 유효성을 확인 FIPS 찾고 있어요 내 문제 해결 .

SHA-2 제품군의 해시 중 하나를 사용하십시오. 예 : SHA256.

관리되는 클래스를 사용하지 마십시오. FIPS 유효성을 검사하지 않습니다. 대신 SHA256CryptoServiceProvider과 친구들을 사용하십시오.

관련 문제