Argon2 참조 구현을 사용하려고하는데 확인 중에 type 매개 변수 (i, d, id)를 사용하는 것에 다소 혼란 스럽습니다.인코딩 된 해시 값에서 Argon2 유형을 파생하는 것이 안전합니까?
비밀번호 확인을 위해 *verify*
라이브러리 중 하나를 호출해야합니다. 이러한 함수는 "높은 수준의"API와 함께 제공 :
/**
* Verifies a password against an encoded string
* Encoded string is restricted as in validate_inputs()
* @param encoded String encoding parameters, salt, hash
* @param pwd Pointer to password
* @pre Returns ARGON2_OK if successful
*/
ARGON2_PUBLIC int argon2i_verify(const char *encoded, const void *pwd, const size_t pwdlen);
ARGON2_PUBLIC int argon2d_verify(const char *encoded, const void *pwd, const size_t pwdlen);
ARGON2_PUBLIC int argon2id_verify(const char *encoded, const void *pwd, const size_t pwdlen);
/* generic function underlying the above ones */
ARGON2_PUBLIC int argon2_verify(const char *encoded, const void *pwd, const size_t pwdlen, argon2_type type);
혼란스러운 부분입니다 타입이기 때문에 내가 전화 (또는 일반적인 기능에 argon2_type type
에 무엇을 넣어) 어떤 방법을 선택해야하는 이유 이미 char *encoded
에 포함되어 있습니까?
응용 관점에서 각 암호에 어떤 유형이 사용되었는지 미리 알아야합니다. 하지만 ... 인코딩이 전부입니다. *verify*
기능이 하나만 있다면 좋지 않을까요?
ARGON2_PUBLIC int argon2_verify(const char *encoded, const void *pwd, const size_t pwdlen);
인코딩 된 값에서 유형을 파생시킬 수 있습니까?
그래서, 질문은 다음과 같습니다
- 는 RI 현재 API 설계는 보안에 대해 나에게 뭔가를 지시 하는가, 또는 유용성 뭔가 개발자들이 정말 방탄하지 않았다했다?
- 인코딩 된 값에서 유형을 파생하는 것이 안전합니까? 아니면 하나의 유형을 선택하여 붙여야합니까 (일명 하드 코딩 했습니까?).
감사
관련된 보안에 C를 사용하는 데주의하십시오. 위의 코드는 자체적으로 경계 검사 등을 수행하지 않는 것처럼 보입니다. BTW, 왜 저자에게 연락하지 않을까요? 나는 직접적으로 묻는 좋은 결과를 얻었습니다. (물론 그것에 대해 멋지게 할 필요가 있습니다.먼저 코드를 작성해 주셔서 감사드립니다.) –
며칠 전 [github] (https://github.com/P-H-C/phc-winner-argon2/issues/234)에서 [issue on issue]를 열었습니다. 나는 아직 어떤 대답도받지 못했다. 내가이 게시물을 업데이 트됩니다. –