Programação

quarta-feira, 9 de outubro de 2019

Criptografia


1. CRIPTOGRAFIA

Criptografia (do grego cripto esconder + grafia escrever)

“Ciência de escrever num código secreto”
“Ciência de codificar mensagem texto”

A criptografia é a ciência que estuda e utiliza métodos matemáticos, para codificar informação, transformando informação legível em  ilegível, e vice-versa, garantindo a segurança da informação, protegendo-a de pessoas não autorizadas.
  O objetivo da criptografia é garantir a confidencialidade, integridade, autenticidade e não repúdio da informação nas comunicações digitais.

As aplicações básicas da criptografia são a confidencialidade (garantir que apenas quem autorizado pode ler os dados) e a autenticação/integridade (garantir que os dados têm a origem conhecida e que não foram alterados entre origem e destino.


--- A encriptação é o processo de transformação de uma informação original legível em informação ilegível.

--A Desencriptação é o processo de descodificar, isto é, decifrar dados codificados e convertê-los em informação legível.



 
Este mecanismo tem como objetivo o envio de informação confidencial de forma segura, sendo apenas possível a sua descodificação por pessoas  autorizadas (que possuam a chave de “desencriptação”).



Criptoanálise

A criptoanálise é a ciência que estuda técnicas de descodificar código encriptado, descobrir vulnerabilidades/quebrar os algoritmos de criptografia, descobrir a chave do algoritmo ou descodificar as mensagens sem conhecer a chave.

Esta ciência não é apenas usada por pessoas mal-intencionadas mas também por pessoas que desejam conhecer as vulnerabilidades de uma cifra/algoritmo para que as possam proteger de ataques mais graves.

Ao conjunto da criptografia e da cripto-análise, designa-se criptologia.


Atualmente, a criptografia assume um papel fundamental para assegurar que os sistemas informáticos sejam cada vez mais seguros.

Atualmente, a segurança dos dados tornou-se cada vez mais importante, desde mensagens de email, informação bancária, empresarial, etc.

 

A criptografia deve ser usada sempre que há informação importante a ser enviada através de um meio que pode ser acedido por qualquer um, deste modo tornou-se uma peça fundamental da transmissão de informação na Web atual pois diariamente passa inúmeras informações importantes.

Nós estamos habituados a utilizar a criptografia diariamente em vários sítios embora raramente se tenha noção disso como por exemplo na informação que navega entre o nosso PC e o router wi-fi lá de casa, se por algum motivo vocês conseguissem ver os caracteres que viajam pelo ar das nossas casas não seria possível de ler pois o mesmo vai criptografado.


 

História da Criptografia

- A criptografia existe desde a antiguidade, Século 1900 a.C., quando um escriva Egípcio, utilizou hieróglifos egípcios diferentes dos utilizados normalmente.

- no Sec. XIX começou-se a encarar como ciência, arte de proteger a informação, transformando-a num formato ilegível, acessível apenas a quem tivesse a chave do código.

- Avanços relevantes da criptografia aconteceram em tempos de guerra.

Em tempo de guerra é importante que uma ordem de ataque ou movimentação não seja interceptado pois pode comprometer o mesmo ataque.


Visualização do vídeo - Cifra César e Máquina Enigma

https://www.youtube.com/watch?v=VMJeDLv2suw      (Museu UnivFRGS Brasil)


A criptografia já é conhecida desde à vários séculos muitas vezes associadas as práticas militares. As primeiras mensagens criptografadas consistiam na substituição de simples caracteres de uma mensagem ou de um determinado modo de adulterar as posições do caracteres de modo a que não fosse possível ler o texto sem o reordenar de uma dada forma.

Desde então a arte da criptografia e criptoanálise tem estado sempre a par das mais variadas tecnologias, iremos descrever então aqui as duas grande vertentes da criptografia na história.

(a) Criptografia Clássica

A criptografia clássica tal como o nome indica é a criptografia mais antiga conhecida pelo homem. Esta técnica andava de mão dada com as atividades militares e a sua força contra possíveis ataques dependiam unicamente do secretismo, isto é, do conhecimento do algoritmo necessário para a desencriptação da mensagem.

Um dos mais antigos algoritmos de codificação/cifragem conhecidos e talvez também o mais simples de perceber nesta fazer é a Cifra de César que foi chamada assim em homenagem ao imperador Romano que imperava na Época. 







Mensagem antes de Codificar/Cifrar:

“O meu primeiro Criptograma”

Mensagem após a Descodificar/Cifragem:

“R PHX SULPHLUR FULSWRJUDPD”


(b) Criptografia Moderna   - Máquina Enigma

O nascimento da criptografia moderna foi durante a segunda guerra mundial. Numa era tensa em que a informação sobre possíveis alvos/bases era cada vez mais crucial de manter secreta foi necessário o desenvolvimento algo capaz de fazer esse trabalho.

Foi nesse caso que os Alemães se destacaram e desenvolveram uma máquina conhecida por “Enigma que não era mais que uma máquina de Rotores em que cada Rotor fazia algo tão simples como a substituição de uma letra por outra tal como na cifra de César apresentada anteriormente.


Então o que fez esta máquina tão especial?

O “Enigmatinha a vantagem de ter vários rotores colocados em paralelo (inicialmente 3) e numerados em numeração Romana de I a III e era garantido que o substituto de cada carácter era diferente em cada Rotor. De seguida o sujeito que escrevia a mensagem deveria inserir num mecanismo de existente na máquina que servia para escolher a posição de arranque dos rotores, ou seja, esta seria a chave da mensagem e como tal deveria ser partilhada entre os dois interlocutores.

De modo a tornar esta máquina o mais segura possível o rotor era alterado a cada tecla premida voltando ao rotor I no após o III (no caso da maquina de 3 rotores). Este tipo de técnica embora tenha sido muito avançada para a época tinha um enorme perigo que seria o caso de duas mensagens iguais serem interceptadas seria possível ver a relação entre o 1º e 3º, 2º e 5º caracter e assim sucessivamente.

Devido a este facto mais tarde foram introduzidas no exército máquinas com 4 e 5 rotores tornando mais difícil a percepção de mensagens interceptadas.


Durante a segunda guerra mundial o exército Inglês juntamente com o Francês tinha uma unidade especial para decifrar as mensagens intercetadas provenientes do Enigma de seu nome Ultra, ainda hoje há quem afirme que a unidade Ultra conseguiu a decifragem mas devido ao secretismo do seu sucesso os Alemães nunca o souberam e continuando a usar o Enigma dando assim uma enorme vantagem aos aliados o que pode ter levado à vitória.

O matemático inglês Alan Turing e sua equipe foram os responsáveis por descodificar o “Enigma”, máquina nazista que enviava códigos às suas lideranças armadas durante a Segunda Guerra Mundial. Estima-se que a descoberta tenha reduzido a guerra em dois anos e evitado a morte de 14 milhões de pessoas. O longa resgata todo esse processo e também destaca o trabalho de colaboradores de Turing, como a criptoanalista Joan Clarke. O trabalho do matemático ainda lançou as bases para os computadores atuais.

Na imagem seguinte podemos ver uma mensagem cifrada pelo “Enigma”, intercetada pelo Ultra onde é possível ver o texto descodificado/cifrado e escrito no lado direito da mesma a lápis um conjunto de 3 caracteres que são o finger wheels escolhidos inicialmente como chave.


FILME  O Jogo da Imitação -  2014 

Na Segunda Grande GuerraTuring e a sua equipa ajudaram os Aliados a descodificar o código Enigma, que os nazis utilizavam para comunicar secretamente.




Conceitos da Criptografia



Texto Limpo - texto legível

Nesta área o termo texto limpo é sinónimo ao texto legível que é obtido antes e depois da cifragem. No exemplo dado no artigo anterior o nosso texto limpo é “O meu primeiro Criptograma”.

 

Criptograma - texto encriptado

Já o termo criptograma é o termo utilizado para se referir ao texto obtido após o encriptação, ou seja, é o texto encriptado.

 No artigo anterior o nosso criptograma é “L IBR MOFIBFOL ZOFMQLDOVIV”.

 

Algoritmo

algoritmo matemático utilizado na encriptação/desencriptação, transforma o texto limpo num criptograma (texto encriptado).

Algoritmo de César:  foi o processo substituição de letras

 

Chave   - é o segredo da criptografia e é partilhado entre ambas a partes que estão a comunicar sem a qual é impossível reverter o criptograma para texto limpo.


Chave de César - 3 posições de letras à direita

Chave doEnigma: posição inicial dos motores

Se se lembram no caso do Enigma havia 3 rotores que eram colocados numa determinada posição inicial sem a qual era impossível saber o que estava escrito no criptograma. A posição inicial desses 3 rotores era nesse caso a chave de algoritmo.




Para que existe criptografia deve existir sempre um algoritmo e a respetiva chave




MÉTODOS DE CRIPTOGRAFIA


-->CRIPTOGRAFIA SIMÉTRICA  (chave única)
A criptografia simétrica é também conhecida por criptografia de chave única ou chave secreta

A criptografia simétrica utiliza uma única chave que serve tanto para codificar como para descodificar.


Funcionamento
§  É usada uma única chave que é partilhada entre o emissor e o recetor. Desta forma, a chave que é usada para codificar/encriptar é a mesma que é usada para descodificar/desencriptar.



O problema da chave simétrica está em sua distribuição. Pois imagine que o João tenha criado a chave e precisa que ela seja entregue à Maria. Para isso, a chave é enviada através da rede em texto puro.

Quando a chave é enviada, esta corre o risco de ser capturada no meio do caminho, assim possibilita que uma pessoa não autorizada tenha acesso a chave.




Algoritmos que usam criptografia simétrica

  • DES (Data Encryption Standard)
    • O DES é um mecanismo de cifragem tradicional ("simétrico) desenvolvido nos anos setenta
  • 3DES (Triple Data Encryption Standard) ,
  •  AES(Advanced EncryptionStandard) e RC4 
  • Rivest Ciphers (RC2; RC4 e RC5)
    • Esta é uma sucessão de algorimos bastante usados na atualidade que possuem maior flexibilidade e possibilitam maior segurança do que o DES simples.
  • IDEA (International Data Encryption Algoritmo)  
    • É mais uma técnica de codificação simétrica em bloco que é usada na atualidade. Usa blocos fixos com 64 bits (8 bytes) e usa chaves com 128 bits (16 bytes).

  • BLOWFISH
    • É um algoritmo simétrico conhecido pela sua velocidade, sendo bastante mais rápido do que o RC2 e o IDEA. Usa blocos fixos com 64 bits (8 bytes), mas as chaves podem ter qualquer comprimento (128 bits é o mais corrente na atualidade).


 

Estes algoritmos que usam criptografia simétrica são

Ø   Mais simples

Ø  mais rápidos,

Ø  não são tão seguros como os que usam criptografia assimétrica,  uma vez que a chave usada para codificar a informação é partilhada.

Ø  Usada para grandes volumes de dados




-->CRIPTOGRAFIA ASSIMÉTRICA   ( 2 chaves)

A criptografia assimétrica é também conhecida por criptografia de chave pública.



A criptografia de chave pública foi uma descoberta de enorme importância.

 Chave Pública  será partilhada com alguém que quer comunicar 

e a Chave Privada – é privada, não pode ser partilhada


NOTA: As chaves assimétricas públicas/privadas podem ser utilizadas em ambas direções, ou seja, codificar com a chave pública descodificar com a chave privada vice-e-versa.




NESTE EXEMPLO ABAIXO é utilizado para garantir CONFIDENCIALIDADE dos dados

A Chave Pública  será utilizada para encriptar os dados

e a Chave Privada – será utilizada para desencriptar os dados.

Os dados encriptados com chave pública só poderão ser desencriptados pela chave privada do mesmo par.


Funcionamento

Exemplo: Maria quer enviar dados e informa João! João irá gerar as 2 chaves, uma chave pública e outra chave privada.




Após gerar as chaves,  a chave pública é enviada para Maria.
Com essa chave pública, a Maria irá utilizar para encriptar os dados e serem enviados ao João. 
Quando os dados chegarem ao João, será utilizará a sua chave privada para desencriptá-los.


A chave pública é enviada pela rede, porém mesmo que a chave pública do João seja capturada no caminho, a única maneira de desencriptar os dados codificados é utilizar a sua chave privada, então o João nunca deverá distribuir sua chave privada.


Algoritmos utilizados em criptografia assimétrica

     Chaves Diffie-Hellman

 Em 1976, Diffie e Hellman [DIF 76] mudaram os rumos da criptografia com a criptografia assimétrica


    RSA   Ron Rivest, Adi Shamir e Len Adleman  

Em 1977, Rivest, Shamir e Adleman desenvolveram um algoritmo assimétrico denominado RSA


 
O algoritmo RSA é o mais sólido demorou quatro anos a ser quebrado por Adi Shamir, uma segunda versão, supostamente mais sólida, demorou dois anos a ser quebrada. Actualmente praticamente pode-se afirmar que o RSA é o algoritmo de chave pública.

   RSA tem aguentado todas as investidas dos cripto-analistas.



     

Criptografia assimétrica


Øé mais segura pois usa 2 chaves

Ø utiliza algoritmos mais complexos

Ø  processo de criptografia mais lento



 


CURISIDADE

                                        Segurança do Algoritmo Assimétrico
    O RSA baseia-se da grande dificuldade dos computadores de fatorarem números grandes, as chaves são geradas matematicamente através do produto de dois números primos grandes. Mesmo que se tenha esse produto (que faz parte da chave pública divulgada), a segurança ainda é garantida devido a grande dificuldade de se o fatorizar e obter os primos que são essenciais para o algoritmo.
    Se fosse possível fatorizar o valor de n (publicamente conhecido), o criptoanalista poderia então encontrar "p" e "q", e a partir deles chegar a "z". Sabendo "z" e "e", torna possível achar "d" utilizando o algoritmo de Euclides. Felizmente têm-se tentado fatorizar números extensos por pelo menos 300 anos, e a conclusão que se chega é que esse problema é extremamente difícil.
    Um algoritmo de busca de chave através da força bruta (busca exaustiva da chave). Suponha-se um computador executando um milhão de instruções por segundo durante um ano inteiro. Assim, tendo uma chave assimétrica de 512 bits necessitaria de 30 mil computadores executando em paralelo um milhão de instrução por segundo para ser quebrada (ou seja, um computador rodando um milhão de instruções por segundo levaria 30 mil anos para efetuar a fatoração necessária); uma chave assimétrica de 768 bits demandaria 200 milhões de desses computadores; uma chave assimétrica de 1.024 bits demandaria 300 bilhões; e finalmente, uma chave de 2.048 bits exigiria 300 quinqüilhões para ser quebrada.




-->CRIPTOGRAFIA HÍBRIDA -  criptografia simétrica e assimétrica

 

https://www.youtube.com/watch?v=I3qEH3zIDr0    examBR



A utilização das 2 criptografias garante maior rapidez  e segurança


 

v  Em Websites de compras online com envio de dados bancários utiliza-se a criptografia simétrica e assimétrica






Conclusão: neste caso a 

Ø Criptografia simétrica (CS) é usada para encriptar e desencriptar os dados e a

Ø Criptografia assimétrica é usada para encriptar a chave simétrica (chave pública) /desencriptar a chave simétrica  (chave privada) 




FUNCIONAMENTO 






Criptografia quântica: o futuro 


este mecanismo de encriptação que não depende de cálculos matemáticos, depende sim das leis da física
O método é apelidado de distribuição de chave quântica (QKD na sigla em inglês). A chave de encriptação é convertida num fluxo de fotõesque podem assumir orientações (vertical, horizontal, diagonal esquerda ou direita) através da passagem por filtros – cuja ordem é escolhida pelo emissor...
Mas a grande novidade está no facto de ser à prova de ‘espiões’. Se alguém intercetar os fotões, sempre que usar o filtro errado, vai alterar a orientação desse fotão, o que significa que acabará por ser destruído no recetor, por não corresponder à emissão

Promete comunicações ultrasseguras e à prova de hackers, mesmo quando os computadores quânticos forem comuns.



ASSINATURA DIGITAL - garantia de Autenticidade  

A “assinatura digital qualificada” permite garantir a autenticidade da assinatura de um documento digital.

Uma assinatura digital possui certificados digitais associados que asseguram a identidade de quem assina um documento digital, ou seja, assegura a autenticidade da assinatura de um documento digitalhttps://www.autenticacao.gov.pt/web/guest/assinatura-digital/assinatura-digital-qualificada


A assinatura digital qualificada é baseada num criptografia assimétrico, mediante o qual é gerado um par de chaves assimétricas exclusivas e interdependentes; permite ao titular da chave privada reclamar a autoria de um documento digital e possibilita ao detentor da chave pública a confirmar a autoria e a integridade do documento digital. Estas propriedades de cibersegurança não são asseguradas nos documentos que apresentam as, vulgarmente designadas, “assinaturas digitalizadas”.

Assinatura Digital utiliza criptografia assimétrica + algoritmo Hash (resumo do documento)

Site anterior e este https://www.youtube.com/watch?v=o-TPSs65fYU  prof. Léo Matos - Estúdios Aulas


A tradução da palavra hash quer dizer "picar, misturar, confundir".

A função/algoritmo Hash é usado em conjunto com a criptografia assimétrica para garantir a integridade de um documento digital.

A criptografia assimétrica é utilizada para garantir a autenticidade

 




chave privada é utilizada para encriptar o hash do documento

chave pública para desencripta o hash do documento 



Assinatura DIGITAL

Ø  não encripta o documento por isso não garante a confidencialidade/sigilo

Ø  Integridade   - garantia que o documento não é modificado (assegurado pelo HASH)

Ø  o uso da chave privada garante que há

·       Autenticidade: garantia de quem é o autor do documento

·       Não-repúdio - garante que o autor não pode repudiar a autoria do documento




Uma assinatura digital precisa de uma certificação digital que terá que ser adquirida numa Autoridade Certificadora (CA)

 


Assinatura digital é utilizada:

·      Assinatura de contratos

·      Prescrições e atestados médicos

·      Procurações e processos digitais

·      Declaração fiscais




Assinaturas manuscritas digitalizadas em Papel versus Assinatura DIGITAIS 




 

Public Key Infrastructure  (PKI) - Infra-estrutura de Chave Pública

A criptografia de chave pública fica comprometida se não for assegurado que uma determinada chave pública pertence ao seu verdadeiro detentor.

 

O Public Key Infrastructure (PKI) tem como objectivo resolver esta questão, através da existência de uma terceira entidade idónea, aceite por todos as partes do sistema, o Certificate Authority (CA).

 O CA associa uma chave pública ao verdadeiro proprietário através de um certificado de chave pública.


Autoridade de Certificação (Certification Authority - CA)

Todas as entidades do sistema possuem um par de chaves pública-privada e o respectivo certificado da chave pública.

 

O próprio CA possui um par de chave públicaprivada e o certificado.

 

Os certificados do CA são utilizados para que as entidades possam verificar que os seus próprios certificados e das outras entidades são válidos e porque CA foram emitidos. 




Tipos de certificados digitais

Podemos classificar os certificados digitais quanto à sua natureza e finalidade. Assim temos:

  • Certificados de CAs - assinados pela própria CA ou por outra CA; são utilizados para validar outros certificados;
  • Certificados de servidor - apresentam a designação da organização em causa e do DNS do servidor, tendo por objetivo identificar servidores seguros;
  • Certificados de programadores ou developers - usados para permitir a validação de assinaturas em aplicações de software;
  • Certificados pessoais - como os utilizados para comunicações ou transações via correio electrónico.



SERVIÇOS DE INTERNET QUE UTILIZAM CRIPTOGRAFIA


--> HTTPs 

Protocolo SSL/TLS – utiliza chaves simétricas e assimétricas para criptografia dos dados 

https://4future.com.br/index.php/2021/10/17/criptografia-como-funciona-o-https/

O TLS funciona usando uma técnica chamada criptografia de chave pública (assimétrica), que se baseia em um par de chaves — uma chave pública e uma chave privada.

  • Qualquer coisa encriptada com a chave pública pode ser desencriptada apenas com a chave privada
  • Qualquer coisa encriptada com a chave privada pode ser desencriptada apenas com a chave pública

-->VPN  (canal que utiliza criptografia)


-->Assinatura digital





VERIFICAR NÍVEL DE SEGURANÇA DE UM SITE

Site https://securityheaders.com/

www.novobanco.pt    segurança nível A






AUTENTICAÇÃO MÚTUA ENTRE SERVIDOR E CLIENTE através do TLS




AUTENTICAÇÃO MÚTUA/BIDIRECIONAL DO SERVIDOR E DO CLIENTE
A autenticação mútua pode ser realizada com dois tipos de credenciais: nomes de utilizadores e senhas e certificados de chave pública 

Tutorial: Two-Way SSL Mutual Authentication https://www.youtube.com/watch?v=x7B5CwcxCDI 


  1. Cliente conecta-se ao servidor
  2. Servidor apresenta seu certificado TLS (certificado de chave pública)
  3. O cliente verifica o certificado do servidor
  4. Cliente apresenta seu certificado TLS
  5. O servidor verifica o certificado do cliente
  6. Servidor concede acesso
  7. Cliente e servidor trocam informações por conexão TLS criptografada

2. O cliente obtém o certificado de chave pública do servidor,
3.  o cliente verifica se a CA que assinou o o certificado do servidor está contido na lista privada de CAs confiáveis ​​do cliente (estabelecendo que agora ele também confia nessa CA).
4. Cliente envia ao servidor a chave de sessão encriptada com chave pública do servidor, 
5. com a qual cada um pode agora encriptar e desencriptar comunicações subsequentes.




Criação de pares de chaves pública e privada - OpenSSL

https://support.google.com/a/answer/6342198?hl=pt-BR 

A ferramenta OpenSSL de código aberto é uma das mais usadas para criação de pares de chaves pública e privada.

utilizada nas principais plataformas e fornece uma interface de linha de comando simples para a geração de chaves.

Criar a chave privada RSA

A geração da chave privada RSA com o OpenSSL tem apenas uma etapa:

openssl genrsa -out rsaprivkey.pem 2048


Certificado

criar um certificado assinado usando uma chave privada RSA 

openssl req -new -x509 -key dsaprivkey.pem -out dsacert.pem

Criar uma assinatura digital de certificado

Alguns aplicativos exigem uma assinatura digital de certificado X.509 em vez do próprio certificado X.509.

 Uma assinatura digital é um resumo do certificado no formato binário x509. O tipo de assinatura digital depende do algoritmo usado para gerá-la, como SHA-1 ou SHA-256

Para criar uma assinatura digital SHA-256 de um certificado X.509, use o seguinte comando (substitua o arquivo .pem pelo nome do seu certificado real):

openssl x509 -noout -fingerprint -sha256 -inform pem -in "GoogleIDPCertificate-domain.com.pem"

Sem comentários:

Enviar um comentário