Disciplina: Desenvolvimento de
Software Seguro
Tema da aula:
Técnicas Seguras de Codificação
• Criptografia
Criptografia
• Do Grego kryptós
escondido e gráphein
escrita• Estudo dos princípios e técnicas pelas quais a informação pode ser transformada da sua
forma original para outra ilegível, de forma que possa ser conhecida apenas por seu
destinatário, detentor da "chave secreta”, o que
a torna difícil de ser lida por alguém não
autorizado. Desta forma, apenas o receptor da mensagem pode ler a informação com facilidade
Criptografia Simétrica
• Chamados também de Sistemas de Chave Simétrica,
criptografia de chave única ou criptografia de chave
secreta são uma
classe de algoritmos para a
criptografia, que usam chaves criptográficas
relacionadas para a operações de cifrar ou decifrar.
• A chave para cifrar é idêntica
à de decifrar.
• As chaves, representam um segredo, partilhado entre
duas ou mais partes, que podem ser usadas para manter
um canal confidencial de informação.
Atores da Criptografia Simétrica
Bom dia
Helen!
Texto Original
xOA3$gR£
w¢b§ja
Texto Cifrado ChaveAlgoritmo
Helen Erick
Encriptação
Processo de
transformar
informação
legível
, texto original, em um texto
ilegível
, texto
cifrado
, utilizando um
algoritmo (chamado cifra)
Bom dia
Helen!
xOA3$gR£
w¢b§ja
Desencriptação
Processo de
transformar
informação
ilegível
, texto cifrado, em um texto
legível
, texto original, utilizando um
algoritmo
Bom dia
Helen!
xOA3$gR£
Criptografia Simétrica – A história...
Um dia, Helen enviou a chave privada e uma mensagem para Erick, seu amigo
Erick, que era apaixonado por Helen, recebeu a mensagem e para abrir-la utilizou a chave privada que havia recebido.
Bom dia Erick! xOA3$g R£ypkl xOA3$g R£ypkl Bom dia Erick! Acho que Helen gosta de mim...
Por que preciso de uma chave?
Por que não crio um algoritmo
que não precise de uma chave?
Porque um invasor pode entender
o algoritmo e recuperar os dados
executando o algoritmo. Isso é
semelhante ao fecho de uma
porta sem chave, qualquer pessoa
pode abrir a porta.
Proteger a
chave com uma criptografia é
mais simples que
proteger todo
o algoritmo
Tipos Algoritmos Chaves Simétricas
• Cifragem de bloco
Operam sobre
bloco de dados
, ou seja, um
número de bits que são cifrados como uma
única unidade
Bom dia Helen! Estou com saudades! xOA Bom dia 3$g Helen! EstouTipos Algoritmos Chaves Simétricas
• Padrões de algoritmo de criptografia de bloco
DES Digital Encryption Standard ou Padrão de Criptografia Digital. Adotada como padrão de criptografia pelo governo
Estados Unidos deste 1976. Em 1999, uma empresa norte americana quebrou sua chave em menos de 24 horas.
O DES é atualmente considerado inseguro para muitas aplicações. Este padrão foi substituído pelo padrão AES. AES Advanced Encryption Standard ou Padrão de
Criptografia Avançada. Adotada deste 2002 como o padrão de criptografia pelo governo dos Estados Unidos.
Tabela Verdade – XOR (Ou Exclusivo)
A
B
AND
OR
XOR
0
0
0
0
0
0
1
0
1
1
1
0
0
1
1
1
1
1
1
0
Tipos Algoritmos Chaves Simétricas
• Cifragem de fluxo
Cifram os bits da mensagem um a um
Os bits originais são combinados com
bits cifrados, através de um gerador aleatório.
A combinação dos bits é feita através do operador
XOR. Aceita um pão francês? etR£q A°z& P# 0111 + 1001 = 1110 Aleatório Resultado 0100 + 1011 = 1110 0110 + 0010 = 1110 0101 + 1100 = 1110 A c e i
Tipos Algoritmos Chaves Simétricas
RC4 é o algoritmo de criptografia de fluxo
mais usado no software e utilizado nos
protocolos mais conhecidos, como
Secure Socket Layers
(SSL), para proteger o
tráfego Internet
e
WEP
, para a segurança de
redes sem fios
. Este algoritmo foi
desenvolvido para a empresa
RSA Data Security
, líder mundial em
algoritmos de criptografia
Qual o algoritmo de criptografia
devo utilizar para minha aplicação?
Aplicação Algoritmo Criptografia
Comentários
Banco de Dados Bloco - AES Integração com outros sistemas não é o
problema. Reutilizar
chaves para BD e tabelas E-mail Bloco – AES Cada mensagem tem sua
própria chave
Arquivos Bloco - AES Os arquivo podem ter a mesma chave
SSL (Conexões seguras com WEB)
Fluxo - RC4 A velocidade é muito importante.
Todos os navegadores WEB possuem RC4
Criptografia Assimétrica
• Neste algoritmos temos duas chaves: chave privada e a chave pública.
• Uma pessoa cria uma chave pública e envia essa chave a outra pessoa que deseja mandar
informações. Com a chave pública é feita a
codificação da mensagem. Para decodificação será necessário utilizar outra chave privada, esta é uma chave secreta.
• Este algoritmo garante a confiabilidade dos dados, pois somente o proprietário da chave privada será capaz de desencriptar a mensagem.
Criptografia Assimétrica
– A história...
Um dia, Helen enviou uma chave pública para todos os amigos, inclusive Erick
Erick, que era apaixonado por Helen, enviou rapidamente uma mensagem. Ele escreveu a mensagem e cifrou a mensagem com a chave pública.
Bom dia Helen!
xOA3$gR£ w¢b§ja
Helen recebe o texto criptografado e decifrou utilizando sua
chave privada. Então Helen pensou: “Ai, ai...Acho que ele gosta de mim!”
xOA3$gR£
RSA
Data Security
RSA é um algoritmo de criptografia de dados assimétrico. O nome do algoritmo foi formado com as iniciais dos sobrenomes de três professores do Instituto MIT: Ronald Rivest, Adi Shamir e
Leonard Adleman, que inventaram este algoritmo. Este algoritmo de criptografia é considerado o mais seguro até hoje.
RSA Data Security é uma empresa que foi fundada pelos três professores. Hoje a empresa pertence a Dynasoft AB,
empresa sueca que se especializou no fornecimento de produtos de software de segurança para grandes clientes corporativos,
principalmente nos serviços financeiros, telecomunicações, governo e setores de saúde
Comparação Algoritmo de Criptografia:
Simétrica X Assimétrica
Simétrica
Assimétrica
Necessidade da troca
constante da chave privada
Não precisa trocar
constantemente as chaves Impossibilidade de serem
usados com fins de
autenticação, pois a chave fica de uma lado para outro
Ótimo para autenticação
Rápidos Algoritmos reversos para
desencriptação de
mensagens acaba por elevar o tempo. Inviável para comunicação intensa
Segurança em
Banco de Dados
• Autenticação de usuários
Apenas as pessoas apropriadas podem ter acesso às informações no banco de dados. • Criptografia dos dados
Em determinadas situações, os proprietários de bancos de dados querem que determinados tabelas sejam vistas apenas por algumas pessoas, é possível criptografar a tabela, assim, após a encripação dos dados, caso o usuário que não tenha acesso total a tabela CLIENTE digitar um comando
“select * from CLIENTE”, os dados irão ser exibidos em formato binário, criptografados.
È possível utilizar este recurso nos bancos de dados Oracle e SQL Server.
Trabalho – 1,5 Pontos
• Em Grupo de 4-5 Pessoas, definir uma linguagem criptográfica. A linguagem pode ser tanto simétrica, quanto assimétrica.
• Depois de definir a linguagem e as chaves para encriptação e desencriptação, desenvolver um programa (em qualquer
Trabalho – 1,5 Pontos
• O que deve ser entregue:
– Manual com a Linguagem definida pelo grupo(0,5 Pontos);
• O manual deve conter uma explicação de como e o processo de criptografia e de descriptografia bem como um exemplo;
– Programa de Criptografia + Código Fonte(1,0 Pontos);
• Programa funcionando aplicando a linguagem definida anteriormente; • Código Fonte da aplicação;
Referências
• Burnett, Steve; Paine, Stephen. Criptografia e
Segurança. O Guia Oficial RSA. 5ª Ed. Rio de Janeiro:
Elsevier, 2002.
• Howard, Michael; LeBlanc, David. Escrevendo Código
Seguro. 2. Ed. Porto Alegre: Bookman, 2005.
Material Kleber Netto Fonseca, cedido pelo professor Virgil Del Ducca.