Criptografia de chave pública
Criptografia de chave pública, também conhecida como criptografia assimétrica, é qualquer sistema criptográfico que usa pares de chaves: chaves públicas, que podem ser amplamente disseminadas, e chaves privadas que são conhecidas apenas pelo proprietário. Isto realiza duas funções: autenticação, onde a chave pública verifica que um portador da chave privada parelhada enviou a mensagem, e encriptação, onde apenas o portador da chave privada parelhada pode decriptar a mensagem encriptada com a chave pública.
Criptografia de chave pública é frequentemente usada para garantir a segurança da comunicação eletrônica sobre um ambiente interconectado aberto tal como a internet, sem depender de um canal encoberto até para uma troca de chaves. Ambientes interconectados abertos são suscetíveis a uma variedade de problemas de segurança de comunicação tais quais ataque do homem-no-meio e outras ameaças à segurança. Propriedades de segurança necessárias para comunicação tipicamente incluem que a comunicação que está sendo enviada não deva ser legível durante a transição (preservando confidencialidade), a comunicação não deve ser modificada durante a transição (preservando a integridade da comunicação), a comunicação deve ser originada por uma parte identificada (autenticidade do remetente) e para assegurar o não-repúdio (a não negação de envio da mensagem). Combinar criptografia de chave pública com um método de Encriptação de Chave Pública Envelopada (ECPE), permite o envio seguro de uma comunicação sobre um ambiente interconectado aberto.
Dois dos usos mais conhecidos de criptografia de chave pública são: Uma analogia para encriptação de chave pública é a de uma caixa de correio. A caixa de correio é exposta e acessível ao público – sua localização (o endereço da rua) é, em essência, a chave pública. Qualquer um que saiba o endereço pode chegar e colocar uma mensagem escrita na caixa de correio. Porém, apenas a pessoa que possui a chave pode abrir a caixa e ler a mensagem. Uma analogia para assinaturas digitais é a vedação de um envelope com um selo de cera pessoal. A mensagem pode ser aberta por qualquer um, porém a presença de um selo único autentica o remetente. Um problema central com o uso da criptografia de chave pública é a confiança/prova que uma chave pública específica é autêntica, isto é, que ela é correta e pertence a pessoa ou entidade reivindicada, e não foi adulterada ou substituída por um terceiro malicioso. A abordagem mais comum para esse problema é usar uma infraestrutura de chave pública (ICP), na qual um ou mais terceiros – conhecidos como autoridades certificadoras – certificam a propriedade dos pares de chaves. Privacidade Muito Boa (em inglês PGP), além de ser uma estrutura de autoridade certificada, usa um esquema geralmente chamado de a "teia da verdade" (do inglês "web of trust"), que descentraliza essa autênticação de chaves públicas por um mecanismo central, e substitui endossos individuais do elo entre usuário e chave pública. Até agora, nenhuma solução completamente satisfatória para o "problema de autênticação de chave pública" foi encontrado. [carece de fontes?]
Nos primórdios da história da criptografia clássica, duas partes comunicantes dependeriam de uma chave que eles iriam trocar entre eles por meio de um método seguro, mas não criptográfico. Por exemplo, um encontro cara-a-cara ou uma troca, através de um correio confiável, poderia ser usada. Essa chave, que ambas as partes manteriam em segredo absoluto, poderia então ser usada para trocar mensagens encriptadas. Um número significativo de dificuldades práticas surgem com essa abordagem para distribuir chaves. Em 1874, um livro de William Stanley Jevons descreveu a relação de funções unidirecionais para criptografia, e continuou a debater o problema da fatoração usado para criar um função arapuca. Em Julho de 1996, o matemático Solomon Wolf Golomb disse: "Jevons antecipou a característica de chave do Algoritmo RSA para criptografia de chave pública, apesar de que ele certamente não inventou o conceito de criptografia de chave pública."
Alguns esquemas de encriptação podem ser provados como sendo seguros com base na dificuldade presumida de um problema matemático, como encontrar a fatoração inteira do produto de dois primos muito grandes ou computar logaritmos discretos. Note que "segurança" aqui tem um significado matematicamente preciso, e existem múltiplas definições (significativas) diferentes do que significa dizer que um esquema de encriptação é "seguro". A definição "correta" depende do contexto no qual o esquema será implantado. A aplicação mais óbvia de um sistema de encriptação de chave pública é confidencialidade – uma mensagem que o emissor quer encriptar usando a chave pública do destinatário pode ser decriptada apenas pela chave privada correspondente do destinatário. Assumindo, claro, que nenhuma falha foi descoberta no algoritmo base usado. Outro tipo de aplicação em criptografia de chave pública é o de esquemas de assinatura digital. Em tal esquema, o usuário que quer enviar uma mensagem computa uma assinatura digital para essa mensagem, e então envia essa assinatura digital (junto com a mensagem) para o remetente desejado. Esquemas de assinatura digital têm a propriedade de que assinaturas podem ser computadas apenas com o conhecimento da chave privada correta. Para verificar que a mensagem foi assinada pelo usuário e que não foi modificada, o destinatário precisa saber apenas a chave pública correspondente. Em alguns casos (e.g. RSA), um único algoritmo pode ser usado para encriptar e criar assinaturas digitais. Em outros casos (e.g., DAS) cada algoritmo pode ser usado apenas para um propósito específico.
O elo entre a chave pública e seu "dono" deve ser correto, ou então o algoritmo deve funcionar perfeitamente e ainda assim pode ser completamente inseguro na prática. Assim como com a maioria das aplicações de criptografia, os protocolos usados para estabelecer e verificar esse elo são criticamente importantes. Associando uma chave pública ao seu dono é tipicamente feita por protocolos implementando uma infraestrutura de chave pública (ICP) – esses permitem que a validade da associação seja formalmente verificada por referência para uma terceira parte confiável na forma de uma autoridade certificadora hierárquica (e.g., X.509), um modelo confiável local (e.g., SPKI), ou um esquema de confiança da web, como o originalmente construído dentro do PGP e do GPG, e ainda até certo ponto usado com eles. Seja qual for a garantia criptográfica dos protocolos, a associação entra a chave pública e seu proprietário é fundamentalmente uma questão de julgamento subjetivo na parte de terceira pessoa confiável, já que a chave é uma entidade matemática, enquanto que o dono – e a conexão entre dono e chave – não são. Por essa razão, o formalismo de uma infraestrutura de chave pública deve fornecer para afirmações explícitas da política seguida quando for fazer o julgamento. Por exemplo, o complexo e não totalmente implementado padrão X.509 permite a uma autoridade de certificado identificar sua política pelos meios de um identificador de objetos, o qual funciona como um índice em um catálogo de políticas registradas. Políticas devem existir por vários propósitos, indo do anonimato a classificações militares.
Encriptação de Chave Pública Envelopada
Encriptação de Chave Pública Envelopada (EPKE) é o método que consiste em aplicar criptografia de chave pública e garantir que uma comunicação eletrônica é transmitida confidencialmente, tenha os conteúdos de comunicação protegidos contra modificações (integridade de comunicação) e não pode ser negado de ter sido enviado (não-repúdio). Esse é o método frequentemente usado quando se quer proteger a comunicação em um ambiente interconectado aberto como quando se utiliza o protocolo Transport Layer Security (TLS) ou o Secure Sockets Layer (SSL). EPKE consiste de um processo de duas fases que inclui ambas a Encriptação de Chave pública (PKE) e uma assinatura digital. Ambas Encriptação de chave Pública e assinaturas digitais constituem o princípio da Encriptação de Chave Pública Envelopada (esses dois processos são descritos mais aprofundadamente em suas respectivas seções).
Autoridade certificadora
Para a Encriptação de Chave Pública Envelopada ser o mais segura possível, é necessário haver um "porteiro" (em inglês "gatekeeper") das chaves privada e pública, ou então qualquer um poderia publicar sua chave pública e se mascarar como o emissor planejado de uma comunicação. Esse "porteiro" de chave digital é conhecido como a Autoridade Certificadora. Uma autoridade certificadora é um terceiro confiável que pode emitir chaves privadas e públicas e assim certificar chaves públicas. Ela também funciona como um depósito para armazenar cadeias de chaves e garantir o fator de confiança.
Uma analogia postal
Uma analogia que pode ser usada para entender as vantagens de um Sistema assimétrico é imaginar duas pessoas, Alice e Bob, que estão enviando entre si mensagens secretas através do correio público. Nesse exemplo, Alice quer enviar uma mensagem secreta para Bob, e espera uma resposta secreta de Bob. Com um sistema chave simétrica, Alice primeiro coloca a mensagem secreta numa caixa, e tranca a caixa usando um cadeado para o qual ela tem a chave. Então, ela manda a caixa para Bob pelo correio normal. Quando Bob recebe a caixa, ele usa uma cópia idêntica da chave de Alice (que de alguma forma ele conseguiu obter previamente, talvez num encontro cara a cara) para abrir a caixa, e lê a mensagem. Bob pode então usar o mesmo cadeado para enviar sua resposta secreta.
Algoritmos reais: duas chaves ligadas
Nem todos os algoritmos de chave assimétrica operam precisamente dessa forma. Os algoritmos mais comuns têm a propriedade de que tanto Alice quanto Bob, são proprietários de duas chaves cada um, uma para encriptação e uma para decriptação. Em um esquema de encriptação de chave assimétrica seguro, a chave privada não deve ser dedutível a partir da chave pública. Isso é conhecido como encriptação de chave pública, já que uma chave de encriptação pode ser publicada sem comprometer a segurança das mensagens encriptadas com aquela chave. Na analogia acima, Bob deve publicar instruções sobre como fazer um cadeado ("chave pública"). No entanto, os funcionamentos do cadeado são tais que é impossível (até onde se sabe) deduzir através das instruções dadas como exatamente fazer uma chave que pode abrir aquele cadeado (e.g., uma "chave privada"). Aqueles que desejam enviar mensagens a Bob devem usa a chave pública para encriptar a mensagem, Bob então pode usar sua própria chave privada para decriptá-la.
Fraquezas
Dos algoritmos de encriptação de chave simétrica, apenas a cifra de uso único (em inglês, One-Time Pad), ou OTP, pode ser provada como sendo segura contra qualquer adversário – não importando quanto poder computacional esteja disponível. Entretanto, não existe esquema de chave pública com essa propriedade, uma vez que todos os esquemas de chave pública estão suscetíveis a "ataques de procura de chave por força bruta". Tais ataques são impraticáveis se a quantidade de computação necessária para vencer – denominado o "fator trabalho" (em inglês "work factor") por Claude Shannon – estiver fora de alcance dos possíveis atacantes. Em muitos casos, o fator trabalho pode ser incrementado simplesmente escolhendo uma chave maior. Mas outros algoritmos podem ter fatores trabalho muito mais baixos, tornando irrelevante a resistência a um ataque de força bruta. Alguns algoritmos especiais e específicos foram desenvolvidos para auxiliar no ataque a alguns algoritmos de encriptação de chave pública – tanto o RSA como o ElGamal têm ataques conhecidos que são muito mais rápidos que a abordagem por força bruta. Esses fatores mudaram dramaticamente em décadas recentes, tanto com o decréscimo do custo do poder computacional como com as novas descobertas matemáticas.
Custo computacional
Os algoritmos de chave pública são conhecidos até agora por serem relativamente caros computacionalmente comparados à maioria dos algoritmos de chave simétrica de segurança aparentemente equivalente. O fator diferença é o uso típico de chaves um tanto grandes. Isso tem importantes implicações para o uso prático deles. A maioria é usada em criptosistemas híbridos por razões de eficiência – em tal criptosistema, uma chave secreta compartilhada ("chave de sessão") é gerada por uma partem e essa chave de sessão bem mais breve é então encriptada pela chave pública de cada destinatário. Cada destinatário então utiliza a chave privada correspondente para decriptar a chave de sessão. Quando todas as partes tiverem obtido a chave de sessão, eles podem usar um algoritmo simétrico muito mais rápido para encriptar e decriptar mensagens. Em muitos desses esquemas, a chave de sessão é única para cada troca de mensagens, sendo pseudo-aleatoriamente escolhida por cada mensagem.
Exemplos de técnicas de chave assimétrica para vários efeitos incluem: Exemplos de algoritmos de chave assimétrica não adotados vastamente incluem: Exemplos de notáveis – mas ainda inseguros – algoritmos de chave assimétrica incluem: Exemplos de protocolos usando algoritmos de chave assimétrica incluem:


