# Algoritmo de chave simétrica

Algoritmos de chave simétrica são algoritmos para criptografia que usam a mesma chave criptográfica para encriptação de texto puro e decriptação de texto cifrado. A chave, na prática, representa um segredo compartilhado entre duas ou mais partes que pode ser usado para manter uma ligação de informação privada. Este requisito de que ambas as partes possuam acesso à mesma chave secreta é uma das principais desvantagens da criptografia de chave simétrica, em comparação com a criptografia de chave pública (também conhecida como criptografia de chave assimétrica), pois utilizam duas chaves (pública e privada).
A operação de chave simétrica é mais simples, pois existe uma única chave entre as operações. A chave, na prática, representa um segredo, partilhado entre duas ou mais partes, que podem ser usadas para manter um canal confidencial de informação. Usa-se uma única chave, partilhada por ambos os interlocutores, na premissa de que esta é conhecida apenas por eles.

## Tipos

A criptografia de chave simétrica pode usar cifras de fluxo ou cifras de bloco.
* As cifras de fluxo criptografam conteúdo gerando uma corrente de bits pseudoaleatória (chamados fluxo de chave) que combinados com o conteúdo (seja ele um texto, uma imagem, um vídeo, etc.) gera o texto cifrado. Um exemplo de cifra de fluxo seria o RC4.
* As cifras de bloco criptografam um conjunto de bytes de tamanho fixo, chamados bloco. Mensagem que não são do tamanho do bloco ou de um múltiplo dele precisam ser ajustadas para isso preenchendo com mais dados (desnecessários) para que o tamanho da mensagem seja apropriado para o uso com uma cifra desse tipo. Um exemplo de cifra de bloco seria o AES.
É importante dizer que uma cifra de bloco pode ser transformada em uma cifra de fluxo dependendo do modo de operação dela. Nesse modo, a cifra de bloco fará um fluxo de chave que unido com o conteúdo por meio de disjunção exclusiva, efetivamente a tornando em uma cifra de fluxo. Esse modo de operação é vulnerável a ataques de cifra de fluxo caso utilizado de maneira incorreta.

## Implementações

Exemplos de algoritmos simétricos populares e bem reputados incluem
* AES
* Twofish
* Serpent
* Blowfish
* CAST5
* RC4
* 3DES (baseado no DES)
* IDEA

## Velocidade

Os algoritmos de chave simétrica geralmente levam um tempo de resposta computacional menor em relação aos algoritmos de chave assimétrica. Na prática, isto significa que um algoritmo de chave assimétrica de qualidade pode ser centenas ou milhares de vezes mais lento do que um algoritmo de chave simétrica de qualidade equivalente.

## Segurança

Este sistema é tanto ou mais seguro quanto o for (1) a própria chave e (2) o meio em que ela foi dada a conhecer a ambos interlocutores — é comum a chave estar guardada num local que se “pensa” ser seguro.

## Limitações

A desvantagem dos algoritmos de chave simétrica é a exigência de uma única chave secreta compartilhada, com uma cópia em cada extremidade. As chaves estão sujeitas à descoberta potencial por um adversário criptográfico; por isso, necessitam ser mudadas frequentemente e mantidas seguras durante a distribuição e no serviço. Essa exigência de escolher, distribuir e armazenar chaves sem erro e sem perda, é conhecida como “gerenciamento de chave”.
A fim de garantir a comunicação segura entre toda uma população de $n$ pessoas, um total de ${\frac {n(n-1)}{2}}$ chaves são necessárias. Frequentemente os algoritmos assimétricos são muito mais lentos, são usados no início de uma sessão para distribuir chaves simétricas, então os algoritmos de chave simétrica mais elevados aumentam a sua velocidade. Os mesmos problemas de distribuição de chave de confiança existem ainda no nível assimétrico, mas são um tanto mais tratáveis. Entretanto, a chave simétrica é gerada quase sempre em tempo real. Os algoritmos de chave simétrica não podem ser usados para finalidades de autenticação. Para finalidades de autenticação, são geralmente usadas funções de hash, por exemplo, MD5.

## Reversibilidade

As Funções de Criptografia devem, por definição, ser reversíveis desde que você precise estar apto ambas cifras e (providenciado que você tenha a chave certa) mensagens decifradas. Vários métodos foram usados historicamente para controlar isso. Houve as cifras do livro, em que a chave compartilhada é relacionada a algum índice em um livro, as cifras da autochave em que a chave é derivada parcialmente do plaintext (arquivo de texto), as cifras de grade (supostamente inventadas primeiramente pelo matemático italiano Girolamo Cardano) em que cada partido tem partes de papel idênticas com os furos cortados para colocar sobre a mensagem baixa a fim extrair a mensagem codificada, etc. Em épocas modernas, depois que os computadores se tornaram disponíveis, a maioria de cifras simétricas foram baseadas em “rounds” repetidos. Um esquema muito simples para cada round é usado geralmente repetidamente como no seguinte exemplo genérico. Este método geral é atribuído geralmente a Horst Feistel. Os bits a serem codificados são divididos em duas porções de P1 e P2. P1 é inalterado, P2 é adicionado a uma função misturada de sentido único f (variado por uma chave) de P1. Os dois resultados então são trocados. Isto é chamado de um “round”. Isto é onde a chave p1 e a chave p2, são vetores do bit; “,” é um operador da concatenação e f é uma função $p1,p2\mapsto p2^{\prime },p1$ tanto que:
$p2^{\prime }=p2+\mathrm {f} (p1,key)$ Desde que a saída do “round” ainda tenha o acesso ao valor P1, e a adição é uma operação reversível, então esta operação pode ser desfeita, para toda a função “f” de um único sentido. Ao mesmo tempo, em que um único round é inseguro, p1 é inalterado, repetindo a operação mais do que uma vez, frequentemente com diferentes funções e “chaves rounds”, melhora a força consideravelmente. Para decifrar rounds múltiplos, consequentemente cada round é desfeito na ordem inversa, para a decodificação, as chaves são aplicadas em ordens inversas. Após diversos rounds (tipicamente entre 8 e 64) de processamento, a saída torna-se assim “encriptada” que, no exemplo de cifras bem projetadas, nada mais rápido do que a busca da chave de força brutal é praticável. Com uma chave suficientemente longa, um ataque de força brutal pode ser tornado impraticável.