1° parte da entrevista com David Ben Svaiter expert em Criptografia simétrica - Suporte Ninja
por Pablo The Roots · fevereiro 4, 2016
Nesse rápido bate bola com David Ben Svaiter, Diretor da área de Criptografia & Segurança da Informação" da Big Blue Ltda, responsável pela criação de software e implantação de medidas de SI. Expert em criptografia simétrica
David Ben Svaiter é Diretor da Área de Desenvolvimento de Softwares e Segurança da Informação da BigBlue, Expert em criptografia digital com algoritmos de chaves simétricas, com responsabilidade de coordenar todo o desenvolvimento deste segmento. Responsável por estudos e planejamento de processos de negócios envolvendo área de desenvolvimento de sistemas. Responsável por novas soluções, personalizadas para clientes prioritários. Engenheiro de sistemas online e offline, coordenando a equipe destes segmentos. Coordenador e revisor de projetos diversos. Consultoria especializada em criptografia e desenvolvimento de sistemas particularizados.
(David é também o líder do time de desenvolvimento da BigBlue que projetou o Software nacional de criptografia CifraExtrema, que falamos aqui no Suporte Ninja)
Você poderia explicar para pessoas "normais" o que é criptografia?
Resposta: A palavra vem do grego kryptós (esconder) e graphein (escrita).
É o conjunto de técnicas que objetivam esconder informação daqueles que não possuam os meios corretos para abri-la. Já em 500 aC os hebreus utilizavam esta técnica (algoritmo Ashbat) para trafegar informações (escritas nesta época) entre os seus, sem que invasores ou ameaças de todo tipo pudessem compreender o conteúdo da mensagem. Foi disseminada pelo Império Romano, que utilizando técnicas de substituição monoalfabética, permitia que mensageiros trafegassem informações militares por linhas inimigas durante as campanhas de ocupação e domínio, utilizando tiras de couro amarrada aos seus braços (Cifra de César).
Durante a 2ª Grande Guerra, os alemães tiveram por muito tempo a supremacia do cenário bélico pois usavam uma criptografia altamente elaborada em todas as suas comunicações escritas e de rádio (algoritmo Enigma), impedindo os Aliados de descobrir as táticas e ordens, antes e durante as batalhas. E foi justamente a quebra do Enigma por Alan Turing que permitiu que os Aliados soubessem de antemão os planos e táticas do Eixo, antecipando-se e preparando-se convenientemente à retaliação.
A criptografia, portanto, acompanha a humanidade há mais de 2000 anos, não sendo exclusiva da forma digital. A diferença fundamental é que, sendo os computadores muito mais rápidos que o ser humano, exige que os algoritmos sejam também refinados e fortalecidos contra esta velocidade – o que, entretanto, não é uma tarefa nem simples nem fácil, sendo um ramo específico da matemática avançada.
No mundo da criptografia se fala muito em Hash, É uma forma de criptografia? Qual a utilização delas no mundo do desenvolvimento?
Tabelas HASH são cálculos matemáticos que permitem produzir resultados específicos para determinado conteúdo, funcionando como "validadores da integridade de uma informação". Um algoritmo HASH produz combinações quase exclusivas (vide mais abaixo) para qualquer informação, funcionando como verdadeira "assinatura digital" desta informação.
Se qualquer letra ou ponto ou espaço da informação for trocada, ou mesmo apenas a posição dela for alterada, a assinatura irá também ser modificada em sua totalidade. Um exemplo de um HASH de 2 bytes é o "dígito verificador" do CPF. Todo número de CPF gera uma "assinatura" (ou HASH) de 2 dígitos ao final, garantindo que o número anterior (a informação portanto) corresponde a uma informação válida.
Existem diversos algoritmos "validadores de informação": CRC32, CRC64, SHA1, SHA256, SHA512, Whirlpool512, etc. Os números que normalmente os acompanham referem-se ao número de bits que a "assinatura" contém.
Lembrando que 1 byte (letra, dígito ou símbolo) equivale a 8 bits, o CRC32 gera uma assinatura de 4 bytes (32 bits ÷ 8), o CRC64 gera uma assinatura de 8 bytes (64 bits ÷ 8), enquanto o SHA512 gera uma assinatura de 64 bytes (512 bits ÷ 8). O tamanho da assinatura (2 digitos no CPF e 64 dígitos no SHA512) determina o grau de confiabilidade no conteúdo da informação, baseado no número de possibilidades contra colisão.
Chamamos de colisão a propriedade de um algoritmo HASH gerar o mesmo número para dois conteúdos diferentes – o que poderia significar que determinada informação poderia ser falsificada. Num algoritmo de 2 dígitos como o do CPF (módulo 11), o HASH possui um máximo de 100 ocorrências (0 – 99), o que permite grande número de colisões – afinal, temos apenas um "espaço" de 100 números para definir toda e qualquer informação, de qualquer tamanho. Por isso este tipo de algoritmo não deve ser utilizado em sistemas digitais de maior complexidade, já que as chances de uma falsificação/colisão são bastante factíveis.
Já em um algoritmo de 512 bits, o número de possibilidades para encontrarmos uma colisão é calculado como sendo 2256 -1 (algo como 115.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000 possibilidades), o que inibe colisões de forma eficaz.
Por isso afirmamos também que algoritmos HASH produzem combinações "quase exclusivas", pois é uma certeza matemática que colisões podem existir, apesar de extrema e absurdamente improváveis no cotidiano, mesmo considerando todos os textos existentes no mundo.
Portanto, cálculos do tipo HASH servem para "assinaturas digitais", já que sempre que calcularmos determinada informação teremos o mesmo resultado e, qualquer modificação que seja feita em no conteúdo da informação, irá modificar o resultado HASH.
Apenas como exemplo, seguem as assinaturas dos textos abaixo, calculadas em SHA1 (128 bits), aqui representado na forma hexadecimal:
Suporte Ninja = FAE24DAF7C9BA0DD73FE15EAD6A89F91E2E8C6B7
Suporte-Ninja = E883EC1BC378113E501CAEDAA2761F54A3A51328
ABCDE = 7BE07AAF460D593A323D0DB33DA05B64BFDCB3A5
ABCED = 77B7E3A8AE28A8EF15D242732C752218FD3B7537
Entretanto, algoritmos HASH não podem ser utilizados como criptografia, já que são chamados "one-way" (mão única), não permitindo sua reversão (ou decodificação). Não temos como, partindo de uma assinatura HASH, descobrir qual o conteúdo original que ela corresponde.
Diferentemente de algoritmos criptográficos, que permitem esconder a informação mas ter acesso à ela (ao original), caso conheçamos a fórmula e a chave usada para codifica-la.
ENCODE e CRIPTOGRAFIA são a mesma coisa? Explique a diferença.
Resposta: A grosso modo sim, mas existe uma diferença fundamental entre eles. Algoritmos de codificação (encode) buscam apenas reduzir o tamanho do dado original (ex. RLE, ZIP, etc) e/ou compatibilizá-lo entre vários sistemas diferentes (ex. Base64), em geral nem utilizando uma "chave secreta" para esta operação mas apenas uma formulação matemática (um algoritmo).
Já a criptografia procura esconder a informação e, portanto, busca auxilio não só numa formulação complexa (o algoritmo) mas também no uso de "chaves", parcelas secretas que participam da fórmula, impedindo que aqueles que não as conheçam sejam impedidos de ter acesso à informação original.
As chaves criptográficas não são, como a maioria das pessoas pensa, senhas de acesso a um processo ou sistema. São consideradas parte integrante do cálculo matemático e devem ser trabalhadas internamente no algoritmo, objetivando esconder de um cripto-analista, qual foi a chave original informada.
Lembro que a chave é a parcela mais importante de qualquer algoritmo! Não adianta o algoritmo ser complexo se a chave é fraca. Entretanto, a recíproca não é verdadeira: algoritmos simples podem ser inquebráveis se a chave for altamente complexa – o que entretanto traz uma dificuldade enorme em memorizá-la ou mesmo transmiti-la ao destinatário autorizado.
É justamente o equilíbrio entre o algoritmo e a chave que faz o desenvolvimento de um algoritmo de criptografia ser algo extremamente sofisticado e matematicamente desafiante. Saliento que não é um trabalho para amadores, pois temos ainda a cripto-análise (o inverso da criptografia), a ciência que provê a capacidade de descobrir uma informação sem conhecer o algoritmo e a chave, mesmo em algoritmos inicialmente considerados complexos e com chaves de tamanho considerável.
Base64 ainda é utilizada em muitas tecnologias! Base64 é uma forma de criptografia?
Resposta: Se considerarmos apenas a língua portuguesa, "codificar" ou "criptografar" são a mesma coisa. Mas se focarmos isso no âmbito da ciência da criptografia, podemos distinguir ambos pelo uso ou não de chaves criptográficas.
Portanto, não podemos considerar NENHUM algoritmo de "encode" como sendo um algoritmo de criptografia, já que qualquer pessoa tem acesso à informação – e isso não a protege de forma alguma.
No caso do algoritmo Base64, basta aplicar a fórmula para podermos codificar e decodificar a informação, sem uso de nenhuma chave-secreta. Mas, se utilizarmos uma maneira de aplicar uma "chave" após esta codificação, impedindo que a fórmula original decodifique corretamente o dado, estaremos então migrando para um algoritmo criptográfico.
Parece simples conceitualmente, mas como disse antes, é muito difícil fazer isso de forma que o dado criptografado resista às técnicas de criptoanálise, que podem descobrir o dado sem conhecer o algoritmo ou mesmo a chave-secreta utilizada. Criptografia não é trabalho de amadores.
Em suas postagens no grupo de Criptografia do Linkedin e aqui no Suporte Ninja você fala muito em criptografia O que é CRIPTOGRAFIA SIMÉTRICA?
Resposta: Algoritmos de Chaves Simétricas são algoritmos criptográficos que utilizam a mesma chave para codificar e decodificar a informação (simetria entre a chave que fecha e a que abre a informação). São os algoritmos mais antigos utilizados (não confundir ANTIGO com OBSOLETO, FRACO ou INSEGURO!) e possuem uma dificuldade comum a todos: como informar a chave ao destinatário?
No âmbito da criptografia profissional, estimamos um cenário "ideal" de sigilo e vigilância, pressupondo que estamos completamente grampeados: nosso telefone, nosso computador, nosso smartphone, até mesmo as cartas que enviamos pelo Correio. Tudo é vigiado. Portanto, se precisamos neste cenário enviar uma informação codificada a outros, como fazer para informa-los qual a chave-secreta foi utilizada e que permitirá a decodificação do dado, sem que aqueles que nos vigiam tenham acesso à ela?
Este é um "calcanhar de Aquiles" de toda criptografia de algoritmo de chaves simétricas, o que estimulou por séculos a criação de uma maneira SEGURA de fazê-lo.
E durante o século XX, dois matemáticos (Diffie e Hellman) chegaram a uma solução, como veremos mais abaixo.
Você costuma dizer em suas postagens no seu grupo Criptografia do Linkedin sobre as vantagens do uso de criptografias assimétricas. Você pode explicar o que é CRIPTOGRAFIA ASSIMÉTRICA?
Resposta: Algoritmos de Chaves Assimétricas são algoritmos que usam chaves diferentes para codificar e decodificar o dado.
Tais algoritmos são extremamente difíceis de se construir (apesar do conceito ser de fácil entendimento) e pode-se dizer que foi, durante séculos, o Graal da criptografia. Até hoje existem basicamente 3 algoritmos deste tipo: Diffie-Hellman (conceitualmente o mais utilizado, como no PGP, GnuPG, TrueCrypt, etc.), RSA (criado por Shamir, Adler e River e de uso comercial) e El-Gammal (outro algoritmo de uso comercial).
Sua formulação segue o conceito de multiplicação de números primos enormes (mais de 1000 dígitos por exemplo), obtendo-se um resultado também primo, que não pode ser fatorado em tempo hábil (ter as chaves descobertas). Mais recentemente, vemos algoritmos assimétricos trabalhando com Curvas Elípticas em Campos Finitos (Curve25519, ECC, entre outros), que possuem outros esquemas de cálculo da chave baseado em localização de pontos em curvas elípticas.
Conhecidos como "algoritmos de chaves públicas/privadas" (ou PKI – Public Key Infrastructure), tem como principal vantagem a possibilidade de se passar uma informação codificada a um destinatário, sem o risco de um interceptador abrir o dado – pelo menos em teoria. Na prática, tem se mostrado falho em ambientes de monitoramento completo (como em uma rede espionada), nos casos de invasão do equipamento (obtendo-se a chave privada do usuário) ou em ataques à Autoridade Certificadora (veja explicação a seguir), obtendo-se as chaves pública e privada do usuário em alguns casos.
Além disso, exigem mecanismos que fiscalizem e evidenciem que os usuários que se "apresentam" pela chave pública sejam validados, exigindo o uso de "certificadoras" (como Verisign, Certisign, Serasa, etc), sem as quais, qualquer um poderia se passar por um usuário legítimo; como se você se apresentasse como sendo o Silvio Santos da TV).
Matematicamente, uma chave assimétrica é menos segura que uma chave simétrica de mesmo tamanho. Para se obter a segurança equivalente a uma chave simétrica de 128 bits, a criptografia PKI necessita de uma chave pública de 3072 bits e uma privada de 256 bits, enquanto uma chave RSA deverá possuir ambas em 3072 bits de tamanho, enquanto uma chave do tipo Curva deverá possuir pelo menos o dobro do tamanho (256 bits).
Quais as vantagens da criptografia SIMÉTRICA em relação à criptografia ASSIMÉTRICA?
Resposta: Vejo como inúmeras as vantagens da criptografia de chaves SIMÉTRICAS em relação à de chaves ASSIMÉTRICAS:
Velocidade. Algoritmos de chaves simétricas são muito mais velozes que os de chaves assimétricas, pois não precisam efetuar multiplicação de gigantescos números primos.
São mais seguros pois suas chaves são mais seguras e o algoritmo não depende de números primos.
Algoritmos simétricos não estão limitados à forma de cálculo, nem ao tamanho da chave criptográfica.
A questão do "envio seguro de uma chave" pode ser ultrapassado com esquemas diversos: através de canal paralelo (protegido ou não), ou através de outras formulações criativas e eficazes.
Algoritmos de chaves assimétricas são bons para AUTENTICAR pessoas – mas para a criptografia da informação, os principais programas deste tipo utilizam algoritmos simétricos (como AES, Twofish, IDEA, entre outros). Isso evidencia o que os próprios fabricantes acham do conceito. Entretanto, vemos hoje algoritmos simétricos sendo usados também para autenticar pessoas através de esquemas sofisticados porém altamente eficientes, rápidos e eficazes.
A segurança de qualquer algoritmo reside no fato de que, para se descobrir as chaves utilizadas e abrir a informação, gasta-se muito mais energia elétrica (e dinheiro) que o valor da informação. Apenas como referencial, em 1980 (data de sua disseminação com o PGP principalmente) estimava-se isso a alguns bilhões de dólares, alguns GigaWatts de energia e muitos, muitos milhares de anos. Hoje, com computação paralela em nível de hardware e software, placas multiprocessadas com até 8192 GPU´s de alta performance e formulações que visam substituir a fatoração de primos (como Curva de Sieve), podemos estimar como uma fração de tempo e custo a descoberta de uma chave assimétrica; que pode até mesmo ser substituído por esquemas muito baratos (e até triviais) de monitoramento e vigilância de equipamentos e redes (ponto x Certificadora), obtendo da mesma forma as chaves utilizadas, sem necessidade de calculá-las.
Este mesmo conceito de gasto se aplica aos algoritmos de chaves simétricas. Há vários ataques que podem ser utilizados em algoritmos simétricos objetivando poupar tempo, energia, recursos. Mas em se tratando de um algoritmo matemática e criptograficamente seguro, ele já os prevê, restando apenas o Ataque por Força Bruta, que define e quebra todo e qualquer algoritmo, presente ou futuro. Neste tipo de ataque, todas as chaves possíveis são testadas, o que dependendo do algoritmo, significa um enorme gasto de tempo e energia (lembrando que este gasto deve compensar o valor da informação a ser quebrada). Apenas para um parâmetro, algoritmos simétricos de 256 bits com chaves de 256 bits pressupõem algo como 11575 possibilidades de chave. Se tentarmos gerar 1 quatrilhão de chaves por segundo (uma medida superavaliada mesmo com os recursos hoje disponíveis como acima citado), devemos varrer todas as possibilidades em 1,13132 anos. Impraticável.
Finalizo perguntando: porque as Agências de Inteligência e o ambiente de alta criticidade Militar usam algoritmos de chaves simétricas e não esquemas assimétricos?
Criptografar uma informação já criptografada com outro algoritmo traz alguma camada extra de segurança?
Como são fórmulas matemáticas de alta complexidade e como normalmente trabalham com esquemas semelhantes nos bits da informação (transposição & substituição), o uso de dupla-camada de criptografia, seja com um mesmo algoritmo usando chaves diferentes, seja com algoritmos diferentes usando ou não a mesma chave, pode vulnerabilizar a criptografia do primeiro algoritmo. E isso é comprovado na prática, através de análises diversas (entropia de Shannon, Bi e TrésBi-Entropia, Análise de Frequência, Relação entre Vogais e Consoantes, testes diversos de repetição de bits, etc.).
Um bom e SEGURO algoritmo criptográfico, que obtenha bons índices nos testes acima apontados, já é mais que suficiente para proteção da informação.
Porque os certificados de segurança estão na faixa de 128 a 256 bits enquanto os Ramsonwares usam chaves superiores?
Resposta: Basicamente o "Ramsonware" não utiliza chaves assimétricas para criptografia dos dados, mas apenas para "identificar seus autores" quando em operações de "C & C" (comando e controle). Neste caso, as chaves são também de 128 ou 256 bits, quando muito.
Para a criptografia, estas pragas utilizam algoritmos de chave simétrica, onde não há limite preestabelecido.
Chamo a atenção também para o fato de esquemas PKI (chaves assimétricas ou públicas/privadas) precisam ser estocadas em uma ou mais Autoridades Certificadoras (cadeia de certificação), o que pode demandar alta taxa de transferência e estocagem, quando multiplicamos cada chave por milhares ou milhões de usuários.
A TOR é segura ou não? Em suas postagens você afirma categoricamente que não. E se usarmos a TOR com ferramentas que bloqueiam scripts, cookies e publicidades, não estaríamos criando mais uma camada de segurança?
Resposta: A rede TOR é segura desde que todos os nodes (os nós da rede por onde a informação passa) forem seguros. E isso não é o que vimos recentemente.
Já existem esquemas conhecidos de falsificação de nós na rede, que possibilitam identificar tanto o emissor, quanto o destinatário e a informação em si. A questão é: isso possui um custo, que vem caindo a cada dia (hardware + software + energia para tal). Somado ao fato de que a TOR possibilitou um enorme número de atos ilícitos nos últimos meses (tráfico de drogas e armas, pedofilia, planejamento de crimes, venda de informações patenteáveis, etc.), temos enormes estruturas e muito dinheiro sendo investido em monitorá-la e quebrá-la – o que em minha opinião já foi feito.
Prova disso é a prisão, feita pelo FBI, de componentes que a utilizavam para perpetrar tais crimes.
Em meu grupo CRIPTOGRAFIA BRASIL tenho alguns documentos e reportagens que citam tais vulnerabilidades, incluindo a compra por USD 1 milhão pelo FBI, de um esquema desenvolvido pela Carnegie Melon para "minar" a rede – e sabe-se hoje que o esquema funcionou e é eficaz, pois foi o que possibilitou a identificação e prisão de criminosos.
E quanto a este exemplo de esteganografia?
O Pablo ou RootsBabilonia andou se aventurando no Hellboundhackers.org e disse que isso é muito sinistro. Isso é algo como uma mensagem convertida em uma base e depois em uma representação visual "Pseudo-Alienígena". Por se tratar de uma imagem deixa os ataques de força bruta tradicionais muito mais difíceis, entre os participantes que quebravam até algumas criptografias customizadas, só uma minoria conseguiu ler a mensagem escondida nessa imagem! Conceitos simples porem criativos como esses não poderiam deixar as "coisas" mais seguras?
Essa imagem faz parte de uma serie de desafios de segurança e criptografia do Wargame HellboundHackers mais precisamente o desafio de criptografia N° 4!
Resposta: Esta imagem não é esteganografia, mas apenas uma forma de tentar esconder caracteres em um formato diferenciado: seja como símbolos, seja por ilusão de ótica - como vemos em textos escritos de cima para baixo, imitando japonês. Lembro ainda que mesmo que as palavras sejam mudadas por símbolos (e ainda assim não é criptografia mas hierografia), ainda pode ser quebrada por criptoanálise. Conceitualmente válido, mas na prática mostra-se completamente ineficaz.
A esteganografia é um pouco desdenhada no desenvolvimento de soluções em busca de privacidade. Mas esta também não é uma poderosa forma de esconder informação?
Resposta: A esteganografia é a arte de esconder informação entre os pontos de uma imagem (pixels), espalhando a informação em distribuição uniforme ou aleatória, impedindo que nossos olhos percebam, entre milhares de pontos, aqueles que "escondem" uma informação.
A questão é que ela é bastante limitada em eficácia, já que traduz a informação em pontos coloridos na imagem, onde cada "letra" é traduzida numa "cor" e uma posição – e isso pressupõe que, para se obter sucesso, precisemos de uma imagem CHEIA destas cores para que a informação passe desapercebida.
Logo, o tamanho e qualidade da imagem onde a informação será escondida precisa ser, tecnicamente, muito apropriada a cada tipo de informação (possuindo pontos e cores suficientes para que os pontos e cores "criptografados" sejam corretamente escondidos). E isso, na prática, NUNCA ocorre com 100% de eficácia, o que permite que descubramos a informação.
Seguindo este modelo, onde há diferença nítida entre a informação escondida na imagem, existem algoritmos que trabalham comparando as cores de todos os pontos vizinhos, descobrindo com alto grau de eficácia (90%-100%) a informação espalhada na imagem. Ou seja, mesmo que usemos uma informação pequena ("Suporte-Ninja") dentro de uma imagem imensa (10 megapixels), o algoritmo de criptoanálise rapidamente descobre a informação. E isso fica ainda mais simples se a imagem for JPG ou GIF ou qualquer outro padrão "comprimido", justamente por esta característica.
Interessante notar que, uma vez codificada, a imagem não pode ser transformada em JPG ou outro padrão qualquer, pois isso destruiria a informação original, alterando as cores (os códigos) nela inseridos!
Além disso, como os pontos são "cores", existe um limite muito claro entre sua quantidade e a quantidade total de pontos da imagem original para que a informação passe desapercebida. Estimo que este número seja da ordem do milésimo, ou seja, 1 ponto para cada 1000 pontos de imagem. Assim, o limite do que podemos "esconder ou informar" dentro de uma imagem é muito, muito menor do que conseguimos fazer usando a criptografia clássica, simétrica ou assimétrica! E mesmo assim, será descoberta.
Portanto, a esteganografia é muito interessante do ponto de vista teórico, mas muito simples de ser descoberta (encontrada na imagem) ou mesmo "destruída" (via conversão e desconversão de padrões gráficos) sem que se destrua o dado transmitido (a imagem em si), ou seja, sem que o destinatário perceba que está sendo interceptado! E esta característica é fundamental ao sucesso da interceptação, pois se eles percebem, mudam a forma e o canal de transmissão da informação. Foi justamente esta característica que permitiu aos Aliados vencerem o Eixo na 2ª Grande Guerra – os alemães não percebiam que suas mensagens estavam "sendo lidas" e acreditavam que trafegavam tudo em completa privacidade!
E por isso Edward Snowden causou tanto rebuliço em todo o mundo, já que revelou que TODOS os algoritmos mais usados permitem que a NSA e os Governos tenham acesso à informação, sem que os emissores e destinatários percebam.
Continuaremos juntando perguntas relacionadas a criptografia, privacidade e segurança da informação para a segunda parte da entrevista! Você pode fazer a pergunta AQUI!
Esta entrevista faz parte de um projeto do Suporte Ninja em cooperação com grandes nomes da TI brasileira que busca esclarecer para a profissionais da tecnologia da informação e usuário em geral, de uma forma simples alguns conceitos complexos da Tecnologia da Informação, Segurança, Redes, Direito Digital e Ciberativistas!
Tags: Algoritmoschave públicachave RSAchave simétricaCRC32CRC64criptoanálisecriptografiaCurvas ElípticasEdward SnowdenesteganografiaHASHnsaprivacidadeSHA1SHA256SHA512