2017-01-20 2 views

답변

1

사전 공격을 막기 위해 소금 값 (scrypt, bcrypt 또는 PBKDF2)과 같은 좋은 키 편차 함수를 사용해야합니다.

키 생성에 해시 함수 만 사용하는 경우 생성 된 키가 SHA256 ("abcd") 또는 SHA256 ("password") 일 가능성이 많습니다. 즉,이 방법은 무차별 공격에 매우 취약합니다.

3

암호 기반 키 유도 기능을 사용하여 암호에서 암호화 키를 파생 : PBKDF2 (일명 Rfc2898DeriveBytes). 파생에 약 100ms의 계산 시간이 소요될 수 있도록 무작위 소금과 반복 횟수를 사용하십시오.

암호 해독을 위해 키를 파생시키기 위해 동일한 소금 및 반복 횟수를 사용해야하며 암호가 필요하지 않으므로 암호화 된 데이터 앞에 덧붙일 수 있습니다.

단지 해시 함수를 사용하는 것만으로는 충분하지 않으며 단지 소금을 추가하면 보안을 향상시키는 데별로 도움이되지 않습니다.

요점은 공격자가 무차별 암호로 많은 시간을 소비하도록하는 것입니다.

+0

"약 100ms의 계산 시간"... 어떤 하드웨어에서 어떤 병렬 컴퓨팅 리소스 수준에서 ...? –

+0

생산 기계에서 100 밀리 초, 인간의 사용에 대해서는 거의 맞습니다. 물론 더 빠른 컴퓨터가 더 좋지만 SHA512의 경우 <1us와 비교할 때 공격자에게는 약 10 만 배나 더 느려질 수 있습니다. NIST [암호 기반 키 유도 권장 사항] (http://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-132.pdf)을 참조하십시오. 여기에 발췌 내용이 있습니다. * 반복 횟수는 높게 설정해야합니다 수용 가능한 성능을 유지하면서 환경에 대해 허용 할 수있는 수준으로 유지됩니다. * – zaph