Modo de operação de cifra de bloco

Criptografia autenticada com dados adicionais (AEAD) modosEditar

Artigo principal: Criptografia autenticada

Um número de modos de operação foram projetados para combinar sigilo e autenticação em um único primitivo criptográfico. Exemplos de tais modos são o encadeamento de blocos criptográficos estendido (XCBC), encadeamento de blocos criptográficos com reconhecimento de integridade (IACBC), modo paralelo com reconhecimento de integridade (IAPM), OCB, EAX, CWC, CCM, e GCM. Os modos de criptografia autenticada são classificados como modos de passagem única ou de passagem dupla. Alguns algoritmos de criptografia de passa única autenticada, como o modo OCB, são codificados por patentes, enquanto outros foram especificamente projetados e lançados de forma a evitar tal codificação.

Além disso, alguns modos também permitem a autenticação de dados associados não codificados, e estes são chamados de esquemas AEAD (criptografia autenticada com dados associados). Por exemplo, o modo EAX é um esquema AEAD de dupla passagem, enquanto o modo OCB é de simples passagem.

Galois/counter (GCM)Editar

GCM

Galois/counter

Encriptação paralela

Sim

Acesso de desencriptação paralela

Sim

Acesso de leitura aleatório

Sim

Galois/counter mode (GCM) combina o poçoconhecido modo de encriptação do contador com o novo modo de autenticação Galois. A característica-chave é a facilidade de computação paralela da multiplicação de campos Galois usados para autenticação. Esta característica permite uma maior taxa de transferência do que os algoritmos de encriptação.

GCM é definida para cifras de bloco com um tamanho de bloco de 128 bits. O código de autenticação de mensagem Galois (GMAC) é uma variante apenas de autenticação do GCM que pode formar um código de autenticação de mensagem incremental. Tanto o GCM quanto o GMAC podem aceitar vetores de inicialização de comprimento arbitrário. O GCM pode tirar total proveito do processamento paralelo e a implementação do GCM pode fazer uso eficiente de um pipeline de instruções ou de um pipeline de hardware. O modo de operação do CBC incorre em barracas de pipeline que prejudicam sua eficiência e desempenho.

Como no CTR, os blocos são numerados sequencialmente, e então esse número de bloco é combinado com um IV e criptografado com uma cifra de bloco E, geralmente AES. O resultado desta encriptação é então XORed com o texto em quadrícula para produzir o texto em cifra. Como todos os modos de contagem, esta é essencialmente uma cifra de fluxo, e por isso é essencial que um IV diferente seja usado para cada fluxo que é criptografado.

Os blocos de texto criptografado são considerados coeficientes de um polinômio que é então avaliado em um ponto H dependente de chave, usando aritmética de campo finito. O resultado é então encriptado, produzindo uma etiqueta de autenticação que pode ser usada para verificar a integridade dos dados. O texto encriptado contém então o IV, ciphertext e a tag de autenticação.

Contador com código de autenticação de mensagem encadeada em bloco de cifras (CCM)Editar

Contador com código de autenticação de mensagem encadeada em bloco de cifras (contador com CBC-MAC; CCM) é um algoritmo de encriptação autenticado concebido para fornecer autenticação e confidencialidade. O modo CCM só é definido para cifras de bloco com um comprimento de bloco de 128 bits.

Vetor de inicialização sintética (SIV)Editar

Vetor de inicialização sintética (SIV) é um modo de cifra de bloco não resistente ao uso de teclados.

SIV sintetiza um IV interno usando a função S2V pseudorandom. S2V é um hash chaveado é baseado no CMAC, e a entrada para a função é:

  • Dados autenticados adicionais (zero, um ou muitos campos AAD são suportados)
  • Plaintext
  • Chave de autenticação (K1).

SIV criptografa a saída S2V e o texto plaintetizado usando AES-CTR, digitado com a chave de criptografia (K2).

SIV pode suportar criptografia externa autenticada não baseada em ce, caso em que um dos campos de dados autenticados é utilizado para este propósito. O RFC5297 especifica que para fins de interoperabilidade o último campo de dados autenticado deve ser usado como um campo de dados externo não-realizado.

Due ao uso de duas chaves, a chave de autenticação K1 e a chave de criptografia K2, esquemas de nomes para variantes SIV AEAD podem levar a alguma confusão; por exemplo AEAD_AES_SIV_CMAC_256 refere-se ao AES-SIV com duas chaves AES-128 e não AES-256.

AES-GCM-SIVEdit

AES-GCM-SIV é um modo de operação para o Advanced Encryption Standard que fornece um desempenho semelhante ao modo Galois/counter, bem como resistência ao uso indevido no caso da reutilização de um nonce criptográfico. A construção é definida no RFC 8452.

AES-GCM-SIV sintetiza o IV interno. Ele deriva um hash dos dados autenticados adicionais e do texto em placas usando a função de hash POLYVAL Galois. O hash é então encriptado com uma chave AES, e usado como tag de autenticação e vector de inicialização AES-CTR.

AES-GCM-SIV é uma melhoria em relação ao algoritmo de nome muito semelhante GCM-SIV, com algumas alterações muito pequenas (por exemplo como o AES-CTR é inicializado), mas que traz benefícios práticos à sua segurança “Esta adição permite criptografar até 250 mensagens com a mesma chave, em comparação com a limitação significativa de apenas 232 mensagens que eram permitidas com o GCM-SIV”

Modos somente de confidencialidadeEditar

Muitos modos de operação foram definidos. Alguns destes são descritos abaixo. O propósito dos modos de cifra é mascarar padrões que existem em dados criptografados, como ilustrado na descrição da fraqueza do ECB.

Diferentes modos de cifra mascaram padrões por saídas em cascata do bloco de cifra ou outras variáveis globalmente determinísticas para o bloco de cifra subsequente. As entradas dos modos listados estão resumidas na tabela a seguir:

Resumo dos modos
Modo Fórmulas Texto de cifra
Codebook electrónico (BCE) Yi = F(PlainTexti, Chave) Yi
Cadeamento de blocos de cifras (CBC) Yi = PlainTexti XOR Ciphertexti-1 F(Y, Chave); Ciphertext0 = IV
Propagating CBC (PCBC) Yi = PlainTexti XOR (Ciphertexti-1 XOR PlainTexti-1) F(Y, Chave); Ciphertext0 = IV
Cipher feedback (CFB) Yi = Ciphertexti-1 Plaintext XOR F(Y, Chave); Ciphertext0 = IV
Reacção de saída (OFB) Yi = F(Yi-1, Chave); Y0 = F(IV, Chave) Plaintext XOR Yi
Contra (CTR) Yi = F(IV + g(i), Chave); IV = token() Plaintext XOR Yi

Nota: g(i) é qualquer função determinística, muitas vezes a função de identidade.

Livro de código electrónico (BCE)Editar

ECB

>

Livro de código electrónico

>

Palelacionável de encriptação

Sim

>

Palelacionável de desencriptação

Sim

Acesso de leitura aleatório

Sim

O mais simples dos modos de encriptação é o modo de livro de código electrónico (ECB) (nomeado depois dos livros de código físicos convencionais). A mensagem é dividida em blocos, e cada bloco é encriptado separadamente.

A desvantagem deste método é a falta de difusão. Como o BCE encripta blocos de texto em texto em cifra idênticos, ele não esconde bem os padrões de dados.BCE não é recomendado para uso em protocolos criptográficos.

Um exemplo surpreendente do grau em que o BCE pode deixar padrões de dados em texto em cifra pode ser visto quando o modo BCE é usado para encriptar uma imagem bitmap que usa grandes áreas de cor uniforme. Enquanto a cor de cada pixel individual é encriptada, a imagem global pode ainda ser discernida, uma vez que o padrão de pixels de cor idêntica no original permanece na versão encriptada.

Imagem original

Criptografada usando o modo ECB

Modos que não o ECB resultam em pseudo-aleatória

A terceira imagem é como a imagem pode aparecer criptografada com CBC, CTR ou qualquer um dos outros modos mais seguros – indistinguíveis de ruído aleatório. Note que a aparência aleatória da terceira imagem não garante que a imagem tenha sido criptografada com segurança; muitos tipos de criptografia insegura foram desenvolvidos, o que produziria uma saída com a mesma aparência “aleatória”.

ECB mode também pode tornar os protocolos sem proteção de integridade ainda mais suscetíveis a ataques de replay, já que cada bloco é descriptografado exatamente da mesma maneira.

Cadeamento de blocos de cifras (CBC)Editar

CBC

Cadeamento de blocos de cifras

>

A encriptação paralela

Não

>

Acesso de leitura aleatório

Sim

Acesso de leitura aleatório

Sim

Ehrsam, Meyer, Smith e Tuchman inventaram o modo de operação de encadeamento de blocos criptográficos (CBC) em 1976. No modo CBC, cada bloco de texto em quadrícula é XORed com o bloco de texto em cifra anterior antes de ser criptografado. Desta forma, cada bloco de texto criptografado depende de todos os blocos de texto em quadrícula processados até aquele ponto. Para que cada mensagem seja única, deve ser usado um vetor de inicialização no primeiro bloco.

Se o primeiro bloco tiver índice 1, a fórmula matemática para encriptação CBC é

C i = E K ( P i ⊕ C i – 1 ) , {\displaystyle C_{i}=E_{K}(P_{i}\oplus C_{i-1}),}

C 0 = I V , {\displaystyle C_{0}=IV,}

enquanto que a fórmula matemática para decifração CBC é

P i = D K ( C i ) ⊕ C i – 1 , {\displaystyle P_{i}=D_{K}(C_{i})\oplus C_{i-1},}

C 0 = I V . C_{\i}=IV.}

ExampleEdit

CBC tem sido o modo de operação mais comumente usado. Seus principais inconvenientes são que a criptografia é sequencial (ou seja, não pode ser paralela), e que a mensagem deve ser acolchoada a um múltiplo do tamanho do bloco de cifra. Uma maneira de lidar com este último problema é através do método conhecido como roubo de texto criptografado. Note que uma mudança de um bit em um vetor de plaintextos ou inicialização (IV) afeta todos os blocos de texto criptografado seguintes.

Decifrar com o IV incorreto faz com que o primeiro bloco de plaintextos seja corrompido, mas os blocos de plaintextos subsequentes serão corretos. Isto porque cada bloco é XORed com o texto cifrado do bloco anterior, e não com o texto em quadrícula, portanto não é necessário decifrar o bloco anterior antes de usá-lo como o IV para a decriptação do atual. Isto significa que um bloco de texto plano pode ser recuperado de dois blocos adjacentes de texto criptografado. Como consequência, a decifração pode ser paralela. Note que uma mudança de um bit no texto criptografado causa a corrupção completa do bloco correspondente de texto em quadrado, e inverte o bit correspondente no bloco seguinte de texto em quadrado, mas o resto dos blocos permanece intacto. Esta peculiaridade é explorada em diferentes ataques de oráculo de preenchimento, tais como POODLE.

Vetores de inicialização explícitos tiram proveito desta propriedade ao preender um único bloco aleatório ao texto em quadrícula. A encriptação é feita normalmente, exceto que o IV não precisa ser comunicado à rotina de decriptação. Qualquer que seja o uso da desencriptação IV, apenas o bloco aleatório é “corrompido”. Pode ser descriptografado com segurança e o resto da descriptografia é o texto original em forma de placa.

Propagação de encadeamento de blocos de cifras (PCBC)Editar

PCBC

Propagação de encadeamento de blocos de cifras

Encadeamento de encadeamento de blocos de cifras

Não

>

Acesso de leitura aleatório

>

Não

>

Acesso de leitura aleatório

>

Não

>

A encadeamento do bloco de cifras de propagação ou da cifra de texto plainável-O modo de encadeamento de blocos foi projetado para causar pequenas alterações no texto cifrado para se propagar indefinidamente quando decifrado, bem como ao encriptar. No modo PCBC, cada bloco de texto em plaqueta é XORed com o bloco de texto em plaqueta anterior e o bloco de texto em cifra anterior antes de ser criptografado. Tal como no modo CBC, no primeiro bloco é utilizado um vector de inicialização.

Algoritmos de encriptação e de decifração são os seguintes:

C i = E K ( P i ⊕ P i – 1 ⊕ C i – 1 ) , P 0 ⊕ C 0 = I V , {\i}=E_{K}(P_{i}\i+ P_{i-1}\i+ C_{i-1}),P_{0}\oplus C_{0}=IV,}

P i = D K ( C i ) ⊕ P i – 1 ⊕ C i – 1 , P 0 ⊕ C 0 = I V . P_{\i}=D_{K}(C_{i})\oplus P_{i-1}\oplus C_{i-1},P_{0}\oplus C_{0}=IV.}

PCBC é usado em Kerberos v4 e WASTE, mais notadamente, mas de outra forma não é comum. Em uma mensagem criptografada em modo PCBC, se dois blocos de texto cifrado adjacentes são trocados, isso não afeta a decodificação dos blocos subseqüentes. Por este motivo, o PCBC não é utilizado no Kerberos v5.

Comentários da cifra (CFB)Editar

Completobloco CFBEdit

CFB

Retroalimentação de cifra

Paralisável de encriptação

No

Acesso de leitura aleatório

Sim

Acesso de leitura aleatório

Sim

O modo de feedback de cifra (CFB), na sua forma mais simples é usar toda a saída da cifra do bloco. Nesta variação, ela é muito semelhante ao CBC, transforma uma cifra de bloco em uma cifra de fluxo auto-sincronizadora. A decriptografia CFB nesta variação é quase idêntica à encriptação CBC executada em reverso:

C i = { IV , i = 0 E K ( C i – 1 ) ⊕ P i , caso contrário P i = E K ( C i – 1 ) ⊕ C i , {\i}displaystyle {\i}C_{\i}&={\i}begin{cases}{\i}{\i}{\i1}&i=0\\E_{K}(C_{i-1})\oplus P_{i},&{\text{otherwise}}\end{cases}}\\P_{i}&=E_{K}(C_{i-1})\oplus C_{i},\end{aligned}}}

CFB-1, CFB-8, CFB-64, CFB-128, etc. Editar

NIST SP800-38A define o CFB com uma largura de bit. O modo CFB também requer um parâmetro inteiro, denotado s, de modo que 1 ≤ s ≤ b. Na especificação do modo CFB abaixo, cada segmento de texto plano (Pj) e segmento de texto criptografado (Cj) consiste em s bits. O valor de s é às vezes incorporado no nome do modo, por exemplo, o modo CFB de 1 bit, o modo CFB de 8 bits, o modo CFB de 64 bits ou o modo CFB de 128 bits.

Estes modos truncarão a saída da cifra do bloco subjacente.

I 0 = IV . {\displaystyle I_{0}={\text{IV}}.}

I i = ( I i i – 1 ≪ s ) + C i ) mod 2 b , {\i}={\i1}{\i1}{\i1}{\i-1}displaystyle I_{\i}={\i1}(I_{i-1}ll s)+C_{\i}{\i}{\i}{\i}{\i}^{b},}

C i = MSB s ( E K ( I i – 1 ) ) ⊕ P i , {\i} {\i}displaystyle C_{\i}==operatorname {MSB} P_BR (E_K}(I_{\i-1}){\i1}(I_{\i-1}){\i}oplus P_BR,}

P i = MSB s ( E K ( I i – 1 ) ) ⊕ C i , {\i} {\i}displaystyle P_{\i}==operatorname {MSB} O modo CFB-1 é considerado auto sincronizador e resistente à perda de texto criptografado; “Quando o modo CFB de 1 bit é usado, então a sincronização é automaticamente restaurada b+1 posições após o bit inserido ou excluído. Para outros valores de s no modo CFB, e para os outros modos de confidencialidade nesta recomendação, a sincronização deve ser restaurada externamente”. (NIST SP800-38A). Ou seja, perda de 1 bit em uma cifra de bloco de 128 bits como AES irá renderizar 129 bits inválidos antes de emitir bits válidos.

CFB também pode auto sincronizar em alguns casos especiais que não os especificados. Por exemplo, uma mudança de um bit no CFB-128 com uma cifra de bloco subjacente de 128 bits, irá re-sincronizar após dois blocos. (Entretanto, o CFB-128 etc não irá lidar graciosamente com a perda de bit; uma perda de um bit fará com que o decriptor perca o alinhamento com o encriptador)

CFB comparado com outros modosEditar

Modo CBC, alterações no texto da placa propagam-se para sempre no texto da cifra, e a encriptação não pode ser paralelizada. Também como CBC, a decodificação pode ser paralelizada.

CFB, OFB e CTR compartilham duas vantagens sobre o modo CBC: a cifra do bloco só é usada na direção de criptografia, e a mensagem não precisa ser acolchoada para um múltiplo do tamanho do bloco de cifra (embora o roubo de texto criptografado também possa ser usado no modo CBC para tornar desnecessário o acolchoamento).

Feedback de saída (OFB)Editar

OFB

Feedback de saída

Encriptação paralela

No

Decriptação paralelizável

No

Acesso de leitura aleatório

No

O modo de feedback de saída (OFB) transforma uma cifra de bloco em uma cifra de fluxo síncrono. Ele gera blocos de fluxo de chaves, que são então XORed com os blocos de texto plano para obter o texto criptografado. Tal como acontece com outras cifras de fluxo, ao inverter um bit no texto criptografado, produz-se um bit invertido no texto plaintexto no mesmo local. Esta propriedade permite que muitos códigos que corrigem erros funcionem normalmente mesmo quando aplicados antes da encriptação.

Por causa da simetria da operação XOR, a encriptação e a desencriptação são exactamente as mesmas:

C j = P j ⊕ O j , {\displaystyle C_{j}=P_{j}\oplus O_{j},}

P j = C j ⊕ O j , {\displaystyle P_{j}=C_{j}\oplus O_{j},}

O j = E K ( I j ) , {\displaystyle O_{j}=E_{K}(I_{j}),}

I j = O j – 1 , {\displaystyle I_{j}=O_{j-1},}

I 0 = IV . {\displaystyle I_{0}={\text{IV}}.}

A operação de cada bloco de feedback de saída depende de todas as anteriores, e por isso não pode ser realizada em paralelo. No entanto, como o texto plano ou texto cifrado só é utilizado para o XOR final, as operações de cifra de bloco podem ser realizadas com antecedência, permitindo que o passo final seja realizado em paralelo uma vez que o texto plano ou texto cifrado esteja disponível.

É possível obter um keystream de modo OFB usando o modo CBC com uma seqüência constante de zeros como entrada. Isto pode ser útil, pois permite o uso de implementações rápidas de hardware do modo CBC para criptografia do modo OFB.

Usar o modo OFB com um bloco parcial como feedback como o modo CFB reduz o comprimento médio do ciclo por um fator de 232 ou mais. Um modelo matemático proposto por Davies e Parkin e substanciado por resultados experimentais mostrou que somente com realimentação total é possível alcançar uma duração média de ciclo próxima ao máximo possível. Por esta razão, o suporte para o feedback truncado foi removido da especificação do OFB.

Contador (CTR)Editar

CTR

>

Contador

Paralisável de encriptação

Sim

>

Decryption parallelizable

Sim

>

Acesso de leitura aleatório

Sim

>
Nota: O modo CTR (CM) também é conhecido como modo contador inteiro (ICM) e modo contador inteiro segmentado (SIC).

Like OFB, o modo contador transforma uma cifra de bloco em uma cifra de fluxo. Ele gera o próximo bloco de fluxo de chaves criptografando os sucessivos valores de um “contador”. O contador pode ser qualquer função que produza uma sequência que garantidamente não se repetirá por muito tempo, embora um contador incremental real seja o mais simples e mais popular. O uso de uma simples função de entrada determinística costumava ser controverso; os críticos argumentavam que “expor deliberadamente um sistema criptográfico a uma entrada sistemática conhecida representa um risco desnecessário”. Entretanto, hoje o modo CTR é amplamente aceito e quaisquer problemas são considerados uma fraqueza da cifra do bloco subjacente, que se espera que seja segura independentemente do viés sistêmico em seu input. Juntamente com o CBC, o modo CTR é um dos dois modos de cifra de bloco recomendados por Niels Ferguson e Bruce Schneier.

CTR mode foi introduzido por Whitfield Diffie e Martin Hellman em 1979.

CTR mode tem características similares ao OFB, mas também permite uma propriedade de acesso aleatório durante a decifração. O modo CTR é bem adequado para operar em uma máquina multi-processadora onde os blocos podem ser criptografados em paralelo. Além disso, ele não sofre do problema de ciclo curto que pode afetar OFB.

Se o IV/não é aleatório, então eles podem ser combinados com o contador usando qualquer operação invertível (concatenação, adição, ou XOR) para produzir o bloco contador único real para criptografia. No caso de um nonce não aleatório (como um contador de pacotes), o nonce e o contador devem ser concatenados (por exemplo, armazenar o nonce nos 64 bits superiores e o contador nos 64 bits inferiores de um bloco de 128 bits do contador). A simples adição ou XOR do nonce e do contador em um único valor quebraria a segurança sob um ataque de texto escolhido em muitos casos, uma vez que o atacante pode ser capaz de manipular todo o par de contadores IV para causar uma colisão. Uma vez que um atacante controla o par de contagem IV e o par de contra-texto, XOR do texto criptografado com o conhecido texto criptografado produziria um valor que, quando XOR com o texto criptografado do outro bloco compartilhando o mesmo par de contagem IV, descriptografaria esse bloco.

Nota que o nonce neste diagrama é equivalente ao vetor de inicialização (IV) nos outros diagramas. No entanto, se a informação do offset/localização estiver corrompida, será impossível recuperar parcialmente esses dados devido à dependência do offset.

Deixe uma resposta

O seu endereço de email não será publicado.