스케인
스케인(Skein)은 브루스 슈나이어(Bruce Schneier)가 주도하는 그룹이 개발한 가변 비트 해싱 알고리즘이다. Skein 은 암호화 해시 기능으로 NIST 해시 함수 경쟁 에서 다섯중 하나로 SHA-1 및 SHA-2 의 SHA-3 은 결국 NIST 해쉬인 Keccak에 밀렸다.
개요
스케인은 블록 암호이 쓰리피시(Threefish)를 기반으로 UBI-해싱 모드에서 작동하며 개발 목적은 이러하다.
- 최소한의 메모리 사용을 위한 최적화
- 암호적으로 안전한 작은 메시지의 해싱
- 해시 기능에 대한 기존의 모든 공격에 대한 저항성
- 64비트 프로세서 최적화
- 테이블 접근의 적극적인 사용
역사
스케인은 Bruce Schneier , Niels Ferguson , Stefan Lucks , Doug Whiting, Mihir Bellare , Tadayoshi Kohno, Jon Callas, Jess Walker에 의해 만들어졌고, 타래는에 기초 Threefish tweakable는 블록 암호 사용하여 압축 고유 블록 반복 (UBI) 체인 모드의 변형 마 탸스 - 메이어 Oseas의 해시 모드 유연성을 선택적 저 부하 인자 시스템을 활용하면서. 스케인의 알고리즘과 참조 구현 은 공개 도메인 에 제공 되었다.
특징
스케인(Skein)은 256, 512 비트 및 1024 비트의 내부 상태 크기와 임의 출력 크기를 지원하며, Intel Core 2 Duo에서 64 비트 모드의 출력 크기에 대해 바이트 당 6.1 사이클을 요구한다. 쓰리피시의 핵심은 MIX 함수를 기반으로 하는데, MIX 함수는 상수와 XOR을 한 번 더 추가하여 두 개의 64 비트 단어를 변환하고, UBI 체이닝 모드는 입력 체인 값과 임의 길이 입력 문자열을 결합하고 고정 크기 출력을 생성 한다. 쓰리 피쉬의 비선형 성은 덧셈 연산과 배타적 논리합 의 결합으로부터 오고, S 박스를 사용하지 않으며, 기능은 64 비트 프로세서에 최적화되어 있어 스케인 용지는 무작위 해시, 병렬 트리 해싱, 스트림 암호, 개인 설정 및 키 유도 기능 과 같은 선택적 기능을 정의 한다. 스케인은 빠르다. 주요 제안 인 스케인-512는 64 비트 CPU에서 바이트 당 6.1 클럭 사이클의 데이터를 해시 하고, 3.1GHz x64 코어 2 듀오 CPU에서 스케인은 코어 당 500MByte의 속도로 데이터를 해시 하는데 이는 SHA-512보다 거의 두 배 빠르며 SHA-256보다 3배 빠르다. 해시 트리 모드는 병렬 처리가 가능한 구현을 더욱 빠르게 하며, 짧은 메시지에도 빠르고, 스케인-512는 짧은 메시지를 약 1000 클럭 주기로 해싱 한다.[1]
암호해독
2010 년 10 월에는 회전식 암호 해독 과 리바운드 공격 을 결합한 공격 이 게시되었습니다. 이 공격은 쓰리피시-256 에서 72 라운드 중 53개, 쓰리피시-512에서 72 라운드 중 57개 에 대해 회전 충돌을 찾았는데, 스케인 해시 함수에도 영향주어 2 월에 발간 된 이전 공격에 대한 후속 조치로 39회와 42회를 각각 중단 하였고, 스케인 팀은 NIST 해시 함수 경쟁 3 라운드 에서 주요 일정을 조정하여 이러한 공격이 덜 효과적이라고 판단했다.
쓰리피시
쓰리피쉬(Threefish)는 256, 512 및 1024비트 블록 및 임의 출력 크기에 대해 정의된 구성 가능한 블록 암호다. 암호는 퍼머테이션 네트워크로 구현된다. 쓰리피쉬의 핵심은 상수와 XOR에 의한 회전, 한 번의 덧셈을 이용하여 64비트 단어 2개를 변환하는 MIX 함수에 기반을 두고 있다는 것이다. UBI 체인 모드는 임의의 길이 입력 문자열과 입력 체인 값을 결합하여 고정 크기 출력을 생성한다. 256비트·512비트 암호에는 72라운드를, 1024비트 암호에는 80라운드를 사용한다. 라운드 사이에는 단어들이 산재해 있으며, 4회전마다 키에 추가되어 비선형성이 있다. 비선형성은 전적으로 추가 연산과 XOR의 결합에서 비롯된다. 그것은 S-boxes를 사용하지 않는다. 기능은 64비트 프로세서에 최적화되어 있으며, 스케인 논문에서는 랜덤화 해싱, 병렬화 가능한 트리 해싱, 스트림 암호, 개인화, 키 파생 기능 등의 선택적 특징을 정의하고 있다.
유비아이(UBI)
쓰리피쉬 유비아이(UBI; Unique Block Iteration) 해싱 모드에서 사용된다. UBI 모드는 Matyas-Meyer-Oseas 모드의 일종이다. 각 UBI 링크는 체인의 이전 링크에서 나온 입력 메시지를 임의 길이의 시퀀스와 결합하고 출력 값을 고정 크기로 설정한다. 링크 사이에 전송된 메시지에는 처리된 바이트 수, 체인의 시작 및 종료 플래그, UBI 응용 프로그램을 구별할 수 있는 데이터 유형 필드가 포함되어 있다. UBI는 동일한 메시지를 해싱한 결과를 재현할 수 없으며 동일한 메시지가 해시함수와 암호로 들어갈 수 있도록 함으로써 추가적인 보호를 제공한다는 것을 보장한다.
파이스케인
파이스케인(PySkein)은 NIST SHA-3 경연대회의 5개 최종 후보 중 하나인 스케인(Skein) 해시 알고리즘을 구현한 파이썬의 확장 모듈이다. 다양한 매개변수를 가진 유연한 해시 모드를 제공함으로써 대체 해시 알고리즘으로 유용하다. PySkein은 Pythonic 인터페이스를 통해 스케인의 모든 특징을 제공하며 GNU (General Public License)에 따라 무료 소프트웨어로 출시된다. 특징은 다음과 같다.
- 파이썬(Python) 표준 라이브러리의 해시 알고리즘을 따르는 간단한 인터페이스
- Athlon 64 X2에서 측정된 두 코어에서 최적화된 C 구현(시퀀트 해싱의 경우 7.1 사이클/바이트 및 트리 해싱의 경우 4.2 사이클/바이트)을 통한 고성능
- 스케인에서 사용되는 수정 가능한 블록 암호인 Threefish -> 스스로 암호화와 암호 해독에 이용
각주
- ↑ Bruce Schneier, 〈Skein 해시 함수 패밀리〉,《슈나이더 보안》
참고자료
- 스케인 해시함수 공식 홈페이지 - 〈http://www.skein-hash.info〉
- Bruce Schneier, 〈Skein 해시 함수 패밀리〉,《슈나이더 보안》
- 〈Skein (해시 함수)〉,《위키백과》
같이 보기
|