검수요청.png검수요청.png

스케인

위키원
ghdrn221 (토론 | 기여)님의 2019년 8월 2일 (금) 11:43 판
이동: 둘러보기, 검색

스케인(Skein)은 브루스 슈나이어(Bruce Schneier)가 주도하는 그룹이 개발한 가변 비트 해싱 알고리즘이다. Skein 은 암호화 해시 기능으로 NIST 해시 함수 경쟁 에서 다섯중 하나로 SHA-1 및 SHA-2 의 SHA-3 은 결국 NIST 해쉬인 Keccak에 밀렸으며, 암호화 해시 함수의 새로운 제품으로 속도, 보안, 단순성 및 분석하기 쉬운 모듈 패키지의 유연성이 뛰어나다.[1]

개요

스케인은 블록 암호이 쓰리피시(Threefish)를 기반으로 UBI-해싱 모드에서 작동하며 암호화, 보안 분석, 소프트웨어, 칩 설계 및 실제 암호화 시스템 구현 분야의 전문성을 갖춘 학계 및 업계의 고도의 숙련 된 암호화 전문가 팀이 설계 하였고, 개발 목적은 이러하다.

  • 최소한의 메모리 사용을 위한 최적화
  • 암호적으로 안전한 작은 메시지의 해싱
  • 해시 기능에 대한 기존의 모든 공격에 대한 저항성
  • 64비트 프로세서 최적화
  • 테이블 접근의 적극적인 사용

역사

스케인은 브루스 슈나이어(Bruce Schneier), 닐스 퍼거슨(Niels Ferguson), 스테판 럭스(Stefan Lucks), 더그 호분(Doug Whiting), 미 히르 벨레 어(Mihir Bellare), 타다요시 코노(Tadayoshi Kohno), 존 칼라스(Jon Callas), 제시 워커(Jess Walker)에 의해 만들어졌다.[2] 스케인에 기초 Threefish tweakable는 블록 암호 사용하여 압축 고유 블록 반복 (UBI) 체인 모드의 변형 마 탸스 - 메이어 Oseas의 해시 모드 유연성을 선택적 저 부하 인자 시스템을 활용하면서. 스케인의 알고리즘과 참조 구현 은 공개 도메인 에 제공 되었다.

특징

스케인은 256, 512 비트 및 1024 비트의 내부 상태 크기와 임의 출력 크기를 지원하며, Intel Core 2 Duo에서 64 비트 모드의 출력 크기에 대해 바이트 당 6.1 사이클을 요구한다. 쓰리피시의 핵심은 MIX 함수를 기반으로 하는데, MIX 함수는 상수와 XOR을 한 번 더 추가하여 두 개의 64 비트 단어를 변환하고, UBI 체이닝 모드는 입력 체인 값과 임의 길이 입력 문자열을 결합하고 고정 크기 출력을 생성 한다. 쓰리 피쉬의 비선형 성은 덧셈 연산과 배타적 논리합 의 결합으로부터 오고, S 박스를 사용하지 않으며, 기능은 64 비트 프로세서에 최적화되어 있어 스케인 용지는 무작위 해시, 병렬 트리 해싱, 스트림 암호, 개인 설정 및 키 유도 기능 과 같은 선택적 기능을 정의 한다.

  • 스케인의 장점
  1. 빠른 속도 : 주요 제안 인 스케인-512는 64 비트 CPU에서 바이트 당 6.1 클럭 사이클의 데이터를 해시 하고, 3.1GHz x64 코어 2 듀오 CPU에서 스케인은 코어 당 500MByte의 속도로 데이터를 해시 하는데 이는 SHA-512보다 거의 두 배 빠르며 SHA-256보다 3배 빠르다. 해시 트리 모드는 병렬 처리가 가능한 구현을 더욱 빠르게 하며, 짧은 메시지에도 빠르고, 스케인-512는 짧은 메시지를 약 1000 클럭 주기로 해싱 한다.
  2. 안전한 보안 : 보수적 인 디자인은 쓰리피시 블록 암호를 기반으로 하고, 쓰리피시-512에 대한 현재 최고의 공격은 2.9의 안전 계수에 대해 72라운드 중 25회에 있다. 비교를 위해 표준화 과정의 비슷한 단계에서 AES 암호화 알고리즘은 안전 계수가 1.7에 불과하여 10회 중 6회를 공격했으며, 스케인은 입증 할 수있는 많은 보안 속성을 가지고있어 알고리즘에 대한 신뢰가 크게 높아졌다.
  3. 간단한 알고리즘 : 세 가지 기본 연산 만 사용하면 스케인 압축 함수를 쉽게 이해하고 기억할 수 있으며, 나머지 알고리즘은이 함수의 간단한 반복 이여서 간단하게 이루어져 있다.
  4. 유연한 함수 : 스케인은 세 가지 다른 내부 상태 크기(256 비트, 512 비트, 1024 비트)와 모든 출력 크기에 대해 정의 되는데 스케인이 SHA 전체 해시 함수 제품군의 드롭 인 대체품이 될 수 있고, 완전히 선택적이며 확장 가능한 인수 시스템은 스케인을 매우 많은 수의 함수 PRNG, 스트림 암호, 키 유도 함수, HMAC 오버 헤드없는 인증 및 개인화 기능에 사용할 수있는 효율적인 도구로 만들어 준다. 모든 기능은 매우 낮은 오버 헤드로 구현 될 수 있고, 스케인의 핵심 인 Threefish Large-block cipher와 함께 대부분의 최신 응용 프로그램에 적합한 대칭 암호화 이다.
  5. 효율적인 하드웨어와 소프트웨어의 플랫폼 : 스케인-512는 약 200 바이트의 상태로 구현 되고, 8 비트 스마트 카드와 같은 소형 장치는 약 100 바이트의 메모리를 사용하여 스케인-256을 구현 한다.
  • 암호해독
2010 년 10 월에는 회전식 암호 해독 과 리바운드 공격 을 결합한 공격 이 게시되었습니다. 이 공격은 쓰리피시-256 에서 72 라운드 중 53개, 쓰리피시-512에서 72 라운드 중 57개 에 대해 회전 충돌을 찾았는데, 스케인 해시 함수에도 영향주어 2 월에 발간 된 이전 공격에 대한 후속 조치로 39회와 42회를 각각 중단 하였고, 스케인 팀은 NIST 해시 함수 경쟁 3 라운드 에서 주요 일정을 조정하여 이러한 공격이 덜 효과적이라고 판단했다.
  • 쓰리피시(Threefish)
쓰리피시는 스케인 해시 함수의 일부로 2008 년에 만들어졌으며 NIST의 SHA-3 경쟁에 제출 되었다. 256, 512 및 1024비트 블록 및 임의 출력 크기에 대해 정의된 구성 가능한 블록 암호다. 암호는 퍼머테이션 네트워크로 구현된다. 쓰리피쉬의 핵심은 상수와 XOR에 의한 회전, 한 번의 덧셈을 이용하여 64비트 단어 2개를 변환하는 MIX 함수에 기반을 두고 있다는 것이다. UBI 체인 모드는 임의의 길이 입력 문자열과 입력 체인 값을 결합하여 고정 크기 출력을 생성한다. 256비트·512비트 암호에는 72라운드를, 1024비트 암호에는 80라운드를 사용한다. 라운드 사이에는 단어들이 산재해 있으며, 4회전마다 키에 추가되어 비선형성이 있다. 비선형성은 전적으로 추가 연산과 XOR의 결합에서 비롯된다. 그것은 S-boxes를 사용하지 않는다. 기능은 64비트 프로세서에 최적화되어 있으며, 스케인 논문에서는 랜덤화 해싱, 병렬화 가능한 트리 해싱, 스트림 암호, 개인화, 키 파생 기능 등의 선택적 특징을 정의하고 있다. 쓰리피시는 64 비트 단어로 작동하는 고정 된 양의 XOR 세 가지 작업으로 구성 되는데 Threefish-256 및 Threefish-512는 72 라운드로 구성되고, Threefish-1024는 80 발로 구성 된다. 쓰리피시는 단순한 조작만을 사용하기 때문에 성능을 염두에두고 설계 되었기에 Threefish-512는 64 비트 시스템에서 바이트 당 6.1 클럭 주기로 데이터를 암호화 하고, Threefish-1024는 바이트 당 6.5 클럭 사이클에서 데이터를 암호화 한다.[1]
  • 유비아이(UBI)
쓰리피쉬 유비아이(UBI; Unique Block Iteration) 해싱 모드에서 사용된다. UBI 모드는 Matyas-Meyer-Oseas 모드의 일종이다. 각 UBI 링크는 체인의 이전 링크에서 나온 입력 메시지를 임의 길이의 시퀀스와 결합하고 출력 값을 고정 크기로 설정한다. 링크 사이에 전송된 메시지에는 처리된 바이트 수, 체인의 시작 및 종료 플래그, UBI 응용 프로그램을 구별할 수 있는 데이터 유형 필드가 포함되어 있다. UBI는 동일한 메시지를 해싱한 결과를 재현할 수 없으며 동일한 메시지가 해시함수와 암호로 들어갈 수 있도록 함으로써 추가적인 보호를 제공한다는 것을 보장한다.
  • 파이스케인(PySkein)
파이스케인NIST SHA-3 경연대회의 5개 최종 후보 중 하나인 스케인(Skein) 해시 알고리즘을 구현한 파이썬의 확장 모듈이다. 다양한 매개변수를 가진 유연한 해시 모드를 제공함으로써 대체 해시 알고리즘으로 유용하다. PySkein은 Pythonic 인터페이스를 통해 스케인의 모든 특징을 제공하며 GNU (General Public License)에 따라 무료 소프트웨어로 출시된다. 특징은 다음과 같다.
  1. 파이썬(Python) 표준 라이브러리의 해시 알고리즘을 따르는 간단한 인터페이스
  2. Athlon 64 X2에서 측정된 두 코어에서 최적화된 C 구현(시퀀트 해싱의 경우 7.1 사이클/바이트 및 트리 해싱의 경우 4.2 사이클/바이트)을 통한 고성능
  3. 스케인에서 사용되는 수정 가능한 블록 암호인 Threefish -> 스스로 암호화와 암호 해독에 이용

예시

빈 문자열의 해시 값

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

disambiguation 으로 인해 메시지가 약간 변경 되더라도 압도적 인 확률로 대부분 다른 해시가 되는데 문장의 끝에 마침표를 추가 하면

Skein-512-256 ( " 게으른 개 위에 빠른 갈색 여우가 뛰어 오른다 ")
b3250457e05d3060b1a4bbc1428bc75a3f525ca389aeab96cfa34638d96e492a
Skein-512-256 ( " 게으른 개 위에 빠른 갈색 여우가 뛰어 오른다 .")
41e829d7fca71c7d7154ed8fc8a069f274dd664ae0ed29d365d919f4e575eebb
Skein-512-512 ( " 빠른 여우는 게으른 개로 뛰어 오른다 ")
94c2ae036dba8783d0b3f7d6cc111ff810702f5c77707999be7e1c9486ff238a7044de734293147359b4ac7e1d09cd247c351d69826b78dcddd951f0ef912713
Skein-512-512 ( " 게으른 개 위에 빠른 갈색 여우가 뛰어 오른다 .")
658223cb3d69b5e76e3588ca63feffba0dc2ead38a95d0650564f2a39da8e83fbb42c9d6ad9e03fbfde8a25a880357d457dbd6f74cbcb5e728979577dbce5436

각주

  1. 1.0 1.1 슈나이더 보안 공식 홈페이지 - 〈https://www.schneier.com〉
  2. 티모시, 〈브루스슈나이어의 스케이트 해시기능〉,《Slashdot》, 2008-10-31

참고자료

같이 보기


  검수요청.png검수요청.png 이 스케인 문서는 알고리즘에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.