해시 메서드 자체의 장점을 보려면 keylength.com website을 살펴보십시오. SHA-256조차도 꽤 큰 보안 마진을 가지고 있음을 알 수 있습니다.
HMAC 알고리즘은 기본 해시 알고리즘에 대한 공격을 거의 인식하지 못합니다. HMAC는 해시 출력의 절반까지 키 강도를 반으로 줄이는 생일 문제에 대해 불 침투합니다. 적의 공격자가 비밀 키를 가지고 있지 않아 충돌을 일으킬 수 없기 때문에 단순히 적용되지 않습니다. HMAC-SHA1조차도 꽤 안전합니다.
이제 해시 속도는 실행 환경에 따라 다릅니다. 그러나 일반적으로 다음과 같은 가정을 할 수 있습니다.
- SHA-1은 일반적으로 동일한 플랫폼에서 모든 SHA-2 구현보다 빠릅니다.
- SHA-512는 64 비트 컴퓨터에서 SHA-256보다 빠릅니다 (내부적으로 64 비트 산술을 사용하므로).
- SHA-256은 8, 16 및 32 비트 시스템에서 SHA-512보다 빠릅니다.
호환성 문제가 예상되는 경우 SHA-1을 사용하십시오. 그렇지 않으면 SHA-512로 갈 수도 있습니다 (결과를 적절한 비트 수로 잘라냅니다). SHA-512의 내부 상태와 높은 보안 성은 약간의 이점이 될 수 있습니다. 나는 알고리즘의 일반적인 문제로 인해 어떤 형태의 SHA-1도 허용하지 않는 고객과 관련된 문제에 부 닥쳤다. 다시 말하면, 안전하지 않다는 사실 일반적으로은 수용을 방해 할 수 있습니다. SHA-384과 덜 공지 SHA-256분의 512 및 SHA-224분의 512 해시 방법은 384, 256, 224 비트의 출력을 차단 SHA-512의 특별한 형태임을
참고. 따라서 이러한 알고리즘의 속도는 동일합니다. 출력 크기와 다른 점은 이러한 특수 형식이 내부적으로 다른 초기 값을 사용한다는 점입니다. 그렇지 않으면 384 비트로 자른 SHA-512는 SHA-512/384만큼 안전하고 빠릅니다. 그러나 SHA-384를 사용하여 호환성을 유지해야합니다.
입력 키 크기는 기본 해시 기능에 종속되지 않습니다. 키는 먼저 XOR 마스크되어 기본 해시 함수에 의해 해시됩니다. 해시 알고리즘은 사실상 무제한 양의 데이터를 입력으로 사용할 수 있습니다.
사용 된 해시 메서드의 크기보다 큰 키 크기를 사용하는 것이 좋습니다. 그렇지 않으면 HMAC 메서드에서 제공하는 보안 여백이 저하 될 수 있습니다. 키 크기로 해시 알고리즘이 여러 블록을 해시하도록 강제하는 경우 사소한 성능 저하가 발생할 수 있습니다.
당신은 또한 안전 할 것이라는 의미에서 (곧) SHA-3 표준을 사용할 수 있습니다. HMAC-SHA-3은 현재 너무 많은 의미를 갖지 않습니다. HMAC는 실제로 SHA-3 (Keccak)에 대한 과잉 공격입니다. SHA-3는 HMAC 구성이 없어도 안전해야합니다. 지금까지 [편집] KMAC는 SHA-3를위한 MAC 구조로 표준화되었습니다.
그 외에도 SHA-2 구조는 SHA-3 경쟁 기간 동안 암호 분석에 대한 꽤 우수한 저항성을 보여줍니다. SHA-3으로 업그레이드 할 필요가 없습니다.
[wikipedia 페이지] (http://en.wikipedia.org/wiki/SHA-2#Comparison_of_SHA_functions)에는 몇 가지 성능 벤치 마크가 있습니다. – jbabey