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

"블레이크2B"의 두 판 사이의 차이

위키원
이동: 둘러보기, 검색
(새 문서: '''BLAKE'''는 단 버스타인(Dan Bernstein)의 ChaCha stream 암호를 기반으로 하는 암호화 해시 함수이고, BLAKE2는 2012년 12월 21일에 발표된 BLAKE...)
 
잔글
 
(사용자 2명의 중간 판 2개는 보이지 않습니다)
1번째 줄: 1번째 줄:
'''BLAKE'''는 단 버스타인([[Dan Bernstein]])의 [[ChaCha stream]] 암호를 기반으로 하는 암호화 해시 함수이고, BLAKE2는 2012년 12월 21일에 발표된 BLAKE를 기반으로 하는 암호화 해시 함수이다.
+
'''블레이크2B'''(Blake2B)64비트 x64 혹은 [[ARM]] 아키텍처에서 [[MD5]], [[SHA-1]], [[SHA-2]], [[SHA-3]]보다 빠른 암호화 [[해시함수]]이다.
  
 
==개요==
 
==개요==
[[ChaCha stream]] 암호에 기초하지만 입력 블록에 복사판 XORed는 ChaCha 라운드마다 앞에 추가된다. 단어 크기는 두 가지로 변형되는데, 8 단어의 해시값을 16개의 메시지 워드와 반복적으로 결합해 다음 해시값을 도출해낸다.  
+
[[차차스트림]](ChaCha stream) 암호에 기초하지만 입력 블록에 복사판 XORed는 차차(ChaCha) 라운드마다 앞에 추가된다. 단어 크기는 두 가지로 변형되는데, 8 단어의 해시값을 16개의 메시지 워드와 반복적으로 결합해 다음 해시값을 도출해낸다.  
  
 
==역사==
 
==역사==
BLAKE는 [[미국 표준 기술 연구소]] (NIST; National Institute of Standards and Technology) 해시 함수 경쟁에 [[Jean-Philippe Aumasson]], [[Luca Henzen]], [[Willi Meier]], [[Raphael C.W]]이 제출했다. 5명의 후보자로 구성된 최종 라운드에 진출했지만 2012년 [[SHA-3]] 알고리즘에 채택된 Keccak에 패배했다. 그후 2012년 BLAKE를 기반으로 업그레이드 버전인 BLAKE2가 손상된 [[MD5]], [[SHA-1]] 알고리즘을 대체하는 것을 목적으로 발표됐다.
+
[[블레이크]](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)에 패배했다. 그후 2012년 블레이크(BLAKE)를 기반으로 업그레이드 버전인 블레이트2(BLAKE2)가 손상된 [[MD5]], [[SHA-1]] 알고리즘을 대체하는 것을 목적으로 발표됐다.
  
==BLAKE2==
+
==블레이크2==
[[NEON]]이 활성화된 [[ARM]]을 포함해 64비트 플랫폼에 최적화되어있으며 1~64 바이트의 다이제스트를 생성한다.
+
[[블레이크2]](BLAKE2)는 [[NEON]]이 활성화된 [[ARM]]을 포함해 64비트 플랫폼에 최적화되어 있으며 1~64 바이트의 다이제스트를 생성한다. 멀티 코어나 [[SIMD CPU]]에서 향상된 성능을 위해 설계된 4way 병렬 BLAKE2bp, 8way 병렬 BLAKE2sp를 포함한다. 키 해싱, 증분 트리 해싱 등에 대한 알고리즘을 제공한다. BLAKE2에는 BLAKE2x도 포함되어 있어 임의의 길이의 다이제스트를 생성할 수 있다. 초당 1기가 바이트, 바이트당 3.08 사이클의 처리가 가능하다.<ref>〈[https://blake2.net/ BLAKE2 - fast secure hashing]〉, 《blake2.net》</ref> [[keying]], [[salting]], [[personalization]], 해시트리 모드(hash tree modes)를 지원한다.
멀티 코어나 [[SIMD CPU]]에서 향상된 성능을 위해 설계된 4way 병렬 BLAKE2bp, 8way 병렬 BLAKE2sp를 포함한다. 키 해싱, 증분 트리 해싱 등에 대한 알고리즘을 제공한다.
 
BLAKE2에는 BLAKE2x도 포함되어 있어 임의의 길이의 다이제스트를 생성할 수 있다.
 
초당 1기가 바이트, 바이트 당 3.08 사이클의 처리가 가능하다.<ref>〈[https://blake2.net/ BLAKE2 - fast secure hashing]〉, 《blake2.net》</ref>
 
[[keying]], [[salting]], [[personalization]], hash tree modes 지원한다.
 
  
 
==알고리즘==
 
==알고리즘==
'''초기화 벡터'''
+
* '''초기화 벡터'''
 
BLAKE2b는 [[SHA-512]]에서 사용하는 [[IV]]와 동일한 [[초기화 벡터]]를 사용한다. 이 값들은 최초의 8개의 소수의 제곱근으로부터 처음의 64비트를 부분적으로 읽어들임으로써 얻어진다.
 
BLAKE2b는 [[SHA-512]]에서 사용하는 [[IV]]와 동일한 [[초기화 벡터]]를 사용한다. 이 값들은 최초의 8개의 소수의 제곱근으로부터 처음의 64비트를 부분적으로 읽어들임으로써 얻어진다.
 
  IV0 = 0x6a09e667f3bcc908
 
  IV0 = 0x6a09e667f3bcc908
94번째 줄: 90번째 줄:
  
 
  '''MIX'''
 
  '''MIX'''
Compress 함수에 의해 호출되며 메시지의 두 8바이트 단어를 해시 상태로 혼합한다. 대부분의 구현에서 이 함수는 [[인라인]] 또는 [[인라인 함수]]로 작성됩니다.<ref>〈[https://en.wikipedia.org/wiki/BLAKE_(hash_function) BLAKE]〉, 《wikipedia》</ref>
+
Compress 함수에 의해 호출되며 메시지의 두 8바이트 단어를 해시 상태로 혼합한다. 대부분의 구현에서 이 함수는 [[인라인]] 또는 [[인라인 함수]]로 작성된다.<ref>〈[https://en.wikipedia.org/wiki/BLAKE_(hash_function) BLAKE]〉, 《wikipedia》</ref>
  
 
{{각주}}
 
{{각주}}
101번째 줄: 97번째 줄:
 
* 〈[https://blake2.net/ BLAKE2 - fast secure hashing]〉, 《blake2.net》
 
* 〈[https://blake2.net/ BLAKE2 - fast secure hashing]〉, 《blake2.net》
 
* 〈[https://en.wikipedia.org/wiki/BLAKE_(hash_function) BLAKE]〉, 《wikipedia》
 
* 〈[https://en.wikipedia.org/wiki/BLAKE_(hash_function) BLAKE]〉, 《wikipedia》
 +
 +
== 같이 보기 ==
 +
* [[블레이크]]
 +
* [[블레이크2]]
  
 
{{알고리즘|검토 필요}}
 
{{알고리즘|검토 필요}}

2019년 7월 15일 (월) 23:42 기준 최신판

블레이크2B(Blake2B)는 64비트 x64 혹은 ARM 아키텍처에서 MD5, SHA-1, SHA-2, SHA-3보다 빠른 암호화 해시함수이다.

개요[편집]

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

역사[편집]

블레이크(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)에 패배했다. 그후 2012년 블레이크(BLAKE)를 기반으로 업그레이드 버전인 블레이트2(BLAKE2)가 손상된 MD5, SHA-1 알고리즘을 대체하는 것을 목적으로 발표됐다.

블레이크2[편집]

블레이크2(BLAKE2)는 NEON이 활성화된 ARM을 포함해 64비트 플랫폼에 최적화되어 있으며 1~64 바이트의 다이제스트를 생성한다. 멀티 코어나 SIMD CPU에서 향상된 성능을 위해 설계된 4way 병렬 BLAKE2bp, 8way 병렬 BLAKE2sp를 포함한다. 키 해싱, 증분 트리 해싱 등에 대한 알고리즘을 제공한다. BLAKE2에는 BLAKE2x도 포함되어 있어 임의의 길이의 다이제스트를 생성할 수 있다. 초당 1기가 바이트, 바이트당 3.08 사이클의 처리가 가능하다.[1] keying, salting, personalization, 해시트리 모드(hash tree modes)를 지원한다.

알고리즘[편집]

  • 초기화 벡터

BLAKE2b는 SHA-512에서 사용하는 IV와 동일한 초기화 벡터를 사용한다. 이 값들은 최초의 8개의 소수의 제곱근으로부터 처음의 64비트를 부분적으로 읽어들임으로써 얻어진다.

IV0 = 0x6a09e667f3bcc908
IV1 = 0xbb67ae8584caa73b
IV2 = 0x3c6ef372fe94f82b  
IV3 = 0xa54ff53a5f1d36f1   
IV4 = 0x510e527fade682d1 
IV5 = 0x9b05688c2b3e6c1f 
IV6 = 0x1f83d9abfb41bd6b  
IV7 = 0x5be0cd19137e2179

다음은 BLAKE2B의 의사코드이다.

Algorithm BLAKE2b
  Input:
     M 
     cbMessageLen: Number, (0..2^128)
     Key
     cbKeyLen: Number, (0..64)
     cbHashLen : Number, (1..64)
  Output:
     Hash
상태 벡터 h 를 IV로 초기화
      ← IV
키 크기와 원하는 해시 길이를 h0에 혼합합니다.
      xor 0x0101kknn
kk = 키 길이, nn = 해시 길이
     cBytesCompressed ← 0
     cBytesRemaining  ← cbMessageLen
if (cbKeyLen > 0) then
     M ← Pad(Key, 128) || M
     cBytesRemaining ← cBytesRemaining + 128
end if
while (cBytesRemaining > 128) do
     chunk ← get next 128 bytes of message M
     cBytesCompressed ← cBytesCompressed + 128  
     cBytesRemaining  ← cBytesRemaining  - 128
     h ← Compress(h, chunk, cBytesCompressed, false)
end while
 hunk ← get next 128 bytes of message M
 cBytesCompressed ← cBytesCompressed+cBytesRemaining
 chunk ← Pad(chunk, 128)
 h ← Compress(h, chunk, cBytesCompressed, true)
 Result ← first cbHashLen bytes of little endian state vector h
End Algorithm BLAKE2b
Compress
Function Compress
  Input:
     h
     chunk
     t : Number, 0..2^128
     IsLastBlock: Boolean   
  Output:
     h
  V ← h
  V ← IV
  V ←  V xor Lo(t)
  V ←  V xor Hi(t)
  if IsLastBlock then
  V ←  V xor 0xFFFFFFFFFFFFFFFF
  m ← chunk
  for i from 0 to 11 do
  S ← SIGMA[i mod 10]
     Mix(V0, V4, V8,  V12, m[S0], m[S1])
     Mix(V1, V5, V9,  V13, m[S2], m[S3])
     Mix(V2, V6, V10, V14, m[S4], m[S5])
     Mix(V3, V7, V11, V15, m[S6], m[S7])
     Mix(V0, V5, V10, V15, m[S8],  m[S9])
     Mix(V1, V6, V11, V12, m[S10], m[S11])
     Mix(V2, V7, V8,  V13, m[S12], m[S13])
     Mix(V3, V4, V9,  V14, m[S14], m[S15])
  end for
  h ← h xor V
  h ← h xor V
  Result ← h
End Function Compress
MIX

Compress 함수에 의해 호출되며 메시지의 두 8바이트 단어를 해시 상태로 혼합한다. 대부분의 구현에서 이 함수는 인라인 또는 인라인 함수로 작성된다.[2]

각주[편집]

  1. BLAKE2 - fast secure hashing〉, 《blake2.net》
  2. BLAKE〉, 《wikipedia》

참고자료[편집]

같이 보기[편집]


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