2017년 6월 1일 목요일

BLAKE

BLAKE

BLAKE는, Jean-Philippe Aumasson, Luca Henzen, Willi Meier, and Raphael C. -W. Phan에 의해서 미국 국립 표준 기술 연구소(NIST)에 의한 SHA-3의 공모에 제출된 암호 학문적 해쉬 함수이다.다니엘・번스타인에 의해서 설계된 스트림 암호ChaCha를 베이스로 한 것이어, ChaCha의 라운드의 전에 라운드 정수와의 배타적 논리합을 취한 입력 블록의 치환 카피가 더해지고 있다.BLAKE는 SHA-3 공모에 대해 5개의 최종 후보 중 하나에 남았다.

BLAKE
일반
설계자 Jean-Philippe Aumasson, Luca Henzen, Willi Meier, Raphael C.-W. Phan
후계 BLAKE2
인증 SHA-3 최종 후보
상세
다이제스트장 224, 256, 384 or 512 bits
라운드수 14 or 16
속도 8.4 cpb on Core 2 for BLAKE-256; 7.8 cpb for BLAKE-512

SHA-2와 같게, BLAKE에는 4개의 바리에이션이 존재한다.32비트의 워드장을 가져 256비트의 해시를 출력하는 BLAKE-256 및 그것을 절약해 224비트의 출력으로 한 BLAKE-224, 64비트의 워드장을 가져 512비트의 해시를 출력하는 BLAKE-512 및 그것을 절약해 384비트의 출력으로 한 BLAKE-384의 4개이다.

목차

알고리즘

ChaCha로는 4×4 어레이의 워드를 조작해, BLAKE로는 16의 메시지 워드와 8 워드의 해시치를 연결하는 것으로, ChaCha의 출력을 절약해 다음 해시치의 계산에 이용한다.

핵심이 되는 변환으로는 입력의 16 워드와 16의 변수를 조합하지만, 블록간으로는 8 워드( 256혹은 512비트) 밖에 보관 유지되지 않는다.

BLAKE로는, 16의 고정 워드(π의 프랙탈 이론부의 선두의 512혹은 1024비트)와 16 요소간으로의 치환 테이블 10개를 이용한다.

 σ[0] = 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15σ[1] = 14 10 4 8 9 15 13 6 1 12 0 2 11 7 5 3σ[2] = 11 8 12 0 5 2 15 13 10 14 3 6 7 1 9 4σ[3] = 7 9 3 1 13 12 11 14 2 6 5 10 4 0 15 8σ[4] = 9 0 5 7 2 4 10 15 14 1 11 12 6 8 3 13σ[5] = 2 12 6 10 0 11 8 3 4 13 7 5 15 14 1 9σ[6] = 12 5 1 15 14 13 4 10 0 7 6 3 9 2 8 11σ[7] = 13 11 7 14 12 1 3 9 5 0 15 4 8 6 2 10σ[8] = 6 15 14 9 11 3 0 8 12 2 13 7 1 4 10 5σ[9] = 10 2 8 4 7 6 1 5 15 11 9 14 3 12 13 0 

핵심의 조작은 ChaCha의1/4라운드와 동등의 조작이며, 4 워드의 컬럼 혹은 대각선상에 있어 2 워드의 메시지 m[]와 2개의 고정 워드 c[]를 결합한다.1 라운드 마다 8회 이 조작을 한다.

 j←σ[r%10][2×i]            // Index computations k←σ[r%10][2×i+1] a←a + b + (m[j]□c[k])   // Step 1 (with input) d←(d□a) >>> 16 c←c + d                   // Step 2 (no input) b←(b□c) >>> 12 a←a + b + (m[k]□c[j])   // Step 3 (with input) d←(d□a) >>> 8 c←c + d                   // Step 4 (no input) b←(b□c) >>> 7 

위의 계산은 32비트 버전인 BLAKE-256, -224의 것이다.r는 라운드수(0에서 13), i는 반복해 회수(0에서 7)이다.

ChaCha의1/4라운드의 함수와는 이하의 차이가 있다.

  • 메시지 워드의 화가 추가되었다.
  • 로테이트의 방향이 역이 되었다.

64비트 버전(ChaCha에는 존재하지 않는다)인 BLAKE-512, -384나 32비트 버전인 BLAKE-256, -224이라고 본질적으로는 같지만, 로테이트의 양이 32, 25, 16, 11으로 변경되어 라운드수가 14에서 16으로 늘려지고 있다.

수정

NIST에 의한 공모의 기간중, 발견된 문제에의 대처로서 응모자가 알고리즘을 수정하는 것이 허락되고 있었다.BLAKE에 더해진 수정은 이하와 같다

  • 라운드수가 BLAKE-256, -224그럼 10에서 14에, BLAKE-512, -384그럼 14에서 16으로 늘려졌다.속도를 유지한 채로 시큐러티 마진을 크게하기 위해(때문에)이다.

해시치의 예

 BLAKE-512("")  = A8CFBBD73726062DF0C6864DDA65DEFE58EF0CC52A5625090FA17601E1EECD1B628E94F396AE402A00ACC9EAB77B4D4C2E852AAAA25A636D80AF3FC7913EF5B8  BLAKE-512("The quick brown fox jumps over the lazy dog")  = 1F7E26F63B6AD25A0896FD978FD050A1766391D2FD0471A77AFB975E5034B7AD2D9CCF8DFB47ABBBE656E1B82FBC634BA42CE186E8DC5E1CE09A885D41F43451 

BLAKE2

BLAKE2
일반
설계자 Jean-Philippe Aumasson, Samuel Neves, Zooko Wilcox-O'Hearn, Christian Winnerlein
파생원 BLAKE
상세
다이제스트장 가변장
라운드수 10 or 12

2012년 12월 21일, BLAKE의 개량판으로서 BLAKE2가 발표되었다.이것은 Jean-Philippe Aumasson, Samuel Neves, Zooko Wilcox-O'Hearn, Christian Winnerlein에 의해 설계된 것이어, 실제로 찢어진, 혹은 이론적으로 찢어진 해쉬 함수인 MD5, SHA-1의 치환을 목표로 한 것인[1].512비트의 해시를 출력하는 64비트 버전인 BLAKE2b, 256비트의 해시를 출력하는 32비트 버전인 BLAKE2s의 2개의 바리에이션이 존재한다.BLAKE2b로는 1에서 64바이트(512비트), BLAKE2s로는 1에서 32바이트(256비트)의 사이에 임의의 길이의 해시를 출력 가능하다.

멀티 코어 프로세서로의 병렬처리에 의한 고속화를 도모한 BLAKE2bpBLAKE2sp로 불리는 버전도 존재한다.

BLAKE2로는, BLAKE로부터 이하의 수정이 이루어지고 있다.

  • BLAKE의 라운드 함수에 있던 고정 워드의 메시지 워드에의 추가가 제거되었다.
  • 2개의 로테이트량이 변경되었다.
  • 패딩이 간소화되었다.
  • 초기화 벡터와의 배타적 논리합을 취한 파라미터 블록이 추가되었다.
  • 라운드수가 14 (BLAKE-256) 혹은 16 (BLAKE-512)으로부터, 10 (BLAKE2s) 혹은 12 (BLAKE2b)에 삭감되었다.

BLAKE2의 해시치의 예

 BLAKE2b-512("")  = 786A02F742015903C6C6FD852552D272912F4740E15847618A86E217F71F5419D25E1031AFEE585313896444934EB04B903A685B1448B755D56F701AFE9BE2CE  BLAKE2b-512("The quick brown fox jumps over the lazy dog")  = A8ADD4BDDDFD93E4877D2746E62817B116364A1FA7BC148D95090BC7333B3673F82401CF7AA2E4CB1ECD90296E3F14CB5413F8ED77BE73045B13914CDCD6A918 

각주

외부 링크

This article is taken from the Japanese Wikipedia BLAKE

This article is distributed by cc-by-sa or GFDL license in accordance with the provisions of Wikipedia.

Wikipedia and Tranpedia does not guarantee the accuracy of this document. See our disclaimer for more information.

In addition, Tranpedia is simply not responsible for any show is only by translating the writings of foreign licenses that are compatible with CC-BY-SA license information.

0 개의 댓글:

댓글 쓰기