스키인(해시 함수)

Skein (hash function)
스키인
Skein permutation.png
일반
디자이너브루스 슈나이어, 닐스 퍼거슨
파생된 위치삼치
인증SHA-3 결승전 진출자
디테일
다이제스트 크기임의의
구조유니크 블록 반복
라운드72 (256 & 512 블록 크기), 80 (1024 블록 크기)
속도코어 2의 6.1 cpb.[1]
삼치혼합기능

Skin암호 해시함수로 NIST 해시함수 경연대회 결승 진출자 5명 중 1명이다. SHA-1SHA-2의 계승자인 SHA-3 표준이 되기 위한 후보로 들어갔으며, 결국 NIST 해시 후보 케차크에게 패했다.[2]

스키인(Skin)이라는 이름은 실의 스키인과 비슷하게 스키인(Skin) 함수가 입력을 어떻게 얽는가를 가리킨다.[1]

역사

스키인은 브루스 슈나이어, 닐스 퍼거슨, 스테판 럭스, 더그 휘팅, 미히르 벨라레, 코노 다다요시, 존 캘라스, 제시 워커에 의해 만들어졌다.

Skin은 Matyas의 변종인 Unique Block Iteration(UBI) 체인 모드를 사용하여 압축된 Threefish twoavible 블록 암호를 기반으로 한다.–Meyer-Oseas 해시 모드([3]선택 사항인 저오버헤드 인수 시스템)를 활용하여 유연성을 확보함.

스키인의 알고리즘과 참조 구현공공영역에 주어졌다.[4]

기능

스키인은 256비트, 512비트, 1024비트 내부 상태 크기, 임의 출력 크기를 지원한다.[5]

저자들은 64비트 모드에서 인텔 코어 2 듀오의 출력 크기에 대해 바이트당 6.1 사이클을 주장한다.[6]

쓰리피쉬의 코어는 한 번 더하기, 상수, XOR를 이용해 2개의 64비트 단어를 변환하는 MIX 기능을 기반으로 한다. UBI 체인 모드는 임의 길이 입력 문자열과 입력 체인 값을 결합하여 고정 크기 출력을 생성한다.

스리피쉬의 비선형성은 전적으로 추가 작업과 독점 OR의 조합에서 비롯되며, S-box를 사용하지 않는다. 기능은 64비트 프로세서에 최적화되어 있으며, Skin paper는 무작위화된 해싱, 병렬 가능한 트리 해싱, 스트림 암호, 개인화, 키 파생 기능 등의 선택적 특징을 정의하고 있다.

암호해석

2010년 10월에는 회전식 암호해석리바운드 공격을 결합한 공격이 발표되었다. 이 공격은 스리피쉬-256에서 72발 중 53발, 스리피쉬-512에서 72발 중 57발의 회전 충돌을 찾아낸다. 또한 Skin 해시함수에도 영향을 미친다.[7] 앞서 지난 2월 발표된 39회전과 42회전을 각각 돌파한 공격의 후속작이다.[8]

스키인 팀은 이러한 트윗이 없어도 해시가 여전히 안전할 것으로 믿고 있음에도 불구하고, NIST 해시함수 대회의 3라운드에서 이 공격을 덜 효과적으로 하기 위해 주요 일정 상수를 조정했다.[1]

스키틴 해시 예제

빈 문자열의 해시 값.

Skein-256-256("") c8877087da56e072870daa843f176e9453115929094c3a40c463a196c29bf7ba Skein-512-256("") 39ccc4554a8b31853b9de7a1fe638a24cce6b35a55f2431009e18780335d2621 Skein-512-512("") bc5b4c50925519c290cc634277ae3d6257212395cba733bbad37a4af0fa06af41fca7903d06564fea7a2d3730dbdb80c1f85562dfcc070334ea4d1d9e72cba7a 

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

Skein-512-256("The quick brown fox jumps over the lazy dog") b3250457e05d3060b1a4bbc1428bc75a3f525ca389aeab96cfa34638d96e492a Skein-512-256("The quick brown fox jumps over the lazy dog.") 41e829d7fca71c7d7154ed8fc8a069f274dd664ae0ed29d365d919f4e575eebb Skein-512-512("The quick brown fox jumps over the lazy dog") 94c2ae036dba8783d0b3f7d6cc111ff810702f5c77707999be7e1c9486ff238a7044de734293147359b4ac7e1d09cd247c351d69826b78dcddd951f0ef912713 Skein-512-512("The quick brown fox jumps over the lazy dog.") 658223cb3d69b5e76e3588ca63feffba0dc2ead38a95d0650564f2a39da8e83fbb42c9d6ad9e03fbfde8a25a880357d457dbd6f74cbcb5e728979577dbce5436 

참조

  1. ^ a b c Ferguson; et al. (2010-10-01). "The Skein Hash Function Family" (PDF). {{cite journal}}: Cite 저널은 필요로 한다. journal= (도움말)
  2. ^ "NIST Selects Winner of Secure Hash Algorithm (SHA-3) Competition". NIST. 2012-10-02. Retrieved 2012-10-02.
  3. ^ http://www.skein-hash.info/sites/default/files/skein1.3.pdf 페이지 6
  4. ^ skin_NIST_CD_121508.zip on skein-hash.info, skin.c "Skin 해시 함수 구현. 소스 코드 작성자: Doug Whing, 2008. 이 알고리즘과 소스 코드는 공개 도메인에 공개된다."
  5. ^ "Now From Bruce Schneier, the Skein Hash Function". Slashdot. 2008-10-31. Retrieved 2008-10-31.
  6. ^ 해시함수 버전 1.3(2010-10-01)을 설명하는 용지
  7. ^ Dmitry Khovratovich; Ivica Nikolic; Christian Rechberger (2010-10-20). "Rotational Rebound Attacks on Reduced Skein". {{cite journal}}: Cite 저널은 필요로 한다. journal= (도움말)
  8. ^ Dmitry Khovratovich & Ivica Nikolić (2010). "Rotational Cryptanalysis of ARX" (PDF). University of Luxembourg. {{cite journal}}: Cite 저널은 필요로 한다. journal= (도움말)

외부 링크

구현