Baralhamento de bits criptograficamente seguro 1 para 1

7

Dado um item de entrada (N bytes), estou procurando uma função que mapeie isso para uma saída (ainda N bytes). A função deve ter as seguintes qualidades:

  • Deve ser 1 para 1, para que todas as entradas sejam mapeadas para alguma saída e para que nenhuma duas entradas seja mapeada para a mesma saída.
  • Dado um elemento de saída, deve ser difícil adivinhar a entrada que leva a essa saída, mesmo quando o mapeamento é completamente conhecido.

Existe uma função desse tipo? Onde posso aprender mais?

JnBrymn
fonte
A propósito, sou engenheiro de profissão e só tenho experiência em ciência da computação. Então, desculpe meu uso incorreto / terminológico da terminologia.
precisa
3
Isso é apenas por curiosidade ou você tem algum motivo para querer fazer isso? Se você deseja implantar isso em algum sistema, recomendo que você pergunte na Segurança da informação se o que você está perguntando aqui é uma solução razoável para o problema que você está tentando resolver com ele.
David Richerby

Respostas:

10

Isso é conhecido como permutação unidirecional . A "permutação" refere-se ao primeiro de seus dois requisitos; o "unidirecional" refere-se ao segundo dos seus dois requisitos. Existem várias construções candidatas para permutações unidirecionais, por exemplo, baseadas no aumento para o terceiro módulo de potência de um módulo RSA ou outros esquemas.

DW
fonte
Também vale a pena procurar nas redes Feistel. Eles são um método padrão para transformar funções gerais em permutações.
Pseudônimo
2
@Pseudônimo, as redes Feistel exigem uma chave e não são unidirecionais: você precisa da chave para calcular o mapa e, com a chave, pode facilmente retroceder. Então, eles resolvem um problema bem diferente.
DW
A definição estrita de uma rede Feistel é que ela requer uma chave, mas seu único uso é como uma entrada para as funções redondas. É trivial modificar a estrutura para usar funções sem um parâmetro.
Pseudônimo
11
@ Pseudônimo, sim, mas com essa modificação não é unidirecional. É tão fácil calcular o mapa reverso quanto calcular o mapa avançado. Eles são uma técnica muito legal, mas não resolvem esse problema específico.
DW
Ah, claro! Perdi esse detalhe, desculpe.
Pseudônimo
-1

Você pode querer dar uma olhada no DES ou no AES, eles estão fazendo exatamente o que você deseja. isso para métodos, dependendo de ter uma chave que criptografa / decripta o texto sem formatação. outro método, o uso de chaves duplas (chaves públicas e privadas), atualmente é um método muito usado atualmente e o mais popular é o RSA; ele se aprofunda principalmente em ter uma chave pública conhecida por todos e uma chave privada. deveria saber disso. e se alguém quiser enviar algo, ele o criptografará com sua chave pública (observe que ele não pode decriptografá-lo mais, pois ele é decrépito apenas por sua chave privada). e se você quiser fazer autenticação, poderá enviar algo criptografado por sua chave privada e o destinatário decriptografá-lo com sua chave pública, para que ele tenha certeza de que ela será enviada por você.

mais informações podem ser encontradas aqui:

https://en.wikipedia.org/wiki/RSA_(cryptosystem)

Ehab AlBadawy
fonte
11
O AES e o DES exigem uma chave e não são unidirecionais: você precisa da chave para calcular o mapa e, com a chave, pode retroceder facilmente. Então, eles resolvem um problema bem diferente.
DW
-2

Você pode tentar o seguinte:

Primeiro, pegue o SHA-256 ou outro hash do seu valor de entrada. Em seguida, use um código básico, algo como o clássico A = C, B = D, C = E ...

A diferença é que você usa o SHA-256 de toda a cadeia de entrada para determinar quanto é deslocado (é A = B, A = C, A = D, etc.)

Nota: Não sou especialista em criptografia e não tenho certeza de quão seguro isso seria.

CS_Person_M
fonte
11
Isso é terrivelmente inseguro. Não importa quão sofisticado seja o método que você usa para determinar a chave de uma cifra de César: ainda existem apenas 26 opções e você pode descriptografar apenas tentando cada uma delas. Além disso, a pergunta pede algo individual, o que pode não ser, e pede algo unidirecional, o que certamente não é. Regra 1 da criptografia: não "role por conta própria".
David Richerby