Em criptografia, uma cifra de bloco é um algoritmo determinístico que opera sobre agrupamentos de bits de tamanho fixo, chamados de blocos, com uma transformação invariável que é especificada por uma chave simétrica. Cifras de bloco são componentes elementares importantes na concepção de muitos protocolos de criptografia, e são amplamente utilizados para implementar a encriptação de dados em massa.
O projeto moderno de cifras de bloco baseia-se no conceito de uma cifra de produto iterada. Cifras de produto foram sugeridas e analisadas por Claude Shannon em sua publicação seminal de 1949 "Teoria da Comunicação de Sistemas Secretos" (Communication Theory of Secrecy Systems em inglês) como um meio para efetivamente melhorar a segurança através da combinação de operações simples, tais como substituições e permutações[1]. Cifras de produto iteradas realizam encriptação em várias rodadas, cada uma das quais utiliza uma subchave diferente derivada da chave original. Uma aplicação bem difundida de tais cifras é chamada de Rede de Feistel, em homenagem a Horst Feistel, e notavelmente implementada na cifra DES.[2] Muitas outras realizações de cifras de bloco, como a AES, são classificadas como redes de substituição-permutação.
A publicação da cifra DES pelo Escritório de Padrões Nacional dos EUA (agora Instituto Nacional de Padrões e Tecnologia, NIST) em 1977 foi fundamental para a compreensão do público sobre a concepção moderna de cifra de bloco. Da mesma forma, influenciou o desenvolvimento acadêmico dos ataques de criptoanálise. Ambas criptoanálise diferencial e linear surgiram a partir de estudos sobre a concepção DES. Hoje, há uma miríade de técnicas de ataque contra os quais uma cifra de bloco deve ser segura, além de ser robusta contra ataques de força bruta.
Até mesmo uma cifra de bloco segura é adequada apenas para a encriptação de um único bloco sob uma chave fixa. Uma multitude de modos de operação foram projetados para permitir a sua utilização repetida de forma segura, comumente para alcançar as metas de segurança de confidencialidade e autenticidade. No entanto, as cifras de bloco também podem ser usadas como blocos de construção em outros protocolos criptográficos, como funções de dispersão universais e geradores de números pseudoaleatórios.
Definição
Uma cifra de bloco consiste de dois algoritmos emparelhados, um para encriptação, E, e outro para a decriptação, D.[3] Ambos os algoritmos aceitam duas entradas: um bloco de entrada de n bits de tamanho e uma chave de tamanho k bits; e ambos produzem um bloco de saída de n bits. O algoritmo de decriptação D é definido como sendo o inverso da função de encriptação, isto é, D = E-1. Mais formalmente[4][5], uma cifra de bloco é especificada por uma função de encriptação
que toma como entrada uma chave K de comprimento k bits, chamado de tamanho da chave, e uma cadeia de bits P de comprimento n, chamado de tamanho do bloco, e retorna uma cadeia de caracteres C de n bits. P é chamada de purotexto, e C é denominada de cifrotexto. Para cada K, exige-se que a função EK(P) seja um mapeamento inversível sobre {0,1}n. O inverso para E é definido como uma função
tomando uma chave K e um cifrotexto C para retornar um valor de purotexto P, tal que
Por exemplo, um algoritmo de encriptação de cifra de bloco pode tomar um bloco de 128 bits de purotexto como entrada e produzir um bloco de cifrotexto correspondente de 128 bits. A transformação exata é controlada usando uma segunda entrada - a chave secreta. Decriptação é semelhante: o algoritmo de decriptação toma, neste exemplo, um bloco de texto cifrado, juntamente com a chave secreta de 128 bits, e produz o bloco 128-bit original de purotexto.[6]
Para cada chave K, EK é uma permutação (um mapeamento bijetivo) sobre o conjunto de blocos de entrada. Cada chave seleciona uma permutação do conjunto de possibilidades .
Projeto
Cifras de bloco iteradas
A maioria dos algoritmos de cifra de bloco são classificados como cifras de bloco iteradas, o que significa que transformam blocos de purotexto de tamanho fixo em blocos de cifrotexto de tamanhos idênticos, através da aplicação repetida de uma transformação inversível conhecida como a função de rodada, com cada iteração referida por rodada.[7]
Geralmente, a função de rodada R toma chaves de rodada diferentes Ki , que são derivadas a partir da chave original, como uma segunda entrada:
onde é o purotexto e o cifrotexto, com r sendo o número da rodada.
Frequentemente, clareamento de chave é usado em adição a isto. No início e no final, os dados são modificados com material de chave (muitas vezes com XOR, mas operações aritméticas simples como adição e subtração também são utilizadas):
Dado um dos esquemas de projeto padrão de cifras de bloco iteradas, é bastante fácil de construir um cifra de bloco que seja criptograficamente segura, simplesmente usando um grande número de rodadas. No entanto, isso fará com que a cifra se torne ineficiente. Assim, a eficiência é o mais importante critério de projeto adicional para cifras profissionais. Além disso, uma boa cifra de bloco é projetada para evitar ataques do canal lateral, como acessos à memória dependente da entrada. que pode vazar dados secretos através do estado de cache ou o tempo de execução. Além disso, a cifra deve ser concisa, para pequenas implementações de hardware e software. Finalmente, a cifra deve ser facilmente criptoanalisável, de tal forma que possa ser mostrado para que número de rodadas a cifra deve ser reduzida de modo a que os ataques criptográficos existentes funcionem e, por outro lado, que o número de rodadas reais seja grande o suficiente para proteger contra eles.
Um tipo importante de cifra de bloco iterada conhecido como uma rede de substituição-permutação (SPN) toma um bloco de purotexto e a chave como entradas, e aplica várias rodadas alternadas consistindo de uma fase de substituição seguida por uma fase de permutação -para produzir cada bloco de saída de cifrotexto.[8] A etapa de substituição não-linear mistura os bits da chave com aqueles do texto original, criando confusão de Shannon. Em seguida, a fase de permutação linear dissipa redundâncias, criando difusão.[9][10]
Uma caixa de substituição (S-caixa) substitui um pequeno bloco de bits de entrada com outro bloco de bits de saída. Esta substituição deve ser um-para-um, para garantir invertibilidade (daí decriptação). Uma S-caixa segura terá a propriedade de que a alteração de um bit de entrada mudará cerca de metade dos bits de saída, em média, exibindo o que é conhecido como o efeito avalanche, ou seja que tem a propriedade de que cada bit de saída dependerá de cada bit de entrada.[11]
Uma caixa de permutação (P-caixa) é uma permutação de todos os bits: leva as saídas de todas as S-caixas de uma rodada, permuta dos bits, e alimenta-os para as S-caixas da próxima rodada. Uma boa P-caixa tem a propriedade de que os bits de qualquer S-caixa de saída são distribuídos ao maior número de entradas de S-caixas quanto possível.
A cada rodada, a chave da rodada (obtida a partir da chave com algumas operações simples, por exemplo, usando S-caixas e P-caixas) é combinada usando-se alguma operação de grupos, tipicamente XOR.
A decriptação é feita simplesmente revertendo-se o processo (usando as inversas das S-caixas e P-caixas e aplicando as chaves de rodada em ordem inversa).
Em uma cifra de Feistel, o bloco de purotexto a ser encriptado é dividido em duas metades de tamanhos iguais. A função de rodada é aplicada a uma metade, utilizando uma subchave, e, em seguida, a saída é XORada com a outra metade. As duas metades são então trocadas.
Seja a função da rodada e sejam respectivamente as subchaves para as rodadas .
Então, a operação básica é a que se segue:
Divida o bloco de purotexto em duas metades iguais, (, )
Para cada rodada , calcule
.
Então o cifrotexto é .
A decriptação de um cifrotexto é realizada através da computação, para :
.
Então é o purotexto novamente.
Uma vantagem do modelo de Feistel comparado com uma rede de substituição-permutação é que a função de rodada não precisa ser inversível.[12]
O esquema de Lai-Massey oferece propriedades de segurança semelhantes aos da estrutura de Feistel. Ele também compartilha sua vantagem de que a função de rodada não tem que ser inversível. Outra semelhança é que também divide o bloco de entrada em duas partes iguais. No entanto, a função de rodada é aplicada à diferença entre os dois, e o resultado é, em seguida, adicionado a ambas as metades dos blocos.
Seja a função da rodada e uma função de meia rodada e sejam respectivamente as subchaves para as rodadas .
Então a operação básica é a que se segue:
Divida o bloco de purotexto em dois pedaços de tamanho igual, (, )
Para cada rodada , calcule
onde e
Então o cifrotexto é .
A decriptação de um cifrotexto é realizada pela computação de, para todo
onde e
Então é o purotexto novamente.
Operações
ARX add-rotate-xor
Muitas cifras de bloco modernas e hashes são algoritmos ARX - sua função de rodada envolve apenas três operações: adição modular, rotação com quantidades fixas de rotação, e XOR (ARX). Exemplos incluem Salsa20 e Speck e BLAKE. Muitos autores desenham uma rede ARX, uma espécie de diagrama de fluxo de dados, para ilustrar tal função de rodada[13].
Estas operações ARX são populares porque elas são relativamente rápidas e baratas em hardware e software, e também porque elas são executadas em tempo constante, e são, portanto, imunes a ataques de tempo. A técnica de criptoanálise rotacional tenta atacar essas funções de rodada.
Uma cifra de bloco por si só permite a encriptação de apenas um único bloco de dados do comprimento de bloco da cifra. Para uma mensagem de comprimento variável, os dados devem primeiro ser divididos em blocos de cifras separados. No caso mais simples, conhecido como o modo de electronic codebook (ECB), uma mensagem é a primeira divisão em blocos separados com tamanho do bloco da cifra (possivelmente estendendo o último bloco com bits de enchimento), e, em seguida, cada bloco é encriptado e decriptado de forma independente. No entanto, um método tão ingênuo geralmente é inseguro porque blocos de cifrotexto iguais sempre gerarão blocos de cifrotextos iguais (para a mesma chave), assim padrões na mensagem de purotexto tornam-se evidentes na saída do cifrotexto.
Para superar essa limitação, vários assim chamados modos de operação de cifra de bloco foram projetados[14] e especificados nas recomendações nacionais norte-americanas, como NIST 800-38A e BSI TR-02102 e as normas internacionais, tais como ISO/IEC 10116. O conceito geral é usar aleatorização dos dados de purotexto com base em um valor de entrada adicional, frequentemente chamado um vetor de inicialização, para criar o que é chamado de encriptação probabilística. Nas cifras de bloco encadeadas populares (modo CBC), para a encriptação ser segura, o vetor de inicialização passado, juntamente com a mensagem de purotexto, deve ser um valor aleatório ou pseudo-aleatório, o qual é adicionado via ou-exclusivo ao primeiro bloco de purotexto antes da encriptação. O bloco de cifrotexto resultante é então utilizado como o novo vetor de inicialização para o próximo bloco de purotexto. No modo de retroalimentação da cifra (CFB), que emula uma cifra de fluxo de auto-sincronização, o vetor de inicialização é encriptado em primeiro lugar e, em seguida, adicionado ao bloco de purotexto. O modo de retroalimentação de saída (OFB) encripta repetidamente o vetor de inicialização para criar uma chave de fluxo para a emulação de uma cifra de fluxo síncrona. O modo do contador mais recente (CTR) cria uma chave de fluxo semelhante, mas tem a vantagem de só necessitar de valores não (pseudo-)aleatórios como vetores de inicialização; a aleatoriedade necessária é derivada internamente usando o vetor de inicialização como um contador de bloco e encriptando este contador para cada bloco.
De um ponto de vista segurança-teórico, os modos de operação devem fornecer o que é conhecido como a segurança semântica. Informalmente, isso significa que, dada uma mensagem cifrada sob uma chave desconhecida, praticamente não se pode derivar qualquer informação a partir do cifrotexto (além do comprimento da mensagem) sobre o que se seria conhecido sem ver o cifrotexto. Demonstrou-se que todos os modos discutidos acima, com a exceção do modo ECB, proporcionam esta propriedade sob os chamados ataques de purotexto escolhido.
Alguns modos como o modo CBC só funcionam em blocos de purotexto completos. Estender o último bloco de uma mensagem com bits 0 é insuficiente, uma vez que não permite que um receptor de mensagens distinga facilmente que duas mensagens que difiram apenas na quantidade de bits de preenchimento. Mais importante ainda, uma solução tão simples dá origem a ataques muito eficientes de preenchimento oracular.[15] É, portanto, necessário um esquema de preenchimento adequado para estender o último bloco de purotexto para o tamanho do bloco da cifra. Enquanto muitos sistemas conhecidos descritos nos padrões e na literatura têm mostrado estar vulneráveis a ataques de preenchimento oracular,[15][16] uma solução que adiciona um bit 1 e, em seguida, estende o último bloco com bits 0, padronizou-se como "método de preenchimento 2 "na ISO/IEC 9797-1,[17] foi provado seguro contra esses ataques.[16]
Criptoanálise
Esta seção precisa de expansão. Você pode ajudar expandindo-a.
Ataques de força bruta
Devido à característica de uma cifra de bloco como uma função inversível, sua saída se torna distinguível de uma seqüência de saída verdadeiramente aleatória ao longo do tempo devido ao ataque do aniversário. Esta propriedade resulta na degradação da segurança da cifra de forma quadrática, e deve ser levada em conta quando se seleciona um tamanho de bloco. Há um preço a se pagar: já que blocos grandes podem resultar em tornar o algoritmo ineficiente para operar.[18] Cifras de blocos anteriores, como o DES, têm tipicamente selecionado um tamanho de bloco de 64 bits, enquanto os projetos mais recentes, como o AES suporta blocos de tamanho 128 bits ou mais, com algumas cifras que suportam uma variedade de diferentes tamanhos de blocos.[19]
Criptoanálise linear é uma forma de criptoanálise baseada em encontrar aproximações afins para a ação da cifra. Criptoanálise linear é dos ataques mais abrangentemente utilizados em cifras de bloco; o outro sendo criptoanálise diferencial.
A descoberta é atribuída a Mitsuru Matsui, que foi quem primeiro aplicou a técnica na cifra FEAL.
Criptoanálise Integral é um ataque criptoanalítico que é particularmente aplicável para bloquear cifras baseado em redes de substituição-permutação. Ao contrário de criptoanálise diferencial, que usa pares de purotextos escolhidos com uma diferença XOR fixa, criptoanálise integral usa conjuntos ou mesmo multiconjuntos de purotextos escolhidos dos quais parte é mantida constante e outra parte varia através de todas as possibilidades. Por exemplo, um ataque pode usar 256 purotextos escolhidos que têm todos, exceto oito de seus bits iguais, mas todos diferem nesses 8 bits. Tal conjunto tem necessariamente uma soma XOR de 0, e as somas XOR dos conjuntos correspondentes de mensagens cifradas fornecem informações sobre o funcionamento da cifra. Esse contraste entre as diferenças de pares de textos e as somas dos maiores conjuntos de textos inspirou o nome "criptoanálise integral", utilizando a terminologia do cálculo.
Outras técnicas
Além de criptoanálise diferencial e linear, há um catálogo crescente de ataques: criptoanálise diferencial truncada, criptoanálise diferencial parcial, criptoanálise integral, que engloba ataques quadráticos e integrais, ataques de slides, ataques bumerangue, o ataque XSL, criptoanálise diferencial impossível e ataques algébricos. Para um novo projeto de cifra de bloco ter qualquer credibilidade, ele deve demonstrar evidência de segurança contra ataques conhecidos.
Segurança demonstrável
Quando uma cifra de bloco é usada em um determinado modo de operação, o algoritmo resultante deve idealmente ser tão seguro quanto a própria cifra de bloco. O modo ECB (discutido acima) não tem enfaticamente esta propriedade: independentemente de quão seguro a cifra de bloco subjacente for, o modo ECB pode facilmente ser atacado. Por outro lado, o modo CBC pode ser provado seguro e sob o pressuposto de que a cifra de bloco subjacente é igualmente segura. Note, no entanto, que fazer declarações como essa requer definições matemáticas formais para o que significa para um algoritmo de encriptação ou uma cifra de bloco "estar seguro(a)". Esta seção descreve duas noções comuns para as propriedades que uma cifra de bloco deveria ter. Cada uma corresponde a um modelo matemático que pode ser usado para provar propriedades de algoritmos de nível mais elevado, tais como CBC.
Esta abordagem geral à criptografia --- provando que algoritmos de nível superior (tais como CBC) são seguros sob pressupostos explicitamente declarados em relação aos seus componentes (como uma cifra de bloco) --- é conhecida como segurança demonstrável.
Informalmente, uma cifra de bloco é segura no modelo padrão se um atacante não pode dizer a diferença entre a cifra de bloco (equipada com uma chave aleatória) e uma permutação aleatória.
Para ser um pouco mais preciso, seja E uma cifra de bloco de n bits. Nós imaginamos o seguinte jogo:
A pessoa executando o jogo joga uma moeda.
Se a moeda der cara, ele escolhe uma chave aleatória K e define a função f = EK.
Se der coroa, ele escolhe uma permutação aleatória PA sobre o conjunto de cadeias de n bits e define a função f = PA.
O atacante escolhe uma cadeia de n bits X, e a pessoa executando o jogo o diz o valor de f(X).
O passo 2 é repetido num total de q vezes (cada uma dessas iterações é chamada de consulta).
O atacante estipula como a moeda caiu. Se ele acertar, ele ganha o jogo.
O atacante, que podemos modelar como um algoritmo, é chamado de adversário. A função f (que o adversário é capaz de consultar) é chamada de oráculo.
Note que um adversário pode trivialmente garantir 50% de chance de ganhar simplesmente por adivinhar aleatoriamente (ou mesmo, por exemplo, sempre supondo "caras"). Portanto, suponha que PE(A) indique a probabilidade de que o adversário A ganha o jogo contra E, e defina a vantagem de A, tal como 2(PE(A) - 1/2). Com isso, se A escolhe aleatoriamente, a sua vantagem vai ser 0; Por outro lado, se A ganha sempre, a sua vantagem é 1. A cifra de bloco E é uma permutação pseudo-aleatória (PRP) se nenhum adversário tem uma vantagem significativamente maior do que 0, dadas as restrições sobre q e tempo de funcionamento do adversário especificado. Se no Passo 2 acima os adversários tiverem a opção de descobrir f−1(X) em vez de f(X) (mas ainda tem vantagens pequenas), então E é um PRP forte (SPRP). Um adversário é não-adaptativo se escolhe todos os valores q para X antes do início do jogo (ou seja, ele não utiliza qualquer informação recolhida a partir de consultas prévias para escolher cada X com o passar do jogo).
Estas definições têm se provado úteis para analisar vários modos de operação. Por exemplo, pode-se definir um jogo similar para medir a segurança de um algoritmo de encriptação baseado em cifra de bloco, e, em seguida, tentar mostrar (através de um argumento de redução) que a probabilidade de um adversário ganhar este novo jogo não é muito mais do PE(A) para algum A (a redução normalmente fornece limitantes para q e o tempo de execução de A). De forma equivalente, se PE(A) é pequena para todo A relevante, então nenhum atacante tem uma probabilidade significativa de ganhar o novo jogo. Isso formaliza a ideia de que o algoritmo de nível superior herda a segurança da cifra de bloco.
Avaliação prática
Cifras de bloco podem ser avaliadas de acordo com vários critérios na prática. Fatores comuns incluem:
Parâmetros-chave, tais como a sua dimensão e tamanho de bloco da chave, ambos que fornecem um limitante superior sobre a segurança da cifra.
O nível de segurança estimado, que é baseado na confiança adquirida no projeto da cifra de bloco após ela ter resistido a grandes esforços em criptoanálise com o passar do tempo, a solidez matemática do projeto, e a existência de ataques práticos ou certificacionais.
A complexidade da cifra e sua adequação para implementação em hardware ou software. Implementações de hardware podem medir a complexidade em termos de contagem de comporta ou o consumo de energia, que são parâmetros importantes para dispositivos com recursos limitados.
A performance da cifra em termos de vazão de processamento em várias plataformas, incluindo seus requisitos de memória.
O custo da cifra, que se refere aos requisitos de licença que podem ser aplicados devido a direitos de propriedade intelectual.
A flexibilidade da cifra, que inclui sua habilidade de suportar tamanhos de chave e de blocos variados.
Lúcifer é geralmente considerada como a primeira cifra de bloco civil, desenvolvida pela IBM na década de 1970 com base no trabalho feito por Horst Feistel. Uma versão revisada do algoritmo foi adotada como um Federal Information Processing Standard do governo dos Estados Unidos:. FIPS PUB 46 Data Encryption Standard (DES)[20]. Ele foi escolhido pelo NBS dos EUA após um convite público para a apresentação e algumas mudanças internas pela NBS (e, potencialmente, a NSA). DES foi lançada publicamente em 1976 e tem sido amplamente utilizada.
DES foi projetada para, entre outras coisas, resistir a um determinado ataque criptoanalítico conhecido pelo NSA e redescoberto pela IBM, embora desconhecido publicamente até ser redescoberta novamente e publicado por Eli Biham e Adi Shamir no final de 1980. A técnica é chamada de criptoanálise diferencial e continua a ser um dos poucos ataques gerais contra cifras de bloco; criptoanálise linear é outro, mas pode ter sido desconhecida até mesmo para a NSA, antes da sua publicação por Mitsuru Matsui. DES causou uma grande quantidade de outros trabalhos e publicações em criptografia e criptoanálise na comunidade aberta e que inspirou muitos projetos novos de cifra.
DES tem um tamanho de bloco de 64 bits e um tamanho de chave de 56 bits. Blocos de 64 bits tornaram-se comuns em projetos de cifra de bloco depois de DES. O comprimento da chave dependia de diversos fatores, incluindo a regulamentação do governo. Muitos observadores na década de 1970, comentaram que o comprimento da chave de 56 bits usado para DES foi muito curto. Conforme o tempo passava, sua inadequação tornou-se evidente, especialmente depois de uma máquina de propósito específico projetado para quebrar o DES foi demonstrada em 1998 pela Electronic Frontier Foundation. Uma extensão para DES, Triple DES, encripta triplamente cada bloco com duas chaves independentes (chave de 112 bits chave segurança de 80 bits) ou três chaves independentes (chave de 168 bits e segurança de 112 bits). Foi amplamente adotado como uma substituição. A partir de 2011, a versão de três-chaves ainda é considerada segura, embora o Instituto Nacional de Padrões e Tecnologia (NIST) não permita o uso da versão de duas chaves em novas aplicações, devido ao seu nível de segurança de 80 bits.
IDEA opera em blocos de 64 bits, usando uma chave de 128 bits, e consiste de uma série de oito transformações idênticas (uma rodada) e uma transformação da saída (a meia rodada). Os processos de encriptação e decriptação são semelhantes. IDEA deriva muito de sua segurança intercalando operações de diferentes grupos - adição e multiplicação modular, e ou-exclusivo bit a bit (XOR) - que são algebricamente "incompatíveis" em algum sentido.
Os projetistas analisaram IDEA para medir sua força contra a criptoanálise diferencial e concluiu que é imune sob determinados pressupostos. Não há pontos fracos lineares ou algébricos bem sucedidos que tenham sido relatados. Desde de 2012, o melhor ataque, que se aplica a todas as chaves pode quebrar a IDEA de 8.5 rodadas usando um ataque de bicliques estreitos cerca de quatro vezes mais rápido do que a força bruta.
RC5 é uma cifra de bloco projetada por Ronald Rivest em 1994, que, ao contrário de muitas outras cifras, tem um tamanho de bloco (32, 64 ou 128 bits), tamanho de chave (0-2040 bits) e número de rodadas (0 a 255) variáveis . A escolha original sugerida dos parâmetros foram um tamanho de bloco de 64 bits, uma chave de 128-bit e 12 rodadas.
Uma característica fundamental do RC5 é o uso de rotações dependentes de dados; um dos objetivos do RC5 foi para incentivar o estudo e avaliação de tais operações como uma primitiva criptográfica. RC5 também é composto por um número de adições modulares e XORs. A estrutura geral do algoritmo é semelhante a uma rede de Feistel. As rotinas de encriptação e decriptação podem ser especificadas em algumas linhas de código. O escalonamento da chave, no entanto, é mais complexo, expandindo a chave usando uma função essencialmente unidirecional com as expansões binárias de ambos e e a proporção áurea como fontes de "aleatoriedade". A simplicidade tentadora do algoritmo em conjunto com a novidade das rotações dependente de dados fez RC5 um objeto atraente de estudo para criptoanalistas.
RC5 com 12 rodadas (com blocos de 64 bits) é vulnerável ao ataque diferencial usando 244 purotextos escolhidos. De 18 a 20 rodadas são sugeridas como proteção suficiente.
DES foi substituído como Padrão Federal dos Estados Unidos pela AES, aprovada pelo NIST em 2001 depois de um concurso público de 5 anos. A cifra foi desenvolvida por dois criptógrafos belgas, Joan Daemen e Vincent Rijmen, e apresentou sob o nome Rijndael.
AES tem um tamanho de bloco fixo de 128 bits e um tamanho de chave de 128, 192 ou 256 bits, enquanto que Rijndael pode ser especificado com bloco e tamanhos de chave em qualquer múltiplo de 32 bits, com um mínimo de 128 bits. O tamanho de bloco tem um máximo de 256 bits, mas o tamanho da chave não tem qualquer máximo teórico. AES opera em uma matriz 4 × 4 de bytes, denominada de estado (versões de Rijndael com um tamanho de bloco maior têm colunas adicionais no estado).
Blowfish é uma cifra de bloco, projetada em 1993 por Bruce Schneier e incluída em um grande número de conjuntos de cifras e produtos de encriptação. Blowfish tem um tamanho de bloco de 64 bits e um comprimento de chave variável de 1 bit de até 448 bits.[21] É um cifra de 16 rodadas de Feistel e utiliza grandes S-caixas dependentes da chave. As características notáveis do projeto incluem as S-caixas dependentes de chaves e um escalonamento de chave altamente complexo.
Schneier concebeu Blowfish como um algoritmo de finalidade geral, concebido como uma alternativa para o envelhecido DES e livre dos problemas e limitações associadas com outros algoritmos. Na época em que Blowfish foi lançado, muitos outros projetos eram proprietários, gravadas por patentes ou eram segredos comerciais/governamentais. Schneier afirmou que, "Blowfish é não protegido por patente, e permanecerá assim em todos os países. O algoritmo fica colocado no domínio público, e pode ser usado livremente por qualquer pessoa." Blowfish fornece uma taxa de encriptação boa em software e não há até agora uma criptoanálise eficaz da versão de rodada completa.
Generalizações
Cifras de bloco ajustáveis
M. Liskov, R. Rivest, e D. Wagner descreveram uma versão generalizada de cifras de bloco chamadas cifras de bloco "ajustáveis"[22]. Uma cifra de bloco ajustável aceita uma segunda entrada chamada de ajuste juntamente com o seu habitual purotexto ou entrada de cifrotexto. O ajuste, juntamente com a chave, seleciona a permutação calculada pela cifra. Se a mudança de ajustes for suficientemente leve (em comparação com uma operação de configuração chave, geralmente bastante cara), então alguns novos modos de operação interessantes se tornam possíveis. O artigo teoria de encriptação de disco descreve alguns desses modos.
Cifras de bloco trabalham tradicionalmente ao longo de um alfabeto binário. Ou seja, tanto a entrada quanto a saída são cadeias binárias, consistindo em n zeros e uns. Em algumas situações, no entanto, pode-se desejar ter uma cifra de bloco que funciona através de algum outro alfabeto; por exemplo, a encriptação de números de cartão de crédito 16 dígitos, de tal maneira que o cifrotexto seja também uma série de 16 dígitos pode facilitar a adição de uma camada de encriptação para o software de legado. Este é um exemplo de encriptação preservadora de formato. De modo mais geral, a encriptação preservadora de formato requer uma permutação chaveada em alguma linguagem finita. Isso faz de esquemas de encriptação preservadora de formato uma generalização natural de cifras de bloco ajustáveis. Em contraste, os esquemas de encriptação tradicionais, tais como o CBC, não são permutações porque o mesmo purotexto pode encriptar para múltiplos cifrotextos diferentes, mesmo quando se utiliza uma chave fixa.
Relação com outras primitivas criptográficas
Cifras de blocos podem ser usadas para construir outras primitivas criptográficas, tais como as que estão abaixo. Para estas outras primitivas serem criptograficamente seguras, elas têm de ser cuidadosamente construídas:
Cifras de fluxo podem ser construídas a partir de cifras de bloco. Veja função de compressão unilateral para descrições de tais métodos. Os métodos são semelhantes aos modos de operação de cifra de bloco normalmente usados para encriptação.
Funções hash criptográficas podem ser construídas a partir de cifras de bloco.[23] Veja função de compressão unidirecional para descrições de tais métodos. Os métodos são semelhantes aos modos de operação de cifra de bloco normalmente usados para encriptação.
Geradores de números pseudoaleatórios criptograficamente seguros (CSPRNGs) podem ser construídos a partir de cifras de bloco.[24]
Permutações pseudoaleatórias seguras de conjuntos de tamanho finito arbitrários podem ser construídas com cifras de bloco. Veja Encriptação preservadora de formato.
Códigos de autenticação de mensagem (MACs) são normalmente construídos a partir de cifras de bloco. Ex: CBC-MAC, OMAC, PMAC.
Encriptação autenticada também é construída a partir de cifras de bloco. Ex: CCM, EAX, GCM e OCB.
Assim como cifras de bloco podem ser usadas na construção de funções de dispersão, o inverso também é verdade. Ex: SHACAL, BEAR e LION.
↑ abSerge Vaudenay (2002). «Security Flaws Induced by CBC Padding Applications to SSL, IPSEC, WTLS...». Springer Verlag. Advances in Cryptology – EUROCRYPT 2002, Proc. International Conference on the Theory and Applications of Cryptographic Techniques (2332): 534–545
↑ abKenneth G. Paterson; Gaven J. Watson (2008). «Immunising CBC Mode Against Padding Oracle Attacks: A Formal Security Treatment». Springer Verlag. Security and Cryptography for Networks – SCN 2008, Lecture Notes in Computer Science (5229): 340–357
Tuinejeتوينيخي (بالإسبانية: Tuineje)[1] مقاطعة لاس بالماس - منطقة جزر الكناري (إسبانيا) توينيخي توينيخي موقع توينيخي في جزيرة فويرتيفنتورا الواقعة في مقاطعة لاس بالماس (إسبانيا) تقسيم إداري البلد إسبانيا[2] المنطقة جزر الكناري المسؤولون المقاطعة لاس بالماس الجزي
King of Imereti Solomon IKing of Imereti (more...) Reign1752–1784PredecessorAlexander V of ImeretiTeimuraz of ImeretiSuccessorTeimuraz of ImeretiDavid II of ImeretiBorn1735Died1784 (aged 48–49)DynastyBagrationi dynastyFatherAlexander V of ImeretiMotherTamar AbashidzeReligionGeorgian Orthodox ChurchKhelrtva You can help expand this article with text translated from the corresponding article in Georgian. (September 2012) Click [show] for important translation instructions. Vie...
Sidi Tahar al-TlemcenîAutres informationsMaître Ahmed Tijanimodifier - modifier le code - modifier Wikidata Vue extérieure du mausolée. Cour intérieure du mausolée. Tombe de Sidi Tahar Bou Tayeb Le cheikh Sidi Tahar Bou Tayeb (Bouteïba) est un maître soufi originaire de Tlemcen, mort le 3 juin 1878[1]. Il fut le compagnon et disciple direct de Ahmed Tijani[2],[3], fondateur de la confrérie Tijaniyya. Biographie En raison de ses positions anti-françaises et de la révolte menée par ...
Este artículo o sección tiene referencias, pero necesita más para complementar su verificabilidad.Este aviso fue puesto el 6 de octubre de 2021. Alegoría de la Constitución de 1857, muestra a una mujer mexicana sujetando la constitución liberal de 1857 (cuadro de Petronilo Monroy, 1869) Las Leyes de Reforma fueron un conjunto de leyes promulgadas en México entre 1855 y 1863, durante los gobiernos de Juan Álvarez, Ignacio Comonfort y Benito Juárez. El objetivo principal de estas leyes...
Artikel ini sebatang kara, artinya tidak ada artikel lain yang memiliki pranala balik ke halaman ini.Bantulah menambah pranala ke artikel ini dari artikel yang berhubungan atau coba peralatan pencari pranala.Tag ini diberikan pada Maret 2023. Masalah bahasa keagamaan adalah logika kausalitas atau melogikakan Tuhan sebagai jawaban dari berbagai pertanyaan. Masalah tersebut bukan hanya merupakan sebuah masalah filsafat, tapi juga psikologi dan bahkan ilmu pengetahuan. Menurut August Comte (1798...
Style of jazz performance Swing time redirects here. For other uses, see Swing Time. Straight versus swung[a]Straight: first note length⁄second note length=1⁄1Soft swing: >1⁄1 to <2⁄1Triplet swing: 2⁄1Hard swing: >2⁄1 to <3⁄1Dotted hard swing: 3⁄1 Straight (•) versus triplet swing (◦) eighth notes in the metric hierarchy In music, the term swing has two main uses. Colloquially, it is used to describe the propulsive qualit...
2023 South Korean reality competition show Boys PlanetPromotional posterGenreReality competitionCreated byMnetDirected by Kim Shin-young[1] Go Jeong-gyeong[1] Presented by Hwang Min-hyun (Ep. 1, 3–4, 12) Sunmi (Ep. 2) Yeo Jin-goo (Ep. 5 + special) Lee Min-hyuk (Ep. 6–8 + special) Key (Ep. 8–10) Jo Kwon (Ep. 10) Jeon Somi (Ep. 11 + special) Kim Jae-hwan (Ep. 11) Music byPark Seung-seonKim Jong-wooOpening themeHere I Amby Boys PlanetEnding themeNot Aloneby Boys PlanetCount...
American musician (born 1977) Mike ShinodaShinoda performing with Linkin Park in 2014BornMichael Kenji Shinoda (1977-02-11) February 11, 1977 (age 46)Panorama City, Los Angeles, California, U.S.Alma materArt Center College of Design (B.A.)Occupations Musician rapper singer songwriter record producer Spouse Anna Hillinger (m. 2003)Children3[1]Musical careerOriginAgoura Hills, California, U.S.Genres Alternative rock[2] rap rock[3]...
American indie folk band This article is about the band. For the album, see Bon Iver (album). Bon IverBon Iver performing in Stockholm, Sweden in 2011Background informationOriginEau Claire, Wisconsin, U.S.Genres Indie folk[1][2] indie pop[3] indie rock[4] experimental pop[5] soft rock[6] folktronica[1] Years active2006–presentLabels Jagjaguwar 4AD Members Justin Vernon Sean Carey Matthew McCaughan Michael Lewis Andrew Fitzpatrick Jenn ...
This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Hoppers Crossing, Victoria – news · newspapers · books · scholar · JSTOR (January 2012) (Learn how and when to remove this template message) Suburb of Melbourne, Victoria, AustraliaHoppers CrossingMelbourne, VictoriaCanola fields and radio towers in Hopper...
Egyptologist and professor of Classical Studies Sally L. D. KataryBorn(1946-10-11)October 11, 1946DiedAugust 6, 2016(2016-08-06) (aged 69)Sudbury, OntarioNationalityCanadianAlma materUniversity of Pennsylvania, University of TorontoOccupation(s)professor, EgyptologistYears active1976-2013EmployerThorneloe University Sally Katary (11 October 1946 – 6 August 2016) was a university professor and Egyptologist, known for her work on the Wilbour Papyrus, land tenure in the Ramessid...
Twarz dziecka z zespołem Kabuki[1] Dziewczynka z rozpoznaniem zespołu Kabuki[1] Anatomia prawego przedsionka serca u pacjenta z zespołem Kabuki. A. Poszerzona zatoka wieńcowa. B. Dysplastyczna zastawka trójdzielna. C. Krótkie i grube struny ścięgniste. D. Przerost prawej komory (grubość ściany prawej komory 8 mm). E. Prowadnik[2] Zespół Kabuki typu 2 (zespół makijażu Kabuki, zespół Niikawy-Kurokiego, ang. Kabuki syndrome, Kabuki makeup syndrome, KMS, Niikawa-Kuroki syndrome)...
Mitsubishi Carisma Общие данные Производитель NedCar Годы производства 1995—2003 Дизайн и конструкция Тип кузова 5‑дв. хетчбэк (5‑мест.)4‑дв. седан (5‑мест.) Компоновка переднемоторная, переднеприводная Колёсная формула 4 × 2 Двигатель 4G13 1,3 л 82 л. с. I4 4G92 1.,6 л 103 л. с.I44G93 1,8 л 11...
El código de área 908 es un código de área del norte del estado de Nueva Jersey. El código de área cubre las porciones centrales del norte del estado. Incluye comunidades en Condado de Unión, Condado de Somerset, partes del norte de Condado de Middlesex, Condado de Hunterdon, Condado de Warren, y Condado de Morris así como algunos teléfonos celulares en el Condado de Monmouth y Condados de Océano. El código de área 908 estuvo creado cuándo el código de Área 201 estaba dividido,...
This article is about the women's football club. For the men's football club, see Brisbane Roar FC. Football clubBrisbane Roar WomenFull nameBrisbane Roar Women Football ClubFounded2008; 15 years ago (2008)GroundBallymore StadiumCapacity8,000ChairmanKaz PataftaManagerAlex SmithLeagueA-League Women2022–239th of 11 Home colours Away colours Current season Brisbane Roar Women Football Club, formerly known Queensland Roar Women, is an Australian professional women's soccer clu...
American football subscription television Television channel NFL Sunday TicketBroadcast area United States (residential via YouTube TV, commercial via EverPass Media) Canada (via DAZN) Mexico and Central America (Sky México) Caribbean South America ProgrammingLanguage(s)EnglishOwnershipOwnerNational Football LeagueHistoryLaunchedSeptember 4, 1994 (1994-09-04)LinksWebsiteOfficial website NFL Sunday Ticket is an out-of-market sports package that broadcasts National Football Leag...
For the community on the lake, see Topaz Lake, Nevada. Reservoir in Nevada / Mono County, CaliforniaTopaz Lakefrom the Nevada sideTopaz LakeShow map of NevadaTopaz LakeShow map of CaliforniaTopaz LakeShow map of the United StatesLocationDouglas County, Nevada / Mono County, CaliforniaCoordinates38°41′N 119°32′W / 38.68°N 119.54°W / 38.68; -119.54TypereservoirPrimary inflowsWest Walker RiverPrimary outflowsWest Walker RiverBasin countriesUnited StatesMax. l...
Metro line in Zhengzhou, China Line 12 12 A train of Zhengzhou Metro Line 12OverviewStatusUnder constructionLocaleZhengzhou, Henan Province, ChinaTerminiLongzihu DongLianghuServiceTypeRapid transitSystemZhengzhou MetroHistoryOpenedDecember 2023 (Planned)TechnicalLine length17.036 km (10.586 mi)[1]Number of tracks2CharacterUndergroundTrack gauge1,435 mm (4 ft 8+1⁄2 in) Line 12 of the Zhengzhou Metro (Chinese: 郑州地铁12号线) is a ...
Questa voce sull'argomento calciatori andorrani è solo un abbozzo. Contribuisci a migliorarla secondo le convenzioni di Wikipedia. Segui i suggerimenti del progetto di riferimento. Jordi Rubio Nazionalità Andorra Calcio Ruolo Difensore Squadra Engordany Carriera Squadre di club1 2006-2008 FC Andorra? (?)2008-2020 UE Santa Coloma103+ (29+)[1]2020-2022 Inter Escaldes31 (0)[2]2022- Engordany9 (0) Nazionale 2006- Andorra67 (0) 1 I due numeri ...