Estou curioso sobre um algoritmo que seria bom para o seguinte cenário:
- “texto simples” de 32 bits entrada, obtida de um contador
- saída de “texto cifrado” de 32 ou 64 bits
- Deve ser possível descriptografar a saída com a chave (e possivelmente alguns outros parâmetros ocultos, como um contador de deslocamento e atual) e retornar o valor do contador original de 32 bits
- Um usuário nunca observa a entrada, mas pode receber qualquer número de saídas, possivelmente sequenciais. Mesmo assim, eles não deveriam ser capazes de saber quais índices eles têm.
- Deve ser difícil adivinhar outras saídas que correspondam aos valores válidos do contador.
Minha intuição não treinada é que, uma vez que a chave e as saídas são maior do que o espaço de entrada, deve ser bastante fácil ter resultados “bons”, pelo menos para as primeiras saídas. No entanto, também parece lógico que, com amostras suficientes, a chave e os índices poderiam ser calculados facilmente, mas espero que na maioria dos casos usar l menos de 100 valores.
Minhas perguntas são:
- Existe algum algoritmo que funcione para este cenário?
- Quão difícil seria rachadura? Ou seja, calcule os valores que descriptografam para índices válidos.
- Quanto a posse de mais amostras afeta a eficiência de quebrá-las?
-
O que há de errado com uma abordagem ingênua como:
u64 output = input repeat 64x output = ((output ^ key) + key) rotate-left 37
Presumindo que a adição envolve limites inteiros de 64 bits. Parece que misturaria completamente a chave aleatória com uma única entrada, mas possuindo mais de uma a saída pode aumentar rapidamente as informações que um invasor possui, embora eu não saiba como. Obviamente, vai quebrar, estou apenas tentando aprender.
- Usar um valor dependente de chave para a rotação à esquerda, como
(((key & 0xFFFE)+1) * 37)
ser melhor? Quanto isso ajuda e por quê? - Quais abordagens, recursos, etc. você usaria para analisar o algoritmo e projetar um melhor?
Comentários
- Este é um problema XY da forma como você o descreve. Um CSPRNG (observe o S) não ' t parece ser uma boa solução para tudo isso. A solicitação do tamanho da chave é um pouco estranha, por que não é possível usar tamanhos de chave maiores?
- Suponho que o tamanho da chave não seja essencial. Eu esperava que a chave de 64 bits fosse suficiente para criptografar um valor de 32 bits.
Resposta
- Existem algoritmos que funcionam para este cenário?
Sim, na verdade , há várias cifras de bloco de 64 bits. A sabedoria padrão é que eles não são incentivados para uso geral, porque os modos de criptografia de bloco padrão tendem a começar a vazar informações quando você se aproxima do limite do aniversário (neste caso, cerca de 30 Gbytes); no entanto, para o seu caso de uso, isso não seja uma preocupação.
Aqui estão algumas opções:
-
3DES (também conhecido como TDES); este é DES aplicado três vezes com três chaves diferentes; isso tem a vantagem de ser muito bem estudado.
-
Speck que tem conjuntos de parâmetros com cifras de bloco de 64 bits. vantagem de ser a alternativa mais rápida e foi projetado por pessoas que sabem o que estão fazendo, e foi feito por meio de uma quantidade surpreendente de criptoanálise.
-
Uma cifra FPE (como FF1, que pode lidar com qualquer tamanho de bloco arbitrário (incluindo 64 bits). Isso tem a vantagem de permitir a opção de um ajuste (que é um lugar conveniente para colocar os “outros parâmetros ocultos”, se você decidir que é uma vantagem ). Seu mais lento do que as alternativas; com FF1, a segurança vem da segurança subjacente do AES, mais a segurança comprovada da estrutura Feistel.
Agora, essas chaves levam mais de 64 bits; o senso comum é que uma chave de 64 bits simplesmente não é longa o suficiente.
- Seria difícil quebrá-la? Ou seja, calcule os valores que descriptografam para índices válidos.
Para qualquer um dos itens acima, a única opção prática que um adversário teria seria adivinhe textos criptografados aleatoriamente e espere encontrar um que decifre para um índice válido.
- Quanto vale a posse de mais amostras afetam a eficiência de crackeamento?
Para qualquer um dos itens acima, ter grandes quantidades de amostras ainda tornará o ataque inviável.
- O que há de errado com uma abordagem ingênua como …
As cifras ARX (na verdade, qualquer cifra, mas especialmente ARX) são difíceis de acertar. As cifras ARX em particular tendem a não ser ótimas para interromper características diferenciais e lineares (o que significa tal o design realmente precisa ser bem estudado para garantir que o faça).
- Quais abordagens, recursos etc. você usaria para analisar o algoritmo e projetar um melhor?
Eu sugiro que você escolha um design que já foi analisado; eu listo três acima.
Comentários
- Eu ' d prefiro, por exemplo, Blowfish a 3DES se houver uma mudança de entrada de chave relativamente pequena. A segurança do 3DES seria duvide, mesmo que a chave tenha sido expandida para 128 bits (ou melhor, 112 bits, é claro).
- @MaartenBodewes: você tem uma citação de alguém que mostra que 3DES com um chave desconhecida sendo distinguível de uma permutação uniforme aleatória?
- Não, claro que não. No entanto, eu ' d prefiro nem mesmo ter que raciocinar se minha criptografia foi ~ Força de 80 bits ou ~ 112 bits quando alimentado com uma chave de 128 bits ou 192 bits (eu ' não tenho dúvidas de que você seria capaz de fazer isso, mas hey, nós nem todos são poncho). E o tamanho da chave parece ser um problema na questão. Apenas jogar fora os bits de paridade nesse caso é um desperdício.
- Você poderia explicar melhor a declaração " Agora, essas chaves levam mais de 64 bits; o senso comum é que uma chave de 64 bits não é longa o suficiente. "? Quais algoritmos requerem chaves de quais comprimentos e chaves de 64 bits não são longas o suficiente para o quê, precisamente?
- @shader: chaves de apenas 64 bits são vulneráveis a pesquisas de força bruta de grandes (bem financiados) adversários. Como geralmente é fácil usar chaves um pouco maiores (por exemplo, 128 bits) que não são ' t vulneráveis a qualquer pessoa, geralmente optamos pela opção mais segura (mesmo se ' não estamos imediatamente preocupados que a NSA esteja interessada em nos atacar ou se a Amazon decidir nos dedicar toda a sua nuvem …