Criptografia - Guia Rápido
O ser humano desde as idades teve duas necessidades inerentes - (a) para se comunicar e compartilhar informações e (b) para se comunicar seletivamente. Essas duas necessidades deram origem à arte de codificar as mensagens de tal forma que apenas as pessoas pretendidas pudessem ter acesso às informações. Pessoas não autorizadas não poderiam extrair nenhuma informação, mesmo que as mensagens embaralhadas caíssem em suas mãos.
A arte e a ciência de ocultar as mensagens para introduzir segredo na segurança da informação são reconhecidas como criptografia.
A palavra 'criptografia' foi cunhada pela combinação de duas palavras gregas, 'Krypto' significando oculto e 'grafeno' significando escrita.
História da Criptografia
A arte da criptografia é considerada nascida junto com a arte da escrita. À medida que as civilizações evoluíram, os seres humanos se organizaram em tribos, grupos e reinos. Isso levou ao surgimento de ideias como poder, batalhas, supremacia e política. Essas idéias alimentaram ainda mais a necessidade natural das pessoas de se comunicarem secretamente com o destinatário seletivo, o que, por sua vez, garantiu a evolução contínua da criptografia também.
As raízes da criptografia são encontradas nas civilizações romana e egípcia.
Hieróglifo - a técnica criptográfica mais antiga
A primeira evidência conhecida de criptografia pode ser atribuída ao uso de 'hieróglifo'. Cerca de 4000 anos atrás, os egípcios costumavam se comunicar por mensagens escritas em hieróglifos. Este código era o segredo conhecido apenas pelos escribas que costumavam transmitir mensagens em nome dos reis. Um desses hieróglifos é mostrado abaixo.
Mais tarde, os estudiosos passaram a usar cifras de substituição mono-alfabéticas simples durante 500 a 600 AC. Isso envolveu a substituição de alfabetos de mensagem por outros alfabetos com alguma regra secreta. esterule tornou-se um key para recuperar a mensagem da mensagem truncada.
O método romano anterior de criptografia, popularmente conhecido como o Caesar Shift Cipher, depende da troca das letras de uma mensagem por um número acordado (três era uma escolha comum), o destinatário dessa mensagem então trocaria as letras pelo mesmo número e obteria a mensagem original.
Esteganografia
A esteganografia é semelhante, mas adiciona outra dimensão à criptografia. Nesse método, as pessoas não querem apenas proteger o sigilo de uma informação ocultando-a, mas também querem garantir que qualquer pessoa não autorizada não receba nenhuma evidência de que a informação existe. Por exemplo,invisible watermarking.
Na esteganografia, um destinatário não intencional ou um intruso não está ciente do fato de que os dados observados contêm informações ocultas. Na criptografia, um intruso normalmente está ciente de que os dados estão sendo comunicados, porque eles podem ver a mensagem codificada / embaralhada.
Evolução da criptografia
Foi durante e após o Renascimento europeu que vários estados italianos e papais lideraram a rápida proliferação de técnicas criptográficas. Várias técnicas de análise e ataque foram pesquisadas nesta época para quebrar os códigos secretos.
Técnicas de codificação aprimoradas, como Vigenere Codingentrou em existência na 15 ª século, que ofereceu movendo letras na mensagem com um número de lugares variáveis em vez de movê-los o mesmo número de lugares.
Somente após o 19 º século, criptografia evoluiu a partir do ad hoc abordagens de criptografia para a arte mais sofisticada e ciência da segurança da informação.
No início dos anos 20 th século, a invenção de máquinas mecânicas e electromecânicas, tais como oEnigma rotor machine, forneceram meios mais avançados e eficientes de codificação das informações.
Durante o período da Segunda Guerra Mundial, ambos cryptography e cryptanalysis tornou-se excessivamente matemático.
Com os avanços ocorridos neste campo, organizações governamentais, unidades militares e algumas casas corporativas começaram a adotar as aplicações da criptografia. Eles usaram criptografia para proteger seus segredos de outras pessoas. Agora, a chegada dos computadores e da Internet trouxe a criptografia eficaz ao alcance das pessoas comuns.
A criptografia moderna é a base da segurança do computador e das comunicações. Sua base é baseada em vários conceitos da matemática, como teoria dos números, teoria da complexidade computacional e teoria da probabilidade.
Características da criptografia moderna
Existem três características principais que separam a criptografia moderna da abordagem clássica.
Criptografia Clássica | Criptografia Moderna |
---|---|
Ele manipula caracteres tradicionais, ou seja, letras e dígitos diretamente. | Ele opera em sequências binárias de bits. |
Baseia-se principalmente na 'segurança através da obscuridade'. As técnicas empregadas para a codificação eram mantidas em segredo e apenas as partes envolvidas na comunicação sabiam sobre elas. | Ele se baseia em algoritmos matemáticos publicamente conhecidos para codificar as informações. O sigilo é obtido por meio de uma chave secreta que é usada como semente para os algoritmos. A dificuldade computacional dos algoritmos, a ausência de chave secreta, etc., tornam impossível para um invasor obter as informações originais, mesmo que ele conheça o algoritmo usado para a codificação. |
Requer todo o criptosistema para comunicação confidencial. | A criptografia moderna exige que as partes interessadas na comunicação segura possuam apenas a chave secreta. |
Contexto da criptografia
A criptologia, o estudo dos criptossistemas, pode ser subdividida em dois ramos -
- Cryptography
- Cryptanalysis
O que é criptografia?
A criptografia é a arte e a ciência de fazer um criptosistema capaz de fornecer segurança às informações.
A criptografia lida com a proteção real dos dados digitais. Refere-se ao projeto de mecanismos baseados em algoritmos matemáticos que fornecem serviços fundamentais de segurança da informação. Você pode pensar na criptografia como o estabelecimento de um grande kit de ferramentas contendo diferentes técnicas em aplicativos de segurança.
O que é criptoanálise?
A arte e a ciência de quebrar o texto cifrado são conhecidas como criptoanálise.
A criptoanálise é o ramo irmão da criptografia e ambos coexistem. O processo criptográfico resulta no texto cifrado para transmissão ou armazenamento. Envolve o estudo de mecanismos criptográficos com a intenção de quebrá-los. A criptoanálise também é usada durante o projeto das novas técnicas criptográficas para testar seus pontos fortes de segurança.
Note - A criptografia se preocupa com o projeto de criptosistemas, enquanto a criptoanálise estuda a quebra de criptosistemas.
Serviços de segurança de criptografia
O objetivo principal do uso de criptografia é fornecer os quatro serviços fundamentais de segurança da informação a seguir. Vejamos agora os possíveis objetivos a serem cumpridos pela criptografia.
Confidencialidade
A confidencialidade é o serviço de segurança fundamental fornecido pela criptografia. É um serviço de segurança que guarda as informações de uma pessoa não autorizada. Às vezes é referido comoprivacy ou secrecy.
A confidencialidade pode ser alcançada através de vários meios, desde a proteção física até o uso de algoritmos matemáticos para criptografia de dados.
Integridade de dados
É um serviço de segurança que trata da identificação de qualquer alteração nos dados. Os dados podem ser modificados por uma entidade não autorizada intencionalmente ou acidentalmente. O serviço de integridade confirma se os dados estão intactos ou não desde a última vez que foram criados, transmitidos ou armazenados por um usuário autorizado.
A integridade dos dados não pode impedir a alteração dos dados, mas fornece um meio para detectar se os dados foram manipulados de maneira não autorizada.
Autenticação
A autenticação fornece a identificação do originador. Ele confirma ao receptor que os dados recebidos foram enviados apenas por um remetente identificado e verificado.
O serviço de autenticação tem duas variantes -
Message authentication identifica o originador da mensagem sem considerar o roteador ou sistema que a enviou.
Entity authentication é a garantia de que os dados foram recebidos de uma entidade específica, digamos, um site específico.
Além do originador, a autenticação também pode fornecer garantia sobre outros parâmetros relacionados aos dados, como data e hora de criação / transmissão.
Não repúdio
É um serviço de segurança que garante que uma entidade não pode recusar a titularidade de um compromisso ou ação anterior. É uma garantia de que o criador original dos dados não pode negar a criação ou transmissão dos referidos dados a um destinatário ou a terceiros.
O irrecusabilidade é uma propriedade mais desejável em situações em que haja possibilidade de disputa pela troca de dados. Por exemplo, uma vez que um pedido é feito eletronicamente, um comprador não pode negar o pedido de compra, se o serviço de não repúdio foi habilitado nesta transação.
Primitivas de criptografia
As primitivas de criptografia nada mais são do que as ferramentas e técnicas de criptografia que podem ser usadas seletivamente para fornecer um conjunto de serviços de segurança desejados -
- Encryption
- Funções de hash
- Códigos de autenticação de mensagem (MAC)
- Assinaturas digitais
A tabela a seguir mostra os primitivos que podem alcançar um determinado serviço de segurança por conta própria.
Note - As primitivas criptográficas estão intimamente relacionadas e frequentemente são combinadas para obter um conjunto de serviços de segurança desejados de um criptosistema.
Um criptosistema é uma implementação de técnicas criptográficas e sua infraestrutura de acompanhamento para fornecer serviços de segurança da informação. Um criptosistema também é conhecido como umcipher system.
Vamos discutir um modelo simples de um criptossistema que fornece confidencialidade às informações que estão sendo transmitidas. Este modelo básico é representado na ilustração abaixo -
A ilustração mostra um remetente que deseja transferir alguns dados confidenciais para um receptor de forma que nenhuma parte interceptando ou espionando o canal de comunicação não possa extrair os dados.
O objetivo desse criptosistema simples é que, ao final do processo, apenas o remetente e o destinatário conheçam o texto simples.
Componentes de um Criptossistema
Os vários componentes de um criptosistema básico são os seguintes -
Plaintext. São os dados a serem protegidos durante a transmissão.
Encryption Algorithm.É um processo matemático que produz um texto cifrado para qualquer texto simples e chave de criptografia. É um algoritmo criptográfico que recebe texto simples e uma chave de criptografia como entrada e produz um texto cifrado.
Ciphertext.É a versão codificada do texto simples produzido pelo algoritmo de criptografia usando uma chave de criptografia específica. O texto cifrado não é protegido. Ele flui em canal público. Ele pode ser interceptado ou comprometido por qualquer pessoa que tenha acesso ao canal de comunicação.
Decryption Algorithm,É um processo matemático que produz um texto simples exclusivo para qualquer texto cifrado e chave de descriptografia. É um algoritmo criptográfico que pega um texto cifrado e uma chave de descriptografia como entrada e produz um texto simples. O algoritmo de descriptografia essencialmente reverte o algoritmo de criptografia e, portanto, está intimamente relacionado a ele.
Encryption Key.É um valor conhecido pelo remetente. O remetente insere a chave de criptografia no algoritmo de criptografia junto com o texto simples para computar o texto cifrado.
Decryption Key.É um valor conhecido pelo receptor. A chave de descriptografia está relacionada à chave de criptografia, mas nem sempre é idêntica a ela. O receptor insere a chave de descriptografia no algoritmo de descriptografia junto com o texto cifrado para computar o texto simples.
Para um determinado criptossistema, uma coleção de todas as chaves de descriptografia possíveis é chamada de key space.
A interceptor(um invasor) é uma entidade não autorizada que tenta determinar o texto simples. Ele pode ver o texto cifrado e conhecer o algoritmo de descriptografia. Ele, no entanto, nunca deve saber a chave de descriptografia.
Tipos de criptosistemas
Fundamentalmente, existem dois tipos de criptossistemas com base na maneira como a criptografia-descriptografia é realizada no sistema -
- Criptografia de chave simétrica
- Criptografia de chave assimétrica
A principal diferença entre esses criptosistemas é a relação entre a criptografia e a chave de descriptografia. Logicamente, em qualquer criptosistema, ambas as chaves estão intimamente associadas. É praticamente impossível descriptografar o texto cifrado com a chave que não está relacionada à chave de criptografia.
Criptografia de chave simétrica
O processo de criptografia onde same keys are used for encrypting and decrypting as informações são conhecidas como criptografia de chave simétrica.
O estudo de criptosistemas simétricos é referido como symmetric cryptography. Os criptossistemas simétricos também são às vezes referidos comosecret key cryptosystems.
Alguns exemplos bem conhecidos de métodos de criptografia de chave simétrica são - Digital Encryption Standard (DES), Triple-DES (3DES), IDEA e BLOWFISH.
Antes de 1970, todos os criptossistemas empregavam criptografia de chave simétrica. Ainda hoje, sua relevância é muito alta e está sendo usado extensivamente em muitos criptossistemas. É muito improvável que essa criptografia desapareça, pois tem certas vantagens sobre a criptografia de chave assimétrica.
As principais características do criptossistema baseado em criptografia de chave simétrica são -
Pessoas que usam criptografia de chave simétrica devem compartilhar uma chave comum antes da troca de informações.
Recomenda-se que as chaves sejam alteradas regularmente para evitar qualquer ataque ao sistema.
Um mecanismo robusto precisa existir para trocar a chave entre as partes comunicantes. Como as chaves precisam ser trocadas regularmente, esse mecanismo se torna caro e complicado.
Em um grupo de n pessoas, para permitir a comunicação de duas partes entre quaisquer duas pessoas, o número de chaves necessárias para o grupo é n × (n – 1)/2.
O comprimento da chave (número de bits) nesta criptografia é menor e, portanto, o processo de criptografia-descriptografia é mais rápido do que a criptografia de chave assimétrica.
O poder de processamento do sistema de computador necessário para executar o algoritmo simétrico é menor.
Desafio do sistema criptográfico de chave simétrica
Existem dois desafios restritivos no emprego de criptografia de chave simétrica.
Key establishment- Antes de qualquer comunicação, tanto o remetente quanto o destinatário precisam concordar sobre uma chave simétrica secreta. Requer um mecanismo seguro de estabelecimento de chaves.
Trust Issue- Como o remetente e o destinatário usam a mesma chave simétrica, há um requisito implícito de que o remetente e o destinatário "confiem" um no outro. Por exemplo, pode acontecer que o destinatário tenha perdido a chave para um invasor e o remetente não seja informado.
Esses dois desafios são altamente restritivos para a comunicação moderna. Hoje, as pessoas precisam trocar informações com partes não familiares e não confiáveis. Por exemplo, uma comunicação entre vendedor e cliente online. Essas limitações da criptografia de chave simétrica deram origem a esquemas de criptografia de chave assimétrica.
Criptografia de chave assimétrica
O processo de criptografia onde different keys are used for encrypting and decrypting the informationé conhecido como criptografia de chave assimétrica. Embora as chaves sejam diferentes, elas estão matematicamente relacionadas e, portanto, recuperar o texto simples descriptografando o texto cifrado é viável. O processo é descrito na ilustração a seguir -
Asymmetric chave de criptografia foi inventado no 20 º século para vir a necessidade de chave secreta pré-compartilhada entre as pessoas que se comunicam. As características salientes deste esquema de criptografia são as seguintes -
Cada usuário neste sistema precisa ter um par de chaves diferentes, private key e public key. Essas chaves são matematicamente relacionadas - quando uma chave é usada para criptografia, a outra pode descriptografar o texto cifrado de volta ao texto simples original.
Requer colocar a chave pública no repositório público e a chave privada como um segredo bem guardado. Portanto, este esquema de criptografia também é chamadoPublic Key Encryption.
Embora as chaves pública e privada do usuário estejam relacionadas, é computacionalmente inviável encontrar uma da outra. Este é um ponto forte deste esquema.
Quando Host1 precisa enviar dados ao Host2, ele obtém a chave pública do Host2 do repositório, criptografa os dados e os transmite.
Host2 usa sua chave privada para extrair o texto simples.
O comprimento das chaves (número de bits) nesta criptografia é grande e, portanto, o processo de criptografia-descriptografia é mais lento do que a criptografia de chave simétrica.
O poder de processamento do sistema de computador necessário para executar o algoritmo assimétrico é maior.
Os criptosistemas simétricos são um conceito natural. Em contraste, os criptosistemas de chave pública são bastante difíceis de compreender.
Você pode pensar: como a chave de criptografia e a chave de descriptografia podem estar 'relacionadas' e, ainda assim, é impossível determinar a chave de descriptografia a partir da chave de criptografia? A resposta está nos conceitos matemáticos. É possível projetar um criptosistema cujas chaves tenham esta propriedade. O conceito de criptografia de chave pública é relativamente novo. Existem menos algoritmos de chave pública conhecidos do que algoritmos simétricos.
Desafio do criptosistema de chave pública
Os criptosistemas de chave pública têm um desafio significativo - o usuário precisa confiar que a chave pública que ele está usando nas comunicações com uma pessoa é realmente a chave pública dessa pessoa e não foi falsificada por um terceiro malicioso.
Isso geralmente é realizado por meio de uma infraestrutura de chave pública (PKI) que consiste em um terceiro confiável. O terceiro gerencia e atesta com segurança a autenticidade das chaves públicas. Quando o terceiro é solicitado a fornecer a chave pública para qualquer pessoa que se comunica X, eles são confiáveis para fornecer a chave pública correta.
O terceiro se satisfaz com a identidade do usuário pelo processo de atestação, reconhecimento de firma ou algum outro processo - que X é o único, ou globalmente único, X. O método mais comum de disponibilizar as chaves públicas verificadas é incorporá-las em um certificado assinado digitalmente por um terceiro confiável.
Relação entre Esquemas de Criptografia
Um resumo das propriedades básicas de dois tipos de criptosistemas é fornecido abaixo -
Criptossistemas simétricos | Criptossistemas de chave pública | |
---|---|---|
Relation between Keys | Mesmo | Diferente, mas matematicamente relacionado |
Chave de encriptação | Simétrico | Público |
Chave de descriptografia | Simétrico | Privado |
Devido às vantagens e desvantagens de ambos os sistemas, os sistemas criptográficos de chave simétrica e de chave pública são frequentemente usados juntos nos sistemas práticos de segurança da informação.
Princípio de Kerckhoff para Criptossistema
Na 19 ª século, um holandês criptógrafo A. Kerckhoff forneceu os requisitos de um bom sistema de criptografia. Kerckhoff afirmou que um sistema criptográfico deve ser seguro mesmo que tudo sobre o sistema, exceto a chave, seja de conhecimento público. Os seis princípios de design definidos por Kerckhoff para o criptossistema são -
O criptossistema deve ser inquebrável praticamente, se não matematicamente.
A queda do criptosistema nas mãos de um invasor não deve comprometer o sistema, evitando qualquer transtorno ao usuário.
A chave deve ser facilmente comunicável, memorável e mutável.
O texto cifrado deve ser transmissível por telégrafo, um canal não seguro.
O aparelho de criptografia e os documentos devem ser portáteis e operáveis por uma única pessoa.
Finalmente, é necessário que o sistema seja fácil de usar, não exigindo esforço mental nem o conhecimento de uma longa série de regras a serem observadas.
A segunda regra é atualmente conhecida como Kerckhoff principle. Ele é aplicado em praticamente todos os algoritmos de criptografia contemporâneos, como DES, AES, etc. Esses algoritmos públicos são considerados totalmente seguros. A segurança da mensagem criptografada depende exclusivamente da segurança da chave secreta de criptografia.
Manter os algoritmos em segredo pode atuar como uma barreira significativa para a criptoanálise. No entanto, manter os algoritmos em segredo só é possível quando eles são usados em um círculo estritamente limitado.
Na era moderna, a criptografia precisa atender aos usuários que estão conectados à Internet. Em tais casos, usar um algoritmo secreto não é viável, portanto, os princípios de Kerckhoff tornaram-se diretrizes essenciais para projetar algoritmos na criptografia moderna.
Na era atual, não apenas os negócios, mas quase todos os aspectos da vida humana são movidos pela informação. Portanto, tornou-se imperativo proteger informações úteis de atividades maliciosas, como ataques. Vamos considerar os tipos de ataques aos quais as informações normalmente estão sujeitas.
Os ataques são normalmente categorizados com base na ação realizada pelo invasor. Um ataque, portanto, pode serpassive ou active.
Ataques passivos
O principal objetivo de um ataque passivo é obter unauthorized access to the information. Por exemplo, ações como interceptar e espionar no canal de comunicação podem ser consideradas ataque passivo.
Essas ações são de natureza passiva, pois não afetam as informações nem interrompem o canal de comunicação. Um ataque passivo costuma ser visto como roubo de informações. A única diferença em roubar bens físicos e roubar informações é que o roubo de dados ainda deixa o proprietário na posse desses dados. O ataque passivo de informações é, portanto, mais perigoso do que o roubo de mercadorias, pois o roubo de informações pode passar despercebido pelo proprietário.
Ataques Ativos
Um ataque ativo envolve alterar as informações de alguma forma, conduzindo algum processo nas informações. Por exemplo,
Modificando as informações de maneira não autorizada.
Iniciar a transmissão não intencional ou não autorizada de informações.
Alteração de dados de autenticação, como nome do originador ou carimbo de data / hora associado às informações
Exclusão não autorizada de dados.
Negação de acesso às informações para usuários legítimos (negação de serviço).
A criptografia fornece muitas ferramentas e técnicas para implementar sistemas de criptografia capazes de prevenir a maioria dos ataques descritos acima.
Suposições do invasor
Vamos ver o ambiente predominante em torno dos criptossistemas, seguido pelos tipos de ataques empregados para quebrar esses sistemas -
Ambiente em torno do criptossistema
Ao considerar possíveis ataques ao criptossistema, é necessário conhecer o ambiente do criptossistema. As suposições e o conhecimento do invasor sobre o ambiente determinam suas capacidades.
Na criptografia, as três suposições a seguir são feitas sobre o ambiente de segurança e os recursos do invasor.
Detalhes do esquema de criptografia
O design de um criptosistema é baseado nos seguintes dois algoritmos de criptografia -
Public Algorithms - Com esta opção, todos os detalhes do algoritmo são de domínio público, conhecidos por todos.
Proprietary algorithms - Os detalhes do algoritmo são conhecidos apenas pelos projetistas e usuários do sistema.
No caso de algoritmos proprietários, a segurança é garantida através da obscuridade. Algoritmos privados podem não ser os algoritmos mais fortes, pois são desenvolvidos internamente e não podem ser investigados extensivamente quanto a fraquezas.
Em segundo lugar, eles permitem a comunicação apenas entre grupos fechados. Portanto, eles não são adequados para a comunicação moderna, onde as pessoas se comunicam com um grande número de entidades conhecidas ou desconhecidas. Além disso, de acordo com o princípio de Kerckhoff, o algoritmo é preferível para ser público, com a força da criptografia na chave .
Assim, a primeira suposição sobre o ambiente de segurança é que o encryption algorithm is known to the attacker.
Disponibilidade de texto cifrado
Sabemos que, uma vez que o texto simples é criptografado em texto cifrado, ele é colocado em um canal público não seguro (por exemplo, e-mail) para transmissão. Assim, o invasor pode obviamente presumir queaccess to the ciphertext generated by the cryptosystem.
Disponibilidade de texto simples e texto cifrado
Essa suposição não é tão óbvia quanto a outra. No entanto, pode haver situações em que um invasor pode teraccess to plaintext and corresponding ciphertext. Algumas dessas circunstâncias possíveis são -
O invasor influencia o remetente a converter o texto simples de sua escolha e obtém o texto cifrado.
O receptor pode divulgar o texto simples ao invasor inadvertidamente. O invasor tem acesso ao texto cifrado correspondente obtido do canal aberto.
Em um criptosistema de chave pública, a chave de criptografia está em domínio aberto e é conhecida por qualquer invasor em potencial. Usando essa chave, ele pode gerar pares de textos simples e cifrados correspondentes.
Ataques criptográficos
A intenção básica de um invasor é quebrar um criptosistema e encontrar o texto simples do texto cifrado. Para obter o texto simples, o invasor só precisa descobrir a chave de descriptografia secreta, pois o algoritmo já é de domínio público.
Portanto, ele se esforça ao máximo para descobrir a chave secreta usada no criptosistema. Depois que o invasor consegue determinar a chave, o sistema atacado é considerado quebrado ou comprometido .
Com base na metodologia utilizada, os ataques a criptosistemas são categorizados da seguinte forma -
Ciphertext Only Attacks (COA)- Nesse método, o invasor tem acesso a um conjunto de texto (s) cifrado (s). Ele não tem acesso ao texto simples correspondente. O COA é considerado bem-sucedido quando o texto simples correspondente pode ser determinado a partir de um determinado conjunto de texto cifrado. Ocasionalmente, a chave de criptografia pode ser determinada a partir deste ataque. Os criptossistemas modernos são protegidos contra ataques apenas de texto cifrado.
Known Plaintext Attack (KPA)- Nesse método, o invasor conhece o texto simples de algumas partes do texto cifrado. A tarefa é descriptografar o restante do texto cifrado usando essas informações. Isso pode ser feito determinando a chave ou por meio de algum outro método. O melhor exemplo desse ataque é a criptoanálise linear contra cifras de bloco.
Chosen Plaintext Attack (CPA)- Neste método, o atacante tem o texto de sua escolha criptografado. Portanto, ele tem o par de texto cifrado-texto simples de sua escolha. Isso simplifica sua tarefa de determinar a chave de criptografia. Um exemplo desse ataque é a criptoanálise diferencial aplicada contra cifras de bloco, bem como funções hash. Um criptosistema de chave pública popular, o RSA também é vulnerável a ataques de texto simples escolhido.
Dictionary Attack- Este ataque tem muitas variantes, todas envolvendo a compilação de um 'dicionário'. No método mais simples desse ataque, o invasor constrói um dicionário de textos cifrados e textos planos correspondentes que ele aprendeu ao longo de um período de tempo. No futuro, quando um invasor obtém o texto cifrado, ele consulta o dicionário para encontrar o texto simples correspondente.
Brute Force Attack (BFA)- Neste método, o invasor tenta determinar a chave tentando todas as chaves possíveis. Se a chave tiver 8 bits, então o número de chaves possíveis é 2 8 = 256. O invasor conhece o texto cifrado e o algoritmo, agora ele tenta todas as 256 chaves uma por uma para descriptografar. O tempo para completar o ataque seria muito alto se a chave fosse longa.
Birthday Attack- Este ataque é uma variante da técnica de força bruta. É usado na função hash criptográfica. Quando os alunos de uma classe são questionados sobre seus aniversários, a resposta é uma das 365 datas possíveis. Vamos supor data de nascimento do primeiro estudante é de 3 rd agosto Depois de encontrar o próximo aluno cuja data de nascimento é de 3 rd Ago precisamos perguntar 1,25 * ?? √365 ≈ 25 alunos.
Da mesma forma, se a função hash produz valores de hash de 64 bits, os valores de hash possíveis são 1,8x10 19 . Ao avaliar repetidamente a função para diferentes entradas, espera-se que a mesma saída seja obtida após cerca de 5,1x10 9 entradas aleatórias.
Se o invasor conseguir encontrar duas entradas diferentes que forneçam o mesmo valor de hash, é um collision e essa função hash está quebrada.
Man in Middle Attack (MIM) - Os alvos deste ataque são principalmente criptosistemas de chave pública, onde a troca de chaves é envolvida antes que a comunicação ocorra.
Anfitrião Um quer se comunicar com o host B , portanto, solicita a chave pública de B .
Um invasor intercepta essa solicitação e envia sua chave pública.
Portanto, qualquer que seja o host A enviar ao host B , o invasor pode ler.
A fim de manter a comunicação, o atacante re-criptografa os dados após a leitura com a sua chave pública e envia para B .
O atacante envia sua chave pública como uma chave pública para que B leva-lo como se estivesse tirando-a de A .
Side Channel Attack (SCA)- Este tipo de ataque não é contra nenhum tipo particular de criptosistema ou algoritmo. Em vez disso, ele é lançado para explorar a deficiência na implementação física do criptossistema.
Timing Attacks- Eles exploram o fato de que cálculos diferentes levam tempos diferentes para serem computados no processador. Medindo esses tempos, é possível saber sobre um determinado cálculo que o processador está realizando. Por exemplo, se a criptografia demorar mais, isso indica que a chave secreta é longa.
Power Analysis Attacks - Esses ataques são semelhantes aos ataques de temporização, exceto que a quantidade de consumo de energia é usada para obter informações sobre a natureza dos cálculos subjacentes.
Fault analysis Attacks - Nesses ataques, erros são induzidos no criptosistema e o invasor estuda a saída resultante em busca de informações úteis.
Praticidade dos ataques
Os ataques a criptossistemas descritos aqui são altamente acadêmicos, pois a maioria deles vem da comunidade acadêmica. Na verdade, muitos ataques acadêmicos envolvem suposições pouco realistas sobre o ambiente, bem como sobre as capacidades do invasor. Por exemplo, em um ataque de texto cifrado escolhido, o invasor requer um número impraticável de pares de texto simples e texto cifrado deliberadamente escolhidos. Pode não ser totalmente prático.
No entanto, o fato de que existe qualquer ataque deve ser uma causa de preocupação, especialmente se a técnica de ataque tiver potencial para melhoria.
No segundo capítulo, discutimos os fundamentos da criptografia moderna. Equacionamos a criptografia com um kit de ferramentas em que várias técnicas criptográficas são consideradas as ferramentas básicas. Uma dessas ferramentas é a criptografia de chave simétrica, em que a chave usada para criptografar e descriptografar é a mesma.
Neste capítulo, discutimos mais detalhadamente essa técnica e suas aplicações para desenvolver vários criptossistemas.
Sistemas criptográficos anteriores
Antes de prosseguir, você precisa saber alguns fatos sobre criptossistemas históricos -
Todos esses sistemas são based on symmetric key encryption esquema.
O único serviço de segurança que esses sistemas fornecem é a confidencialidade das informações.
Ao contrário dos sistemas modernos que são digitais e tratam os dados como números binários, os sistemas anteriores trabalhavam com alfabetos como elemento básico.
Esses sistemas criptográficos anteriores também são chamados de Cifras. Em geral, uma cifra é simplesmente um conjunto de etapas (um algoritmo) para realizar uma criptografia e a descriptografia correspondente.
Cifra de César
É uma cifra mono-alfabética em que cada letra do texto simples é substituída por outra letra para formar o texto cifrado. É uma forma mais simples de esquema de cifra de substituição.
Este criptossistema é geralmente referido como o Shift Cipher. O conceito é substituir cada alfabeto por outro alfabeto que é 'deslocado' por algum número fixo entre 0 e 25.
Para esse tipo de esquema, tanto o remetente quanto o receptor concordam em um 'número de deslocamento secreto' para alterar o alfabeto. Este número que está entre 0 e 25 torna-se a chave de criptografia.
O nome 'Cifra de César' é ocasionalmente usado para descrever a Cifra de Mudança quando a 'mudança de três' é usada.
Processo de Cifra de Mudança
Para criptografar uma letra de texto simples, o remetente posiciona a régua deslizante sob o primeiro conjunto de letras de texto simples e a desliza para a ESQUERDA de acordo com o número de posições da mudança secreta.
A letra do texto simples é então criptografada para a letra do texto cifrado na régua deslizante abaixo. O resultado desse processo é descrito na ilustração a seguir para uma mudança combinada de três posições. Nesse caso, o texto simples 'tutorial' é criptografado para o texto cifrado 'WXWRULDO'. Aqui está o alfabeto do texto cifrado para uma mudança de 3 -
Ao receber o texto cifrado, o receptor, que também conhece o deslocamento secreto, posiciona sua régua deslizante sob o alfabeto do texto cifrado e a desliza para a DIREITA no número de deslocamento acordado, 3 neste caso.
Ele então substitui a letra do texto cifrado pela letra do texto simples na régua deslizante embaixo. Portanto, o texto cifrado 'WXWRULDO' é descriptografado para 'tutorial'. Para descriptografar uma mensagem codificada com uma mudança de 3, gere o alfabeto de texto simples usando uma mudança de '-3' como mostrado abaixo -
Valor de Segurança
Caesar Cipher é not a securecriptosistema porque existem apenas 26 chaves possíveis para experimentar. Um invasor pode realizar uma pesquisa exaustiva de chaves com recursos de computação limitados disponíveis.
Cifra de Substituição Simples
É uma melhoria para a Cifra de César. Em vez de mudar os alfabetos por algum número, este esquema usa alguma permutação das letras do alfabeto.
Por exemplo, AB… ..YZ e ZY …… BA são duas permutações óbvias de todas as letras do alfabeto. A permutação nada mais é do que um conjunto confuso de alfabetos.
Com 26 letras do alfabeto, as permutações possíveis são 26! (Fatorial de 26) que é igual a 4x10 26 . O remetente e o receptor podem escolher qualquer uma dessas permutações possíveis como um alfabeto de texto cifrado. Essa permutação é a chave secreta do esquema.
Processo de Cifra de Substituição Simples
Escreva os alfabetos A, B, C, ..., Z na ordem natural.
O remetente e o destinatário decidem por uma permutação selecionada aleatoriamente das letras do alfabeto.
Abaixo dos alfabetos de ordem natural, escreva a permutação escolhida das letras do alfabeto. Para criptografar, o remetente substitui cada letra do texto simples, substituindo a letra de permutação que está diretamente abaixo dela na tabela. Esse processo é mostrado na ilustração a seguir. Neste exemplo, a permutação escolhida é K, D, G, ..., O. O texto simples 'ponto' é criptografado para 'MJBXZ'.
Aqui está um alfabeto de texto cifrado confuso, onde a ordem das letras do texto cifrado é uma chave.
Ao receber o texto cifrado, o receptor, que também conhece a permutação escolhida aleatoriamente, substitui cada letra do texto cifrado na linha inferior pela letra do texto simples correspondente na linha superior. O texto cifrado 'MJBXZ' é descriptografado para 'apontar'.
Valor de Segurança
A Cifra de Substituição Simples é uma melhoria considerável em relação à Cifra de César. O número possível de chaves é grande (26!) E mesmo os sistemas de computação modernos ainda não são poderosos o suficiente para lançar confortavelmente um ataque de força bruta para quebrar o sistema. No entanto, a Cifra de Substituição Simples tem um design simples e é propensa a falhas de design, digamos, escolhendo uma permutação óbvia, esse criptosistema pode ser facilmente quebrado.
Cifra Monoalfabética e Polialfabética
A cifra monoalfabética é uma cifra de substituição na qual, para uma determinada chave, o alfabeto cifrado de cada alfabeto simples é fixado em todo o processo de criptografia. Por exemplo, se 'A' for criptografado como 'D', para qualquer número de ocorrências naquele texto simples, 'A' sempre será criptografado como 'D'.
Todas as cifras de substituição que discutimos anteriormente neste capítulo são monoalfabéticas; essas cifras são altamente suscetíveis à criptoanálise.
A Cifra Polialfabética é uma cifra de substituição na qual o alfabeto cifrado para o alfabeto simples pode ser diferente em locais diferentes durante o processo de criptografia. Os próximos dois exemplos,playfair and Vigenere Cipher are polyalphabetic ciphers.
Cifra Playfair
Nesse esquema, pares de letras são criptografados, em vez de letras únicas, como no caso da cifra de substituição simples.
Na cifra do playfair, inicialmente uma tabela de chaves é criada. A tabela de chaves é uma grade 5 × 5 de alfabetos que atua como a chave para criptografar o texto simples. Cada um dos 25 alfabetos deve ser único e uma letra do alfabeto (geralmente J) é omitida da tabela, pois precisamos de apenas 25 alfabetos em vez de 26. Se o texto simples contiver J, ele será substituído por I.
O remetente e o receptor decidem sobre uma tecla específica, digamos 'tutoriais'. Em uma tabela-chave, os primeiros caracteres (da esquerda para a direita) na tabela são a frase, excluindo as letras duplicadas. O resto da tabela será preenchido com as letras restantes do alfabeto, em ordem natural. A tabela principal acaba sendo -
Processo de cifra Playfair
Primeiro, uma mensagem de texto simples é dividida em pares de duas letras (dígrafos). Se houver um número ímpar de letras, um Z é adicionado à última letra. Digamos que queremos criptografar a mensagem “ocultar dinheiro”. Será escrito como -
HI DE MO NE YZ
As regras de criptografia são -
Se ambas as letras estiverem na mesma coluna, pegue a letra abaixo de cada uma (voltando para o topo se estiver na parte inferior)
T | você | O | R | Eu | 'H' e 'I' estão na mesma coluna, portanto, pegue a letra abaixo deles para substituir. HI → QC |
UMA | eu | S | B | C | |
D | E | F | G | H | |
K | M | N | P | Q | |
V | W | X | Y | Z |
Se ambas as letras estiverem na mesma linha, leve a letra à direita de cada uma (voltando para a esquerda se estiver na extremidade direita)
T | você | O | R | Eu | 'D' e 'E' estão na mesma linha, portanto, leve a letra à direita deles para substituir. DE → EF |
UMA | eu | S | B | C | |
D | E | F | G | H | |
K | M | N | P | Q | |
V | W | X | Y | Z |
Se nenhuma das duas regras anteriores for verdadeira, forme um retângulo com as duas letras e pegue as letras no canto oposto horizontal do retângulo.
Usando essas regras, o resultado da criptografia de 'esconder dinheiro' com a chave de 'tutoriais' seria -
QC EF NU MF ZV
Descriptografar a cifra Playfair é tão simples quanto fazer o mesmo processo ao contrário. O receptor tem a mesma chave e pode criar a mesma tabela de chaves e, em seguida, descriptografar quaisquer mensagens feitas com essa chave.
Valor de Segurança
Também é uma cifra de substituição e é difícil de quebrar em comparação com a cifra de substituição simples. Como no caso da cifra de substituição, a criptoanálise também é possível na cifra Playfair, no entanto, seria contra 625 pares de letras possíveis (25x25 alfabetos) em vez de 26 alfabetos diferentes possíveis.
A cifra Playfair foi usada principalmente para proteger segredos importantes, mas não críticos, já que é rápida de usar e não requer nenhum equipamento especial.
Cifra de Vigenere
Este esquema de cifra usa uma string de texto (digamos, uma palavra) como chave, que é então usada para fazer uma série de mudanças no texto simples.
Por exemplo, vamos supor que a chave seja 'ponto'. Cada alfabeto da chave é convertido em seu respectivo valor numérico: neste caso,
p → 16, o → 15, i → 9, n → 14 e t → 20.
Assim, a chave é: 16 15 9 14 20.
Processo de cifra de Vigenere
O remetente e o destinatário decidem sobre uma chave. Diga 'apontar' é a chave. A representação numérica desta chave é '16 15 9 14 20 '.
O remetente deseja criptografar a mensagem, digamos 'ataque do sudeste'. Ele organizará o texto simples e a chave numérica da seguinte forma -
Ele agora muda cada alfabeto de texto simples pelo número escrito abaixo dele para criar o texto cifrado conforme mostrado abaixo -
Aqui, cada caractere de texto simples foi alterado por uma quantidade diferente - e essa quantidade é determinada pela chave. A chave deve ser menor ou igual ao tamanho da mensagem.
Para descriptografar, o receptor usa a mesma chave e muda o texto cifrado recebido na ordem reversa para obter o texto simples.
Valor de Segurança
Vigenere Cipher foi projetado ajustando a cifra César padrão para reduzir a eficácia da criptoanálise no texto cifrado e tornar um criptosistema mais robusto. É significativamentemore secure than a regular Caesar Cipher.
Na história, foi regularmente usado para proteger informações políticas e militares confidenciais. Foi referido como ounbreakable cipher devido à dificuldade que representava para a criptoanálise.
Variantes de Vigenere Cipher
Existem dois casos especiais de cifra de Vigenere -
O comprimento da palavra-chave é igual ao da mensagem simples. Este caso é chamadoVernam Cipher. É mais seguro do que a cifra típica de Vigenere.
A cifra de Vigenere torna-se um criptosistema com sigilo perfeito, que é chamado One-time pad.
Bloco Único
As circunstâncias são -
- O comprimento da palavra-chave é igual ao comprimento do texto simples.
- A palavra-chave é uma sequência de alfabetos gerada aleatoriamente.
- A palavra-chave é usada apenas uma vez.
Valor de Segurança
Vamos comparar a cifra Shift com o teclado único.
Cifra de mudança - fácil de quebrar
No caso da cifra Shift, a mensagem inteira poderia ter um deslocamento entre 1 e 25. Este é um tamanho muito pequeno e muito fácil de usar força bruta. No entanto, com cada caractere agora tendo seu próprio deslocamento individual entre 1 e 26, as chaves possíveis crescem exponencialmente para a mensagem.
Bloco de uso único - Impossível de quebrar
Digamos que criptografamos o nome “ponto” com um teclado único. É um texto de 5 letras. Para quebrar o texto cifrado pela força bruta, você precisa tentar todas as possibilidades de chaves e realizar cálculos para (26 x 26 x 26 x 26 x 26) = 26 5 = 11881376 vezes. Isso é para uma mensagem com 5 alfabetos. Assim, para uma mensagem mais longa, o cálculo cresce exponencialmente com cada alfabeto adicional. Isso torna computacionalmente impossível quebrar o texto cifrado por força bruta.
Cifra de Transposição
É outro tipo de cifra em que a ordem dos alfabetos no texto simples é reorganizada para criar o texto cifrado. Os alfabetos de texto simples reais não são substituídos.
Um exemplo é uma cifra de 'transposição colunar simples' em que o texto simples é escrito horizontalmente com uma certa largura do alfabeto. Em seguida, o texto cifrado é lido verticalmente conforme mostrado.
Por exemplo, o texto simples é “a estátua de ouro está na décima primeira caverna” e a chave aleatória secreta escolhida é “cinco”. Organizamos este texto horizontalmente na tabela com o número da coluna igual ao valor da chave. O texto resultante é mostrado abaixo.
O texto cifrado é obtido lendo a coluna verticalmente para baixo, da primeira à última coluna. O texto cifrado é 'gnuneaoseenvltiltedasehetivc'.
Para descriptografar, o receptor prepara uma tabela semelhante. O número de colunas é igual ao número da chave. O número de linhas é obtido dividindo o número total de alfabetos de texto cifrado pelo valor da chave e arredondando o quociente para o próximo valor inteiro.
O receptor então escreve o texto cifrado recebido verticalmente para baixo e da coluna da esquerda para a direita. Para obter o texto, ele lê horizontalmente da esquerda para a direita e de cima para baixo.
Os dados digitais são representados em cadeias de dígitos binários (bits), ao contrário dos alfabetos. Os criptossistemas modernos precisam processar essas sequências binárias para convertê-las em outra sequência binária. Com base em como essas strings binárias são processadas, esquemas de criptografia simétrica podem ser classificados em -
Cifras de bloco
Nesse esquema, o texto binário simples é processado em blocos (grupos) de bits por vez; isto é, um bloco de bits de texto simples é selecionado, uma série de operações é executada neste bloco para gerar um bloco de bits de texto cifrado. O número de bits em um bloco é fixo. Por exemplo, os esquemas DES e AES têm tamanhos de bloco de 64 e 128, respectivamente.
Cifras de transmissão
Neste esquema, o texto simples é processado um bit de cada vez, ou seja, um bit de texto simples é obtido e uma série de operações é executada nele para gerar um bit de texto cifrado. Tecnicamente, as cifras de fluxo são cifras de bloco com um tamanho de bloco de um bit.
O esquema básico de uma cifra de bloco é descrito a seguir -
Uma cifra de bloco pega um bloco de bits de texto simples e gera um bloco de bits de texto cifrado, geralmente do mesmo tamanho. O tamanho do bloco é fixo no esquema fornecido. A escolha do tamanho do bloco não afeta diretamente a força do esquema de criptografia. A força da cifra depende do comprimento da chave.
Tamanho do bloco
Embora qualquer tamanho de bloco seja aceitável, os seguintes aspectos são levados em consideração ao selecionar o tamanho de um bloco.
Avoid very small block size- Digamos que o tamanho de um bloco seja de m bits. Então, as possíveis combinações de bits de texto simples são 2 m . Se o invasor descobrir os blocos de texto simples correspondentes a alguns blocos de texto cifrado enviados anteriormente, o invasor pode lançar um tipo de 'ataque de dicionário' construindo um dicionário de pares de texto simples / texto cifrado enviado usando essa chave de criptografia. Um tamanho de bloco maior torna o ataque mais difícil, pois o dicionário precisa ser maior.
Do not have very large block size- Com tamanho de bloco muito grande, a cifra torna-se ineficiente para operar. Esses textos simples precisarão ser preenchidos antes de serem criptografados.
Multiples of 8 bit - Um tamanho de bloco preferido é um múltiplo de 8, pois é fácil de implementar, já que a maioria dos processadores de computador manipula dados em múltiplos de 8 bits.
Preenchimento na cifra de bloco
As cifras de bloco processam blocos de tamanhos fixos (digamos, 64 bits). O comprimento dos textos simples geralmente não é um múltiplo do tamanho do bloco. Por exemplo, um texto simples de 150 bits fornece dois blocos de 64 bits cada um com o terceiro bloco de 22 bits de equilíbrio. O último bloco de bits precisa ser preenchido com informações redundantes para que o comprimento do bloco final seja igual ao tamanho do bloco do esquema. Em nosso exemplo, os 22 bits restantes precisam ter 42 bits redundantes adicionais adicionados para fornecer um bloco completo. O processo de adição de bits ao último bloco é conhecido comopadding.
Muito preenchimento torna o sistema ineficiente. Além disso, o preenchimento pode tornar o sistema inseguro às vezes, se o preenchimento for feito sempre com os mesmos bits.
Esquemas de cifra de bloco
Há um grande número de esquemas de cifras de bloco em uso. Muitos deles são conhecidos publicamente. As cifras de bloco mais populares e proeminentes estão listadas abaixo.
Digital Encryption Standard (DES)- A popular cifra de bloco dos anos 1990. Agora é considerada uma cifra de bloco 'quebrada', principalmente devido ao seu pequeno tamanho de chave.
Triple DES- É um esquema variante baseado em aplicações DES repetidas. Ainda é uma cifra de bloco respeitada, mas ineficiente em comparação com as novas cifras de bloco mais rápidas disponíveis.
Advanced Encryption Standard (AES) - É uma cifra de bloco relativamente nova baseada no algoritmo de criptografia Rijndael que ganhou o concurso de design da AES.
IDEA- É uma cifra de bloco suficientemente forte com um tamanho de bloco de 64 e um tamanho de chave de 128 bits. Vários aplicativos usam criptografia IDEA, incluindo versões anteriores do protocolo Pretty Good Privacy (PGP). O uso do esquema IDEA tem adoção restrita devido a questões de patentes.
Twofish- Este esquema de cifra de bloco usa tamanho de bloco de 128 bits e uma chave de comprimento variável. Foi um dos finalistas da AES. Ele é baseado na cifra de bloco anterior Blowfish com um tamanho de bloco de 64 bits.
Serpent- Uma cifra de bloco com tamanho de bloco de 128 bits e comprimentos de chave de 128, 192 ou 256 bits, que também foi finalista do concurso AES. É mais lento, mas tem um design mais seguro do que outra cifra de bloco.
Nas próximas seções, discutiremos primeiro o modelo de cifra de bloco seguido por DES e AES, duas das cifras de bloco modernas mais influentes.
A codificação Feistel não é um esquema específico de codificação de bloco. É um modelo de design do qual muitas cifras de bloco diferentes são derivadas. DES é apenas um exemplo de uma cifra Feistel. Um sistema criptográfico baseado na estrutura de cifras Feistel usa o mesmo algoritmo para criptografia e descriptografia.
Processo de criptografia
O processo de criptografia usa a estrutura Feistel que consiste em várias rodadas de processamento do texto simples, cada rodada consistindo em uma etapa de “substituição” seguida por uma etapa de permutação.
A estrutura Feistel é mostrada na ilustração a seguir -
O bloco de entrada para cada rodada é dividido em duas metades que podem ser denotadas como L e R para a metade esquerda e a metade direita.
Em cada rodada, a metade direita do bloco, R, segue inalterada. Mas a metade esquerda, L, passa por uma operação que depende de R e da chave de criptografia. Primeiro, aplicamos uma função de criptografia 'f' que recebe duas entradas - a chave K e R. A função produz a saída f (R, K). Então, nós XOR a saída da função matemática com L.
Na implementação real do Feistel Cipher, como o DES, em vez de usar a chave de criptografia inteira durante cada rodada, uma chave dependente de rodada (uma subchave) é derivada da chave de criptografia. Isso significa que cada rodada usa uma chave diferente, embora todas essas subchaves estejam relacionadas à chave original.
A etapa de permutação no final de cada rodada troca o L modificado e o R não modificado. Portanto, o L para a próxima rodada seria R da rodada atual. E R para a próxima rodada será a saída L da rodada atual.
As etapas de substituição e permutação acima formam uma 'rodada'. O número de rodadas é especificado pelo projeto do algoritmo.
Assim que a última rodada for concluída, os dois sub-blocos, 'R' e 'L', são concatenados nesta ordem para formar o bloco de texto cifrado.
A parte difícil de projetar uma Cifra Feistel é a seleção da função redonda 'f'. Para ser um esquema inquebrável, essa função precisa ter várias propriedades importantes que estão além do escopo de nossa discussão.
Processo de descriptografia
O processo de descriptografia na cifra Feistel é quase semelhante. Em vez de começar com um bloco de texto simples, o bloco de texto cifrado é alimentado no início da estrutura de Feistel e, a seguir, o processo é exatamente o mesmo descrito na ilustração fornecida.
Diz-se que o processo é quase semelhante e não exatamente o mesmo. No caso de descriptografia, a única diferença é que as subchaves usadas na criptografia são usadas na ordem inversa.
A troca final de 'L' e 'R' na última etapa da Cifra Feistel é essencial. Se eles não forem trocados, o texto cifrado resultante não poderá ser descriptografado usando o mesmo algoritmo.
Número de rodadas
O número de rodadas usadas em um Feistel Cipher depende da segurança desejada do sistema. Mais número de rodadas fornece um sistema mais seguro. Mas, ao mesmo tempo, mais rodadas significam os processos ineficientes de criptografia e descriptografia lentos. O número de rodadas nos sistemas, portanto, depende da compensação entre eficiência e segurança.
O Data Encryption Standard (DES) é uma cifra de bloco de chave simétrica publicada pelo Instituto Nacional de Padrões e Tecnologia (NIST).
DES é uma implementação de uma codificação Feistel. Ele usa uma estrutura Feistel de 16 redondos. O tamanho do bloco é de 64 bits. Embora o comprimento da chave seja de 64 bits, o DES tem um comprimento de chave efetivo de 56 bits, uma vez que 8 dos 64 bits da chave não são usados pelo algoritmo de criptografia (funcionam apenas como bits de verificação). A estrutura geral do DES é representada na ilustração a seguir -
Como o DES é baseado na codificação Feistel, tudo o que é necessário para especificar o DES é -
- Função redonda
- Cronograma chave
- Qualquer processamento adicional - permutação inicial e final
Permutação inicial e final
As permutações inicial e final são caixas retas de permutação (caixas P) que são inversas uma da outra. Eles não têm significado de criptografia no DES. As permutações inicial e final são mostradas a seguir -
Função de Rodada
O coração dessa cifra é a função DES, f . A função DES aplica uma chave de 48 bits aos 32 bits mais à direita para produzir uma saída de 32 bits.
Expansion Permutation Box- Como a entrada direita é de 32 bits e a chave redonda é de 48 bits, primeiro precisamos expandir a entrada direita para 48 bits. A lógica de permutação é representada graficamente na ilustração a seguir -
A lógica de permutação representada graficamente é geralmente descrita como tabela na especificação DES ilustrada como mostrado -
XOR (Whitener).- Após a permutação de expansão, DES faz uma operação XOR na seção direita expandida e na chave redonda. A chave redonda é usada apenas nesta operação.
Substitution Boxes.- As S-boxes realizam a mistura real (confusão). O DES usa 8 S-boxes, cada uma com uma entrada de 6 bits e uma saída de 4 bits. Consulte a ilustração a seguir -
A regra S-box é ilustrada abaixo -
Há um total de oito mesas S-box. A saída de todas as oito caixas-s é então combinada em uma seção de 32 bits.
Straight Permutation - A saída de 32 bits das S-boxes é então submetida à permutação direta com a regra mostrada na ilustração a seguir:
Geração de Chave
O gerador de chave redonda cria dezesseis chaves de 48 bits a partir de uma chave de criptografia de 56 bits. O processo de geração de chave é descrito na ilustração a seguir -
A lógica para queda de Paridade, deslocamento e P-box de compressão é fornecida na descrição do DES.
DES Analysis
O DES satisfaz ambas as propriedades desejadas da cifra de bloco. Essas duas propriedades tornam a cifra muito forte.
Avalanche effect - Uma pequena mudança no texto simples resulta em uma mudança muito grande no texto cifrado.
Completeness - Cada bit de texto cifrado depende de muitos bits de texto simples.
Durante os últimos anos, a criptoanálise encontrou algumas fraquezas no DES quando as chaves selecionadas são chaves fracas. Essas chaves devem ser evitadas.
DES provou ser uma cifra de bloco muito bem projetada. Não houve ataques criptanalíticos significativos ao DES, além da busca exaustiva de chaves.
A velocidade das buscas exaustivas de chaves no DES após 1990 começou a causar desconforto entre os usuários do DES. No entanto, os usuários não queriam substituir o DES, pois leva uma enorme quantidade de tempo e dinheiro para alterar os algoritmos de criptografia que são amplamente adotados e incorporados em grandes arquiteturas de segurança.
A abordagem pragmática não era abandonar completamente o DES, mas mudar a maneira como o DES é usado. Isso levou aos esquemas modificados de Triple DES (às vezes conhecido como 3DES).
A propósito, existem duas variantes de Triple DES conhecidas como Triple DES de 3 chaves (3TDES) e Triple DES de 2 chaves (2TDES).
3-KEY Triple DES
Antes de usar 3TDES, o usuário primeiro gera e distribui uma chave 3TDES K, que consiste em três chaves DES diferentes K 1 , K 2 e K 3 . Isso significa que a chave 3TDES real tem comprimento 3 × 56 = 168 bits. O esquema de criptografia é ilustrado a seguir -
O processo de criptografia-descriptografia é o seguinte -
Criptografe os blocos de texto simples usando um único DES com a chave K 1 .
Agora descriptografe a saída da etapa 1 usando DES único com a chave K 2 .
Finalmente, criptografe a saída da etapa 2 usando DES único com a chave K 3 .
A saída da etapa 3 é o texto cifrado.
A descriptografia de um texto cifrado é um processo reverso. O usuário primeiro descriptografa usando K 3, depois criptografa com K 2 e , finalmente, descriptografa com K 1 .
Devido a este projeto de Triple DES como um processo criptografar-descriptografar-criptografar, é possível usar uma implementação 3TDES (hardware) para DES único definindo K 1, K 2 e K 3 com o mesmo valor. Isso fornece compatibilidade com versões anteriores do DES.
A segunda variante de Triple DES (2TDES) é idêntica a 3TDES, exceto que K 3 é substituído por K 1 . Em outras palavras, o usuário criptografa blocos de texto simples com a chave K 1, depois descriptografa com a chave K 2 e , finalmente, criptografa com K 1 novamente. Portanto, 2TDES tem um comprimento de chave de 112 bits.
Os sistemas DES triplo são significativamente mais seguros do que o DES único, mas esses são claramente um processo muito mais lento do que a criptografia usando DES único.
O algoritmo de criptografia simétrica mais popular e amplamente adotado que provavelmente será encontrado hoje em dia é o Advanced Encryption Standard (AES). Ele é encontrado pelo menos seis vezes mais rápido do que o DES triplo.
Foi necessário substituir o DES porque o tamanho da chave era muito pequeno. Com o aumento do poder de computação, ele foi considerado vulnerável contra ataques exaustivos de busca de chaves. Triple DES foi projetado para superar essa desvantagem, mas foi considerado lento.
As características do AES são as seguintes -
- Cifra de bloco simétrico de chave simétrica
- Dados de 128 bits, chaves de 128/192/256 bits
- Mais forte e mais rápido do que Triple-DES
- Fornece especificações completas e detalhes de design
- Software implementável em C e Java
Operação de AES
AES é uma cifra iterativa em vez de Feistel. É baseado em 'rede de substituição-permutação'. É composto por uma série de operações vinculadas, algumas das quais envolvem a substituição de entradas por saídas específicas (substituições) e outras envolvem o embaralhamento de bits (permutações).
Curiosamente, o AES executa todos os seus cálculos em bytes, em vez de bits. Portanto, o AES trata os 128 bits de um bloco de texto simples como 16 bytes. Esses 16 bytes são organizados em quatro colunas e quatro linhas para processamento como uma matriz -
Ao contrário do DES, o número de rodadas no AES é variável e depende do comprimento da chave. O AES usa 10 rodadas para chaves de 128 bits, 12 rodadas para chaves de 192 bits e 14 rodadas para chaves de 256 bits. Cada uma dessas rodadas usa uma chave redonda diferente de 128 bits, que é calculada a partir da chave AES original.
O esquema da estrutura AES é dado na ilustração a seguir -
Processo de criptografia
Aqui, nos restringimos à descrição de uma rodada típica de criptografia AES. Cada rodada é composta por quatro subprocessos. O processo da primeira rodada é descrito abaixo -
Substituição de Byte (SubBytes)
Os 16 bytes de entrada são substituídos pela consulta de uma tabela fixa (S-box) fornecida no design. O resultado é uma matriz de quatro linhas e quatro colunas.
Shiftrows
Cada uma das quatro linhas da matriz é deslocada para a esquerda. Quaisquer entradas que 'caiam' são reinseridas no lado direito da linha. A mudança é realizada da seguinte forma -
A primeira linha não é deslocada.
A segunda linha é deslocada um (byte) para a esquerda.
A terceira linha é deslocada duas posições para a esquerda.
A quarta linha é deslocada três posições para a esquerda.
O resultado é uma nova matriz consistindo nos mesmos 16 bytes, mas deslocados em relação um ao outro.
MixColumns
Cada coluna de quatro bytes agora é transformada usando uma função matemática especial. Esta função toma como entrada os quatro bytes de uma coluna e produz quatro bytes completamente novos, que substituem a coluna original. O resultado é outra nova matriz composta por 16 novos bytes. Ressalta-se que esta etapa não é realizada na última rodada.
Addroundkey
Os 16 bytes da matriz são agora considerados como 128 bits e são XORed para os 128 bits da chave redonda. Se esta for a última rodada, a saída será o texto cifrado. Caso contrário, os 128 bits resultantes são interpretados como 16 bytes e começamos outra rodada semelhante.
Processo de descriptografia
O processo de descriptografia de um texto cifrado AES é semelhante ao processo de criptografia na ordem inversa. Cada rodada consiste em quatro processos conduzidos na ordem inversa -
- Adicionar chave redonda
- Colunas de mistura
- Mudar de linha
- Substituição de byte
Uma vez que os subprocessos em cada rodada ocorrem de maneira reversa, ao contrário de uma codificação Feistel, os algoritmos de criptografia e descriptografia precisam ser implementados separadamente, embora estejam intimamente relacionados.
Análise AES
Na criptografia atual, o AES é amplamente adotado e suportado tanto em hardware quanto em software. Até o momento, nenhum ataque criptanalítico prático foi descoberto contra o AES. Além disso, o AES tem flexibilidade integrada de comprimento de chave, o que permite um certo grau de 'proteção futura' contra o progresso na capacidade de realizar pesquisas exaustivas de chave.
No entanto, assim como no DES, a segurança do AES é garantida apenas se for implementado corretamente e se for empregado um bom gerenciamento de chaves.
Neste capítulo, discutiremos os diferentes modos de operação de uma cifra de bloco. Essas são regras de procedimento para uma cifra de bloco genérica. Curiosamente, os diferentes modos resultam na obtenção de diferentes propriedades que aumentam a segurança da cifra de bloco subjacente.
Uma cifra de bloco processa os blocos de dados de tamanho fixo. Normalmente, o tamanho de uma mensagem é maior que o tamanho do bloco. Conseqüentemente, a mensagem longa é dividida em uma série de blocos de mensagens sequenciais e a cifra opera nesses blocos um de cada vez.
Modo Livro Eletrônico de Códigos (BCE)
Este modo é a maneira mais direta de processar uma série de blocos de mensagens listados sequencialmente.
Operação
O usuário pega o primeiro bloco de texto simples e o criptografa com a chave para produzir o primeiro bloco de texto cifrado.
Ele então pega o segundo bloco de texto simples e segue o mesmo processo com a mesma chave e assim por diante.
O modo ECB é deterministic, isto é, se os blocos de texto simples P1, P2, ..., Pm forem criptografados duas vezes na mesma chave, os blocos de texto cifrado de saída serão os mesmos.
Na verdade, para uma determinada chave, tecnicamente, podemos criar um livro de códigos de textos criptografados para todos os blocos de texto simples possíveis. A criptografia implicaria, então, apenas em procurar o texto simples necessário e selecionar o texto cifrado correspondente. Assim, a operação é análoga à atribuição de palavras de código em um livro de código e, portanto, obtém um nome oficial - Modo de operação do Livro de Código Eletrônico (ECB). É ilustrado da seguinte forma -
Análise do Modo ECB
Na realidade, qualquer dado de aplicativo geralmente contém informações parciais que podem ser adivinhadas. Por exemplo, a faixa de salário pode ser adivinhada. Um texto cifrado do ECB pode permitir que um invasor adivinhe o texto simples por tentativa e erro se a mensagem de texto simples estiver dentro do previsível.
Por exemplo, se um texto cifrado do modo ECB é conhecido por criptografar um valor de salário, então um pequeno número de tentativas permitirá que um invasor recupere o valor. Em geral, não desejamos usar uma cifra determinística e, portanto, o modo ECB não deve ser usado na maioria dos aplicativos.
Modo Cipher Block Chaining (CBC)
O modo de operação CBC fornece dependência de mensagem para gerar texto cifrado e torna o sistema não determinístico.
Operação
A operação do modo CBC é descrita na ilustração a seguir. As etapas são as seguintes -
Carregue o vetor de inicialização (IV) de n bits no registro superior.
XOR o bloco de texto simples de n bits com valor de dados no registro superior.
Criptografe o resultado da operação XOR com cifra de bloco subjacente com a chave K.
Alimente o bloco de texto cifrado no registro superior e continue a operação até que todos os blocos de texto simples sejam processados.
Para a descriptografia, os dados IV são XORed com o primeiro bloco de texto criptografado descriptografado. O primeiro bloco de texto cifrado também é alimentado para registrar a substituição de IV para descriptografar o próximo bloco de texto cifrado.
Análise do modo CBC
No modo CBC, o bloco de texto simples atual é adicionado ao bloco de texto cifrado anterior e, em seguida, o resultado é criptografado com a chave. A descriptografia é, portanto, o processo reverso, que envolve descriptografar o texto cifrado atual e, em seguida, adicionar o bloco de texto cifrado anterior ao resultado.
A vantagem do CBC sobre o ECB é que a alteração do IV resulta em texto cifrado diferente para mensagem idêntica. No lado negativo, o erro na transmissão é propagado para alguns blocos adicionais durante a descriptografia devido ao efeito de encadeamento.
Vale a pena mencionar que o modo CBC forma a base de um conhecido mecanismo de autenticação de origem de dados. Portanto, é uma vantagem para os aplicativos que requerem criptografia simétrica e autenticação de origem de dados.
Modo de feedback de cifra (CFB)
Nesse modo, cada bloco de texto cifrado é 'realimentado' no processo de criptografia para criptografar o próximo bloco de texto simples.
Operação
A operação do modo CFB é descrita na ilustração a seguir. Por exemplo, no sistema atual, um bloco de mensagem tem bits de tamanho onde 1 <s <n. O modo CFB requer um vetor de inicialização (IV) como bloco inicial de entrada aleatória de n bits. O IV não precisa ser secreto. As etapas de operação são -
Carregue o IV no registro superior.
Criptografe o valor dos dados no registro superior com cifra de bloco subjacente com a chave K.
Pegue apenas o número 's' dos bits mais significativos (bits à esquerda) de saída do processo de criptografia e execute o XOR deles com o bloco de mensagem de texto simples de 's' para gerar o bloco de texto cifrado.
Alimente o bloco de texto cifrado no registro superior deslocando os dados já presentes para a esquerda e continue a operação até que todos os blocos de texto simples sejam processados.
Essencialmente, o bloco de texto cifrado anterior é criptografado com a chave e, em seguida, o resultado é XORed para o bloco de texto simples atual.
Etapas semelhantes são seguidas para a descriptografia. O IV pré-decidido é carregado inicialmente no início da descriptografia.
Análise do modo CFB
O modo CFB difere significativamente do modo ECB, o texto cifrado correspondente a um determinado bloco de texto simples depende não apenas desse bloco de texto simples e da chave, mas também do bloco de texto cifrado anterior. Em outras palavras, o bloco de texto cifrado depende da mensagem.
O CFB tem uma característica muito estranha. Nesse modo, o usuário descriptografa o texto cifrado usando apenas o processo de criptografia da cifra de bloco. O algoritmo de descriptografia da cifra de bloco subjacente nunca é usado.
Aparentemente, o modo CFB está convertendo uma cifra de bloco em um tipo de cifra de fluxo. O algoritmo de criptografia é usado como um gerador de fluxo de chave para produzir o fluxo de chave que é colocado no registrador inferior. Este fluxo de chave é então XORed com o texto simples como no caso de cifra de fluxo.
Ao converter uma cifra de bloco em uma cifra de fluxo, o modo CFB fornece algumas das propriedades vantajosas de uma cifra de fluxo enquanto retém as propriedades vantajosas de uma cifra de bloco.
Por outro lado, o erro de transmissão é propagado devido à mudança de blocos.
Modo de feedback de saída (OFB)
Envolve a alimentação dos blocos de saída sucessivos da cifra de bloco subjacente de volta para ele. Esses blocos de feedback fornecem uma sequência de bits para alimentar o algoritmo de criptografia que atua como o gerador de fluxo de chave, como no caso do modo CFB.
O fluxo de chave gerado é XOR-ed com os blocos de texto simples. O modo OFB requer um IV como bloco inicial de entrada aleatória de n bits. O IV não precisa ser secreto.
A operação é descrita na ilustração a seguir -
Modo de contador (CTR)
Pode ser considerado como uma versão baseada em contador do modo CFB sem o feedback. Nesse modo, tanto o emissor quanto o receptor precisam acessar um contador confiável, que calcula um novo valor compartilhado cada vez que um bloco de texto cifrado é trocado. Este contador compartilhado não é necessariamente um valor secreto, mas o desafio é que ambos os lados devem manter o contador sincronizado.
Operação
A criptografia e a descriptografia no modo CTR são descritas na ilustração a seguir. As etapas de operação são -
Carregar o valor do contador inicial no registro superior é o mesmo para o remetente e o receptor. Ele desempenha a mesma função que o IV no modo CFB (e CBC).
Criptografe o conteúdo do contador com a tecla e coloque o resultado no registro inferior.
Leve o primeiro bloco de texto simples P1 e XOR para o conteúdo do registrador inferior. O resultado disso é C1. Envie C1 para o receptor e atualize o contador. A atualização do contador substitui o feedback do texto cifrado no modo CFB.
Continue dessa maneira até que o último bloco de texto simples seja criptografado.
A descriptografia é o processo reverso. O bloco de texto cifrado é XORed com a saída de conteúdo criptografado de valor de contador. Após a descriptografia, cada bloco de texto cifrado é atualizado, como no caso de criptografia.
Análise do modo de contador
Ele não tem dependência de mensagem e, portanto, um bloco de texto cifrado não depende dos blocos de texto simples anteriores.
Como o modo CFB, o modo CTR não envolve o processo de descriptografia da cifra de bloco. Isso ocorre porque o modo CTR está realmente usando a cifra de bloco para gerar um fluxo de chaves, que é criptografado usando a função XOR. Em outras palavras, o modo CTR também converte uma cifra de bloco em uma cifra de fluxo.
A séria desvantagem do modo CTR é que ele requer um contador síncrono no emissor e no receptor. A perda de sincronização leva à recuperação incorreta do texto simples.
No entanto, o modo CTR tem quase todas as vantagens do modo CFB. Além disso, ele não propaga erro de transmissão.
Criptografia de chave pública
Ao contrário da criptografia de chave simétrica, não encontramos o uso histórico da criptografia de chave pública. É um conceito relativamente novo.
A criptografia simétrica era adequada para organizações como governos, forças armadas e grandes corporações financeiras que estavam envolvidas na comunicação confidencial.
Com a disseminação de redes de computadores menos seguras nas últimas décadas, sentiu-se uma necessidade genuína de usar criptografia em maior escala. A chave simétrica foi considerada não prática devido aos desafios enfrentados para o gerenciamento de chaves. Isso deu origem aos criptosistemas de chave pública.
O processo de criptografia e descriptografia é descrito na ilustração a seguir -
As propriedades mais importantes do esquema de criptografia de chave pública são -
Chaves diferentes são usadas para criptografar e descriptografar. Esta é uma propriedade que define este esquema diferente do esquema de criptografia simétrica.
Cada receptor possui uma chave de descriptografia exclusiva, geralmente conhecida como sua chave privada.
O receptor precisa publicar uma chave de criptografia, conhecida como sua chave pública.
Alguma garantia da autenticidade de uma chave pública é necessária neste esquema para evitar spoofing pelo adversário como o receptor. Geralmente, este tipo de criptosistema envolve terceiros confiáveis que certificam que uma determinada chave pública pertence apenas a uma pessoa ou entidade específica.
O algoritmo de criptografia é complexo o suficiente para proibir o invasor de deduzir o texto simples do texto cifrado e a chave de criptografia (pública).
Embora as chaves privadas e públicas estejam relacionadas matematicamente, não é possível calcular a chave privada a partir da chave pública. Na verdade, a parte inteligente de qualquer criptosistema de chave pública está no projeto de um relacionamento entre duas chaves.
Existem três tipos de esquemas de criptografia de chave pública. Nós os discutiremos nas seções a seguir -
RSA Cryptosystem
Este criptosistema é o sistema inicial. Continua a ser o criptossistema mais utilizado até hoje. O sistema foi inventado por três estudiososRon Rivest, Adi Shamir, e Len Adleman e, portanto, é denominado como criptossistema RSA.
Veremos dois aspectos do criptossistema RSA, primeiro a geração do par de chaves e segundo os algoritmos de criptografia-descriptografia.
Geração de par de chaves RSA
Cada pessoa ou parte que deseje participar na comunicação usando criptografia precisa gerar um par de chaves, a saber, chave pública e chave privada. O processo seguido na geração das chaves é descrito abaixo -
Generate the RSA modulus (n)
Selecione dois primos grandes, pe q.
Calcule n = p * q. Para uma criptografia forte e inquebrável, seja n um número grande, normalmente um mínimo de 512 bits.
Find Derived Number (e)
Número e deve ser maior que 1 e menor que (p - 1) (q - 1).
Não deve haver nenhum fator comum para e e (p - 1) (q - 1) exceto para 1. Em outras palavras, dois números e e (p - 1) (q - 1) são coprimos.
Form the public key
O par de números (n, e) forma a chave pública RSA e é tornado público.
Curiosamente, embora n seja parte da chave pública, a dificuldade em fatorar um grande número primo garante que o invasor não possa encontrar em tempo finito os dois primos (p & q) usados para obter n. Essa é a força da RSA.
Generate the private key
A chave privada d é calculada de p, q e e. Para dados n e e, existe um número único d.
O número d é o inverso do módulo e (p - 1) (q - 1). Isso significa que d é o número menor que (p - 1) (q - 1) tal que, quando multiplicado por e, é igual a 1 módulo (p - 1) (q - 1).
Esta relação é escrita matematicamente da seguinte forma -
ed = 1 mod (p − 1)(q − 1)
O Algoritmo Euclidiano Estendido toma p, q e e como entrada e dá d como saída.
Exemplo
Um exemplo de geração de par de chaves RSA é fornecido abaixo. (Para facilitar a compreensão, os primos p & q considerados aqui são valores pequenos. Na prática, esses valores são muito altos).
Sejam dois primos p = 7 e q = 13. Assim, módulo n = pq = 7 x 13 = 91.
Selecione e = 5, que é uma escolha válida, pois não há número que seja o fator comum de 5 e (p - 1) (q - 1) = 6 × 12 = 72, exceto 1.
O par de números (n, e) = (91, 5) forma a chave pública e pode ser disponibilizado para qualquer pessoa a quem desejemos que nos envie mensagens criptografadas.
Insira p = 7, q = 13 e e = 5 para o Algoritmo Euclidiano Estendido. A saída será d = 29.
Verifique se o d calculado está correto calculando -
de = 29 × 5 = 145 = 1 mod 72
Portanto, a chave pública é (91, 5) e as chaves privadas é (91, 29).
Criptografia e descriptografia
Uma vez que o par de chaves foi gerado, o processo de criptografia e descriptografia é relativamente simples e computacionalmente fácil.
Curiosamente, o RSA não opera diretamente em cadeias de bits como no caso da criptografia de chave simétrica. Ele opera em números módulo n. Portanto, é necessário representar o texto simples como uma série de números menores que n.
Criptografia RSA
Suponha que o remetente deseje enviar alguma mensagem de texto para alguém cuja chave pública seja (n, e).
O remetente então representa o texto simples como uma série de números menores que n.
Para criptografar o primeiro texto simples P, que é um número módulo n. O processo de criptografia é uma etapa matemática simples como -
C = Pe mod n
Em outras palavras, o texto cifrado C é igual ao texto simples P multiplicado por ele mesmo e vezes e então reduzido módulo n. Isso significa que C também é um número menor que n.
Voltando ao nosso exemplo de Geração de chave com texto simples P = 10, obtemos o texto cifrado C -
C = 105 mod 91
RSA Decryption
O processo de descriptografia para RSA também é muito simples. Suponha que o receptor do par de chaves públicas (n, e) tenha recebido um texto cifrado C.
O receptor eleva C à potência de sua chave privada d. O módulo n resultante será o texto simples P.
Plaintext = Cd mod n
Voltando novamente ao nosso exemplo numérico, o texto cifrado C = 82 seria descriptografado para o número 10 usando a chave privada 29 -
Plaintext = 8229 mod 91 = 10
Análise RSA
A segurança do RSA depende da força de duas funções distintas. O criptossistema RSA é o mais popular do sistema de criptografia de chave pública, baseado na dificuldade prática de fatorar números muito grandes.
Encryption Function - É considerada uma função unilateral de conversão de texto simples em texto cifrado e só pode ser revertida com o conhecimento da chave privada d.
Key Generation- A dificuldade de determinar uma chave privada de uma chave pública RSA é equivalente a fatorar o módulo n. Portanto, um invasor não pode usar o conhecimento de uma chave pública RSA para determinar uma chave privada RSA, a menos que possa fatorar n. É também uma função unilateral, ir dos valores p & q para o módulo n é fácil, mas o reverso não é possível.
Se alguma dessas duas funções for comprovada como não unilateral, o RSA será interrompido. De fato, se uma técnica de fatoração eficiente for desenvolvida, o RSA não será mais seguro.
A força da criptografia RSA diminui drasticamente contra ataques se os números peq não forem primos grandes e / ou a chave pública e escolhida for um número pequeno.
ElGamal Cryptosystem
Junto com o RSA, existem outros criptossistemas de chave pública propostos. Muitos deles são baseados em diferentes versões do Problema do Logaritmo Discreto.
O criptosistema ElGamal, denominado Variante da Curva Elíptica, é baseado no Problema do Logaritmo Discreto. Ele deriva a força da suposição de que os logaritmos discretos não podem ser encontrados em um período de tempo prático para um determinado número, enquanto a operação inversa da potência pode ser calculada de forma eficiente.
Vamos examinar uma versão simples do ElGamal que funciona com números módulo p. No caso de variantes da curva elíptica, é baseado em sistemas numéricos bastante diferentes.
Geração do par de chaves ElGamal
Cada usuário do criptossistema ElGamal gera o par de chaves da seguinte forma -
Choosing a large prime p. Geralmente, um número primo de comprimento de 1024 a 2048 bits é escolhido.
Choosing a generator element g.
Esse número deve estar entre 1 e p - 1, mas não pode ser qualquer número.
É um gerador do grupo multiplicativo de inteiros módulo p. Isso significa que para cada inteiro m co-primo a p, há um inteiro k tal que g k = a mod n.
Por exemplo, 3 é gerador do grupo 5 (Z 5 = {1, 2, 3, 4}).
N | 3 n | 3 n mod 5 |
---|---|---|
1 | 3 | 3 |
2 | 9 | 4 |
3 | 27 | 2 |
4 | 81 | 1 |
Choosing the private key. A chave privada x é qualquer número maior que 1 e menor que p − 1.
Computing part of the public key. O valor y é calculado a partir dos parâmetros p, ge da chave privada x da seguinte forma -
y = gx mod p
Obtaining Public key. A chave pública ElGamal consiste em três parâmetros (p, g, y).
Por exemplo, suponha que p = 17 e que g = 6 (pode-se confirmar que 6 é um gerador do grupo Z 17 ). A chave privada x pode ser qualquer número maior que 1 e menor que 71, então escolhemos x = 5. O valor y é então calculado da seguinte maneira -
y = 65 mod 17 = 7
Assim, a chave privada é 62 e a chave pública é (17, 6, 7).
Criptografia e descriptografia
A geração de um par de chaves ElGamal é comparativamente mais simples do que o processo equivalente para RSA. Mas a criptografia e a descriptografia são um pouco mais complexas do que RSA.
Criptografia ElGamal
Suponha que o remetente deseja enviar um texto simples para alguém cuja chave pública ElGamal é (p, g, y), então -
Sender representa o texto simples como uma série de números módulo p.
Para criptografar o primeiro texto simples P, que é representado como um número módulo p. O processo de criptografia para obter o texto cifrado C é o seguinte -
- Gere aleatoriamente um número k;
- Calcule dois valores C1 e C2, onde -
C1 = gk mod p
C2 = (P*yk) mod p
Envie o texto cifrado C, consistindo em dois valores separados (C1, C2), enviados juntos.
Referindo-se ao nosso exemplo de geração de chave ElGamal dado acima, o texto simples P = 13 é criptografado da seguinte forma -
- Gere aleatoriamente um número, digamos k = 10
- Calcule os dois valores C1 e C2, onde -
C1 = 610 mod 17
C2 = (13*710) mod 17 = 9
Envie o texto cifrado C = (C1, C2) = (15, 9).
ElGamal Decryption
Para descriptografar o texto cifrado (C1, C2) usando a chave privada x, as duas etapas a seguir são executadas -
Calcule o inverso modular de (C1) x módulo p, que é (C1) -x , geralmente referido como fator de descriptografia.
Obtenha o texto simples usando a seguinte fórmula -
C2 × (C1)-x mod p = Plaintext
Em nosso exemplo, para descriptografar o texto cifrado C = (C1, C2) = (15, 9) usando a chave privada x = 5, o fator de descriptografia é
15-5 mod 17 = 9
Extraia o texto simples P = (9 × 9) mod 17 = 13.
Análise ElGamal
No sistema ElGamal, cada usuário possui uma chave privada x. e temthree components de chave pública - prime modulus p, generator g, and public Y = gx mod p. A força do ElGamal é baseada na dificuldade do problema de logaritmo discreto.
O tamanho da chave segura geralmente é> 1024 bits. Hoje, até chaves de 2048 bits são usadas. No que diz respeito à velocidade de processamento, o Elgamal é bastante lento, sendo usado principalmente para protocolos de autenticação de chaves. Devido à maior eficiência de processamento, as variantes da curva elíptica do ElGamal estão se tornando cada vez mais populares.
Criptografia de curva elíptica (ECC)
Criptografia de curva elíptica (ECC) é um termo usado para descrever um conjunto de ferramentas e protocolos criptográficos cuja segurança é baseada em versões especiais do problema de logaritmo discreto. Ele não usa números módulo p.
ECC é baseado em conjuntos de números que estão associados a objetos matemáticos chamados curvas elípticas. Existem regras para somar e calcular múltiplos desses números, assim como existem para os números módulo p.
ECC inclui variantes de muitos esquemas criptográficos que foram inicialmente projetados para números modulares, como criptografia ElGamal e algoritmo de assinatura digital.
Acredita-se que o problema do logaritmo discreto seja muito mais difícil quando aplicado a pontos em uma curva elíptica. Isso solicita a mudança de números módulo p para pontos em uma curva elíptica. Além disso, um nível de segurança equivalente pode ser obtido com chaves mais curtas se usarmos variantes baseadas em curvas elípticas.
As chaves mais curtas resultam em dois benefícios -
- Facilidade de gerenciamento de chaves
- Computação eficiente
Esses benefícios tornam as variantes do esquema de criptografia baseadas em curvas elípticas altamente atraentes para aplicativos onde os recursos de computação são limitados.
Esquemas RSA e ElGamal - Uma comparação
Vamos comparar brevemente os esquemas RSA e ElGamal nos vários aspectos.
RSA | ElGamal |
---|---|
É mais eficiente para criptografia. | É mais eficiente para descriptografar. |
É menos eficiente para descriptografar. | É mais eficiente para descriptografar. |
Para um determinado nível de segurança, chaves longas são necessárias no RSA. | Para o mesmo nível de segurança, são necessárias chaves muito curtas. |
É amplamente aceito e usado. | É novo e não muito popular no mercado. |
Até agora, discutimos o uso de esquemas de chave pública e simétrica para obter a confidencialidade das informações. Com este capítulo, começamos nossa discussão sobre diferentes técnicas criptográficas projetadas para fornecer outros serviços de segurança.
O foco deste capítulo está na integridade dos dados e nas ferramentas criptográficas usadas para conseguir o mesmo.
Ameaças à integridade de dados
Quando informações confidenciais são trocadas, o destinatário deve ter a garantia de que a mensagem veio intacta do remetente pretendido e não foi modificada inadvertidamente ou de outra forma. Existem dois tipos diferentes de ameaças à integridade de dados, nomeadamentepassive e active.
Ameaças Passivas
Este tipo de ameaça existe devido a mudanças acidentais nos dados.
Esses erros de dados podem ocorrer devido ao ruído em um canal de comunicação. Além disso, os dados podem ser corrompidos enquanto o arquivo é armazenado em um disco.
Códigos de correção de erros e somas de verificação simples como verificações de redundância cíclica (CRCs) são usados para detectar a perda de integridade dos dados. Nessas técnicas, um resumo dos dados é calculado matematicamente e anexado aos dados.
Ameaças Ativas
Nesse tipo de ameaça, um invasor pode manipular os dados com más intenções.
No nível mais simples, se os dados estiverem sem resumo, eles podem ser modificados sem detecção. O sistema pode usar técnicas de anexar CRC aos dados para detectar qualquer modificação ativa.
Em um nível mais alto de ameaça, o invasor pode modificar os dados e tentar derivar um novo resumo para os dados modificados do resumo existente. Isso é possível se o resumo for calculado usando mecanismos simples, como CRC.
Mecanismos de segurança, como funções Hash, são usados para enfrentar as ameaças de modificação ativa.
As funções de hash são extremamente úteis e aparecem em quase todos os aplicativos de segurança da informação.
Uma função hash é uma função matemática que converte um valor de entrada numérico em outro valor numérico compactado. A entrada para a função hash é de comprimento arbitrário, mas a saída é sempre de comprimento fixo.
Os valores retornados por uma função hash são chamados message digest ou simplesmente hash values. A seguinte imagem ilustrada função hash -
Recursos de funções de hash
As características típicas das funções hash são -
Fixed Length Output (Hash Value)
A função hash cobre dados de comprimento arbitrário para um comprimento fixo. Este processo é frequentemente referido comohashing the data.
Em geral, o hash é muito menor do que os dados de entrada, portanto, as funções hash às vezes são chamadas compression functions.
Como um hash é uma representação menor de dados maiores, também é conhecido como digest.
A função hash com saída de n bits é chamada de n-bit hash function. As funções hash populares geram valores entre 160 e 512 bits.
Efficiency of Operation
Geralmente, para qualquer função hash h com entrada x, o cálculo de h (x) é uma operação rápida.
As funções hash computacionalmente são muito mais rápidas do que uma criptografia simétrica.
Propriedades das funções hash
Para ser uma ferramenta criptográfica eficaz, a função hash deve possuir as seguintes propriedades -
Pre-Image Resistance
Essa propriedade significa que deve ser computacionalmente difícil reverter uma função hash.
Em outras palavras, se uma função hash h produziu um valor hash z, então deve ser um processo difícil encontrar qualquer valor de entrada x que hash para z.
Esta propriedade protege contra um invasor que possui apenas um valor hash e está tentando encontrar a entrada.
Second Pre-Image Resistance
Essa propriedade significa que, dada uma entrada e seu hash, deve ser difícil encontrar uma entrada diferente com o mesmo hash.
Em outras palavras, se uma função hash h para uma entrada x produz um valor hash h (x), então deve ser difícil encontrar qualquer outro valor de entrada y tal que h (y) = h (x).
Esta propriedade da função hash protege contra um invasor que possui um valor de entrada e seu hash e deseja substituir um valor diferente como valor legítimo no lugar do valor de entrada original.
Collision Resistance
Essa propriedade significa que deve ser difícil encontrar duas entradas diferentes de qualquer comprimento que resultem no mesmo hash. Essa propriedade também é conhecida como função hash livre de colisão.
Em outras palavras, para uma função hash h, é difícil encontrar quaisquer duas entradas diferentes xey tais que h (x) = h (y).
Visto que a função hash está comprimindo a função com comprimento de hash fixo, é impossível para uma função hash não ter colisões. Esta propriedade de livre de colisão apenas confirma que essas colisões devem ser difíceis de encontrar.
Essa propriedade torna muito difícil para um invasor encontrar dois valores de entrada com o mesmo hash.
Além disso, se uma função hash for resistente à colisão then it is second pre-image resistant.
Projeto de Algoritmos de Hashing
No centro de um hashing está uma função matemática que opera em dois blocos de dados de tamanho fixo para criar um código hash. Esta função hash faz parte do algoritmo de hash.
O tamanho de cada bloco de dados varia dependendo do algoritmo. Normalmente, os tamanhos de bloco são de 128 bits a 512 bits. A ilustração a seguir demonstra a função hash -
O algoritmo de hash envolve rodadas da função de hash acima, como uma cifra de bloco. Cada rodada recebe uma entrada de tamanho fixo, normalmente uma combinação do bloco de mensagem mais recente e a saída da última rodada.
Esse processo é repetido por quantas rodadas forem necessárias para o hash de toda a mensagem. O esquemático do algoritmo de hash é representado na ilustração a seguir -
Desde então, o valor hash do primeiro bloco de mensagem se torna uma entrada para a segunda operação hash, a saída da qual altera o resultado da terceira operação e assim por diante. Este efeito, conhecido comoavalanche efeito de hashing.
O efeito de avalanche resulta em valores de hash substancialmente diferentes para duas mensagens que diferem até mesmo por um único bit de dados.
Entenda a diferença entre a função hash e o algoritmo corretamente. A função hash gera um código hash operando em dois blocos de dados binários de comprimento fixo.
O algoritmo de hash é um processo para usar a função hash, especificando como a mensagem será dividida e como os resultados dos blocos de mensagens anteriores são encadeados.
Funções Hash populares
Vejamos brevemente algumas funções hash populares -
Message Digest (MD)
MD5 foi a função hash mais popular e amplamente utilizada por alguns anos.
A família MD compreende as funções hash MD2, MD4, MD5 e MD6. Foi adotado como Internet Standard RFC 1321. É uma função hash de 128 bits.
Os resumos MD5 têm sido amplamente usados no mundo do software para fornecer garantia sobre a integridade do arquivo transferido. Por exemplo, os servidores de arquivos geralmente fornecem uma soma de verificação MD5 pré-calculada para os arquivos, de modo que um usuário possa comparar a soma de verificação do arquivo baixado.
Em 2004, foram encontradas colisões no MD5. Um ataque analítico foi relatado como bem-sucedido apenas em uma hora usando um cluster de computador. Este ataque de colisão resultou em comprometimento do MD5 e, portanto, não é mais recomendado para uso.
Função Secure Hash (SHA)
Família de SHA composta por quatro algoritmos SHA; SHA-0, SHA-1, SHA-2 e SHA-3. Embora sejam da mesma família, são estruturalmente diferentes.
A versão original é SHA-0, uma função hash de 160 bits, publicada pelo Instituto Nacional de Padrões e Tecnologia (NIST) em 1993. Ela tinha poucos pontos fracos e não se tornou muito popular. Mais tarde, em 1995, o SHA-1 foi projetado para corrigir alegadas fraquezas do SHA-0.
SHA-1 é a função hash SHA existente mais amplamente usada. É empregado em vários aplicativos e protocolos amplamente usados, incluindo segurança Secure Socket Layer (SSL).
Em 2005, um método foi encontrado para descobrir colisões para SHA-1 dentro de um prazo prático, tornando a empregabilidade de longo prazo do SHA-1 duvidosa.
A família SHA-2 tem mais quatro variantes SHA, SHA-224, SHA-256, SHA-384 e SHA-512, dependendo do número de bits em seu valor de hash. Nenhum ataque bem-sucedido foi relatado na função hash SHA-2.
Embora SHA-2 seja uma função de hash forte. Embora significativamente diferente, seu design básico ainda segue o design de SHA-1. Conseqüentemente, o NIST solicitou novos designs de função hash competitivos.
Em outubro de 2012, o NIST escolheu o algoritmo Keccak como o novo padrão SHA-3. Keccak oferece muitos benefícios, como desempenho eficiente e boa resistência a ataques.
RIPEMD
O RIPEMD é um acrônimo para RACE Integrity Primitives Evaluation Message Digest. Este conjunto de funções hash foi projetado por uma comunidade de pesquisa aberta e geralmente conhecido como uma família de funções hash europeias.
O conjunto inclui RIPEMD, RIPEMD-128 e RIPEMD-160. Também existem versões de 256 e 320 bits desse algoritmo.
O RIPEMD original (128 bits) é baseado nos princípios de design usados no MD4 e fornece segurança questionável. A versão RIPEMD de 128 bits veio como uma substituição de correção rápida para superar vulnerabilidades no RIPEMD original.
RIPEMD-160 é uma versão aprimorada e a versão mais usada na família. As versões de 256 e 320 bits reduzem a chance de colisão acidental, mas não têm níveis mais altos de segurança em comparação com RIPEMD-128 e RIPEMD-160, respectivamente.
Hidromassagem
Esta é uma função hash de 512 bits.
É derivado da versão modificada do Advanced Encryption Standard (AES). Um dos estilistas foi Vincent Rijmen, co-criador do AES.
Três versões do Whirlpool foram lançadas; nomeadamente WHIRLPOOL-0, WHIRLPOOL-T e WHIRLPOOL.
Aplicações de funções hash
Existem duas aplicações diretas da função hash com base em suas propriedades criptográficas.
Armazenamento de senha
As funções de hash fornecem proteção ao armazenamento de senha.
Em vez de armazenar a senha em claro, principalmente todos os processos de logon armazenam os valores de hash das senhas no arquivo.
O arquivo de senha consiste em uma tabela de pares que estão na forma (id do usuário, h (P)).
O processo de logon é descrito na ilustração a seguir -
Um intruso só pode ver os hashes das senhas, mesmo que tenha acessado a senha. Ele não pode fazer logon usando hash nem derivar a senha do valor hash, pois a função hash possui a propriedade de resistência à pré-imagem.
Verificação de integridade de dados
A verificação de integridade de dados é a aplicação mais comum das funções hash. É usado para gerar somas de verificação em arquivos de dados. Este aplicativo fornece garantia ao usuário sobre a exatidão dos dados.
O processo é descrito na ilustração a seguir -
A verificação de integridade ajuda o usuário a detectar quaisquer alterações feitas no arquivo original. No entanto, não oferece nenhuma garantia de originalidade. O invasor, em vez de modificar os dados do arquivo, pode alterar o arquivo inteiro e calcular o novo hash e enviar ao receptor. Este aplicativo de verificação de integridade só é útil se o usuário tiver certeza da originalidade do arquivo.
No último capítulo, discutimos as ameaças à integridade dos dados e o uso da técnica de hashing para detectar se algum ataque de modificação ocorreu nos dados.
Outro tipo de ameaça que existe para os dados é a falta de message authentication. Nessa ameaça, o usuário não tem certeza sobre a origem da mensagem. A autenticação de mensagens pode ser fornecida usando técnicas criptográficas que usam chaves secretas, conforme feito no caso de criptografia.
Código de autenticação de mensagem (MAC)
O algoritmo MAC é uma técnica criptográfica de chave simétrica para fornecer autenticação de mensagens. Para estabelecer o processo MAC, o emissor e o receptor compartilham uma chave simétrica K.
Essencialmente, um MAC é uma soma de verificação criptografada gerada na mensagem subjacente que é enviada junto com uma mensagem para garantir a autenticação da mensagem.
O processo de uso do MAC para autenticação é descrito na ilustração a seguir -
Vamos agora tentar entender todo o processo em detalhes -
O remetente usa algum algoritmo MAC conhecido publicamente, insere a mensagem e a chave secreta K e produz um valor MAC.
Semelhante ao hash, a função MAC também compacta uma entrada longa arbitrária em uma saída de comprimento fixo. A principal diferença entre hash e MAC é que o MAC usa uma chave secreta durante a compressão.
O remetente encaminha a mensagem junto com o MAC. Aqui, assumimos que a mensagem é enviada de forma clara, pois nos preocupamos em fornecer autenticação da origem da mensagem, não confidencialidade. Se a confidencialidade for necessária, a mensagem precisará ser criptografada.
Ao receber a mensagem e o MAC, o receptor alimenta a mensagem recebida e a chave secreta compartilhada K no algoritmo do MAC e recalcula o valor do MAC.
O receptor agora verifica a igualdade do MAC recém-calculado com o MAC recebido do remetente. Se corresponderem, o destinatário aceita a mensagem e assegura-se de que a mensagem foi enviada pelo remetente pretendido.
Se o MAC calculado não corresponder ao MAC enviado pelo remetente, o receptor não pode determinar se é a mensagem que foi alterada ou se é a origem que foi falsificada. Como resultado, um receptor assume com segurança que a mensagem não é genuína.
Limitações do MAC
Existem duas limitações principais do MAC, ambas devido à sua natureza simétrica de operação -
Establishment of Shared Secret.
Ele pode fornecer autenticação de mensagem entre usuários legítimos pré-decididos que possuem uma chave compartilhada.
Isso requer o estabelecimento de um segredo compartilhado antes do uso do MAC.
Inability to Provide Non-Repudiation
O não-repúdio é a garantia de que o originador da mensagem não pode negar nenhuma mensagem enviada anteriormente e compromissos ou ações.
A técnica MAC não fornece um serviço de não repúdio. Se o remetente e o destinatário se envolverem em uma disputa sobre a origem da mensagem, os MACs não podem fornecer uma prova de que a mensagem foi realmente enviada pelo remetente.
Embora nenhum terceiro possa calcular o MAC, ainda assim o remetente pode negar o envio da mensagem e alegar que o receptor a falsificou, pois é impossível determinar qual das duas partes calculou o MAC.
Ambas as limitações podem ser superadas usando as assinaturas digitais baseadas em chave pública discutidas na seção seguinte.
As assinaturas digitais são os primitivos de chave pública de autenticação de mensagem. No mundo físico, é comum usar assinaturas manuscritas em mensagens manuscritas ou digitadas. Eles são usados para vincular o signatário à mensagem.
Da mesma forma, uma assinatura digital é uma técnica que vincula uma pessoa / entidade aos dados digitais. Esta ligação pode ser verificada de forma independente pelo receptor, bem como por terceiros.
A assinatura digital é um valor criptográfico calculado a partir dos dados e de uma chave secreta conhecida apenas pelo signatário.
No mundo real, o receptor da mensagem precisa de garantia de que a mensagem pertence ao remetente e ele não deve ser capaz de repudiar a origem dessa mensagem. Esse requisito é muito importante em aplicativos de negócios, uma vez que a probabilidade de uma disputa sobre dados trocados é muito alta.
Modelo de Assinatura Digital
Conforme mencionado anteriormente, o esquema de assinatura digital é baseado na criptografia de chave pública. O modelo do esquema de assinatura digital é representado na ilustração a seguir -
Os pontos a seguir explicam todo o processo em detalhes -
Cada pessoa que adota esse esquema tem um par de chaves pública-privada.
Geralmente, os pares de chaves usados para criptografia / descriptografia e assinatura / verificação são diferentes. A chave privada usada para assinatura é conhecida como chave de assinatura e a chave pública como chave de verificação.
Signer alimenta dados para a função hash e gera hash de dados.
O valor de hash e a chave de assinatura são alimentados ao algoritmo de assinatura que produz a assinatura digital em determinado hash. A assinatura é anexada aos dados e, em seguida, ambos são enviados ao verificador.
O verificador alimenta a assinatura digital e a chave de verificação no algoritmo de verificação. O algoritmo de verificação fornece algum valor como saída.
O Verifier também executa a mesma função hash nos dados recebidos para gerar o valor hash.
Para verificação, este valor hash e a saída do algoritmo de verificação são comparados. Com base no resultado da comparação, o verificador decide se a assinatura digital é válida.
Uma vez que a assinatura digital é criada pela chave 'privada' do signatário e ninguém mais pode ter essa chave; o signatário não pode repudiar a assinatura dos dados no futuro.
Deve-se notar que em vez de assinar dados diretamente pelo algoritmo de assinatura, geralmente um hash de dados é criado. Como o hash de dados é uma representação exclusiva dos dados, é suficiente assinar o hash no lugar dos dados. A razão mais importante de usar hash em vez de dados diretamente para assinatura é a eficiência do esquema.
Vamos supor que RSA seja usado como algoritmo de assinatura. Conforme discutido no capítulo de criptografia de chave pública, o processo de criptografia / assinatura usando RSA envolve exponenciação modular.
Assinar grandes dados por meio de exponenciação modular é caro e demorado em termos computacionais. O hash dos dados é um resumo relativamente pequeno dos dados, portantosigning a hash is more efficient than signing the entire data.
Importância da Assinatura Digital
Dentre todas as primitivas criptográficas, a assinatura digital com criptografia de chave pública é considerada uma ferramenta muito importante e útil para alcançar a segurança da informação.
Além da capacidade de fornecer não repúdio à mensagem, a assinatura digital também fornece autenticação de mensagem e integridade de dados. Vamos ver rapidamente como isso é conseguido pela assinatura digital -
Message authentication - Quando o verificador valida a assinatura digital usando a chave pública de um remetente, ele tem a garantia de que a assinatura foi criada apenas pelo remetente que possui a chave privada secreta correspondente e mais ninguém.
Data Integrity- Caso um invasor tenha acesso aos dados e os modifique, a verificação da assinatura digital na extremidade do receptor falha. O hash dos dados modificados e a saída fornecida pelo algoritmo de verificação não serão correspondentes. Portanto, o receptor pode negar a mensagem com segurança, presumindo que a integridade dos dados foi violada.
Non-repudiation- Uma vez que se presume que apenas o signatário tem o conhecimento da chave de assinatura, ele só pode criar uma assinatura única em um dado dado. Assim, o receptor pode apresentar os dados e a assinatura digital a um terceiro como prova, caso surja alguma disputa no futuro.
Adicionando criptografia de chave pública ao esquema de assinatura digital, podemos criar um criptosistema que pode fornecer os quatro elementos essenciais de segurança, a saber - Privacidade, Autenticação, Integridade e Não-repúdio.
Criptografia com assinatura digital
Em muitas comunicações digitais, é desejável trocar mensagens criptografadas em vez de texto simples para obter a confidencialidade. No esquema de criptografia de chave pública, uma chave pública (criptografia) do remetente está disponível em domínio aberto e, portanto, qualquer pessoa pode falsificar sua identidade e enviar qualquer mensagem criptografada ao destinatário.
Isso torna essencial que os usuários que utilizam PKC para criptografia busquem assinaturas digitais junto com dados criptografados para garantir a autenticação e não repúdio da mensagem.
Isso pode ser arquivado combinando assinaturas digitais com esquema de criptografia. Vamos discutir brevemente como atingir esse requisito. temtwo possibilities, sign-then-encrypt e encrypt-then-sign.
No entanto, o sistema criptográfico baseado em assinar e depois criptografar pode ser explorado pelo receptor para falsificar a identidade do remetente e enviar os dados a terceiros. Portanto, este método não é preferido. O processo de criptografar e assinar é mais confiável e amplamente adotado. Isso é retratado na ilustração a seguir -
O receptor, após receber os dados criptografados e a assinatura nele, primeiro verifica a assinatura usando a chave pública do remetente. Depois de garantir a validade da assinatura, ele recupera os dados por meio de descriptografia usando sua chave privada.
A característica mais distinta da Public Key Infrastructure (PKI) é que ela usa um par de chaves para obter o serviço de segurança subjacente. O par de chaves é composto por chave privada e chave pública.
Como as chaves públicas são de domínio aberto, é provável que sejam abusadas. É, portanto, necessário estabelecer e manter algum tipo de infraestrutura confiável para gerenciar essas chaves.
Gestão de Chaves
Nem é preciso dizer que a segurança de qualquer sistema de criptografia depende da segurança com que suas chaves são gerenciadas. Sem procedimentos seguros para o manuseio de chaves criptográficas, os benefícios do uso de esquemas criptográficos fortes são potencialmente perdidos.
Observa-se que os esquemas criptográficos raramente são comprometidos por deficiências em seu design. No entanto, eles costumam ficar comprometidos devido ao gerenciamento inadequado de chaves.
Existem alguns aspectos importantes da gestão de chaves que são os seguintes -
As chaves criptográficas nada mais são do que dados especiais. O gerenciamento de chaves refere-se à administração segura de chaves criptográficas.
O gerenciamento de chaves lida com todo o ciclo de vida da chave, conforme descrito na ilustração a seguir -
Existem dois requisitos específicos de gerenciamento de chave para criptografia de chave pública.
Secrecy of private keys. Durante todo o ciclo de vida da chave, as chaves secretas devem permanecer secretas para todas as partes, exceto para aqueles que são proprietários e estão autorizados a usá-las.
Assurance of public keys.Na criptografia de chave pública, as chaves públicas estão em domínio aberto e são vistas como dados públicos. Por padrão, não há garantias de se uma chave pública está correta, com quem ela pode ser associada ou para que pode ser usada. Portanto, o gerenciamento de chaves públicas precisa se concentrar muito mais explicitamente na garantia da finalidade das chaves públicas.
O requisito mais crucial de 'garantia de chave pública' pode ser alcançado por meio da infraestrutura de chave pública (PKI), um sistema de gerenciamento de chave para suportar criptografia de chave pública.
Infraestrutura de chave pública (PKI)
PKI fornece garantia de chave pública. Ele fornece a identificação de chaves públicas e sua distribuição. Uma anatomia de PKI compreende os seguintes componentes.
- Certificado de chave pública, comumente referido como 'certificado digital'.
- Tokens de chave privada.
- Autoridade de Certificação.
- Autoridade de registro.
- Sistema de gerenciamento de certificados.
Certificado digital
Por analogia, um certificado pode ser considerado como a carteira de identidade emitida para a pessoa. As pessoas usam carteiras de identidade, como carteira de motorista, passaporte para provar sua identidade. Um certificado digital faz a mesma coisa básica no mundo eletrônico, mas com uma diferença.
Os certificados digitais não são emitidos apenas para pessoas, mas podem ser emitidos para computadores, pacotes de software ou qualquer outra coisa que precise provar a identidade no mundo eletrônico.
Os certificados digitais são baseados no padrão ITU X.509 que define um formato de certificado padrão para certificados de chave pública e validação de certificação. Portanto, os certificados digitais às vezes também são chamados de certificados X.509.
A chave pública pertencente ao cliente usuário é armazenada em certificados digitais pela Autoridade de Certificação (CA) junto com outras informações relevantes, como informações do cliente, data de validade, uso, emissor, etc.
A CA assina digitalmente todas as informações e inclui a assinatura digital no certificado.
Quem precisa de garantia sobre a chave pública e informações associadas do cliente, realiza o processo de validação da assinatura utilizando a chave pública da CA. A validação bem-sucedida garante que a chave pública fornecida no certificado pertence à pessoa cujos detalhes são fornecidos no certificado.
O processo de obtenção do Certificado Digital por uma pessoa / entidade é descrito na ilustração a seguir.
Conforme mostrado na ilustração, o CA aceita o aplicativo de um cliente para certificar sua chave pública. A AC, após verificar devidamente a identidade do cliente, emite um certificado digital para esse cliente.
Autoridade de Certificação (CA)
Conforme discutido acima, a CA emite o certificado para um cliente e ajuda outros usuários a verificar o certificado. A CA se responsabiliza por identificar corretamente a identidade do cliente que solicita a emissão de um certificado, garante que as informações contidas no certificado estão corretas e o assina digitalmente.
Principais funções da CA
As principais funções de um CA são as seguintes -
Generating key pairs - A CA pode gerar um par de chaves de forma independente ou em conjunto com o cliente.
Issuing digital certificates- A CA pode ser considerada como o equivalente PKI de uma agência de passaportes - a CA emite um certificado depois que o cliente fornece as credenciais para confirmar sua identidade. A CA então assina o certificado para evitar a modificação dos detalhes contidos no certificado.
Publishing Certificates- A CA precisa publicar certificados para que os usuários possam localizá-los. Existem duas formas de o conseguir. Uma é publicar certificados no equivalente a uma lista telefônica eletrônica. A outra é enviar seu certificado para aquelas pessoas que você acha que podem precisar dele de uma forma ou de outra.
Verifying Certificates - O CA disponibiliza sua chave pública em ambiente para auxiliar na verificação de sua assinatura no certificado digital do cliente.
Revocation of Certificates- Às vezes, a CA revoga o certificado emitido por algum motivo, como comprometimento da chave privada pelo usuário ou perda de confiança no cliente. Após a revogação, a CA mantém a lista de todos os certificados revogados disponíveis para o ambiente.
Classes de certificados
Existem quatro classes típicas de certificado -
Class 1 - Esses certificados podem ser facilmente adquiridos fornecendo um endereço de e-mail.
Class 2 - Esses certificados exigem que informações pessoais adicionais sejam fornecidas.
Class 3 - Esses certificados só podem ser adquiridos após a verificação da identidade do solicitante.
Class 4 - Eles podem ser usados por governos e organizações financeiras que precisam de altos níveis de confiança.
Autoridade de Registro (RA)
A CA pode usar uma Autoridade de Registro (RA) de terceiros para realizar as verificações necessárias na pessoa ou empresa que está solicitando o certificado para confirmar sua identidade. O RA pode aparecer para o cliente como um CA, mas eles não assinam realmente o certificado que é emitido.
Sistema de gerenciamento de certificados (CMS)
É o sistema de gestão por meio do qual os certificados são publicados, temporariamente ou permanentemente suspensos, renovados ou revogados. Os sistemas de gerenciamento de certificados normalmente não excluem certificados porque pode ser necessário provar seu status em um determinado momento, talvez por motivos legais. Um CA junto com o RA associado executa sistemas de gerenciamento de certificados para poder rastrear suas responsabilidades e obrigações.
Tokens de chave privada
Enquanto a chave pública de um cliente é armazenada no certificado, a chave privada secreta associada pode ser armazenada no computador do proprietário da chave. Este método geralmente não é adotado. Se um invasor obtiver acesso ao computador, ele pode facilmente obter acesso à chave privada. Por esse motivo, uma chave privada é armazenada em um token de armazenamento removível seguro, ao qual é protegido por senha.
Diferentes fornecedores costumam usar formatos de armazenamento diferentes e, às vezes, proprietários para armazenar chaves. Por exemplo, Entrust usa o formato proprietário .epf, enquanto Verisign, GlobalSign e Baltimore usam o formato .p12 padrão.
Hierarquia de CA
Com vastas redes e requisitos de comunicações globais, é praticamente inviável ter apenas uma CA confiável de quem todos os usuários obtêm seus certificados. Em segundo lugar, a disponibilidade de apenas um CA pode levar a dificuldades se o CA estiver comprometido.
Nesse caso, o modelo de certificação hierárquica é de interesse, pois permite que certificados de chave pública sejam usados em ambientes onde duas partes que se comunicam não têm relações de confiança com a mesma CA.
A CA raiz está no topo da hierarquia de CA e o certificado da CA raiz é um certificado autoassinado.
As CAs, que são diretamente subordinadas à CA raiz (por exemplo, CA1 e CA2) têm certificados de CA assinados pela CA raiz.
Os CAs sob os CAs subordinados na hierarquia (por exemplo, CA5 e CA6) têm seus certificados de CA assinados pelos CAs subordinados de nível superior.
As hierarquias de autoridade de certificação (CA) são refletidas nas cadeias de certificação. Uma cadeia de certificados rastreia um caminho de certificados de uma ramificação na hierarquia até a raiz da hierarquia.
A ilustração a seguir mostra uma hierarquia de CA com uma cadeia de certificados que vai de um certificado de entidade por meio de dois certificados de CA subordinados (CA6 e CA3) ao certificado de CA para a CA raiz.
Verificar uma cadeia de certificados é o processo de garantir que uma cadeia de certificados específica seja válida, corretamente assinada e confiável. O procedimento a seguir verifica uma cadeia de certificados, começando com o certificado que é apresentado para autenticação -
Um cliente cuja autenticidade está sendo verificada fornece seu certificado, geralmente junto com a cadeia de certificados até a CA raiz.
O verificador pega o certificado e valida usando a chave pública do emissor. A chave pública do emissor é encontrada no certificado do emissor, que está na cadeia ao lado do certificado do cliente.
Agora, se a CA superior que assinou o certificado do emissor é confiável para o verificador, a verificação é bem-sucedida e pára aqui.
Caso contrário, o certificado do emissor é verificado de maneira semelhante à feita para o cliente nas etapas acima. Este processo continua até que uma CA confiável seja encontrada no meio ou continua até a CA raiz.
Hoje em dia, as redes se globalizaram e a informação tomou a forma digital de bits e bytes. As informações críticas agora são armazenadas, processadas e transmitidas em formato digital em sistemas de computador e canais de comunicação abertos.
Visto que a informação desempenha um papel vital, os adversários estão direcionando os sistemas de computador e canais de comunicação abertos para roubar as informações confidenciais ou interromper o sistema de informações críticas.
A criptografia moderna fornece um conjunto robusto de técnicas para garantir que as intenções malévolas do adversário sejam frustradas, ao mesmo tempo que garante que os usuários legítimos tenham acesso às informações. Aqui neste capítulo, discutiremos os benefícios que extraímos da criptografia, suas limitações, bem como o futuro da criptografia.
Criptografia - Benefícios
A criptografia é uma ferramenta essencial de segurança da informação. Ele fornece os quatro serviços mais básicos de segurança da informação -
Confidentiality - A técnica de criptografia pode proteger a informação e a comunicação de revelação e acesso não autorizado de informação.
Authentication - As técnicas criptográficas, como MAC e assinaturas digitais, podem proteger as informações contra spoofing e falsificações.
Data Integrity - As funções criptográficas de hash estão desempenhando um papel vital em garantir aos usuários a integridade dos dados.
Non-repudiation - A assinatura digital fornece o serviço de não repúdio para proteção contra a disputa que pode surgir devido à negação de passagem da mensagem pelo remetente.
Todos esses serviços fundamentais oferecidos pela criptografia têm possibilitado a realização de negócios nas redes utilizando os sistemas de computador de maneira extremamente eficiente e eficaz.
Criptografia - Desvantagens
Além dos quatro elementos fundamentais da segurança da informação, existem outras questões que afetam o uso eficaz da informação -
Uma informação fortemente criptografada, autêntica e assinada digitalmente pode ser difficult to access even for a legitimate userem um momento crucial de tomada de decisão. A rede ou o sistema de computador podem ser atacados e tornados não funcionais por um intruso.
High availability,um dos aspectos fundamentais da segurança da informação, não pode ser garantido pelo uso de criptografia. Outros métodos são necessários para se proteger contra ameaças, como negação de serviço ou falha completa do sistema de informação.
Outra necessidade fundamental de segurança da informação de selective access controltambém não pode ser realizado por meio do uso de criptografia. Controles e procedimentos administrativos devem ser exercidos para o mesmo.
A criptografia não protege contra as vulnerabilidades e threats that emerge from the poor design of systems,protocolos e procedimentos. Eles precisam ser consertados por meio de um projeto adequado e da configuração de uma infraestrutura defensiva.
A criptografia tem um custo. O custo é em termos de tempo e dinheiro -
A adição de técnicas criptográficas no processamento de informações leva a atrasos.
O uso de criptografia de chave pública requer a configuração e manutenção de uma infraestrutura de chave pública que exige um orçamento financeiro considerável.
A segurança da técnica criptográfica é baseada na dificuldade computacional de problemas matemáticos. Qualquer avanço na resolução de tais problemas matemáticos ou no aumento do poder de computação pode tornar uma técnica criptográfica vulnerável.
Futuro da Criptografia
Elliptic Curve Cryptography(ECC) já foi inventado, mas suas vantagens e desvantagens ainda não foram totalmente compreendidas. ECC permite realizar criptografia e descriptografia em um tempo drasticamente menor, permitindo assim que uma maior quantidade de dados seja passada com igual segurança. No entanto, como outros métodos de criptografia, o ECC também deve ser testado e comprovado como seguro antes de ser aceito para uso governamental, comercial e privado.
Quantum computationé o novo fenômeno. Enquanto os computadores modernos armazenam dados usando um formato binário denominado "bit", no qual um "1" ou um "0" pode ser armazenado; um computador quântico armazena dados usando uma superposição quântica de vários estados. Esses estados de valores múltiplos são armazenados em "bits quânticos" ou "qubits". Isso permite que o cálculo de números seja várias ordens de magnitude mais rápido do que os processadores de transistores tradicionais.
Para compreender o poder do computador quântico, considere RSA-640, um número com 193 dígitos, que pode ser fatorado por oitenta computadores de 2,2 GHz ao longo de 5 meses, um computador quântico seria fatorado em menos de 17 segundos. Números que normalmente levariam bilhões de anos para serem computados poderiam levar apenas algumas horas ou mesmo minutos com um computador quântico totalmente desenvolvido.
Em vista desses fatos, a criptografia moderna terá que procurar problemas computacionalmente mais difíceis ou conceber técnicas completamente novas para arquivar os objetivos atualmente servidos pela criptografia moderna.