JH(해시 함수)

JH (hash function)
JH
일반
디자이너우홍준
인증SHA-3 결승전 진출자
디테일
다이제스트 크기224, 256, 384, 512
속도SSE2를 사용하는 64비트 모드에서 코어 2의 16.1 cpb, ANSI C를 사용하는 37.3 cpb.

JH는 우홍준이 NIST 해시함수 대회에 제출한 암호해시함수다. 이 대회의 5명의 결승전 진출자 중 한 명으로 선정되었지만, 2012년 JH는 결국 NIST 해시 후보 케차크에게 패배했다.[1] JH는 1024비트 상태를 가지며 512비트 입력 블록에서 작동한다. 입력 블록의 처리 과정은 다음 세 단계로 구성된다.

  1. 입력 블록을 주의 왼쪽 절반으로 XOR하십시오.
  2. 42라운드 미키 순열(암호화 기능)을 주 상태에 적용한다. 이는 다음 중 42회 반복으로 구성된다.
    1. 입력을 256개의 4비트 블록으로 나누고, 256비트 라운드 종속 키 스케줄에 의해 선택되는 두 개의 4비트 S 박스 중 하나를 통해 각각 매핑한다. 동등하게 각 입력 블록을 키 비트와 결합하고, 5→4비트 S-박스를 통해 결과를 매핑한다.
    2. GF(24)를 통해 최대 거리 분리 가능 코드를 사용하여 인접 4비트 블록을 혼합한다.
    3. 다음 라운드에서 4비트 블록이 서로 다른 블록에 인접하도록 퍼머하십시오.
  3. 입력 블록을 주의 오른쪽 절반으로 XOR하십시오.

결과 다이제스트는 1024비트 최종 값에서 처음 224비트, 256비트, 384비트 또는 512비트가 된다. SSE2 명령 집합을 이용한 비트 슬라이싱 구현에 잘 적합하여 바이트당 16.8 사이클의 속도를 제공한다.

JH 해시의 예

빈 문자열의 해시 값.

JH-224("") 0x 2c99df889b019309051c60fecc2bd285a774940e43175b76b2626630 JH-256("") 0x 46e64619c18bb0a92a5e87185a47eef83ca747b8fcc8e1412921357e326df434 JH-384("") 0x 2fe5f71b1b3290d3c017fb3c1a4d02a5cbeb03a0476481e25082434a881994b0ff99e078d2c16b105ad069b569315328 JH-512("") 0x 90ecf2f76f9d2c8017d979ad5ab96b87d58fc8fc4b83060f3f900774faa2c8fabe69c5f4ff1ec2b61d6b316941cedeefb04b1fc4c1b919ae841ceec4f 

메시지에서 작은 변화라도 눈사태 효과로 인해 (확률이 압도적으로 높으면) 대부분 다른 해시가 될 것이다. 예를 들어 문장 끝에 마침표를 추가하는 경우:

JH-256("The quick brown fox jumps over the lazy dog") 0x 6a049fed5fc6874acfdc4a08b568a4f8cbac27de933496f031015b38961608a0 JH-256("The quick brown fox jumps over the lazy dog.") 0x d001ae2315421c5d3272bac4f4aa524bddd207530d5d26bbf51794f0da18fafc 

참조

  1. ^ "NIST Selects Winner of Secure Hash Algorithm (SHA-3) Competition" (Press release). NIST. 2012-10-02. Retrieved 2012-10-02.

외부 링크