Cryptology

author
20 minutes, 3 seconds Read
Crypto stuff? Parece divertido.

Unit Goals

Para entender, muito bem, o que é criptografia e criptanálise, e especialmente para saber o que pode e não pode garantir.

Background

Alice e Bob podem ser pessoas, mas também clientes e servidores, computadores pares, lojas de dados, roteadores de rede, etc. Mallory pode falsificar um dos participantes, adicionar, modificar ou apagar mensagens reais, sequestrar a conexão, fazer uma negação de serviço, injetar malware, etc.

Goals:

  • Confidencialidade: Deve custar à Eve mais para recuperar $m$ do que $m$ vale.
  • Autenticação: Bob deve ser capaz de verificar que foi Alice que enviou $m$.
  • Integridade: O Bob deve ser capaz de verificar que $m$ não foi adulterado.
  • Não-repúdio: Alice não deve poder negar ter enviado $m$.

Os melhores sistemas de criptografia assumem que Eve e Mallory conhecem $E$, $D$, $c$, e, se $k_e \neq k_d$, então $k_e$ também. A maioria dos sistemas criptográficos não depende de seus algoritmos serem mantidos em segredo, porque:

  • Se seu algoritmo secreto estiver comprometido (alguém poderia deixar seu grupo), você tem que mudá-lo, e isso é muito mais difícil do que apenas mudar uma chave!
  • Os algoritmos públicos podem ser submetidos a milhares de especialistas procurando por falhas, então você tem algum grau de confiança naqueles que resistem ao escrutínio.

Outra leitura:Segurança Através da Obscuridade,Princípio de Kerchoff e esta discussão.

O estudo da criptologia inclui o desenho de várias cifras, métodos de criptografia (ataques), troca de chaves, autenticação de chaves, hashing criptográfico, assinatura digital e questões sociais (legais, políticas, etc.). Veja os tópicos da Wikipédia na página de criptografia.

NÃO FAÇA ESTE ESTUDO EM SEU PRÓPRIO NAS APLICAÇÕES REAIS

Claro, é bom brincar em casa, mas não tente enrolar a sua própria criptografia por nada real. Deixe isso para os profissionais. Se você mesmo se tornar um profissional, então, mmmmm, ok.
Este tem sido um importante anúncio de serviço público.

Definições

Palavras a saber:

Criptografia A arte e a ciência de fazer cifras. Criptanálise A arte e a ciência de quebrar cifras, ou seja, a extração de $m$ dado $c$, $E$, $D$, e possivelmente $k_e$. Criptologia O estudo da criptografia e da criptanálise.

Exercício: Descobrir sobre esteganografia. Como é diferente da criptografia?

Cryptosystem Um conjunto particular de algoritmos e protocolos para criptografia, decriptografia e geração de chaves. Exemplos: Cryptosystem Cramer-Shoup, Rabin cryptosystem, Benaloh cryptosystem, RSA cryptosystem. Sistema Criptográfico Qualquer sistema que utilize criptografia. Cipher Um algoritmo usado em um cryptosystem.

Exercício: Como um “código” é diferente de um “cipher”? Os códigos são mais seguros que as cifras? Por que eles não são usados com tanta freqüência?

Confusão A propriedade de ter a relação entre o texto simples, o texto cifrado e a chave tão complicada a ponto de ser inútil para o criptanalista. Difusão A propriedade de ter padrões estatísticos no texto em quadratura espalhados por todo o texto em quadratura.

Timelines

Se você gosta de história….

  • Histórico da Wikipédia da Criptografia Artigo
  • Linha do Tempo da Wikipédia
  • Linha do Tempo de Carl Ellison

Tipos de cifras

Aqui estão algumas categorias úteis de cifras. Note que uma determinada cifra pode pertencer a mais de uma destas categorias.

  • Clássicas: Uma cifra fácil o suficiente para ser executada à mão, geralmente baseada em caracteres. Também chamado manual.
  • Moderno: Praticamente qualquer cifra que não seja clássica.
  • Substituição: Cada caractere do texto em quadrícula é substituído por um ou mais caracteres para fazer o texto em cifra.
  • Transposição: Os caracteres do texto em quadrícula são reorganizados para formar o texto em cifra.
  • Monoalphabetic: Uma cifra de substituição na qual um caractere do texto em quadrícula é sempre substituído pelo mesmo caracter.
  • Polialphabetic: Uma cifra de substituição que usa essencialmente múltiplos mapeamentos de substituição monoalfabética.
  • Homofônico: Uma substituição na qual um caracter pode mapear para um de um conjunto de caracteres.
  • Poligráfico: Uma substituição de blocos de caracteres por blocos de caracteres.
  • Periodic: Uma cifra polalfabética na qual o esquema de substituição se repete.
  • Non-periodic: Auto-explicativo se você entender periodic.
  • Block: A encriptação não ocorre por caracter mas por blocos de caracteres.
  • Stream: Uma cifra que opera num fluxo de dados de comprimento desconhecido, geralmente incorporando feedback.
  • Chave Secreta: Uma cifra na qual $k_e$ e $k_d$ são os mesmos ou trivialmente deriváveis um do outro; requer que as partes se encontrem em segredo para trocar as chaves que estarão usando. Também chamado symmetric.
  • Public Key: Um esquema em que a chave de encriptação de todos é conhecida publicamente mas a sua chave de desencriptação é mantida em segredo. Também chamado assimétrico.

Criptografia de chave secreta

Cifras de chave secreta (também conhecida como chave simétrica) são muito mais rápidas que as cifras de chave pública, mas a gestão de chaves pode ser um enorme problema.

  • Se $n$ pessoas num grupo precisam de comunicar,elas precisam de $\frac{n(n-1)}{2}$ keys.
  • Keys devem ser distribuídas com segurança (em segredo).
  • Os brinquedos devem ser mantidos em segurança.
  • Os brinquedos devem ser trocados com frequência, o que alimenta a dor de cabeça da distribuição.

NOTA

Nos exemplos baseados em caracteres abaixo, vamos assumir (sem qualquer perda de generalidade) um alfabeto de 26 símbolos (A..Z).

Caesar Cipher

Uma cifra completamente patética e insegura pelos padrões modernos. A chave de encriptação $k_e$ é um número inteiro pequeno e $k_d = k_e$. Para encriptar, adicione $k_e$ a cada caractere de texto simples; para decifrar, subtraia.

Exemplo: Para k=5, ATTACKATDAWN torna-se FYYFHPFYIFBS

Trivial to crack: basta adivinhar $k_e$.

Substituição fonoalfabética

Em vez de simplesmente adicionar um offset fixo a cada caractere, você pode pré-calcular uma tabela de substituição gerando uma permutação aleatória do seu alfabeto. Por exemplo:

 ABCDEFGHIJKLMNOPQRSTUVWXYZ MQHPSVJYCURFTBILAKWNGZDOEX

Agora ATTACKATDAWN é agora MNNMHRMNPMDB.

Você não quebra isso adivinhando a chave (há $n!$ chaves possíveis), mas a análise de freqüência pode quebrar qualquer cifra de substituição monoalfabética, desde que a mensagem seja longa o suficiente.

Para técnicas cuja chave é uma permutação, uma maneira de tornar a chave mais fácil de lembrar é escolher uma frase, colocar suas letras únicas, depois preencher as letras que faltam na ordem. Por exemplo, PREMATURE OPTIMIZATION IS THE ROOT OF ALL EVIL produz este mapeamento de substituição:

 PREMATUOIZNSHFLVBCDGJKQWXY

Substituição homofónica

Cada mapa de letras em texto simples para um ou mais símbolos no texto criptográfico. O número de alvos deve ser proporcional à sua frequência (para derrotar a análise de frequência). Exemplo:

 A 12 15 36 50 56 70 81 95 B 51 84 C 16 44 65 D 04 06 48 82 E 01 17 19 34 47 49 58 60 67 77 85 90 F 13 27 G 09 28 H 26 42 53 59 68 71 I 35 73 76 86 91 96 J 18 K 07 L 29 40 54 87 M 25 30 N 21 61 62 69 74 94 O 02 03 08 10 57 75 93 P 41 98 Q 97 R 32 38 43 45 80 83 S 14 22 39 79 89 99 T 00 20 23 33 46 52 72 78 88 U 11 64 66 V 37 W 63 92 X 31 Y 24 55 Z 05

Para encriptar, escolha aleatoriamente entre as possibilidades. Exemplo, uma possível criptografia de ATTACKATDAWN é

 56 78 20 95 65 07 12 72 06 50 92 61

Simple Vigenère

A cifra conhecida como a cifra Vigenère de simples deslocamento não foi inventada pela Vigenère… parece ter sido descrita pela primeira vez por Giovan Battista Bellaso. A chave é uma string que você adiciona ao texto em quadrícula com adição modular, como neste exemplo (A=0, B=1, C=2, …, Z=25):

 Plaintext: TAKEACOPYOFYOURPOLICYTONORMAWILCOXONTHETHIRDFLOOR Key: QUARKQUARKQUARKQUARKQUARKQUARKQUARKQUARKQUARKQUAR Ciphertext: JUKVKSIPPYVSOLBFILZMONOEYHGANSBWOOYDNHVDXCRUPBIOI

Para gerar o texto em cifra à mão você pode usar uma roda de código ou uma tabula recta.

Este esquema não é seguro uma vez que a chave se repete. Se o comprimento da chave puder ser determinado, o criptanalista pode fazer análises de múltiplas frequências (uma para cada valor de deslocamento na chave). Os métodos para determinar o comprimento da chave são o Método Kaisiski e o teste Friedman.

Para dados binários (ou seja, uma seqüência de bits) a base de adição modular -2 é apenas um simples xor. Exemplo:

 Plaintext: 0110000101010000111101001010101010010000001111101 Key: 0000011100000111000001110000011100000111000001110 Ciphertext: 0110011001010111111100111010110110010111001110011

Auto-Key Vigenère

Vigenère realmente criou uma cifra de chave automática que é mais forte porque a chave nunca se repete. Em vez disso, a “chave” é composta da frase chave seguida do texto da chave, assim:

 Plaintext: TAKEACOPYOFYOURPOLICYTONORMAWILCOXONTHETHIRDFLOOR Key: QUARKTAKEACOPYOFYOURPOLICYTONORMAWILCOXONTHETHIRD Ciphertext: JUKVKVOZCOHMDSFUMZCTNHZVQPFOJWCOOTWYVVBHUBYHYSWFU

Que usou o texto da chave como parte da chave. Você também poderia usar o texto criptografado. Veja como?

Cifras de Chave Automática Moderna

Você ainda pode decifrar as cifras de chave automática Vigenère por análise linguística, porque a chave contém texto e, portanto, é provável que tenha letras de alta frequência. As cifras de chave automática modernas geram os valores de deslocamento com um gerador de números aleatórios. A chave semeia o gerador.

Exercício: Implemente uma cifra autokey na linguagem de programação de sua escolha.

Um Time Pad

Se a chave:

  • é tão longa ou mais longa que a mensagem sendo codificada
  • é verdadeiramente gerada aleatoriamente
  • é usada uma e só uma vez

Então você tem uma cifra comprovadamente segura chamada One Time Pad. Seu algoritmo real pode usar a substituição polalfabética ou mesmo xoring simples a mensagem com a chave, desde que você atenda aos três critérios acima.

O bloco de tempo único nunca pode ser quebrado. É um esquema de encriptação perfeito, de uma perspectiva matemática, de qualquer forma.

Exercício: Porque é que os blocos de uma só vez não são usados normalmente, dado que são as cifras mais seguras possíveis?

Playfair

Este é um exemplo de uma cifra de substituição poligráfica, que substitui os pares de caracteres. A chave é uma permutação de {A…I,K..Z},por exemplo:

 Z C B M L G D A Q E T U O K H F S X V N P I Y R W

Para encriptar, escreva o texto em forma de placa (sem espaços ou pontuação), colando num X entre letras duplas e no final se necessário para que o texto tenha um comprimento uniforme.Depois para cada par de letras:

  • Deixe $(a,b)$ ser a linha e coluna do primeiro caractere e $(c,d)$ ser a linha e coluna do segundo.
  • Se $a \neq c$ e $b \neq d$ então devolva $(a,d)(b,c)$.
  • If $a = c$ then return $(a,(b+1) \bmod 5)(c,(d+1) \bmod 5)$.
  • If $b = d$ then return $((a+1) \bmod 5,b)((c+1) \bmod 5,d)$.
Exemplo: THEN ATTACK FROM THE EASTTH EN AT XT AC KF RO MT HE XE AS TXUT HW GO FO DB TV YK ZK NH NA DX OFUTHWGOFODBTVYKZKNHNADXOF

A descodificação executa as regras ao contrário. A cifra da Playfair é bastante insegura.

Quatro-quadrado

Criptografa digrafes como a Playfair, mas ligeiramente mais forte porque permite a dupla letra e não produz digrafes de texto em cifra invertida para digrafes de texto em quadrangular invertido. Exemplo

 a b c d e G I V E M f g h i k L B R T Y l m n o p O D A H C q r s t u F K N P Q v w x y z S U W X Z P R E M A a b c d e T U O I Z f g h i k N S H F L l m n o p V B C D G q r s t u K Q W X Y v w x y z
Exemplo: THEN ATTACK FROM THE EASTTH EN AT TA CK FR OM TH EE AS TXNI VL EV FM MO BV DF NI MA VV NX

Okay, tão ligeiramente mais forte que a Playfair, mas e depois? Os computadores podem rachar estas coisas em segundos, ou talvez em minutos (dado texto cifrado suficiente).

Transposição de blocos simples

A cifra de transposição mais simples divide a mensagem em blocos de tamanho n, depois codifica cada bloco de acordo com uma permutação de $(1..n)$.

Exemplo: Para a chave $(4,1,6,3,2,5)$ a mensagem GETTHATHEALTHINSPECTOR torna-se TGATEHATTEHLSHENIPRCOT.

Transposição Colunar

Escreve a mensagem linha a linha numa grelha, depois lê-a em colunas. Totalmente inseguro. A chave é apenas o número de linhas. Adivinhe.

Rail Fence

A vedação da grade não é melhor que a última, apenas mais funkier. A chave é o número de trilhos sobre os quais você escreve o texto da placa de forma ascendente e descendente, gerando o texto cifrado lendo um trilho de cada vez.

Exemplo: Para codificar "fill out and file a WS2475 form" em 4 trilhos:

 f t l 4 m i u a i e 2 7 r l o n f a s 5 o l d w f

você então lê o texto criptográfico "ftl4miuaie27rlonfas5oldwf". Isto é trivial de rachar. Apenas adivinhe $k$.

Combinação de Substituição e Transposição

Só a transposição é muito fraca; a substituição é fraca; combiná-las é melhor. Você pode misturar muitas das clássicas cifras de substituição com várias transposições, ou usar algumas cifras de combinação especiais como bifid. Também, a maioria das famosas máquinas de rotor e cifras modernas usam esta combinação; na verdade elas aplicam estas transformações muitas vezes.

Bifid

Esta substitui letras com suas coordenadas em uma grade e faz uma transposição colunar sobre as coordenadas. Exemplo:

 Z C B M L G D A Q E T U O K H F S X V N P I Y R W

Escreve as coordenadas (linha, coluna) sob cada letra do texto da quadrícula (por exemplo, “A” está na linha 1, coluna 2; “T” está na linha 2, coluna 0, etc.):

 ATTACKATDAWN 122102121143 200213201244

Então lê em linhas, agrupa por dois e procura as letras do texto cifrado:

 122102121143200213201244 A U B A D R T B Q T A W

Trifid

Like Bifid, mas num cubo. Exemplo:

 Z C B M L F V N P G D A Q E X I R W T U O K H S Y . J

Para encriptar, primeiro escreva as coordenadas:

 ATTACKATDAWN 000001000022 122102121110 200210201221
 000001000022122102121110200210201221 Z C Z O S F H Q V I N .

Enigma

O Enigma foi a famosa máquina de rotor alemã da Segunda Guerra Mundial (na verdade uma família de máquinas). A maioria das versões implementou uma cifra de substituição polalfabética com um período de 16900 mais um plugboard para encriptar (transposição). A chave consistia na ordem dos rotores, a posição inicial de cada rotor, os ajustes dos anéis e os ajustes do plugboard (cerca de 1,6 × 1020 possibilidades). Havia uma nova chave a cada dia (mais ou menos) pré-publicada em codebooks.

Os Aliados conseguiram decifrá-la graças a alguns pontos fracos no seu design…

  • Nenhuma letra se encriptava a si mesma
  • A auto-reciprocidade significava que havia menos possibilidades de configuração de scrambler

…mas mais importante, muitas fraquezas na forma como era usada…

  • Era realmente fácil encontrar berços. A maioria das mensagens começou com um boletim meteorológico.
  • No início, as chaves das mensagens apareceram duas vezes seguidas.

…e obtendo livros de código dos navios capturados.

Você pode ler sobre como o Enigma foi quebrado da NSA, e da Wikipedia.

Métodos Criptográficos Modernos

Agora temos a teoria da informação de Shannon, computadores muito poderosos, e séculos de teoria e prática atrás de nós, a maioria das técnicas modernas:

  • operar em cadeias de bits, não em cadeias de caracteres
  • ser cuidadoso para mascarar completamente padrões e redundâncias no texto da placa
  • usar chaves aleatórias (que também podem ser reutilizadas)
  • seguir que alterações muito ligeiras no texto da placa afectem uma grande parte do texto da cifra (e vice-versa). Isto é chamado de AvalancheEffect.

Além disso, é bom se a cifra for:

  • eficiente
  • tolerante a falhas

A maioria das cifras são cifras de bloco ou cifras de fluxo. As cifras de bloco requerem estofamento e podem operar em diferentes modos (Veja o livro de Schnier ou o artigo da Wikipedia.)

  • ECB – Electronic Codebook
  • CBC – Cipher Block Chaining
  • CFB – Cipher Feedback
  • OFB – Output Feedback
  • CTR – Contador
  • BC – Encadeamento de Blocos
  • PCBC – Encadeamento de Blocos de Cifras Propagadoras
  • CBCC – Encadeamento de Blocos de Cifras com Checksum

DES

Na Wikipédia

IDEA

Na Wikipédia

RC4

Na Wikipédia

RC6

Na Wikipédia

Blowfish

Na Wikipedia

Dois peixes

Na Wikipedia

AES

Na Wikipedia

AES é o novo padrão, substituindo o DES. Foi o vencedor do concurso (em 2001), onde foi apresentado sob o nome de Rijndael, vencendo oRC6, Serpent, MARS, e Twofish.

Key Exchange

Diffie e Hellman (os vencedores do Prêmio Turing 2015) e seu amigoMerkle mostraram em 1976 que era possível para duas pessoas trocarem uma chave secreta sem ter que realmente se encontrar em segredo:

  • Alice escolhe um $n$ e envia isto ao Bob
  • Alice escolhe um primitiveroot mod $n$ (como encontrar),chamado $g$, e envia isto ao Bob
  • Alice escolhe um inteiro secreto $a$, e envia $g^a \bmod n$ no clear para Bob
  • Bob escolhe um inteiro secreto $b$, e envia $g^b \bmod n$ no clear para Alice
  • Alice calcula ($g^b \bmod n)^a \bmod n$ e Bob calcula ($g^a \bmod n)^b ^b \bmod n$. Esta é a chave!(É $g^{ab} {bmod n$)

Isto é provavelmente seguro, desde que $n$ seja muito grande e $frac{n-1}{2}$ também seja prime, porque embora Eva saiba $g$, $n$, $g^a {bmod n$,e $g^b {bmod n$,não há nenhuma maneira eficiente conhecida para obter $a$ ou $b$ destes.Esse é o problema do logaritmo discreto, lembre-se?

Exemplo com pequenos $n$:

  • Alice escolhe $n=208799$ e $g=13$ e envia estes para Bob
  • Alice escolhe $a=152335$ e Bob escolhe $b=98113$
  • Alice envia Bob $13^{152335} \bmod 208799 = 73033$
  • Bob envia Alice $13^{98133} \bmod 208799 = 147540$
  • Alice calcula $147540^{152335} \bmod 208799 = 8435$
  • Bob calcula $73033^{98133} \bmod 208799 = 8435$
  • A chave secreta é $8435$.

Não faça isso com valores pequenos de $n$.

Em geral, a menos que você obtenha algum tipo de certificação, não tente proteger nenhum sistema do mundo real por conta própria. Mas é claro, dogo adiante e aprenda os aglutinadores e pratique a codificação por enquanto.

Criptografia de chaves públicas

Cifras de chaves públicas resolvem o pesadelo da gestão de chaves secretas, ao custo da velocidade. Num grupo de $n$ pessoas só se precisa de $n$ chaves públicas e $n$ chaves privadas.

RSA Cryptosystem

Diffie-Hellman não faz criptografia; apenas troca uma chave.RSA pode criptografar e decodificar. Aqui está como. Cada pessoa

  • Gera dois primes grandes, $p$ e $q$.
  • Escolhe um valor $e$ relativamente primo para $(p-1)(q-1)$.
  • Publica-lhe a chave pública $(N,e)$ onde $N = pq$.
  • Computa $d$ = inverso modular de $e$ em relação a $(p-1)(q-1)$, mantendo-o em segredo.
  • Destroys $p$ e $q$.

Agora veja isto:

  • Para a Alice enviar uma mensagem $m$ ao Bob, ela envia $c = m^e \bmod N$.
  • Bob descodifica isto facilmente porque $m = c^d \bmod N$.
Exercício: Pesquisa a matemática por detrás da RSA. Porque é que funciona, em detalhe? Sua resposta fará uso dos teoremas subjacentes à função totient de Euler; certifique-se de mostrar como ela se reduz para $(p-1)(q-1)$ quando $pq$ é prime, entre outras coisas.
Exercício: Diffie-Hellman (DH) é por vezes considerado uma parte da criptografia de chave pública, mesmo que lide com a troca de chaves e não seja em si um algoritmo de encriptação. Por que, então, algumas pessoas o consideram uma chave pública? (A resposta a isto requer alguma pesquisa.)

Um Exemplo Trivial:

AVISO!
Este exemplo é apenas para ilustração. Nunca implemente o seu próprio algoritmo criptográfico. Certifique-se também de entender como a criptografia de chaves públicas é horrível com chaves tão pequenas. Chaves reais devem ter milhares de bits.

Vamos usar uma chave de 16 bits (NÃO FAÇA ESTA IRL). Gerar dois primes aleatórios de 8 bits:

$p = 163\\\\q = 173$

Gerar um prime de 16 bits para o expoente do código:

$e = 64013$

Agora:

$n = pq = 28199 \d = \mathsf{modInverse}(e, (p-1)(q-1)) = 6797$

Vamos codificar a string ¿Dónde está ud.?. Aqui está em UTF-8:

c2 bf 44 c3 b3 6e 64 65 20 65 73 74 c3 a1 20 75 64 2e 3f

Em decimal:

194 191 68 195 179 110 100 101 32 101 115 116 195 161 32 117 100 46 63

Agora vamos aplicar a função de codificação a cada um::

$194^{64013} \bmod 28199 = 15626$
$191^{64013} \bmod 28199 = 19945$
$68^{64013} \bmod 28199 = 27982$
$\vdots$
$63^{64013} \bmod 28199 = 18384$

O texto cifrado é:

15626 19445 27982 22746 2679 7739 16824 23107 9054 23107 8378 16412 22746 5566 9054 881 16824 17864 18384

Decifrar:

$15626^{6797} \bmod 28199 = 194$
$19445^{6797} \bmod 28199 = 191$
$27982^{6797} \bmod 28199 = 68$
$\vdots$
$16824^{6797} \bmod 28199 = 63$

Recebemos a mensagem original!

A propósito
Desde que a encriptação simétrica é muito mais rápida, pode primeiro gerar uma chave secreta e transmiti-la através de uma linha protegida por criptografia de chave pública. Agora toda a comunicação futura pode usar a chave secreta.

Cryptographic Hashing

Um hash, a.k.a. fingerprint, checksum, message digest é um padrão de bits (normalmente cerca de 160 bits ou mais), gerado a partir de uma mensagem por uma função de criptografia. Para que o hash seja seguro, ou criptográfico, ele deve ser computacionalmente inviável para

  • findir uma mensagem que tenha um hash com um determinado valor (onewayness)
  • findir duas mensagens que tenham o mesmo valor (collision-resistance)

matematicamente, uma função de hash criptográfico $H$ produz um hash a partir de uma mensagem, $H(m) = c$, tal que $m$ não pode ser determinado eficientemente a partir de $c$, e não se pode encontrar eficientemente $m_1 \neq m_2$ tal que $H(m_1) = H(m_2)$,

Usualmente a mudança de apenas um bit na mensagem fará com que a digestão pareça completa e totalmente diferente.

$ cat willThis is my will.I leave 1000 dollars to Aliceand everything else to Bob.Signed, Eve.$ md5sum willc18feb890752c9e680c99d1e909fd761 will$ sed "s/1/9/g" will > Will$ cat WillThis is my will.I leave 9000 dollars to Aliceand everything else to Bob.Signed, Eve.$ md5sum Will85570bc2d0458b1f98f484261dee7d4d Will

Um hash seguro fornece uma maneira de determinar se uma mensagem foi adulterada.

Veja o Guia Ilustrado para Hashes Cripgráficos de Steve Friedl.

Códigos de Autenticação de Mensagens

Estes são similares aos hashes criptográficos exceto que eles usam uma chave secreta, enquanto hashes usam apenas a própria mensagem.

$MAC(m, k) = c$

Para mais informações:

  • MACs vs. Hashes no StackOverflow
  • Assinaturas Digitais no Wikpedia
  • MACs no Wikipedia

Assinaturas Digitais

Como o Bob pode ter a certeza que a mensagem veio da Alice e não de outra pessoa? Por Alice assinando-a; é assim. Na prática, normalmente se assina um hash, não a mensagem inteira.

RSA for Digital Signatures

Para a Alice enviar uma mensagem ao Bob,

  • Criptografa m com a sua chave privada
  • Criptografa m com a chave pública do Bob
  • Descriptografa m com a sua chave privada
  • Descripta m com a sua chave privada
  • >Descripta m com a sua chave privada A chave pública de Alice

$m = A(B'(B(A'(m)))$

DSA

Na Wikipedia

Cryptanalysis

Este é um tópico grande e não será abordado aqui. Em vez disso, aqui está uma lista de técnicas.

  • Análise de frequência
  • Ataque de texto em quadrado
  • Ataque de texto em quadrado
  • Ataque de texto em quadrado
  • Ataque de texto em quadrado
  • Chosen ataque chave
  • Cripto-análise linear
  • Cripto-análise diferencial
  • Furto
  • Suborno
  • Mala negra
Exercício: Faça algum auto-estudo sobre criptanálise ou encontre um curso online divertido.

Exemplos de programação

Heh, nós não vamos mostrar como rolar a sua criptografia. Nós vamos olhar para algumas bibliotecas reais de saída.

Você está transmitindo dados através de uma rede IP?
Utilizar TLS.
Ler, no entanto, se você quiser usar algumas bibliotecas criptográficas divertidas.

Exemplos de JavaScript

Referência: Nó crypto.

Exemplos de pitões

Referência: Bibliotecas criptográficas Python -Python hashlib -Python secrets

Java Exemplos

Similar Posts

Deixe uma resposta

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