Hash de alta velocidade baseado em um novo algoritmo criptográfico
Infelizmente, os matemáticos são pouco versados nos meandros da programação, inventam algo e, em seguida, o programador deve implementá-lo no código do programa. Está longe de ser sempre possível implementar seus algoritmos efetivamente.
Isso é especialmente evidente nas recentes criptografia simétrica russa, Striborg e Grasshopper ... É impossível implementar esses algoritmos efetivamente em códigos de programas x86 / 64, é necessário um processador criptográfico especializado.
Fazemos o oposto e vemos o que acontece.
Um programador que sabe como funciona o moderno processador x86 / 64 desenvolverá o algoritmo de criptografia simétrica mais eficiente e permitirá que os matemáticos, como nos bons velhos tempos, realizem seu trabalho principal - análise criptográfica da solução resultante.
Lembrando que “o melhor é o inimigo do bem”, tomamos o “bom” como base - GOST 28147-89. Então, de acordo com o princípio médico "Não faça mal", faremos o possível usando métodos de computação multithread.
O seguinte foi feito:
- Aumento do tamanho da chave para 256 bytes.
- Tamanho do bloco de dados aumentado para 256 bytes.
- A operação de substituição é substituída por uma operação de permutação.
- No deslocamento cíclico, a operação de inversão de grupos de bits é implementada.
- A entrada de chave é feita na forma de uma permutação de bits.
- A rede Feistel é modificada em uma rede em anel de oito segmentos.
- O modo de jogo com feedback é usado, em duas passagens sobre dados criptografados.
- As passagens são feitas com diferentes permutações e o anel muda com as mesmas teclas.
- Antes da criptografia, a redundância é removida do texto criptografado usando um compressor.
Implementação de teste
O algoritmo é implementado, e a primeira coisa que é testada são seus parâmetros estatísticos ao gerar uma sequência pseudo-aleatória (o compressor está desligado), eis como eles se parecem:

Este é um resultado típico do teste NIST de uma nova conversão de criptografia. Os resultados do teste em quaisquer chaves aleatórias e populações iniciais sempre se ajustam aos parâmetros estatísticos de uma sequência aleatória.
Os parâmetros estatísticos obtidos em experimentos sobre as normas de uma cifra de bloco de 8 bytes para uma cifra de bloco com um tamanho de bloco de 256 bytes são fantásticos.
É o mesmo que, por exemplo, jogar uma moeda 12 vezes e obter uma queda igual de "águia" e "nozes", exigir que o dado, também jogado 12 vezes, caia duas vezes em cada face ...
Teoricamente, isso é possível apenas com uma entropia diferencial muito alta entre blocos adjacentes e caracteriza o nível de complexidade da cifra de bloco.
Esses parâmetros gama foram obtidos em uma rodada de conversão. O algoritmo tem uma peculiaridade - a velocidade de jogo depende do desempenho da RAM e do cache, e não da velocidade do processador.
Roleta Russa, 2018 e sua aplicação
Recentemente, algoritmos criptográficos começaram a receber nomes sonoros, como “Magma”, “Grasshopper”, “Stribog”, continuaremos essa tradição.
Vamos chamar esse
código de bloco de
"Roleta Russa" ou
RU2 , em homenagem ao primeiro gerador puramente russo de seqüências binárias aleatórias, - um tambor rotativo para revólver ...
Além disso, a conversão de criptografia é baseada em rotações (mudanças de anel) de sequências binárias. Existem apenas
192 turnos explícitos nessa rodada.
Portanto, a analogia direta com o tambor do revólver é óbvia.
Anteriormente, ao implementar o método de implementação paralela do GOST 28147-89 nos registros XMM / YMM, tive que descrevê-lo completamente, pois ele passou na certificação oficial do FSB.
Agora a situação é diferente, nenhuma autoridade oficial é assumida. Portanto, não haverá descrição detalhada do algoritmo "Roleta Russa", é um tipo de proteção de direitos autorais. Em resumo, o algoritmo "Roleta Russa" será proprietário até o momento e, portanto, sua designação completa será
Roleta Russa, 2018 ou
RU2, para abreviar.
Um algoritmo de criptografia fechado a partir de pesquisas é um absurdo, é claro, já que não há confiança na força da criptografia.
Mas nada impede o uso do algoritmo
RU2 para converter texto criptografado em uma sequência que satisfaça os requisitos de pseudo-
aleatoriedade .
Então, a sequência pseudo-aleatória resultante pode ser criptografada com algoritmos conhecidos e "confiáveis"; de fato, todos os sistemas criptográficos sérios são construídos.
Enquanto isso, a Roleta Russa é usada para o hash de alta velocidade com um tamanho arbitrário do resultado da função de hash. Isso é importante nas tarefas de backup e integridade.
A gama padrão de feedback se transforma em uma função Hash se você realizar uma segunda passagem nos dados criptografados. Foi assim que o algoritmo
RU2 foi originalmente implementado.
O feedback gama duplo não foi considerado anteriormente como uma variante da implementação da função hash, aparentemente devido à baixa velocidade, embora possua parâmetros de convolução mais confiáveis. Isso se aplica principalmente ao efeito avalanche, que atua não apenas nas rodadas subsequentes de convolução, mas também nas anteriores.
Além disso, as características obtidas da função hash são verificadas de forma confiável por testes estatísticos, porque todo o texto cifrado recebido, que é uma gama pseudo-aleatória confiável, se torna um hash.
Nessa gama, peças arbitrárias podem ser cortadas para armazenar o valor da função hash. Agora que um bloco de 1024 bytes é usado, ele é muito mais confiável que um bloco de 64 bytes no padrão SHA3-512 mais "avançado".
O hash
RU2 protege os dados da visualização / modificação, mas até que os criptógrafos estejam convencidos da robustez do algoritmo, consideraremos a proteção por senha dos dados para limitar o acesso.
Implementação prática do RU2
O algoritmo de Roleta Russa está embutido no duplicador forense de unidades de HDD e SDD. O algoritmo é usado para criar backups diferenciais, controle de integridade, restrições de acesso baseadas em senha e compactação de informações.
O compressor para remover a redundância já foi descrito anteriormente no artigo "
Um novo algoritmo de compactação de dados de alta velocidade" , o hash é usado para confirmar a integridade dos dados copiados e, no caso de digitar uma senha, também para "proteção por senha" dos despejos recebidos da visualização / modificação.
Aqui estão as características de velocidade do
RU2 obtidas no trabalho real na criação de um backup diferencial:

A velocidade da cópia é limitada pelos parâmetros do leitor, uma unidade SSD conectada através de uma ponte USB 3.0-SATA não pode fornecer uma alta velocidade de leitura.
A uma velocidade de entrada de 360 megabytes / s.
O algoritmo
RU2 carrega o processador em apenas 5% com uma frequência operacional reduzida de 1,4 Gigahertz. Isso fornece compactação de informações, seu hash e criptografia (proteção por senha) do despejo.
Os sistemas de hash tradicionais não podem fornecer esse desempenho. Para comparação, veja como o sistema de hash embutido no Acronis funciona ao criar um backup diferencial da mesma unidade:

O processador processa o fluxo de dados de entrada a uma velocidade de 340 MegaBytes / s., Funciona ao mesmo tempo com uma frequência de 3,8 GigaHertz e é carregado a 28%.
Se recalcularmos os resultados obtidos nos parâmetros de limite para um processador de núcleo duplo operando a uma frequência de 3,8 GigaHertz, o sistema de hash Acronis poderá fornecer uma taxa de transferência de 1,4 GigaBytes / s.
Muito mais carregado de tarefas (hash + compressão + "proteção por senha"), o algoritmo da Roleta Russa fornece uma velocidade de 21 Gigabytes / s.
Por outras palavras, o hash
RU2 funciona uma ordem de magnitude mais rapidamente do que o hash padrão implementado na Acronis.
Além disso, a Roleta Russa fornece uma taxa de geração de números pseudo-aleatórios de 12 Gigabytes por segundo. Este é o gerador de sequência pseudo-aleatória mais rápido conhecido que atende aos requisitos dos testes oficiais do NIST.
Geração aleatória de números, hash, proteção por senha, enquanto isso é suficiente para a roleta russa.
"... Mas e a criptografia?, - e depois a criptografia ...."