(1) O documento apresenta um minicurso sobre criptografia em hardware. (2) Aborda conceitos básicos de criptografia, exemplos em C e VHDL para FPGAs, algoritmos criptográficos simétricos e assimétricos. (3) Também fornece referências bibliográficas sobre o tema.
Oportunidades para inovaçao e empreendedorismo em computacao
Criptografia em hardware emicro se - nov 15 2012
1. Criptografia em Hardware
Minicurso do Evento EMICRO-SE
http://www.gprufs.org/emicro-se/
Aracaju, 15 de Novembro de 2012
Edward David Moreno
edwdavid@gmail.com
1
2. Sumário
Parte I – Conceitos
Parte II – Exemplos em C e VHDL & FPGAs
Parte III - Parte Prática – Algoritmos Posicionais
Parte IV - Parte Prática – Algoritmos Conhecidos
(DES, AES, RC5, IDEA, RSA, etc.)
Parte V– Classificação Moderna de Soluções de
Segurança
2
4. Outras Referências
SEGURANÇA DE DADOS
CRIPTOGRAFIA EM REDES DE COMPUTADOR
Autor: Routo Terada
CRYPTOGRAPHY AND NETWORK SECURITY
PRINCIPLES AND PRACTICE
Autor:William Stallings
HANDBOOK OF APPLIED CRYPTOGRAPHY
Autores:
A. Menezes,
P. van Oorschot, e
S. Vanstone. 4
5. Publicações Springer
Transactions on Computational Science, 2010
– Security in Computing Part I – LNCS 6340
Autor: Edward Moreno
Transactions on Computational Science, 2010
– Security in Computing Part II – LNCS 6480
Autor: Edward Moreno
Transactions on Computational Science
– Security in Computing – LNCS 5430, 2009
Autor: Edward Moreno
5
6. People - Criptografia em Hardware
Prof. C Paar
Profa. Ingrid Verbauwhede
Prof. Bart Preneel
Prof. Cetin Kaya Koc
Profa. Catherine Gateboys
Grupo COSIC
Prof. Ricardo Dahab (UNICAMP) Computer Security
Prof. Paulo Barreto (USP) and Industrial
Cryptography
Prof. Julio Hernandez (UNICAMP)
6
7. Eventos - Criptografia em Hardware
CHES
CRYPTO
Computers and Security - Elsevier
Security - ACM
Outros
Outros
SBSEG - Brasil
7
8. Computer Security Conference Ranking and
Statistic
http://faculty.cs.tamu.edu/guofei/sec_conf_stat.htm
S&P (Oakland) IEEE Symposium on Security and Privacy
CCS ACM Conference on Computer and Communications Security
Rank
1 Crypto International Cryptology Conference
Eurocrypt European Cryptology Conference
Usenix Security Symposium
Security
NDSS ISOC Network and Distributed System Security Symposium
8
9. Computer Security Conference Ranking and
Statistic
ESORICS European Symposium on Research in Computer Security
RAID International Symposium on Recent Advances in Intrusion Detection
ACSAC Annual Computer Security Applications Conference
Rank 2 The International Conference on Dependable Systems and
DSN
Networks
IEEE Computer Security Foundations Symposium.
CSF (CSFW)
Supersedes CSFW (Computer Security Foundations Workshop)
TCC Theory of Cryptography Conference
International Conference on the Theory and Application of
Asiacrypt
Cryptology and Information Security
IMC Internet Measurement Conference 9
10. Computer Security Conference Ranking and
Statistic – Rank 3 (1)
IEEE Communications Society/CreateNet Internation Conference on Security and
SecureComm
Privacy for Emerging Areas in Communication Networks
GI SIG SIDAR Conference on Detection of Intrusions and Malware and
DIMVA
Vulnerability Assessment
AsiaCCS ACM Symposium on Information, Computer and Communications Security
ACNS International Conference on Applied Cryptography and Network Security
FC International Conference on Financial Cryptography and Data Security
SAC ACM Symposium on Applied Computing
ACISP Australasia Conference on Information Security and Privacy
ICICS International Conference on Information and Communications Security
ISC Information Security Conference 10
11. Computer Security Conference Ranking and
Statistic – Rank 3 (2)
ICISC International Conference on Information Security and Cryptology
SACMAT ACM Symposium on Access Control Models and Technologies
CT-RSA RSA Conference, Cryptographers' Track
SEC IFIP International Information Security Conference
ACM Conference on Wireless Network Security
WiSec
Supersedes WiSe (ACM Workshop on Wireless Security) and SASN (ACM
(WiSe, SASN)
Workshop on Security of Ad-Hoc and Sensor Networks)
SOUPS Symposium On Usable Privacy and Security
IFIP WG 11.9IFIP WG 11.9 International Conference on Digital Forensics
DFRWS Digital Forensic Research Conference
PETS Privacy Enhancing Technologies Symposium
11
12. Computer Security Conference Ranking and
Statistic – Workshops
FSE Fast Software Encryption workshop
PKC International Workshop on Public-Key Cryptography
NSPW New Security Paradigms Workshop
IH Workshop on Information Hiding
WSPEC Workshop on Security and Privacy in E-commerce
DRM ACM Workshop on Digital Rights Management
IWIA IEEE International Information Assurance Workshop
IAW IEEE SMC Information Assurance Workshop "The West Point Workshop"
CHES Workshop on Cryptographic Hardware and Embedded Systems
SRUTI USENIX Workshop on Steps to Reducing Unwanted Traffic on the Internet
HotSec USENIX Workshop on Hot Topics in Security
LEET USENIX Workshop on Large-scale Exploits and Emergent Threats
(HotBots,W Supersedes HotBots (USENIX Workshop on Hot Topics in Understanding Botnets)
ORM) and WORM (ACM Workshop on Recurring/Rapid Malcode)
12
13. Parte I
Conceitos
Minicurso do Evento EMICRO-SE
http://www.gprufs.org/emicro-se/
Aracaju, 15 a 17 de Novembro de 2012
Edward David Moreno
edwdavid@gmail.com
13
14. O que é Criptografia?
Criptografia significa grafia oculta;
Kriptos = Grafia;
Graphos = Oculta.
É a ciência de escrever em cifras de modo
que apenas o destinatário possa decifrar;
Hoje em dia não é utilizada apenas para
codificação.
14
15. Esquema Geral
“A criptografia pode ser entendida como um
conjunto de métodos e técnicas para cifrar ou
codificar informações legíveis por meio de um
algoritmo, convertendo um texto original em
um texto ilegível, sendo possível mediante o
processo inverso recuperar as informações
originais”
15
16. Definições
Emissor (A) e Receptor (B)
Texto Original ou Texto Limpo
Cifrar
Decifrar
Criptografia X Criptoanálise = Criptologia
Texto Texto
Cifrado Original
Cifrar Decifrar
Texto
Original 16
17. Algoritmo vs Chave ?
Algoritmo
Algoritmo
K
Espaço de Chaves
Princípio de Kerckhoffs
17
18. Como Funciona ?
Algoritmo de
encriptação
Mensagem Criptograma
Cigragem Chave
Algoritmo de
decriptação
Criptograma Mensagem
Decifragem Chave
18
19. Então Criptografia é ...
• Processo de transformação, através de
uma chave secreta, de informação legível
(mensagem) em informação ilegível
(criptograma)
• Somente os indivíduos que conhecem a chave
secreta tem capacidade de decifrar o
criptograma e recriar a mensagem
• A dificuldade da decriptação reside em
descobrir a chave secreta e não o segredo do
método utilizado (algoritmo de criptografia).
19
20. Breve Histórico
Usada desde a antigüidade:
Presença na escrita hieroglífica dos
egípcios;
Codificação de planos de batalhas pelos
romanos;
Grandes mudanças a partir de meados
do século passado;
20
21. Breve Histórico
Em 1901, iniciou-se a era da
comunicação sem fio:
Aumenta o desafio da criptologia;
Em 1921 Edward H. Herben fundou a
Hebern Electric Code:
Início da construção de máquinas de
cifragem;
21
22. Breve Histórico
Até o fim da década de 70
algoritmos criptográficos secretos;
Exemplo: Máquina ENIGMA utilizada pelos
alemães até a 2ª Guerra Mundial era
totalmente secreta;
Atualmente a segurança baseia-se
apenas no conhecimento da chave
secreta, e não do algoritmo.
22
25. Breve Histórico
Algoritmos Importantes:
1976 LUCIFER apresentado pela IBM à NBS
(National Bureal of Standards), que após
algumas modificações adota como padrão:
DES (Data Encryption Standard);
AES (2000)
1978 Criado algoritmo de chave pública RSA
(nome derivado das iniciais dos autores –
Rivest, Shamir e Adleman);
1965 -> ECC, 2008 -> MQQ
SHA-1, 2012 -> SHA-3 (Kecca)
25
26. Qual a Importância da
Criptografia ?
Segurança da transferência de dados na
rede;
Armazenamento de informações
codificadas;
Assinatura Digital e Integridade;
...
26
27. Onde é utilizada ?
Internet:
Home Banking;
Comércio Eletrônico;
E-mail;
Sistemas Distribuídos;
Bancos de Dados.
27
28. Serviços de Segurança
Funcionalides que, se presentes, possibilitam
restringir determinados riscos de segurança
Classificação:
Serviço de Confidencialidade
Serviço de Autenticação
Serviço de Integridade
Serviço de Irretratabilidade (não repudiação)
Serviço de Disponibilidade
Serviço de Controle de Acesso
Serviço de Auditoria
28
29. Objetivos da Criptografia
(1) Confidencialidade;
(2) Integridade dos Dados;
(3) Autenticação;
(4) Não-Repúdio.
29
30. (1) Confidencialidade
É um serviço para evitar que pessoas
não autorizadas “entendam” o que está
sendo transmitido;
Este serviço também é conhecido como
sigilo.
30
31. (2) Integridade dos Dados
É um serviço que assegura que os
dados não foram alterados;
Dois tipos de alteração:
Acidental;
Intencional:
Inserção;
Deleção;
Substituição.
31
32. (3) Autenticação
Vários Tipos:
Usuário;
Remetente;
Destinatário;
Atualidade.
32
33. (4) Não-Repúdio
É um serviço que previne que alguma
entidade negue uma ação que havia
executado previamente;
Exemplo:
“Uma entidade pode autorizar a compra de
uma propriedade por uma segunda
entidade e depois negar tal autorização.”
Handbook of Applied Cryptography (1996).
33
34. Importante
A criptografia não é o único meio de
prover a segurança da informação, é
apenas um conjunto de técnicas que
devem ser utilizadas em conjunto com
outras.
34
35. Termos Comuns
Texto original = Texto claro = Plaintext;
Texto cifrado = Texto código = Chipertext;
Cifrar/Criptografar - Converter texto claro
para cifrado;
Decifrar/Decriptografar - Recuperar o texto
original a partir do texto cifrado;
Criptologia - Estudo sobre os códigos:
Compreende criptografia e criptoanálise.
35
36. Cifras em Bloco x Stream
Cifras em bloco processam blocos de
caracteres (64 bits ou mais) durante a
cifragem/decifragem;
Cifras Stream processam um bit ou um
byte por vez;
Maioria das cifras atuais utilizam blocos.
36
37. Criptoanálise
Ciência que busca determinar a chave ou
decifrar mensagens sem o conhecimento
da chave;
Uma tentativa de criptoanálise é chamada
de ataque.
37
38. Tipos de algoritmos
Tipos de Algoritmos
Simétrico: Uma única chave
Assimétrico: Utiliza duas chaves (secreta e
privada)
Sistemas Híbridos: Utilizam os dois tipos
de algoritmos
38
39. Tipos de algoritmos
Simétricos:
Uma mesma chave é utilizada tanto para a
criptografia quanto para a decriptografia;
39
40. Tipos de algoritmos
Assimétricos:
Possuem duas chaves: uma pública e outra
privada.
40
41. Algoritmos Simétricos
Vantagens:
Mais rápido;
Bom nível de segurança;
Desvantagens:
Única chave compartilhada pelo emissor e receptor;
Como distribuir a chave ?
Exposição da chave compromete todas as
mensagens
41
42. Algoritmos Assimétricos
Vantagens:
Duas chaves: uma para criptografia e outra
para a decriptografia;
Facilita a distribuição de chaves;
Desvantagens:
Velocidade de cifragem e decifragem;
Segurança baseada em problemas matemáticos
complexos.
Dificuldade de implementação em plataformas
com restrições
42
43. Principais Algoritmos Simétricos
Nome Tipo Tam. chave Tam. bloco
DES bloco 56 64
Triple DES (2 ch.) bloco 112 64
Triple DES (3 ch.) bloco 168 64
IDEA bloco 128 64
BLOWFISH bloco 32 a 448 64
RC5 bloco 0 a 2040 32,64,128
CAST-128 bloco 40 a 128 64
RC2 bloco 0 a 1024 64
RC4 stream 0 a 256 --
Rijndael (AES) bloco 128,192,256 128, 192, 256
MARS bloco variável 128
RC6 bloco variável 128
Serpent bloco variável 128
Twofish bloco 128,192,256 128
43
44. Principais Algoritmos Assimétricos
– DH - Diffie Hellman (Troca de Chaves)
– RSA
• Rivest-Shamir-Adelman
• Algoritmo publicado em 1978
• Sua patente expirou em 2000
• Valores típicos para tamanho de chaves
– 512, 1024, 2048 bits
– ECC
• “Elliptic Curve Cryptography”
• Baseada na teoria de Curvas Elipticas
– MQQ – é recente e ainda um pouco desconhecido, mas
é promissor, pois parece mais ser mais rapido que o
ECC 44
45. Propriedade da Assinatura Digital
Verificar o Autor e a data/hora da assinatura
Autenticar o conteúdo original
A assinatura deve poder ser verificável por terceiros
(resolver disputas)
Tipos
Direta
Envolve somente X e Y
Segurança está na chave privada de X
Selo de Tempo
Arbitrada
X -> A -> Y
45
46. Requisitos da Assinatura Digital
Depender do Conteúdo
Usar informação única do originador
Fácil de produzir
Fácil de reconhecer e verificar
Inviável de forjar
Deve ser prático manter uma cópia da
assinatura
46
47. Assinatura Digital Arbitrada
Usando Criptografia Simétrica
(Árbitro vê a mensagem)
(1) X → A: M || EKXA[IDX || H(M)]
(2) A → Y: EKAY[IDX || M || EKXA[IDX || H(M)] || T]
(Árbitro não vê a mensagem)
(1) X → A: IDX || EKXY[M] || EKXA[IDX || H(EKXY[M])]
(2) A → Y: EKAY[IDX || EKXY[M] || EKXA[IDX || H(EKXY[M] )] || T]
47
48. Assinatura Digital Arbitrada
Usando Criptografia Assimétrica
(Árbitro não vê a mensagem)
(1) X → A: IDX || EKRX[IDX || EKUY(EKRX[M])]
(2) A → Y: EKRA[IDX || EKUY[EKRX [M]] || T]
48
49. RSA - Assinatura Digital
H
M || M
Comparar
D
H E EKRa[H(M)]
KUa
KRa
49
51. Esteganografia
Não é criptografia;
Maneiras de ocultar informações:
Tinta invisível;
Letras destacadas com lápis;
Bits escondidos em certas imagens;
Não faz sentido falar em quebra, mas
em interceptação;
Referência: Bases Matemáticas da Criptografia - TEMPEST
51
52. Esteganografia (cont)
Desvantagens:
Desempenho;
Uso de muita informação para ocultar
pequenos textos;
Vantagens:
Não desperta suspeitas de envolvimento
com segredos.
Referência: Bases Matemáticas da Criptografia - TEMPEST
52
53. Funções
São utilizadas para denotar os algoritmos
criptográficos de maneira formal;
Exemplos:
fk(x) = y;
f-1k(y) = x;
k é a chave, x o texto plano e y o texto cifrado;
fk(x) indica a criptografia e f-1k(y) indica que o algoritmo
inverso está sendo utilizado (decriptografia)
53
54. Esquema Geral
Chave K Chave K
Ilegível
Legível y Legível
x fk(x)=y fk-1(y)=x x
Linha de
comunicação
54
55. Exercício
Baseado no formalismo de funções,
tente imaginar como seria um algoritmo
de criptografia simples.
55
56. Uma Possível Solução
y = fk(x) = x + k;
x = f-1k(y) = y - k;
Tabela de Caracteres
- A – B – C – D – E
0 – 1 – 2 – 3 – 4 - 5
Exemplo:
y = f3(2) = 2 + 3 = 5;
x = f-13(5) = 5 – 3 = 2;
56
57. Parte II
Exemplo de Algoritmos
Criptográficos
em Hardware (VHDL e FPGAs)
FPGAs)
e Software (C)
Algoritmo Posicional Autores: Edward David Moreno,
DES Fabio Dacencio Pereira,
IDEA Rodolfo Chiaramonte
RSA
edwdavid@gmail.com
AES
RC5
57
58. Algoritmo Cifra de César
É um algoritmo muito simples, mas
também inseguro.
Consiste em atribuir valores seqüenciais
para cada letra e criptografar somando um
valor fixo aos valores das letras.
A chave pode ser facilmente descoberta
através da tentativa de todas as
possibilidades ou teste de freqüência das
letras (ataque por só-texto-ilegível).
EMICRO-SE - Aracaju - Nov 15-17
de 2012 58
59. Algoritmo Posicional
O algoritmo se baseia no algoritmo Cifra
de César inserindo uma função que trabalha
com a posição do caracter e somando seu
resultado ao valor da letra (e não um valor
fixo como no algoritmo Cifra de César).
Exemplo de Posicional - Grau 3
EMICRO-SE - Aracaju - Nov 15-17
de 2012 59
60. Algoritmo Posicional
Para quebrar o algoritmo posicional, ou
seja, obter a chave, é necessário um ataque
mais elaborado: o ataque por texto legível
conhecido.
Nesse ataque, é necessário ter em mãos
um texto legível o seu correspondente
criptografado e calcular a chave através da
resolução de um sistema.
Um ataque testando todas as chaves é
inviável. EMICRO-SE - Aracaju - Nov 15-17
de 2012 60
61. Algoritmo Posicional
Foram implementadas versões do algoritmo
Posicional para obter uma maior segurança.
Essas versões utilizam blocos de 32 bits e existem
versões em que são acrescidos bits aleatórios.
Esses bits aleatórios podem ser no ultimo bloco ou
distribuídos pelo bloco. Existem 2 versões em
que bits aleatórios são acrescidos no ultimo
bloco, no entanto, em uma delas o bloco é fixo e
em outra o bloco é rotacionado.
EMICRO-SE - Aracaju - Nov 15-17
de 2012 61
62. Algoritmo Posicional
A seguir é apresentada uma tabela com
estimativas do tempo necessário para quebrar uma
mensagem com o algoritmo Posicional testando todas
as chaves:
EMICRO-SE - Aracaju - Nov 15-17
de 2012 62
63. Implementação do algoritmo
POSICIONAL
O algoritmo posicional foi implementado
inicialmente em linguagem C, e posteriormente em
hardware utilizando a linguagem VHDL.
A implementação em hardware obteve um
desempenho parecido com o da implementação em
software, entretanto, é possível obter um
desempenho muito melhor em hardware através
de uma implementação paralela.
EMICRO-SE - Aracaju - Nov 15-17
de 2012 63
65. Comparação de Desempenho
Software x Hardware
Uma comparação de desempenho das
implementações em software e hardware são
Tempo (segundos)
0,5Mb apresentadas(ms) seguir: 0,5Mb 1,0Mb 1,5Mb
1,0Mb 1,5Mb Tempo a
8
10
6
8
4 6
2 4
0 2
1 2 3 4 5 6 7 8 9 10 0
1 3 5 7 9
Grau da função posicional Grau da função posicional
Implementação Implementação
em Software em Hardware
EMICRO-SE - Aracaju - Nov 15-17
de 2012 65
66. Comparação de desempenho - várias versões
do Posicional, IDEA e RSA
20
18
16
Tempo (segundos)
14
12
10
8
6
4
2
0
0,5 1,0 1,5
Po sicio nal - Grau 6
Tamanho do arquivo (Mbytes) 10
Po sicio nal - Grau
Po sicio nal 32 - Grau 6 Po sicio nal 32 - Grau 10
Po sicio nal 32 - B its aleató rio s fixo s - Grau 6 Po sicio nal 32 - B its aleató rio s fixo s - Grau 10
Po sicio nal 32 - B its aleató rio s co m ro tação - Grau 6 Po sicio nal 32 - B its aleató rio s co m ro tação - Grau 10
Po sicio nal 32 - B its aleató rio s distribuído s - Grau 6 Po sicio nal 32 - B its aleató rio s distribuído s - Grau 10
IDEA RSA - 24 bits
EMICRO-SE - Aracaju - Nov 15-17
de 2012 66
67. Principais Plataformas
Algoritmos de criptografia
Hardware Software
Clássico Reconfigurável Processadores Específicos
Ambientes
ASIC FPGAs Intel, RISC Embedded
Systems
DSP, Smart Card, etc
EMICRO-SE - Aracaju - Nov 15-17
de 2012 67
68. Selecionando uma Plataforma
- Desempenho Algoritmos
- Custo:
- Custo por unidade - Custo de
desenvolvimento
- Consumo de Potência (ex. Dispositivos wireless)
- Flexibilidade: - Troca de Parâmetros
- Agilidade de Chaves Qual é a melhor Plataforma
- Agilidade Algoritmos
Depende: Necessidades da
- Segurança FísicaEMICRO-SE - Aracaju - Nov 15-17
Aplicação
de 2012 68
69. Características das Plataformas
Comparação HW/SW e FPGAs
Característica BAIXO
ALTO
Desempenho FPGAs ASIC
SW
Custo SW ASIC
Desenvolvimento FPGAs
Custo por Unidade ASIC SW FPGAs
Flexibilidade ASIC SW FPGAs
EMICRO-SE - Aracaju - Nov 15-17
de 2012 69
70. Criptografia em FPGAs
Vantagens Potenciais de algoritmos de criptografia
implementados em CORE
Agilidade dos Algoritmos
Carga e Atualização dos Algoritmos
Eficiência da Arquitetura
Eficiência de Recursos
Mudanças nos Algoritmos
Throughput – relativo ao software
Eficiencia vs Custo – relativo aos ASICs
EMICRO-SE - Aracaju - Nov 15-17
de 2012 70
71. Exemplo Atomicidade (AES)
Algoritmo XOR ADD SUB Shift Var Rot GF Mult LUT
MARS * * * * * *
RC6 * * * * *
Rijndael * * *
Serpent * *
Twofish * * *
EMICRO-SE - Aracaju - Nov 15-17
de 2012 71
72. Desempenho AES - FPGAs
Algoritmo Throughput (Gbit/s) Slices
RC6 2.40 10856
Serpent 4.86 9004
Twofish 1.59 9345
Rijndael 1.94 10992
Ref.
Reconfigurable Hardware in Modern Cryptography. Prof. Christof Paar.
Worcester Polytechnic Institute, Worcester, MA, USA.
EMICRO-SE - Aracaju - Nov 15-17
de 2012 72
73. Desempenho vs Segurança ?
20
18
16
Tempo (segundos)
14
12
10
8
6
4
2
0
0,5 1,0 1,5
Po sicio nal - Grau 6
Tamanho do arquivo (Mbytes) 10
Po sicio nal - Grau
Po sicio nal 32 - Grau 6 Po sicio nal 32 - Grau 10
Po sicio nal 32 - B its aleató rio s fixo s - Grau 6 Po sicio nal 32 - B its aleató rio s fixo s - Grau 10
Po sicio nal 32 - B its aleató rio s co m ro tação - Grau 6 Po sicio nal 32 - B its aleató rio s co m ro tação - Grau 10
Po sicio nal 32 - B its aleató rio s distribuído s - Grau 6 Po sicio nal 32 - B its aleató rio s distribuído s - Grau 10
IDEA RSA - 24 bits
EMICRO-SE - Aracaju - Nov 15-17
de 2012 73
74. Principais Algoritmos Simétricos
Algoritmo Projetista Key (bits) Bloco (bytes) Aplicação
AES J. Daemen, V. Rijmen 128, 192, 256 16 DMSEnvoy
Blowfish Bruce Schneier <= 448 8 Norton Utilities
3DES D. Coppersmith 168 8 SSL, SSH
IDEA X Lai, J. Massey 128 8 PGP, SSH, SSL
RC6 R. Rivest, M. 128, 192, 256 16 AES candidato
Robshaw, et al.
STREAM KEY
RC4 R. Rivest Mínimo 8, máximo 2048 em SSL
múltiplo de 8 bits
Default: 128
SEAL P. Rogaway Variável, Default: 160 Disk Encryption
11/19/2012 74
76. Implementação em Software
Linguagem C
Desempenho em software
8 7,09
7 5,77
6
Segundos
5 1 MB
3,9
4 3,35 5 MB
3 10 MB
2 0,94 0,88
1,4
0,7
1 0,14
0
DES AES RC5
11/19/2012 76
77. Operações nos Alg Simétricos
X O R D e s lo c a m e n to /R S -B O X P e r m u ta ç ã o
o ta ç ã o
D X X X X
E
S
A X X X
E
S
S e X X X
r p
e n
t
C X X
a s
t-
1 2
8
M X X X
A
R
S
T X X X X
w
o f
is
h
M X X X X
a g
e n
ta
F r X X X
o g
B X X X
lo
w
F i
s
h
R X X
C
5
R X X X
C
6
11/19/2012 77
78. Implementação em Hardware
FPGAs
Tempo de propagação de cada
algoritmo em hardware
28,789
30 19,55 21,05
Ns 20
10
0
DES AES RC5 Taxa de texto cifrado
por segundo
Algoritmos
55,57
60,00
MB/seg 40,00 20,46 19,00
20,00
0,00
DES AES RC5
Algoritmos
11/19/2012 78
79. Comparação do DES
Desempenho Temporal
Mega Bytes Cifrados
500 400
400
300
200
100 25 1
0
1s 1s 1s
Hardware c/ Hardware s/ Software em C
Pipeline Pipeline
Tempo em segundos
11/19/2012 79
82. CASAD - Criptoprocessador
Desempenho dos algoritmos DES e RC5
30 26
25
25
19
20 17,5 PPG
MB/s
15 Cripto
10 7,25 HW
5 1
0
DES RC5
Algoritmo
11/19/2012 82
83. CASAD – Criptoprocessador -
Algoritmo DES
C to roessa o s
rip p c dre Ndºe Mz
H M/s
B
C s
iclo
H B M8 2
ifn C 5 0 -- 33 10
0
H 70
ifn 9 x 2 2 50 13
4
Oe Cres
pn o 1 6 15
5 60
2
S u o DS
ec Cre E 5 16
6 19
99
VIW
L 1 6 12
2 26
11/19/2012 83
84. CASAD - Criptoprocessador
Algoritmo DES
Proc. Freqüência Memória Texto claro Tempo de cifragem
P4 1.6 GHz 256 MB 1 MB 0,99 s
P3 1.0 GHz 256 MB 1 MB 1,05 s
P3 800 MHz 128 MB 1 MB 1,19 s
P3 700 MHz 128 MB 1 MB 1,26 s
P3 500 MHz 128 MB 1 MB 1,75 s
K6 500 MHz 64 MB 1 MB 2,15 s
VLIW 122 MHz -- 1 MB 0,038 s
11/19/2012 84
86. Cifra de César
Letras na mensagem original substituída por
outras deslocadas em um número fixo de
posições (chave) no alfabeto;
Exemplo Chave = 3:
Original: R O D O L F O
Cifrado: U R G R O I R
Este exemplo, com chave 3, constitui na
forma original da Cifra de César.
86
87. Tabela de Substituição
Exercício – Gere as cifras para as palavras:
CRIPTOGRAFIA
UNIVEM
CARAGUATATUBA
Decifre as palavras:
FRPSXWDGRU
DOJRULWPR
87
89. Outras Chaves
Hoje em dia toda cifra que apresenta
uma substituição com deslocamento
fixo é chamada Cifra de César;
Exemplo Chave = 10:
ALGORITMO: KVQYBSDWY
COMPUTADOR: MYWZEDKNYB
89
90. Com Ajuda de Tabela
Matemática
Suponha chave = 7;
Para cifrar a letra E (4) = 4 + 7 = 11
(L);
Computacionalmente é indicado usar a
Tabela ASCII
90
91. Implementação
Escreva um algoritmo para implementar a
criptografia utilizando a Cifra de César:
Algoritmo Cesar
variavel palavra,cifrado: texto;
i, chave: inteiro;
ler palavra;
ler chave;
para i de 1 até tamanho_palavra
cifrado[i] = palavra[i]+chave;
mostrar cifrado;
Fim.
91
92. Implementação em C
#include <stdio.h>
#include <stdlib.h>
int main()
{ char palavra[40];
char cifrado[40];
int i=0;
int chave;
printf("Palavra: ");
scanf("%s", &palavra);
printf("Chave: ");
scanf("%d", &chave);
while(palavra[i]!=0)
cifrado[i] = (((palavra[i++]-65)+chave)%26)+65;
cifrado[i]=0;
printf("Cifrado: %sn", cifrado);
system("PAUSE");
return 0;}
92
93. Substituição Simples
Baseado em tabela de substituição;
Troca-se as letras da primeira linha pelas
letras da segunda linha;
As letras da segunda linha são selecionadas
aleatoriamente (chave da substituição);
Possível obter 26! combinações de chave:
26! = 403291461126605635584000000.
93
95. Implementação
Escreva um algoritmo para implementar
criptografia usando a Substituição Simples:
Algoritmo Simples
variavel palavra,cifrado,
chave,linha1 : texto;
i: inteiro;
ler palavra;
para i de 1 até tamanho_palavra
cifrado[i] = chave[palavra[i]];
mostrar cifrado;
Fim.
95
96. Implementação em C
#include <stdio.h>
#include <stdlib.h>
int main(){
char chave[]={'I','N','K','R','F','S','M','W','A','X','J','P','Z',
'Q','G','T','Y','B','D','E','O','H','V','L','U','C'};
char palavra[50];
char cifrado[50];
int i=0;
printf("Digite uma palavra: ");
scanf("%s", &palavra);
while(palavra[i]!=0)
cifrado[i] = chave[(int)(palavra[i++]-65)];
cifrado[i]=0;
printf("Cifrado: %sn", cifrado);
system("PAUSE");
return 0;}
96
97. Como seria a Decriptografia?
Calcular a chave inversa:
Chave Original:
Chave Inversa:
97
98. Implementação da
decriptografia
#include <stdio.h>
#include <stdlib.h>
int main(){
char chaveI[]={'I','R','Z','S','T','E','O','V','A','K','C','X','G',
'B','U','L','N','D','F','P','Y','W','H','J','Q','M'};
char palavra[50];
char cifrado[50];
int i=0;
printf("Digite uma palavra: ");
scanf("%s", &palavra);
while(palavra[i]!=0)
cifrado[i] = chaveI[(int)(palavra[i++]-65)];
cifrado[i]=0;
printf("Cifrado: %sn", cifrado);
system("PAUSE");
return 0;}
98
99. Cifra de Vigenère
Cada letra é representada por um
inteiro;
Chave é uma seqüência de N letras;
Para cifrar, soma-se o valor da letra
com o valor da chave para uma
determinada posição;
99
103. Implementação
Escreva um algoritmo para implementar a Cifra de
Vigenère:
Algoritmo Vigenere
variavel palavra,cifrado,chave:texto;
i, tam: inteiro;
ler palavra; tam = tamanho da chave
ler chave;
para i de 1 até tamanho_palavra
cifrado[i]=palavra[i]+chave[i mod tam];
mostrar cifrado;
Fim.
103
104. Implementação em C
#include <stdio.h>
#include <stdlib.h>
int main()
{ char palavra[40];
char cifrado[40];
int i=0;
int tam=0;
char chave[15];
printf("Palavra: ");
scanf("%s", &palavra);
printf("Chave: ");
scanf("%s", &chave);
while(chave[tam]!=0)tam++;
while(palavra[i]!=0) {
cifrado[i] = (((palavra[i]-65)+(chave[i%tam]-65))%26)+65; i++; }
cifrado[i]=0;
printf("Cifrado: %sn", cifrado);
system("PAUSE");
return 0; }
104
106. Algoritmo Posicional
Desenvolvido para fins didáticos;
Algoritmo Simétrico;
Cifrador do tipo Stream;
Não é muito simples, porém não muito
complexo;
Possui algumas falhas que podem ser
exploradas.
106
107. Algoritmo Posicional -
Funcionamento
A posição que o caracter ocupa
interfere em como ele será
criptografado;
Segue uma função polinomial do tipo:
f(x,p,k) = x + (k1 * pn + k2 * pn-1 + ... +
kn * p1);
onde:
x é o caracter original;
p é a posição;
k é a chave e kn são grupos de 8 bits da chave.
107
110. Algoritmo Posicional - Criptanalise
O algoritmo Posicional é formado por
funções lineares;
É possível montar um sistema linear e
resolvê-lo para obter a chave;
110
111. Algoritmo Posicional - Criptanalise
Exemplo
Considere que um criptanalista obteve
conhecimento da posição do caracter,
do texto original e do texto
criptografado utilizados no exemplo
anterior, como mostra a tabela:
111
112. Algoritmo Posicional - Criptanalise
Exemplo Continuação
É possível montar um sistema que tem
como incógnita a chave:
112
113. Algoritmo Posicional - Criptanalise
Exemplo Continuação
Ver solução completa em Resolução.xls
113
114. Posicional – Função para
Cifrar
int cifrachar (char pcifrar, int pos, int valores[], int gchave)
{
int vchave;
int i;
unsigned long int soma = 0;
int aux; Calculo
aux = pcifrar;
for (i = 1; i <= gchave; i++) da
{ expressão
vchave = valores[i];
soma += vchave * pow(pos,gchave-i+1);
}
aux = (aux + soma) % 256;
Soma do
return aux;
} resultado
114
115. Parte IV
Parte Prática – Algoritmos Conhecidos
Autores: Edward Moreno, Fabio Pereira,
Rodolfo Chiaramonte
Edward David Moreno
edwdavid@gmail.com
115
116. Algoritmo DES
Algoritmo Simétrico;
Cifra em Blocos;
Baseado na Rede de Feistel;
116
118. Algoritmo DES
E squ e rd a j D ire ita j
Pe rm u ta çã o +
Expa nsã o
Kj
XO R
S-BO X
P e rm u ta çã o P
XO R
Esq ue rd a j+ 1 D ireita j+ 1
118
119. Algoritmo DES - Permutação E
(33 milhões por segundo)
x = !((0x80000000 & entrada)==0); // bit 32
s0 += x << 0;
s1 += x << 46;
x = !((0x40000000 & entrada)==0); // bit 31
s1 += x << 45;
x = !((0x20000000 & entrada)==0); // bit 30
s1 += x << 44;
.
.
.
x = !((0x00000004 & entrada)==0); // bit 3
s0 += x << 3;
x = !((0x00000002 & entrada)==0); // bit 2
s0 += x << 2;
x = !((0x00000001 & entrada)==0); // bit 1
s0 += x << 1;
s1 += x << 47; // Total de 124 linhas
119
121. Algoritmo IDEA
Algoritmo Simétrico;
Trabalha com blocos de 64 bits;
Chave de 128 bits;
Estrutura semelhante ao DES;
Oito iterações.
121
122. Algoritmo IDEA - Operações
⊕ - Ou exclusivo (XOR) sobre 16 bits.
+ - Soma mod 216, ou seja, somar dois
valores de 16 bits desprezando o mais à esquerda,
correspondente a 216.
- Esta operação consiste em vários
passos:
Multiplicar dois valores de 16 bits obtendo um valor que
chamaremos de Z, sendo que antes de multiplicar, se um
desses valores for 0 deve ser alterado para 216.
Calcular Z mod (216+1), ou seja, o resto da divisão de Z por
216+1.
Se o resultado da operação acima for 216, então o resultado
final da operação é 0, caso contrário é o valor obtido acima
(Z mod (216+1)).
122
123. Algoritmo IDEA - Operações
void XOR(int * A, int B, int C)
{ *A = B ^ C; }
void SOMA16(int * A, int B, int C)
{ *A = (B + C) % v2_16; }
void MULT16(int * A, int B, int C)
{ long int aux;
if (B == 0) B = v2_16;
if (C == 0) C = v2_16;
aux = BLAKLEY(B,C,(v2_16_1));
if (aux != v2_16)
*A = (int) aux;
else
*A = 0;
}
123
124. Algoritmo IDEA - Operações
(BLAKLEY)
int BLAKLEY(int a, int b, int n)
// input: a,b,n
// output: R = (a * b) mod n
{
unsigned int aux;
int R;
R = 0;
for (aux = 0x80000000; aux > 0; aux >>= 1)
{ R = (R << 1 );
if((a & aux) != 0) R += b;
if (R > n) R -= n;
if (R > n) R -= n;
}return R;
}
124
125. Algoritmo AES
• AES - Advanced Encryption Standard
– Algoritmo selecionado: RIJNDAEL (2002)
• Novo padrão FIPS (Federal Information Processing
Standard) escolhido pelo NIST (National Institute of
Standards and Technologies) para ser utilizado pelas
organizações governamentais dos EUA na proteção de
informações sensíveis
• Marca um esforço de 4 anos de cooperação entre o
governo dos EUA, empresas privadas e pesquisadores
de diversos países
125
126. Algoritmo AES - Cifragem
M Encriptador C
AES
Bloco: Bloco:
128/192/256 bits 128/192/256 bits
K
Chave
128/192/256 bits
126
127. Algoritmo AES - Decifragem
M Decriptador C
AES
Bloco: Bloco:
128/192/256 bits 128/192/256 bits
K
127
128. Algoritmo RSA
Algoritmo Assimétrico;
Segurança baseada na dificuldade
computacional de se fatorar números
longos;
Para cifrar: Cifrado = Originalkp mod n;
Para decifrar: Original = Cifradoks mod n;
Onde:
kp = chave pública; ks = chave secreta;
n = produto dos primos utilizados na geração da
chave
128
129. Ron Rivest, Adi Shamir e Len Adleman (1978)
Blocos com valores binários menores que n
Tamanho do Bloco é k bits, onde 2k < n ≤ 2k+1
Texto
Cifrado
C = Me mod n KU = {e,n}
M = Cd mod n = (Me)d mod n = Med mod n KR = {d,n}
Texto
Plano
Requisitos do Algoritmo
• É possível encontrar e, d, n tal que Med = M mod n para todo M < n
• É relativamente fácil calcular Me e Cd para todos os valores de M < n
• É improvável determinar d dado e, n
129
130. Algoritmo RSA
Geração da Chave
Selecione p,q p e q primos
Calcular n = p x q
Calcular φ(n) = (p-1)(q-1)
Selecionar e inteiro gcd(φ(n),e) = 1; 1 < e < φ(n)
φ
Calcular d d = e-1 mod φ(n)
Chave Pública KU={e,n}
Chave Privada KR={d,n}
Cifrar
Texto Plano: M<n
Texto Cifrado: C = Me (mod n)
Decifrar
Texto Plano: C
Texto Cifrado: M = Cd (mod n)
130
131. Algoritmo RSA - Exemplo
Selecionar dois números primos: p = 7 e q =
17
Calcular n = pq = 7 x 17 = 119
Calcular φ(n) = (p-1)(q-1) = 96
Selecionar e tal que e é relativamente primo
a φ(n) e menor que φ(n); e = 5
Determinar d tal que de = 1 mod 96 e d <
96; d = 77, pois 77 x 5 = 385 = 4 x 96
+1
KU = {5,119} e KR = {77,119}
131
136. Análise de Desempenho
20
18
16
Tempo (segundos)
14
12
10
8
6
4
2
0
0,5 1,0 1,5
Tamanho do arquivo (Mbytes)
P osicio nal - Grau 6 P o sicio nal - Grau 10
P osicio nal 32 - Grau 6 P o sicio nal 32 - Grau 10
P osicio nal 32 - Bits aleató rio s fixo s - Grau 6 P o sicio nal 32 - B its aleató rios fixo s - Grau 10
P osicio nal 32 - Bits aleató rio s co m ro tação - Grau 6 P o sicio nal 32 - B its aleató rios co m ro tação - Grau 10
P osicio nal 32 - Bits aleató rio s distribuído s - Grau 6 P o sicio nal 32 - B its aleató rios distribuído s - Grau 10
IDEA RSA - 24 bits
136
137. Análise de Desempenho
3
2,5
Tempo (segundos)
2
1,5
1
0,5
0
0,5 1,0 1,5
Tamanho do arquivo (Mbytes)
P o sicio nal - Grau 6 P o sicio nal - Grau 10
P o sicio nal 32 - Grau 6 P o sicio nal 32 - Grau 10
P o sicio nal 32 - Bits aleatório s fixo s - Grau 6 P o sicio nal 32 - Bits aleatório s fixo s - Grau 10
P o sicio nal 32 - Bits aleatório s co m rotação - Grau 6 P o sicio nal 32 - Bits aleatório s co m rotação - Grau 10
P o sicio nal 32 - Bits aleatório s distribuído s - Grau 6 P o sicio nal 32 - Bits aleatório s distribuído s - Grau 10
IDEA
137
139. SICO - Sistema Inteligente de
Comunicação
EMISSOR RECEPTOR
GERENTE CONTROLE
CONEXÃO
R R D
CLIENTE E CONEXÃO
E C E E
(INSEGURA) M SEGURA
C R C C
I
E I E R
S
P P P I
S
T T T P
O
O O O T
R
R R O
139
140. Emissor
Receptor - abre uma conexão com um cliente
utilizando Sockets TCP e fica a espera de
dados para criptografar. Assim que os dados
chegam a Thread coloca-os no buffer de
recepção para serem criptografados.
Cripto - retira os dados do buffer de recepção
e realiza a criptografia. Após a criptografia os
dados são colocados em um buffer de
emissão.
140
141. Emissor - Continuação
Emissor - retira os dados do buffer de
emissão e os envia através de uma conexão
utilizando Sockets TCP.
Gerente - verifica periodicamente o nível dos
buffers compartilhados para detectar alguns
parâmetros como velocidade de recepção,
velocidade de criptografia e velocidade de
envio. Esta Thread é a responsável por definir
a necessidade da troca do algoritmo ou chave
utilizada.
141
142. Receptor
A Thread Receptor deste módulo tem a
mesma função da Thread Receptor do
módulo anterior, armazenando os dados que
chegam em um buffer compartilhado.
A Thread Decripto realizará a decriptografia
dos dados e irá enviá-los para uma saída a
ser definida (pode ser arquivo ou rede).
142
143. Receptor - Continuação
A função da Thread de Controle é realizar
algumas verificações no nível do buffer e
enviá-las periodicamente para o módulo
Emissor. Essa verificação pode ser utilizada
como um parâmetro de comparação de
funcionamento dos dois módulos e comprovar
as medições no buffer realizados pelo módulo
Emissor.
143
145. Classificação Moderna de Soluções de Segurança
(Srivaths 2005)
Aplicações
VPN WEB browser DRM Secure Storage
Protocolos de Segurança
Protocolos de Comunicação Protocolo Autenticação Biométrica Integração
Segura s DRM (fingerprint, face, voice) Serviços
SSL/TLS, WTLS, IPSEC, Segurança
S/MIME
Primitivas Criptográficas
Criptografia Simétrica Hash Criptografia Assinatura Key
(RC4, RC5, DES, AES, (Sha-1, Chave Pública Digital (DAS, Exchange
entre outros) MD5), MQQ, (RSA, ECC, ecDSA) (DH,
SHA-3 HECC) ecDH)
145
146. Algoritmos Criptográficos - Primitivas
Digital Signatures
Key Exchange
Encryption
Cryptographic Algorithms
Simetrics Asimetrics Hash Functions Random
Number
Generators
DES RSA SHA-1
SHA-2
AES (H)ECDSA
SHA-3
RC4
IBE (PBC) kecca
146
147. Algoritmos Criptográficos - Plataformas
Cryptographic Algorithms
Hardware Software
IP ASIC FPGA PC SoC
Physical security Security problems(memory attacks)
High Performance Low performance
Flexibility(FPGAs) Flexibility
Parallel processing Sequential processing
Efficient use of resources Defficient use of resources
High cost ( Asic implementation) Low cost (implementation)
147
148. Soluções de Segurança em Multicore
Core Único Multiprocessador Multicore
CPU CPU CPU CPU
CPU CPU CPU
CPU CPU CPU CPU
Domeika (2008)
148
149. Soluções de Segurança em Multicore/FPGAs
4 Xilinx Microblaze em rede (Kavadias, 2010) 149
150. Soluções de Segurança em Multicore/Leon-3
Arquitetura interna padrão do Leon3 (Gaisler, 150
2011)
151. Multicore and GPUs – Open Researches
•Projetar sistemas multicore eficientes em consumo de energia;
•Paralelizar aplicações que requeiram alto desempenho e adequá-las a plataformas
multicore de forma eficiente e escalável;
•Criar ferramentas que paralelizem automaticamente aplicações e as executem de forma
eficiente em plataformas multicore;
•Projetar e avaliar sistemas Multi-core e uso de GPUs em soluções de segurança e
processamento de imagens que requeiram alto desempenho;
•Considerando a nova geração da arquitetura unificada dos hardwares gráficos (GPUs),
lançada pela nVidia, que veio tornar capaz a execução de programas genéricos, e que
existem aplicações com alto grau de paralelismo, e que transformam as GPUs em
verdadeiros clusters; existe ainda necessidade de estudar e aplicar as GPU em várias
aplicações que requeiram o uso de alto processamento para alto volume de dados;
•Construir ferramentas que auxiliem no processo automático do uso eficiente de GPUs
em aplicações de alto volume de informações;
•Verificar o uso de GPUs em soluções modernas de segurança: IDS e IPS de alto
desempenho, em algoritmos criptográficos de desempenho crítico, em algoritmos
biométricos e etc.
151
152. Consumo de Energia
Final da
Execução
Detalhes do consumo de energia na execução do algoritmo SHA
152