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

블레이크

위키원
lyo731 (토론 | 기여)님의 2019년 7월 16일 (화) 10:51 판 (새 문서: '''블레이크'''(Blake)는 댄 버스타인(Dan Bernstein)의 차차스트림(ChaCha stream) 암호를 기반으로 하는 암호화 해시함수이다. 블레이크 알고리즘은...)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)
이동: 둘러보기, 검색

블레이크(Blake)는 댄 버스타인(Dan Bernstein)의 차차스트림(ChaCha stream) 암호를 기반으로 하는 암호화 해시함수이다. 블레이크 알고리즘은 미국 표준기술연구소(NIST; National Institute of Standards and Technology) 해시 함수 경쟁에 장 필리프 오마송(Jean-Philippe Aumasson), 루카 헨젠(Luca Henzen), 윌리 마이어(Willi Meier), 레이펠 C.W(Raphael C.W)이 제출한 해시함수이다. 5명의 후보자로 구성된 최종 라운드에 진출했지만 2012년 SHA-3 알고리즘에 채택된 케착(Keccak)에 패배했다.

개요

차차스트림(ChaCha stream) 암호에 기초하지만 입력 블록에 복사판 XORed는 차차(ChaCha) 라운드마다 앞에 추가된다. 단어 크기는 두 가지로 변형되는데, 8 단어의 해시값을 16개의 메시지 워드와 반복적으로 결합해 다음 해시값을 도출해낸다.

알고리즘

BLAKE 알고리즘

32비트 단어를 사용하고 최대 256 비트의 해시를 계산 시 사용하는 알고리즘과 64비트 단어를 사용하고 최대 512비트의 해시를 계산 시 사용되는 알고리즘으로 나뉘는데, 코어 블록 변환은 16 단어와 16개의 작동 변수를 결합하나 블록 간에는 8 단어만 보존한다. 16개의 상수어 표와 10개의 16 요소 순한을 사용하는 표를 사용한다.

σ[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단어 열/대각선 abcd에서 작동하며 2단어의 메시지 m[]과 2개의 상수 단어 n[]이 된다.

j ← σ[r%10][2×i] 
k ← σ[r%10][2×i+1]
a ← a + b + (m[j] ⊕ n[k]) 
d ← (d ⊕ a) >>> 16
c ← c + d   
b ← (b ⊕ c) >>> 12
a ← a + b + (m[k] ⊕ n[j])   
d ← (d ⊕ a) >>> 8
c ← c + d             
b ← (b ⊕ c) >>> 7

r은 0부터 13까지의 라운드 수이고 i는 0에서 7까지의 다양한 수다. ChacCha의 1/4 라운드 기능과는 메시지 단어의 추가가 추가되었고 회전 방향이 바뀌었다.

Tweaks 라운드 수를 10/14에서 14/16으로 증가했다.

각주

참고자료

같이 보기


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