일반적으로 암호는 "abc", "1234"와 같은 임의의 문자열입니다. 그러나 DES와 같은 암호화 알고리즘에는 고정 길이의 비밀 키가 필요합니다. 가변 길이 비밀 번호를 고정 길이 비밀 키로 변환하는 방법을 알고 싶습니다.가변 길이 암호를 고정 길이 비밀 키로 변환하는 방법
0
A
답변
1
사전 공격을 막기 위해 소금 값 (scrypt, bcrypt 또는 PBKDF2)과 같은 좋은 키 편차 함수를 사용해야합니다.
키 생성에 해시 함수 만 사용하는 경우 생성 된 키가 SHA256 ("abcd") 또는 SHA256 ("password") 일 가능성이 많습니다. 즉,이 방법은 무차별 공격에 매우 취약합니다.
3
암호 기반 키 유도 기능을 사용하여 암호에서 암호화 키를 파생 : PBKDF2
(일명 Rfc2898DeriveBytes
). 파생에 약 100ms의 계산 시간이 소요될 수 있도록 무작위 소금과 반복 횟수를 사용하십시오.
암호 해독을 위해 키를 파생시키기 위해 동일한 소금 및 반복 횟수를 사용해야하며 암호가 필요하지 않으므로 암호화 된 데이터 앞에 덧붙일 수 있습니다.
단지 해시 함수를 사용하는 것만으로는 충분하지 않으며 단지 소금을 추가하면 보안을 향상시키는 데별로 도움이되지 않습니다.
요점은 공격자가 무차별 암호로 많은 시간을 소비하도록하는 것입니다.
관련 문제
- 1. 고정 길이 문자열의 가변 길이 배열 선언
- 2. 골란에서 가변 길이 배열을지도 키로 사용
- 3. 자바 : 고정 길이 바이트 배열을 가변 길이 문자열로 변환
- 4. 고정 길이 청크와 가변 길이 요소를 일치시키는 정규식
- 5. 고정 길이 데이터 필드와, 가변 길이 UTF-8 인코딩
- 6. 고정 길이 필드의 가변 길이 배열로 메시지 구문 분석
- 7. 가변 길이 무료 목록
- 8. 가변 길이 배열
- 9. 가변 길이 구조 참조 방법
- 10. 최대 입력 길이/TinyGP의 가변 입력 길이
- 11. 허프만 코드 가변 길이 문자 당 길이
- 12. 데이터 구조의 가변 길이 가변
- 13. 가변 길이 배열
- 14. 가변 길이 문자열에서 특정 문자열을 분리하는 방법, 지수를 변환하는 방법
- 15. 가변 길이 제한
- 16. 가변 길이 양식 제출
- 17. 수를 가변 길이
- 18. 지도 가변 길이 스트링
- 19. 가변 길이 검사
- 20. 가변 길이 분석
- 21. C++ : 가변 길이 배열
- 22. 가변 길이 배열입니까, 아니요입니까?
- 23. Tensorflow의 가변 길이 입력
- 24. 가변 길이 다차원 배열
- 25. RSA 가변 암호화 길이
- 26. 데이터베이스의 가변 길이 필드
- 27. PHP의 가변 길이 sprintf
- 28. filehelpers - 가변 길이 분석
- 29. 가변 길이 프리픽스 제거
- 30. 입력 필드의 가변 길이
"약 100ms의 계산 시간"... 어떤 하드웨어에서 어떤 병렬 컴퓨팅 리소스 수준에서 ...? –
생산 기계에서 100 밀리 초, 인간의 사용에 대해서는 거의 맞습니다. 물론 더 빠른 컴퓨터가 더 좋지만 SHA512의 경우 <1us와 비교할 때 공격자에게는 약 10 만 배나 더 느려질 수 있습니다. NIST [암호 기반 키 유도 권장 사항] (http://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-132.pdf)을 참조하십시오. 여기에 발췌 내용이 있습니다. * 반복 횟수는 높게 설정해야합니다 수용 가능한 성능을 유지하면서 환경에 대해 허용 할 수있는 수준으로 유지됩니다. * – zaph