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

스케인

해시넷
125.141.56.75 (토론)님의 2019년 7월 18일 (목) 13:50 판
이동: 둘러보기, 검색

스케인브루스 슈나이어(Bruce Schneier)가 주도하는 그룹이 개발한 가변 비트 해싱 알고리즘이다.

개요

스케인은 블록 암호이 쓰리피쉬(Threefish)를 기반으로 UBI-해싱 모드에서 작동하며 개발 목적은 이러하다.

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

쓰리피쉬(Threefish)

쓰리피쉬는 256, 512 및 1024비트 블록 및 임의 출력 크기에 대해 정의된 구성 가능한 블록 암호다. 암호는 퍼머테이션 네트워크로 구현된다. 쓰리피쉬의 핵심은 상수와 XOR에 의한 회전, 한 번의 덧셈을 이용하여 64비트 단어 2개를 변환하는 MIX 함수에 기반을 두고 있다는 것이다. UBI 체인 모드는 임의의 길이 입력 문자열과 입력 체인 값을 결합하여 고정 크기 출력을 생성한다. 256비트·512비트 암호에는 72라운드를, 1024비트 암호에는 80라운드를 사용한다. 라운드 사이에는 단어들이 산재해 있으며, 4회전마다 키에 추가되어 비선형성이 있다. 비선형성은 전적으로 추가 연산과 XOR의 결합에서 비롯된다. 그것은 S-boxes를 사용하지 않는다. 기능은 64비트 프로세서에 최적화되어 있으며, 스케인 논문에서는 랜덤화 해싱, 병렬화 가능한 트리 해싱, 스트림 암호, 개인화, 키 파생 기능 등의 선택적 특징을 정의하고 있다.

UBI(Unique Block Iteration)

쓰리피쉬 유비아이(UBI; Unique Block Iteration) 해싱 모드에서 사용된다. UBI 모드는 Matyas-Meyer-Oseas 모드의 일종이다. 각 UBI 링크는 체인의 이전 링크에서 나온 입력 메시지를 임의 길이의 시퀀스와 결합하고 출력 값을 고정 크기로 설정한다. 링크 사이에 전송된 메시지에는 처리된 바이트 수, 체인의 시작 및 종료 플래그, UBI 응용 프로그램을 구별할 수 있는 데이터 유형 필드가 포함되어 있다. UBI는 동일한 메시지를 해싱한 결과를 재현할 수 없으며 동일한 메시지가 해시함수와 암호로 들어갈 수 있도록 함으로써 추가적인 보호를 제공한다는 것을 보장한다.

PySkein

PySkein은 NIST SHA-3 경연대회의 5개 최종 후보 중 하나인 Skein 해시 알고리즘을 구현한 파이썬의 확장 모듈이다. 다양한 매개변수를 가진 유연한 해시 모드를 제공함으로써 대체 해시 알고리즘으로 유용하다. PySkein은 Pythonic 인터페이스를 통해 스케인의 모든 특징을 제공하며 GNU (General Public License)에 따라 무료 소프트웨어로 출시된다. 특징은 이러하다.

  • Python 표준 라이브러리의 해시 알고리즘을 따르는 간단한 인터페이스
  • Athlon 64 X2에서 측정된 두 코어에서 최적화된 C 구현(시퀀트 해싱의 경우 7.1 사이클/바이트 및 트리 해싱의 경우 4.2 사이클/바이트)을 통한 고성능
  • 스케인에서 사용되는 수정 가능한 블록 암호인 Threefish -> 스스로 암호화와 암호 해독에 이용

각주

참고자료

같이 보기


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