As funções de hash podem ser consideradas a principal força de trabalho da criptografia moderna. Criadas originalmente para melhorar a eficiência das assinaturas digitais, elas agora são usadas em praticamente todas as partes da infraestrutura onde as informações são armazenadas e trocadas. Eles podem ser encontrados em protocolos criptográficos, no processo de trabalho com chaves de criptografia, conexões seguras da web e até mesmo na verificação de malware. Sem funções hash, a maioria das coisas ao nosso redor simplesmente não funcionaria.
As funções hash mais comuns são SHA-0, SHA-1 e SHA-2, que inclui SHA-256 e SHA-512. Mas, no final da primeira década do século XXI, foram apresentados métodos de engenharia de colisão para cada um deles, que evidenciavam a presença de vulnerabilidades nos algoritmos e questionavam a segurança de uma assinatura digital eletrônica baseada nessas funções hash. A esse respeito, o Instituto Nacional de Padrões e Tecnologia (NIST) dos Estados Unidos anunciou em 2007 um concurso para um novo padrão criptográfico SHA-3.
Introdução
Armado com uma lista de requisitos, que incluía resistência a ataques conhecidos, minimizando o uso de memória e otimizando para processadores de 64 bits, uma equipe de cientistas liderada por Bruce Schneier, autor das cifras de bloco Twofish e Blowfish, submeteu sua família de funções hash variáveis a uma competição em 2008 bit depth Skein, que significa literalmente "novelo de lã" Infelizmente para os autores, em 2012 o algoritmo Skein perdeu para o mais rápido e menos vulnerável Keccak na final do SHA-3.
O Skein tem três partes:
cifra de bloco de três peixes simétrica configurável
bloco único de iterações (UBI)
sistema de argumento opcional
Vamos em ordem.
Threefish
Threefish — , Skein. , , , Blowfish Twofish. Threefish - (sp-), , MIX, , XOR 2 64 . , 4 . tweak-.

Threefish TF(K, T, P),
K —
T — tweak-
P -
. Threefish 256, 512 1024 . , . : 72 80 256/512- 1024- . Tweak- 128 .
MIX (k1, k2) (g1, g2) , :
g1 = (k1 + k2) mod 264
g2 = (k2 ≪ R) ⊕ g1 , R — ,

UBI
Skein Threefish Unique Block Iteration. UBI . , , . F(S, A, T):
S — Nb
A —
T —
A, , n Nb
F(S, A, T) :
H0=S
Hi+1 = TF(Hi ; T + min(NA; (i+1) Nb) + ai 2126 + bi (B2119+ 2127) ; Ai)Ai
a0=bk-1= 1, ai=bi=0, A 8 B=0, B=1
, . Skein , -.
: , , , . :
Configuration —
Output —
:
Public Key - , ,
Message -
Nonce -
Key - Skein MAC(message authentication code) KDF(key derivation function)
Personalization - ,
Skein
, . Skein, -, . UBI-. 3, UBI: , , . S = 0. Skein .

264 , , .

No final, gostaria de mencionar as áreas de aplicação da função hash Skein. Utilizando o sistema de argumentos adicionais, é possível configurar o algoritmo para cálculo dos códigos de autenticação de mensagens MAC ou HMAC (MAC baseado em hash). Skein também pode servir como um gerador de números aleatórios ou como um mecanismo para calcular uma assinatura digital eletrônica.