약한 해싱 알고리즘을 사용하는 것은 보안에 취약할 수 있습니다.

 

MD2, MD4, MD5, MD6, HAVAL-128, HMAC-MD5, DSA (which uses SHA-1), RIPEMD, RIPEMD-128, RIPEMD-160, HMACRIPEMD160 그리고 SHA-1 과 같은 암호화 해시 알고리즘은 더 이상 안전하다고 여겨지지 않습니다. 이러한 알고리즘은 충돌(적은 컴퓨터 연산으로도 충분히 다른 두 개의 인풋에 대해 같은 해시값을 가질 수 있는)이 발생할 수 있기 때문입니다.

스스로에게 물어보십시오

해시된 값은 다음과 같은 보안 상황에서 사용됩니다.

  • 유저의 비밀번호 저장
  • 보안 토큰 생성(웹사이트에 회원 가입 시 이메일을 확인할 때, 패스워드를 초기화할 때 등…)
  • 일부 메시지의 무결성을 계산할 때

이러한 상황에 해당되는 경우, 상단의 알고리즘을 사용하는 것은 위험할 수 있습니다.

추천되는 안전한 코딩 관습

SHA-256, SHA-512, SHA-3과 같은 더 안전한 해싱 알고리즘이 권장되며 암호 해싱의 경우 bcrypt, scrypt, argon2 또는 pbkdf2와 같이 너무 “빠르게” 계산하지 않는 알고리즘을 사용하는 것이 무차별 대입 공격을 느리게 만들 수 있기에 더 좋습니다.

취약한 코드의 예

MessageDigest md1 = MessageDigest.getInstance("SHA");  // 취약함:  SHA 는 표준 이름이 아닌, 대부분의 보안 업체에서 SHA-1 을 부르는 별칭입니다.
MessageDigest md2 = MessageDigest.getInstance("SHA1");  // 취약함

규칙을 준수한 해결책

MessageDigest md1 = MessageDigest.getInstance("SHA-512"); // 규칙을 준수한 코드

참고


If you like SONARKUBE, don’t forget to give me a star. :star2:

원문으로 바로가기

Star This Project