2017-03-15 1 views
2

우리는 데이터를 암호화하고 SHA-1 또는 SHA-2를 사용하는 프로그램을 알고 있어야합니다. 불행히도 유일한 힌트는 해시 값이있는 테이블입니다. 누군가 두 암호화 유형을 구별하여 여기에서 사용 된 암호화 유형을 어떻게 알 수 있습니까?SHA-1과 SHA-2를 구별하십시오.

답변

2

우리는 데이터를 암호화하고 SHA-1 또는 SHA-2를 사용하는 데이터를 알아야합니다.

데이터를 해시한다고 가정합니다. SHA는 암호화 알고리즘이 아닌 해싱 알고리즘의 계열입니다.

가장 큰 차이점은 길이를 구별하는 것입니다. SHA-1은 160 비트 (20 바이트)입니다. SHA-2는 224 ~ 512 비트 (28 ~ 64 바이트)의 여러 형태로 제공됩니다. 일부 잘린 버전의 SHA-2가 있으므로 사용중인 SHA-2 버전을 정확히 알기는 어려울 수 있지만 SHA-1보다 길다는 점에 유의하십시오.

0

암호화를 사용하지 않는 것이 좋습니다. 암호화는 가역적이며, 해싱은 그렇지 않습니다. 암호화는 무작위 함수처럼 되려고하는 해시와 달리 임의적 인 순열과 같습니다. SHA-1은 길이가 160 비트 (20 바이트)이며, SHA-2는 224-512 비트 길이 (28-32 바이트)의 해시 함수 제품군입니다. 인코딩 된 문자 당 4 또는 6 비트를 제공하는 16 진 인코딩 또는 base64 인코딩이있을 수 있습니다. 일부 경우 (예 : 암호 해싱) 해시에 접두사가 어떻게 만들어 졌는지에 대한 정보를 접두사로 사용하는 것이 일반적이며 해시 문자열은 사용자가보고있는 것을 알려주는 $ 1 $와 같은 특수 접두사로 시작됩니다.

여분의 접두사가없고 같은 길이로 잘린 데이터가 있고 해싱 전 입력에 대해 알지 못하는 경우 실제 방법으로 두 가지를 구분할 수 있다고 생각하지 않습니다. SHA-1과 truncated SHA-2의 차이점을 알 수있는 능력은 적어도 하나는 안전한 암호화 기능을 요구하는 무작위 데이터와 분리 될 수 있음을 의미합니다. 실용적인 구별 공격을 알지 못합니다.

계산 복잡도에 관계없이 대부분의 해시가 다른 함수의 사전 이미지를 가지고 있기 때문에 단일 해시가 어디에서 왔는지 알 수 없습니다.

관련 문제