2012-07-24 3 views
2

서버의 데이터베이스에 비밀번호를 저장하고 싶습니다.데이터베이스에 비밀번호를 저장하는 기본 복구 방법입니다.

암호는 암호가 필요한 타사 API에 사용하고 싶기 때문에 복구 가능해야합니다. (따라서 md5와 같은 단방향 방법을 사용할 수 없습니다 ...)

데이터베이스에 암호를 저장하는 가장 좋은 방법은 무엇입니까? 일반 텍스트를 저장하는 것보다 더 좋은 방법이 있습니까?

+0

암호화 할 수 있지만 문제는 마스터 키를 저장하는 것으로 옮깁니다. – CodesInChaos

+0

그리고 다른 데이터베이스에 마스터 키를 놓으면 SQL 인젝션 공격을 막을 수 있습니까? –

+0

md5는 깨진 편도 방법입니다 ... 단지 레코드 용입니다. –

답변

2

AES은 암호 학적으로 소리가 나며 아마도 새로운 응용 프로그램에 대해 가장 일반적인 암호화 (해싱과 반대되는) 메커니즘을 선택했을 것입니다.

암호화 한 각 암호에 대해 임의의 초기화 벡터 (IV)를 생성하고, 암호화 된 암호 바이트와 별도로 키와 IV를 저장하십시오.

는 Rijndael을 사이에 약간의 차이 및 AES

의 공식 FIPS-197 규격

당신은 독특한를 사용해야가

http://blogs.msdn.com/b/shawnfa/archive/2006/10/09/the-differences-between-rijndael-and-aes.aspx

을 확인 AES와 Rijndael을 사이의 차이점을 이해하려면 IV. 그러나 사용자 당 키 저장은 복잡한 키 관리 시나리오를 만듭니다. 내가 응용 프로그램에 대한 하나의 열쇠와 사용자 당 IV를 제안합니다.

IV를 암호문과 함께 저장할 수 있습니다. 키는 데이터베이스 외부에 저장되어야합니다.

web.config에 암호화 된 키를 저장할 수 있습니다. this을 참조하십시오.

+0

각 사용자마다 고유 한 키와 IV를 사용해야합니까? –

+0

사용자별로 고유 한 IV를 사용해야합니다. 그러나 사용자 당 키 저장은 복잡한 키 관리 시나리오를 만듭니다. 내가 응용 프로그램에 대한 하나의 열쇠와 사용자 당 IV를 제안합니다. –

+0

IV를 암호문과 별도로 저장하는 것은 드문 경우입니다. IV를 암호문 앞에 붙이는 것이 표준이다. – CodesInChaos

관련 문제