Tropyc
Uma linguagem de Padrão para
Software Criptográfico
Bringel Filho
[email protected]
Universidade Federal do Ceará
Tropyc
1
Agenda
GOOCA (Generic Object-Oriented
Arquitecture Architecture)
Tropyc: A Pattern Language for
Cryptographic Software
Padrões do Tropyc
Tropyc
2
Tropyc
Generic Object-Oriented Cryptographic Archtecture
Sender
Authentication
Information
Secrecy
Signature
Secrecy with
Sender
Authentication
Secrecy with
Signature
Signature
with Appendix
Message
Integrity
Secrecy with
Integrity
Secrecy with
Signature
with Appendix
Tropyc
3
GOOCA – Generic Object-Oriented
Cryptographic Architecture
Contexto
– Dois objetos trocam dados através de
mensagens
Precisam executar transformações criptográficas,
sozinhos ou em combinações, nos dados
Precisam de um componente criptográfico que
seja flexível e que possa ser facilmente reutilizado
em outras transformações criptográficas
Tropyc
4
Tropyc
Uma linguagem de Padrão para Softwares
Criptográficos
GOOCA (Generic Object-Oriented
Cryptographic Architecture)
Padrões baseados no GOOCA
– Classificados de acordo com objetivo o
criptográfico
Tropyc
5
GOOCA – Generic Object-Oriented
Cryptographic Architecture
Problema
– Como projetar uma arquitetura orientada a
objeto flexível para um projeto criptográfico a
fim de facilitar o reuso de componentes?
Tropyc
6
GOOCA – Generic Object-Oriented
Cryptographic Architecture
Solução
– O emissor realiza uma transformação criptográfica
nos dados antes de enviá-los para o receptor
– O receptor recebe a mensagem e realiza a
transformação inversa para substituir os dados
– O emissor e o receptor devem entrar em consenso
sobre qual transformação realizar e sobre
compartilhar ou distribuir chaves se necessário
Tropyc
7
GOOCA – Generic Object-Oriented
Cryptographic Architecture
Sender
Receiver
send()
receive()
Codifier
Decodifier
f(x)
Cryptographic
Algorithm
Tropyc
g(x)
8
GOOCA – Generic Object-Oriented
Cryptographic Architecture
Sender
Receiver
Tropyc
9
GOOCA – Generic Object-Oriented
Cryptographic Architecture
Consequências
– Comportamentos comuns entre as transformações
criptográficas
– Sistemas flexíveis e adaptáveis com requisitos de
segurança baseados em criptografia
– Requisitos de segurança baseados em criptografia
geralmente são requisitos não funcionais para
aplicações de propósito geral
– A separação explícita do conteúdo em dois tipos de
requisitos facilita a legibilidade e o reuso
Tropyc
10
GOOCA – Generic Object-Oriented
Cryptographic Architecture
Usos Conhecidos
– Padrões da Tropyc
– Sistemas
Charging per Click on the Web [5]
Security-Enhanced Mailing Lists [6]
A Security Architecture for the Internet Protocol [7]
Client Signature on Web Documents [8]
Um Framework para Venda e Distribuição Online
de Publicações Baseado em Micropagamentos [9]
Tropyc
11
GOOCA – Generic Object-Oriented
Cryptographic Architecture
Padrões Relacionados
– O padrão Strategy pode ser usado para obter
independência de algoritmo
– O padrão Bridge pode ser usado para obter
independência de implementação
– O Abstract Factory pode ser usado no passo
inicial de negociação para decidir que
algoritmo e implementação usar
Tropyc
12
Information Secrecy
Contexto
Emissor
mensagens
Receptor
Interceptor
Tropyc
13
Information Secrecy
Problema
– Como o emissor pode enviar uma mensagem
para o receptor de tal forma que um
interceptor não possa ler o seu conteúdo?
Tropyc
14
Information Secrecy
Solução
– Padrão suporta crifragem e decrifragem de
dados
– O emissor e o receptor entram em consenso
processo criptográfico
chave secreta compartilhada
– O emissor cifra a mensagem e manda para o
receptor
– O receptor decifra a mensagem cifrada
Tropyc
15
Information Secrecy
Consequências
– Custo de tempo
– Um interceptor não poderá ler o conteúdo da
mensagem mas poderá modificar o conteúdo
da mensagem cifrada ou realizar outro tipo de
ataque
– Erros na transmissão ou no armazenamento
podem, potencialmente, tornar a recuperação
da mensagem original impossível
Tropyc
16
Information Secrecy
Usos conhecidos
– Cifragem de correio eletrônico
Tropyc
17
Message Integrity
Contexto
– Mensagens recebidas podem ter sido
alteradas ou substituídas por um interceptor
– O emissor e o receptor não compartilham
chaves criptográficas
Não podem assinar mensagem ou autenticá-las
com Message Authentication Codes (MACs)
Tropyc
18
Message Integrity
Problema
– Como o receptor pode determinar se a
mensagem que ele recebeu foi modificada?
Tropyc
19
Message Integrity
Solução
– O emissor e o receptor entram em consenso
para usar um MDC
– O emissor calcula o MDC da mensagem e
envia, com a mensagem, para o receptor
– O receptor calcula o MDC da mensagem e
compara-o com o recebido do emissor
Se forem iguais, a mensagem é original
Tropyc
20
Message Integrity
Sender
sendMsg()
sendMDC()
Codifier
calcMDC()
Receiver
receiveMsg()
receiveMDC()
Cryptographic
Algorithm
Decodifier
verifyMDC()
Tropyc
21
Message Integrity
Consequências
– É necessário verificar um MDC relativamente
pequeno para determinar se uma grande
quantidade de dados foi modificada
– O interceptor ainda pode substituir ambos, a
mensagem e o MDC correspondente
– O MDC por si só não garante a autoria da
mensagem
Tropyc
22
Message Integrity
Usos conhecidos
– Detecção da modificação de arquivos
causada por vírus
– Geração de pass-phrases para produzir
chaves criptográficas
Tropyc
23
Sender Authentication
Contexto
– Duas fontes querem trocar mensagens mas
não podem distinguir suas próprias
mensagens de mensagens que um
interceptor possa ter incluído no canal de
comunicação
– Eles também têm a capacidade de
compartilhar segredos de maneira segura
Tropyc
24
Sender Authentication
Problema
– Como mensagens autênticas podem ser
distinguidas de mensagens suspeitas?
Tropyc
25
Sender Authentication
Solução
– O emissor e o receptor entram em consenso
previamente sobre uma chave secreta compartilhada
e um algoritmo criptográfico para gerar Códigos de
Autenticação de Mensagens (MACs)
– O emissor calcula o MAC da mensagem e envia
ambos, mensagem e MAC, para o receptor
– O receptor calcula o MAC novamente e compara-o
com o recebido do emissor
– Se forem iguais, a mensagem é autêntica
Tropyc
26
Sender Authentication
Consequências
– Uma mensagem só pode ser autenticada se
uma informação reconhecida somente pelas
partes comunicantes está intrinsecamente
associada a ela
– Se a autenticação da informação é uma
função dos dados e de um segredo, a
substituição delas, ou de parte delas, pode
ser detectada
Tropyc
27
Sender Authentication
Usos conhecidos
– MACs podem ser usados na autenticação de
pacotes IP na internet
Tropyc
28
Signature
Contexto
– O emissor envia mensagens para o receptor mas
eles não podem distinguir suas próprias mensagens
daquelas que um interceptor possa ter inserido
dentro do canal de comunicação
– Além disso o emissor pode depois disputar a autoria
das mensagens atualmente enviadas por ele
– Em tal situação o receptor não pode provar a uma
terceira parte que somente aquele emissor poderia
ter enviado aquela mensagem
Tropyc
29
Signature
Problema
– Como garantir que as mensagens têm uma
origem autêntica e genuína de tal forma que o
emissor não possa descartar uma mensagem
enviada por ele para o receptor?
Tropyc
30
Signature
Solução:
– O emissor e o receptor entram em consenso sobre o
uso de uma chave pública de um protocolo de
assinatura digital
– O emissor cifra uma mensagem com sua chave
privada e envia a mensagem assinada para o
receptor
– O receptor decifra a mensagem assinada com a
chave de verificação do emissor
– Se a mensagem faz sentido para o receptor então
deve ser verdade que aquele é o emissor da
mensagem
Tropyc
31
Signature
Consequências
– Assinaturas são geralmente tão grande
quanto os dados a serem assinados
overhead intolerável
– A verificação da autoria da mensagem é
baseada unicamente no segredo da chave do
autor
Tropyc
32
Signature
Usos conhecidos
– Assinaturas digitais são usadas em
aplicações de comércio eletrônico em
autenticações de clientes e comerciantes
– Podem também ser usadas para garantir a
autenticidade da informação obtida na
Internet
Tropyc
33
Tropyc
Generic Object-Oriented Cryptographic Archtecture
Sender
Authentication
Information
Secrecy
Signature
Message
Integrity
Signature
with Appendix
Tropyc
34
Signature with Appendix
Contexto
– O emissor e o receptor assinam as
mensagens que eles trocam a fim de prevenir
modificações e substituições
– Todavia eles têm armazenamento e recursos
de processamento limitados, e as mensagens
que eles trocam são grandes e produzem
grandes assinaturas
Tropyc
35
Signature with Appendix
Problema
– Como reduzir o espaço de armazenamento
requerido para uma mensagem e sua
assinatura, aumentando a performance do
protocolo de assinatura digital?
Tropyc
36
Signature with Appendix
Solução
– Signature + Message Integrity
– Este padrão implementa um protocolo de assinatura
digital sobre um valor hash da mensagem (MDC)
– O emissor calcula um valor hash da mensagem e o
assina
– Ambos, mensagem e valor hash assinado são
enviados para o receptor
– O receptor decifra a assinatura e substitui o valor
hash
– Ele então calcula um novo valor hash e compara-o
com o substituído da assinatura
– Se eles forem iguais, a assinatura e verdadeira
Tropyc
37
Signature with Appendix
MDC=V.verify(MDCs)
Ok=D.verifyMDC(MSG,MDC)
return(Ok)
MDC=C.calcMDC(MSG)
MDCs=S.sign(MDC)
R.receiveMDC(MDCs)
Sender
sendMsg()
sendMDC()
C
R
Receiver
receiveMsg()
receiveMDC()
V
S
Codifier
Signer
calcMDC()
sign()
Signature
Algorithm
EnchiperKey
D
Verifier
Decodifier
verify()
verifyMDC()
DechiperKey
Hash
Algorithm
Tropyc
38
Signature with Appendix
Usos conhecidos
– Applets assinados são uma maneira pela qual
o código java pode ser autenticado
– O JDK usa o Signature with Appendix para
produzir pequenas assinaturas para grandes
quantidades de código
Tropyc
39
Tropyc
Generic Object-Oriented Cryptographic Archtecture
Sender
Authentication
Information
Secrecy
Signature
Signature
with Appendix
Tropyc
Message
Integrity
Secrecy with
Integrity
40
Secrecy with Integrity
Contexto
– O emissor e o receptor trocam mensagens
cifradas mas eles não podem detectar
modificações ou substituições de mensagens
cifradas por um interceptor
– Eles também não querem compartilhar uma
chave secreta para autenticação
Tropyc
41
Secrecy with Integrity
Problema
– Como preservar a integridade de uma
mensagem cifrada sem perder o segredo?
Tropyc
42
Secrecy with Integrity
Solução
– Information Secrecy + Message Integrity
– O MDC deve ser calculado sobre a
mensagem original não cifrada
– Ambos, mensagem cifrada e MDC, devem
ser enviados para o receptor
– Este padrão precisa apenas de um par de
chaves pública/privada para crifragem
Tropyc
43
Secrecy with Integrity
Consequências
– Substituições de mensagens podem ainda
fazer com que dados válidos sejam
completamente adulterados ou ter o
significado modificado após a decifragem
Tropyc
44
Tropyc
Generic Object-Oriented Cryptographic Archtecture
Sender
Authentication
Information
Secrecy
Signature
Secrecy with
Sender
Authentication
Signature
with Appendix
Tropyc
Message
Integrity
Secrecy with
Integrity
45
Secrecy with Sender Authentication
Contexto
– O emissor e o receptor usam criptografia com
chave pública para trocar mensagens cifradas
– Um possível interceptor não pode ler o
conteúdo das mensagens interceptadas
Tropyc
46
Secrecy with Sender Authentication
Contexto:
Emissor
Receptor
Interceptor
Tropyc
47
Secrecy with Sender Authentication
Problema
– Como o emissor pode autenticar a origem de
uma mensagem cifrada sem perder o
segredo?
Tropyc
48
Secrecy with Sender Authentication
Solução
– Information Secrecy + Sender Authentication
– O MAC deve ser calculado sobre a
mensagem original não sobre a mensagem
cifrada
– Ambos, mensagem cifrada e MAC são
enviados para o receptor
– A chave secreta usada para calcular o MAC
deve ser diferente da usada para a cifragem
Tropyc
49
Secrecy with Sender Authentication
MAC=C.calcMDC(MSG)
R.receiveMAC(MAC)
Ok=D.verifyMAC(MSG,MAC)
return(Ok)
MSGc=Ci.encipher(MSG)
R.receiveMSG(MSGc)
MSG=D.decipher(MSGc)
return(MSG)
Sender
sendMsg()
sendMAC()
Co
Codifier
R
Ci
Cipher
calcMAC()
encipher()
SecretKey
EnchiperKey
Cryptographic
Algorithm
Receiver
receiveMsg()
receiveMAC()
D
Decipher
V
Verifier
decipher()
verifyMAC()
DechiperKey
SecretKey
Hash
Algorithm
Tropyc
50
Secrecy with Sender Authentication
Consequências
– O Sender Authentication insere um novo
passo em ambos os processos de cifragem e
decifragem a fim de calcular e verificar um
MAC, o que pode diminuir a performance
Tropyc
51
Secrecy with Sender Authentication
Usos conhecidos
– Secrecy e Authentication podem ser
combinados a fim de manter seguros pacotes
IP na Internet
Tropyc
52
Tropyc
Generic Object-Oriented Cryptographic Archtecture
Sender
Authentication
Information
Secrecy
Signature
Secrecy with
Sender
Authentication
Secrecy with
Signature
Signature
with Appendix
Tropyc
Message
Integrity
Secrecy with
Integrity
53
Secrecy with Signature
Contexto
– O emissor e o receptor trocam mensagens cifradas
mas eles não podem provar a autoria dessas
mensagens
– Além disso um interceptor pode modificar, substituir
ou incluir mensagens no canal de comunicação de tal
forma que o emissor e o receptor não possam
detectar as mensagens suspeitas
– O emissor e o receptor já compartilham chaves para
segurança
Tropyc
54
Secrecy with Signature
Problema
– Como o receptor pode provar a autoria de
uma mensagem cifrada sem a perda do
segredo, de tal forma que a integridade e
autenticidade da origem estejam também
implicitamente assegurados?
Tropyc
55
Secrecy with Signature
Solução
– Information Secrecy + Signature
– O emissor assina uma mensagem com sua
chave de assinatura, cifra a mensagem
assinada com a chave de cifragem do
receptor e a envia
– O receptor decifra a mensagem cifrada com
sua chave de decifragem e verifica a
mensagem assinada com a chave de
verificação do emissor
Tropyc
56
Secrecy with Signature
SGN=S.sign(MSG)
SGNc=C.encipher(SGN)
R.receive(SGNc)
SGN=D.decipher(SGNc)
Ok=V.verify(SGN)
return(Ok)
Sender
R
send()
C
Receiver
receive ()
S
Cipher
Signer
encipher()
sign()
EncipherKey
SignerKey
Signature
Algorithm
V
Verifier
D
verify()
decipher()
VerifierKey
DechiperKey
Decipher
Cryptographic
Algorithm
Tropyc
57
Secrecy with Signature
Consequências
– O Signature pode conceder a autoria das
mensagens cifradas inserindo um passo
intermediário no processo
crifragem/decifragem causando uma perda de
eficiência
Tropyc
58
Tropyc
Generic Object-Oriented Cryptographic Archtecture
Sender
Authentication
Information
Secrecy
Signature
Secrecy with
Sender
Authentication
Secrecy with
Signature
Signature
with Appendix
Message
Integrity
Secrecy with
Integrity
Secrecy with
Signature
with Appendix
Tropyc
59
Secrecy with Signature with
Appendix
Contexto
– Duas fontes trocam mensagens crifradas e
assinadas para prevenir modificação ou
substituição e para manter sigilo e aceitação
da mensagem
– Eles precisam gerenciar os limitados recursos
de armazenamento e processamento
– Além disso, as mensagens que eles trocam
são muito grandes e produzem grandes
assinaturas
Tropyc
60
Secrecy with Signature with
Appendix
Problema
– Como reduzir a quantidade de memória
necessária para armazenar uma mensagem e
sua assinatura, aumentando a performance
do sistema, sem perder o segredo?
Tropyc
61
Secrecy with Signature with
Appendix
Solução
– Information Secrecy + Signature with Appendix
– O emissor calcula um valor hash da mensagem e a assina com
sua chave de assinatura
– Ele então cifra a mensagem original com a chave de cifragem
do receptor
– Ambos, mensagem cifrada e valor hash assinado são enviados
para o receptor
– O receptor decifra a mensagem com sua chave de decifragem e
decifra o valor hash assinado com a chave de verificação do
emissor
– O receptor calcula um novo valor hash da mensagem e
compara-o com o valor recebido do emissor
– Se eles forem iguais, a assinatura e verdadeira.
Tropyc
62
Secrecy with Signature with
Appendix
H=V.verify(Hs)
Ok=Dco.decode(H,MSG)
Return(Ok)
H=E.encode(MSG)
Hs=S.sign(H)
R.receiveSgn(Hs)
MSG=D.decipher(MSGc)
Return(MSG)
MSGc=C.encipher(MSG)
R.receiveMsg(MSGc)
Sender
sendMsg()
sendSgn()
Encoder
encode()
Cipher
S
Signer
encipher()
sign()
EncipherKey
SignerKey
C
R
Receiver
receiveMsg()
receiveSgn()
V
Signature
Algorithm
Decoder
decode()
D
Verifier
Decipher
verify()
decipher()
VerifierKey
DechiperKey
Cryptographic
Algorithm
Tropyc
63
Secrecy with Signature with
Appendix
Consequências
– Novamente pequenas perdas de performance
devem ser desprezíveis a fim de salvar uma
quantidade de espaço relativamente grande e
reduzir a quantidade de dados transmitidos
Tropyc
64
Tropyc
Generic Object-Oriented Cryptographic Archtecture
Sender
Authentication
Information
Secrecy
Signature
Secrecy with
Sender
Authentication
Secrecy with
Signature
Signature
with Appendix
Message
Integrity
Secrecy with
Integrity
Secrecy with
Signature
with Appendix
Tropyc
65
Download

tropyc - Universidade Federal do Ceará