65
Tropyc Tropyc 1 Tropyc Tropyc Uma linguagem de Padrão Uma linguagem de Padrão para Software para Software Criptográfico Criptográfico Bringel Filho [email protected] Universidade Federal do Ceará

Tropyc 1 Tropyc Uma linguagem de Padrão para Software Criptográfico Bringel Filho [email protected] Universidade Federal do Ceará

Embed Size (px)

Citation preview

Page 1: Tropyc 1 Tropyc Uma linguagem de Padrão para Software Criptográfico Bringel Filho bringel@lia.ufc.br Universidade Federal do Ceará

TropycTropyc 11

TropycTropycUma linguagem de Padrão para Uma linguagem de Padrão para

Software CriptográficoSoftware Criptográfico

Bringel [email protected]

Universidade Federal do Ceará

Page 2: Tropyc 1 Tropyc Uma linguagem de Padrão para Software Criptográfico Bringel Filho bringel@lia.ufc.br Universidade Federal do Ceará

TropycTropyc 22

AgendaAgenda

GOOCA (Generic Object-Oriented GOOCA (Generic Object-Oriented Arquitecture Architecture)Arquitecture Architecture)TropycTropyc: : A Pattern Language for A Pattern Language for Cryptographic SoftwareCryptographic SoftwarePadrões do TropycPadrões do Tropyc

Page 3: Tropyc 1 Tropyc Uma linguagem de Padrão para Software Criptográfico Bringel Filho bringel@lia.ufc.br Universidade Federal do Ceará

TropycTropyc 33

TropycTropycGeneric Object-Oriented Cryptographic Archtecture

Sender Authentication

InformationSecrecy Signature Message

Integrity

Secrecy withSender

Authentication

Secrecy withSignature

Signaturewith Appendix

Secrecy withIntegrity

Secrecy with Signature

with Appendix

Page 4: Tropyc 1 Tropyc Uma linguagem de Padrão para Software Criptográfico Bringel Filho bringel@lia.ufc.br Universidade Federal do Ceará

TropycTropyc 44

GOOCA – Generic Object-Oriented GOOCA – Generic Object-Oriented Cryptographic ArchitectureCryptographic Architecture

ContextoContexto– Dois objetos trocam dados através de Dois objetos trocam dados através de

mensagensmensagensPrecisam executar transformações criptográficas, Precisam executar transformações criptográficas, sozinhos ou em combinações, nos dadossozinhos ou em combinações, nos dadosPrecisam de um componente criptográfico que Precisam de um componente criptográfico que seja flexível e que possa ser facilmente reutilizado seja flexível e que possa ser facilmente reutilizado em outras transformações criptográficasem outras transformações criptográficas

Page 5: Tropyc 1 Tropyc Uma linguagem de Padrão para Software Criptográfico Bringel Filho bringel@lia.ufc.br Universidade Federal do Ceará

TropycTropyc 55

TropycTropyc

Uma linguagem de Padrão para Softwares Uma linguagem de Padrão para Softwares CriptográficosCriptográficosGOOCA (GOOCA (Generic Object-Oriented Generic Object-Oriented Cryptographic Architecture)Cryptographic Architecture)Padrões baseados no GOOCAPadrões baseados no GOOCA– Classificados de acordo com objetivo o Classificados de acordo com objetivo o

criptográficocriptográfico

Page 6: Tropyc 1 Tropyc Uma linguagem de Padrão para Software Criptográfico Bringel Filho bringel@lia.ufc.br Universidade Federal do Ceará

TropycTropyc 66

GOOCA – Generic Object-Oriented GOOCA – Generic Object-Oriented Cryptographic ArchitectureCryptographic Architecture

ProblemaProblema– Como projetar uma arquitetura orientada a Como projetar uma arquitetura orientada a

objeto flexível para um projeto criptográfico a objeto flexível para um projeto criptográfico a fim de facilitar o reuso de componentes?fim de facilitar o reuso de componentes?

Page 7: Tropyc 1 Tropyc Uma linguagem de Padrão para Software Criptográfico Bringel Filho bringel@lia.ufc.br Universidade Federal do Ceará

TropycTropyc 77

GOOCA – Generic Object-Oriented GOOCA – Generic Object-Oriented Cryptographic ArchitectureCryptographic Architecture

SoluçãoSolução– O emissor realiza uma transformação criptográfica O emissor realiza uma transformação criptográfica

nos dados antes de enviá-los para o receptornos dados antes de enviá-los para o receptor– O receptor recebe a mensagem e realiza a O receptor recebe a mensagem e realiza a

transformação inversa para substituir os dadostransformação inversa para substituir os dados– O emissor e o receptor devem entrar em consenso O emissor e o receptor devem entrar em consenso

sobre qual transformação realizar e sobre sobre qual transformação realizar e sobre compartilhar ou distribuir chaves se necessáriocompartilhar ou distribuir chaves se necessário

Page 8: Tropyc 1 Tropyc Uma linguagem de Padrão para Software Criptográfico Bringel Filho bringel@lia.ufc.br Universidade Federal do Ceará

TropycTropyc 88

GOOCA – Generic Object-Oriented GOOCA – Generic Object-Oriented Cryptographic ArchitectureCryptographic Architecture

Sender

send()

Decodifier

g(x)

Codifier

f(x)Cryptographic

Algorithm

Receiver

receive()

Page 9: Tropyc 1 Tropyc Uma linguagem de Padrão para Software Criptográfico Bringel Filho bringel@lia.ufc.br Universidade Federal do Ceará

TropycTropyc 99

GOOCA – Generic Object-Oriented GOOCA – Generic Object-Oriented Cryptographic ArchitectureCryptographic Architecture

Sender Receiver

Page 10: Tropyc 1 Tropyc Uma linguagem de Padrão para Software Criptográfico Bringel Filho bringel@lia.ufc.br Universidade Federal do Ceará

TropycTropyc 1010

GOOCA – Generic Object-Oriented GOOCA – Generic Object-Oriented Cryptographic ArchitectureCryptographic Architecture

ConsequênciasConsequências– Comportamentos comuns entre as transformações Comportamentos comuns entre as transformações

criptográficascriptográficas– Sistemas flexíveis e adaptáveis com requisitos de Sistemas flexíveis e adaptáveis com requisitos de

segurança baseados em criptografiasegurança baseados em criptografia– Requisitos de segurança baseados em criptografia Requisitos de segurança baseados em criptografia

geralmente são requisitos não funcionais para geralmente são requisitos não funcionais para aplicações de propósito geralaplicações de propósito geral

– A separação explícita do conteúdo em dois tipos de A separação explícita do conteúdo em dois tipos de requisitos facilita a legibilidade e o reusorequisitos facilita a legibilidade e o reuso

Page 11: Tropyc 1 Tropyc Uma linguagem de Padrão para Software Criptográfico Bringel Filho bringel@lia.ufc.br Universidade Federal do Ceará

TropycTropyc 1111

GOOCA – Generic Object-Oriented GOOCA – Generic Object-Oriented Cryptographic ArchitectureCryptographic Architecture

Usos ConhecidosUsos Conhecidos– Padrões da TropycPadrões da Tropyc– SistemasSistemas

Charging per Click on the WebCharging per Click on the Web [5] [5]Security-Enhanced Mailing Lists [6]Security-Enhanced Mailing Lists [6]A Security Architecture for the Internet Protocol [7]A Security Architecture for the Internet Protocol [7]Client Signature on Web Documents [8]Client Signature on Web Documents [8]Um Framework para Venda e Distribuição On line Um Framework para Venda e Distribuição On line de Publicações Baseado em Micropagamentos [9]de Publicações Baseado em Micropagamentos [9]

Page 12: Tropyc 1 Tropyc Uma linguagem de Padrão para Software Criptográfico Bringel Filho bringel@lia.ufc.br Universidade Federal do Ceará

TropycTropyc 1212

GOOCA – Generic Object-Oriented GOOCA – Generic Object-Oriented Cryptographic ArchitectureCryptographic Architecture

Padrões RelacionadosPadrões Relacionados– O padrão O padrão StrategyStrategy pode ser usado para obter pode ser usado para obter

independência de algoritmoindependência de algoritmo– O padrão O padrão BridgeBridge pode ser usado para obter pode ser usado para obter

independência de implementaçãoindependência de implementação– O O Abstract FactoryAbstract Factory pode ser usado no passo pode ser usado no passo

inicial de negociação para decidir que inicial de negociação para decidir que algoritmo e implementação usaralgoritmo e implementação usar

Page 13: Tropyc 1 Tropyc Uma linguagem de Padrão para Software Criptográfico Bringel Filho bringel@lia.ufc.br Universidade Federal do Ceará

TropycTropyc 1313

Information SecrecyInformation Secrecy

ContextoContexto

mensagensEmissor Receptor

Interceptor

Page 14: Tropyc 1 Tropyc Uma linguagem de Padrão para Software Criptográfico Bringel Filho bringel@lia.ufc.br Universidade Federal do Ceará

TropycTropyc 1414

Information SecrecyInformation Secrecy

ProblemaProblema– Como o emissor pode enviar uma mensagem Como o emissor pode enviar uma mensagem

para o receptor de tal forma que um para o receptor de tal forma que um interceptor não possa ler o seu conteúdo? interceptor não possa ler o seu conteúdo?

Page 15: Tropyc 1 Tropyc Uma linguagem de Padrão para Software Criptográfico Bringel Filho bringel@lia.ufc.br Universidade Federal do Ceará

TropycTropyc 1515

Information SecrecyInformation Secrecy

SoluçãoSolução– Padrão suporta crifragem e decrifragem de Padrão suporta crifragem e decrifragem de

dadosdados– O emissor e o receptor entram em consensoO emissor e o receptor entram em consenso

processo criptográficoprocesso criptográficochave secreta compartilhadachave secreta compartilhada

– O emissor cifra a mensagem e manda para o O emissor cifra a mensagem e manda para o receptorreceptor

– O receptor decifra a mensagem cifradaO receptor decifra a mensagem cifrada

Page 16: Tropyc 1 Tropyc Uma linguagem de Padrão para Software Criptográfico Bringel Filho bringel@lia.ufc.br Universidade Federal do Ceará

TropycTropyc 1616

Information SecrecyInformation Secrecy

ConsequênciasConsequências– Custo de tempoCusto de tempo– Um interceptor não poderá ler o conteúdo da Um interceptor não poderá ler o conteúdo da

mensagem mas poderá modificar o conteúdo mensagem mas poderá modificar o conteúdo da mensagem cifrada ou realizar outro tipo de da mensagem cifrada ou realizar outro tipo de ataqueataque

– Erros na transmissão ou no armazenamento Erros na transmissão ou no armazenamento podem, potencialmente, tornar a recuperação podem, potencialmente, tornar a recuperação da mensagem original impossívelda mensagem original impossível

Page 17: Tropyc 1 Tropyc Uma linguagem de Padrão para Software Criptográfico Bringel Filho bringel@lia.ufc.br Universidade Federal do Ceará

TropycTropyc 1717

Information SecrecyInformation Secrecy

Usos conhecidosUsos conhecidos– Cifragem de correio eletrônicoCifragem de correio eletrônico

Page 18: Tropyc 1 Tropyc Uma linguagem de Padrão para Software Criptográfico Bringel Filho bringel@lia.ufc.br Universidade Federal do Ceará

TropycTropyc 1818

Message IntegrityMessage Integrity

ContextoContexto– Mensagens recebidas podem ter sido Mensagens recebidas podem ter sido

alteradas ou substituídas por um interceptoralteradas ou substituídas por um interceptor– O emissor e o receptor não compartilham O emissor e o receptor não compartilham

chaves criptográficaschaves criptográficasNão podem assinar mensagem ou autenticá-las Não podem assinar mensagem ou autenticá-las com com Message Authentication CodesMessage Authentication Codes (MACs) (MACs)

Page 19: Tropyc 1 Tropyc Uma linguagem de Padrão para Software Criptográfico Bringel Filho bringel@lia.ufc.br Universidade Federal do Ceará

TropycTropyc 1919

Message IntegrityMessage Integrity

ProblemaProblema– Como o receptor pode determinar se a Como o receptor pode determinar se a

mensagem que ele recebeu foi modificada? mensagem que ele recebeu foi modificada?

Page 20: Tropyc 1 Tropyc Uma linguagem de Padrão para Software Criptográfico Bringel Filho bringel@lia.ufc.br Universidade Federal do Ceará

TropycTropyc 2020

Message IntegrityMessage Integrity

SoluçãoSolução– O emissor e o receptor entram em consenso O emissor e o receptor entram em consenso

para usar um MDCpara usar um MDC– O emissor calcula o MDC da mensagem e O emissor calcula o MDC da mensagem e

envia, com a mensagem, para o receptorenvia, com a mensagem, para o receptor– O receptor calcula o MDC da mensagem e O receptor calcula o MDC da mensagem e

compara-o com o recebido do emissorcompara-o com o recebido do emissorSe forem iguais, a mensagem é originalSe forem iguais, a mensagem é original

Page 21: Tropyc 1 Tropyc Uma linguagem de Padrão para Software Criptográfico Bringel Filho bringel@lia.ufc.br Universidade Federal do Ceará

TropycTropyc 2121

Message IntegrityMessage Integrity

SendersendMsg()sendMDC()

CryptographicAlgorithm

ReceiverreceiveMsg()receiveMDC()

Codifier

calcMDC()

Decodifier

verifyMDC()

Page 22: Tropyc 1 Tropyc Uma linguagem de Padrão para Software Criptográfico Bringel Filho bringel@lia.ufc.br Universidade Federal do Ceará

TropycTropyc 2222

Message IntegrityMessage Integrity

ConsequênciasConsequências– É necessário verificar um MDC relativamente É necessário verificar um MDC relativamente

pequeno para determinar se uma grande pequeno para determinar se uma grande quantidade de dados foi modificadaquantidade de dados foi modificada

– O interceptor ainda pode substituir ambos, a O interceptor ainda pode substituir ambos, a mensagem e o MDC correspondentemensagem e o MDC correspondente

– O MDC por si só não garante a autoria da O MDC por si só não garante a autoria da mensagemmensagem

Page 23: Tropyc 1 Tropyc Uma linguagem de Padrão para Software Criptográfico Bringel Filho bringel@lia.ufc.br Universidade Federal do Ceará

TropycTropyc 2323

Message IntegrityMessage Integrity

Usos conhecidosUsos conhecidos– Detecção da modificação de arquivos Detecção da modificação de arquivos

causada por víruscausada por vírus– Geração de Geração de pass-phrasespass-phrases para produzir para produzir

chaves criptográficaschaves criptográficas

Page 24: Tropyc 1 Tropyc Uma linguagem de Padrão para Software Criptográfico Bringel Filho bringel@lia.ufc.br Universidade Federal do Ceará

TropycTropyc 2424

Sender AuthenticationSender Authentication

ContextoContexto– Duas fontes querem trocar mensagens mas Duas fontes querem trocar mensagens mas

não podem distinguir suas próprias não podem distinguir suas próprias mensagens de mensagens que um mensagens de mensagens que um interceptor possa ter incluído no canal de interceptor possa ter incluído no canal de comunicaçãocomunicação

– Eles também têm a capacidade de Eles também têm a capacidade de compartilhar segredos de maneira seguracompartilhar segredos de maneira segura

Page 25: Tropyc 1 Tropyc Uma linguagem de Padrão para Software Criptográfico Bringel Filho bringel@lia.ufc.br Universidade Federal do Ceará

TropycTropyc 2525

Sender AuthenticationSender Authentication

ProblemaProblema– Como mensagens autênticas podem ser Como mensagens autênticas podem ser

distinguidas de mensagens suspeitas? distinguidas de mensagens suspeitas?

Page 26: Tropyc 1 Tropyc Uma linguagem de Padrão para Software Criptográfico Bringel Filho bringel@lia.ufc.br Universidade Federal do Ceará

TropycTropyc 2626

Sender AuthenticationSender Authentication

SoluçãoSolução– O emissor e o receptor entram em consenso O emissor e o receptor entram em consenso

previamente sobre uma chave secreta compartilhada previamente sobre uma chave secreta compartilhada e um algoritmo criptográfico para gerar e um algoritmo criptográfico para gerar Códigos de Códigos de Autenticação de MensagensAutenticação de Mensagens (MACs) (MACs)

– O emissor calcula o MAC da mensagem e envia O emissor calcula o MAC da mensagem e envia ambos, mensagem e MAC, para o receptorambos, mensagem e MAC, para o receptor

– O receptor calcula o MAC novamente e compara-o O receptor calcula o MAC novamente e compara-o com o recebido do emissorcom o recebido do emissor

– Se forem iguais, a mensagem é autênticaSe forem iguais, a mensagem é autêntica

Page 27: Tropyc 1 Tropyc Uma linguagem de Padrão para Software Criptográfico Bringel Filho bringel@lia.ufc.br Universidade Federal do Ceará

TropycTropyc 2727

Sender AuthenticationSender Authentication

ConsequênciasConsequências– Uma mensagem só pode ser autenticada se Uma mensagem só pode ser autenticada se

uma informação reconhecida somente pelas uma informação reconhecida somente pelas partes comunicantes está intrinsecamente partes comunicantes está intrinsecamente associada a elaassociada a ela

– Se a autenticação da informação é uma Se a autenticação da informação é uma função dos dados e de um segredo, a função dos dados e de um segredo, a substituição delas, ou de parte delas, pode substituição delas, ou de parte delas, pode ser detectadaser detectada

Page 28: Tropyc 1 Tropyc Uma linguagem de Padrão para Software Criptográfico Bringel Filho bringel@lia.ufc.br Universidade Federal do Ceará

TropycTropyc 2828

Sender AuthenticationSender Authentication

Usos conhecidosUsos conhecidos– MACs podem ser usados na autenticação de MACs podem ser usados na autenticação de

pacotes IP na internetpacotes IP na internet

Page 29: Tropyc 1 Tropyc Uma linguagem de Padrão para Software Criptográfico Bringel Filho bringel@lia.ufc.br Universidade Federal do Ceará

TropycTropyc 2929

SignatureSignature

ContextoContexto– O emissor envia mensagens para o receptor mas O emissor envia mensagens para o receptor mas

eles não podem distinguir suas próprias mensagens eles não podem distinguir suas próprias mensagens daquelas que um interceptor possa ter inserido dentro daquelas que um interceptor possa ter inserido dentro do canal de comunicaçãodo canal de comunicação

– Além disso o emissor pode depois disputar a autoria Além disso o emissor pode depois disputar a autoria das mensagens atualmente enviadas por eledas mensagens atualmente enviadas por ele

– Em tal situação o receptor não pode provar a uma Em tal situação o receptor não pode provar a uma terceira parte que somente aquele emissor poderia terceira parte que somente aquele emissor poderia ter enviado aquela mensagemter enviado aquela mensagem

Page 30: Tropyc 1 Tropyc Uma linguagem de Padrão para Software Criptográfico Bringel Filho bringel@lia.ufc.br Universidade Federal do Ceará

TropycTropyc 3030

SignatureSignature

ProblemaProblema– Como garantir que as mensagens têm uma Como garantir que as mensagens têm uma

origem autêntica e genuína de tal forma que o origem autêntica e genuína de tal forma que o emissor não possa descartar uma mensagem emissor não possa descartar uma mensagem enviada por ele para o receptor? enviada por ele para o receptor?

Page 31: Tropyc 1 Tropyc Uma linguagem de Padrão para Software Criptográfico Bringel Filho bringel@lia.ufc.br Universidade Federal do Ceará

TropycTropyc 3131

SignatureSignature

Solução:Solução:– O emissor e o receptor entram em consenso sobre o O emissor e o receptor entram em consenso sobre o

uso de uma chave pública de um protocolo de uso de uma chave pública de um protocolo de assinatura digitalassinatura digital

– O emissor cifra uma mensagem com sua chave O emissor cifra uma mensagem com sua chave privada e envia a mensagem assinada para o privada e envia a mensagem assinada para o receptorreceptor

– O receptor decifra a mensagem assinada com a O receptor decifra a mensagem assinada com a chave de verificação do emissorchave de verificação do emissor

– Se a mensagem faz sentido para o receptor então Se a mensagem faz sentido para o receptor então deve ser verdade que aquele é o emissor da deve ser verdade que aquele é o emissor da mensagemmensagem

Page 32: Tropyc 1 Tropyc Uma linguagem de Padrão para Software Criptográfico Bringel Filho bringel@lia.ufc.br Universidade Federal do Ceará

TropycTropyc 3232

SignatureSignature

ConsequênciasConsequências– Assinaturas são geralmente tão grande Assinaturas são geralmente tão grande

quanto os dados a serem assinadosquanto os dados a serem assinadosoverhead intoleráveloverhead intolerável

– A verificação da autoria da mensagem é A verificação da autoria da mensagem é baseada unicamente no segredo da chave do baseada unicamente no segredo da chave do autorautor

Page 33: Tropyc 1 Tropyc Uma linguagem de Padrão para Software Criptográfico Bringel Filho bringel@lia.ufc.br Universidade Federal do Ceará

TropycTropyc 3333

SignatureSignature

Usos conhecidosUsos conhecidos– Assinaturas digitais são usadas em Assinaturas digitais são usadas em

aplicações de comércio eletrônico em aplicações de comércio eletrônico em autenticações de clientes e comerciantesautenticações de clientes e comerciantes

– Podem também ser usadas para garantir a Podem também ser usadas para garantir a autenticidade da informação obtida na autenticidade da informação obtida na InternetInternet

Page 34: Tropyc 1 Tropyc Uma linguagem de Padrão para Software Criptográfico Bringel Filho bringel@lia.ufc.br Universidade Federal do Ceará

TropycTropyc 3434

TropycTropycGeneric Object-Oriented Cryptographic Archtecture

Sender Authentication

InformationSecrecy Signature Message

Integrity

Signaturewith Appendix

Page 35: Tropyc 1 Tropyc Uma linguagem de Padrão para Software Criptográfico Bringel Filho bringel@lia.ufc.br Universidade Federal do Ceará

TropycTropyc 3535

Signature with AppendixSignature with Appendix

ContextoContexto– O emissor e o receptor assinam as O emissor e o receptor assinam as

mensagens que eles trocam a fim de prevenir mensagens que eles trocam a fim de prevenir modificações e substituiçõesmodificações e substituições

– Todavia eles têm armazenamento e recursos Todavia eles têm armazenamento e recursos de processamento limitados, e as mensagens de processamento limitados, e as mensagens que eles trocam são grandes e produzem que eles trocam são grandes e produzem grandes assinaturasgrandes assinaturas

Page 36: Tropyc 1 Tropyc Uma linguagem de Padrão para Software Criptográfico Bringel Filho bringel@lia.ufc.br Universidade Federal do Ceará

TropycTropyc 3636

Signature with AppendixSignature with Appendix

ProblemaProblema– Como reduzir o espaço de armazenamento Como reduzir o espaço de armazenamento

requerido para uma mensagem e sua requerido para uma mensagem e sua assinatura, aumentando a performance do assinatura, aumentando a performance do protocolo de assinatura digital? protocolo de assinatura digital?

Page 37: Tropyc 1 Tropyc Uma linguagem de Padrão para Software Criptográfico Bringel Filho bringel@lia.ufc.br Universidade Federal do Ceará

TropycTropyc 3737

Signature with AppendixSignature with AppendixSoluçãoSolução– SignatureSignature + + Message IntegrityMessage Integrity– Este padrão implementa um protocolo de assinatura Este padrão implementa um protocolo de assinatura

digital sobre um valor hash da mensagem (MDC)digital sobre um valor hash da mensagem (MDC)– O emissor calcula um valor hash da mensagem e o O emissor calcula um valor hash da mensagem e o

assinaassina– Ambos, mensagem e valor hash assinado são enviados Ambos, mensagem e valor hash assinado são enviados

para o receptorpara o receptor– O receptor decifra a assinatura e substitui o valor hashO receptor decifra a assinatura e substitui o valor hash– Ele então calcula um novo valor hash e compara-o com Ele então calcula um novo valor hash e compara-o com

o substituído da assinaturao substituído da assinatura– Se eles forem iguais, a assinatura e verdadeiraSe eles forem iguais, a assinatura e verdadeira

Page 38: Tropyc 1 Tropyc Uma linguagem de Padrão para Software Criptográfico Bringel Filho bringel@lia.ufc.br Universidade Federal do Ceará

TropycTropyc 3838

Signature with AppendixSignature with Appendix

SignatureAlgorithm

SendersendMsg()sendMDC()

ReceiverreceiveMsg()receiveMDC()

Signer

sign()

Decodifier

verifyMDC()

Codifier

calcMDC()

Verifier

verify()

EnchiperKey DechiperKeyHash

Algorithm

MDC=C.calcMDC(MSG)MDCs=S.sign(MDC)R.receiveMDC(MDCs)

MDC=V.verify(MDCs)Ok=D.verifyMDC(MSG,MDC)return(Ok)

R

V DSC

Page 39: Tropyc 1 Tropyc Uma linguagem de Padrão para Software Criptográfico Bringel Filho bringel@lia.ufc.br Universidade Federal do Ceará

TropycTropyc 3939

Signature with AppendixSignature with Appendix

Usos conhecidosUsos conhecidos– Applets assinados são uma maneira pela qual Applets assinados são uma maneira pela qual

o código java pode ser autenticadoo código java pode ser autenticado– O JDK usa o O JDK usa o Signature with AppendixSignature with Appendix para para

produzir pequenas assinaturas para grandes produzir pequenas assinaturas para grandes quantidades de códigoquantidades de código

Page 40: Tropyc 1 Tropyc Uma linguagem de Padrão para Software Criptográfico Bringel Filho bringel@lia.ufc.br Universidade Federal do Ceará

TropycTropyc 4040

TropycTropycGeneric Object-Oriented Cryptographic Archtecture

Sender Authentication

InformationSecrecy Signature Message

Integrity

Signaturewith Appendix

Secrecy withIntegrity

Page 41: Tropyc 1 Tropyc Uma linguagem de Padrão para Software Criptográfico Bringel Filho bringel@lia.ufc.br Universidade Federal do Ceará

TropycTropyc 4141

Secrecy with IntegritySecrecy with Integrity

ContextoContexto– O emissor e o receptor trocam mensagens O emissor e o receptor trocam mensagens

cifradas mas eles não podem detectar cifradas mas eles não podem detectar modificações ou substituições de mensagens modificações ou substituições de mensagens cifradas por um interceptorcifradas por um interceptor

– Eles também não querem compartilhar uma Eles também não querem compartilhar uma chave secreta para autenticaçãochave secreta para autenticação

Page 42: Tropyc 1 Tropyc Uma linguagem de Padrão para Software Criptográfico Bringel Filho bringel@lia.ufc.br Universidade Federal do Ceará

TropycTropyc 4242

Secrecy with IntegritySecrecy with Integrity

ProblemaProblema– Como preservar a integridade de uma Como preservar a integridade de uma

mensagem cifrada sem perder o segredo? mensagem cifrada sem perder o segredo?

Page 43: Tropyc 1 Tropyc Uma linguagem de Padrão para Software Criptográfico Bringel Filho bringel@lia.ufc.br Universidade Federal do Ceará

TropycTropyc 4343

Secrecy with IntegritySecrecy with Integrity

SoluçãoSolução– Information SecrecyInformation Secrecy + + Message IntegrityMessage Integrity– O MDC deve ser calculado sobre a O MDC deve ser calculado sobre a

mensagem original não cifradamensagem original não cifrada– Ambos, mensagem cifrada e MDC, devem ser Ambos, mensagem cifrada e MDC, devem ser

enviados para o receptorenviados para o receptor– Este padrão precisa apenas de um par de Este padrão precisa apenas de um par de

chaves pública/privada para crifragemchaves pública/privada para crifragem

Page 44: Tropyc 1 Tropyc Uma linguagem de Padrão para Software Criptográfico Bringel Filho bringel@lia.ufc.br Universidade Federal do Ceará

TropycTropyc 4444

Secrecy with IntegritySecrecy with Integrity

ConsequênciasConsequências– Substituições de mensagens podem ainda Substituições de mensagens podem ainda

fazer com que dados válidos sejam fazer com que dados válidos sejam completamente adulterados ou ter o completamente adulterados ou ter o significado modificado após a decifragemsignificado modificado após a decifragem

Page 45: Tropyc 1 Tropyc Uma linguagem de Padrão para Software Criptográfico Bringel Filho bringel@lia.ufc.br Universidade Federal do Ceará

TropycTropyc 4545

TropycTropycGeneric Object-Oriented Cryptographic Archtecture

Sender Authentication

InformationSecrecy Signature Message

Integrity

Secrecy withSender

Authentication

Signaturewith Appendix

Secrecy withIntegrity

Page 46: Tropyc 1 Tropyc Uma linguagem de Padrão para Software Criptográfico Bringel Filho bringel@lia.ufc.br Universidade Federal do Ceará

TropycTropyc 4646

Secrecy with Sender AuthenticationSecrecy with Sender Authentication

ContextoContexto– O emissor e o receptor usam criptografia com O emissor e o receptor usam criptografia com

chave pública para trocar mensagens cifradaschave pública para trocar mensagens cifradas– Um possível interceptor não pode ler o Um possível interceptor não pode ler o

conteúdo das mensagens interceptadasconteúdo das mensagens interceptadas

Page 47: Tropyc 1 Tropyc Uma linguagem de Padrão para Software Criptográfico Bringel Filho bringel@lia.ufc.br Universidade Federal do Ceará

TropycTropyc 4747

Secrecy with Sender AuthenticationSecrecy with Sender Authentication

Contexto:Contexto:

Emissor Receptor

Interceptor

Page 48: Tropyc 1 Tropyc Uma linguagem de Padrão para Software Criptográfico Bringel Filho bringel@lia.ufc.br Universidade Federal do Ceará

TropycTropyc 4848

Secrecy with Sender AuthenticationSecrecy with Sender Authentication

ProblemaProblema– Como o emissor pode autenticar a origem de Como o emissor pode autenticar a origem de

uma mensagem cifrada sem perder o uma mensagem cifrada sem perder o segredo?segredo?

Page 49: Tropyc 1 Tropyc Uma linguagem de Padrão para Software Criptográfico Bringel Filho bringel@lia.ufc.br Universidade Federal do Ceará

TropycTropyc 4949

Secrecy with Sender AuthenticationSecrecy with Sender Authentication

SoluçãoSolução– Information SecrecyInformation Secrecy + + Sender AuthenticationSender Authentication– O MAC deve ser calculado sobre a O MAC deve ser calculado sobre a

mensagem original não sobre a mensagem mensagem original não sobre a mensagem cifradacifrada

– Ambos, mensagem cifrada e MAC são Ambos, mensagem cifrada e MAC são enviados para o receptorenviados para o receptor

– A chave secreta usada para calcular o MAC A chave secreta usada para calcular o MAC deve ser diferente da usada para a cifragemdeve ser diferente da usada para a cifragem

Page 50: Tropyc 1 Tropyc Uma linguagem de Padrão para Software Criptográfico Bringel Filho bringel@lia.ufc.br Universidade Federal do Ceará

TropycTropyc 5050

Secrecy with Sender AuthenticationSecrecy with Sender Authentication

CryptographicAlgorithm

SendersendMsg()sendMAC()

ReceiverreceiveMsg()receiveMAC()

Cipher

encipher()

Verifier

verifyMAC()

Codifier

calcMAC()

Decipher

decipher()

EnchiperKey DechiperKeyHash

Algorithm

MAC=C.calcMDC(MSG)R.receiveMAC(MAC)

Ok=D.verifyMAC(MSG,MAC)return(Ok)

R

D VCiCo

SecretKey SecretKey

MSGc=Ci.encipher(MSG)R.receiveMSG(MSGc)

MSG=D.decipher(MSGc)return(MSG)

Page 51: Tropyc 1 Tropyc Uma linguagem de Padrão para Software Criptográfico Bringel Filho bringel@lia.ufc.br Universidade Federal do Ceará

TropycTropyc 5151

Secrecy with Sender AuthenticationSecrecy with Sender Authentication

ConsequênciasConsequências– O O Sender AuthenticationSender Authentication insere um novo insere um novo

passo em ambos os processos de cifragem e passo em ambos os processos de cifragem e decifragem a fim de calcular e verificar um decifragem a fim de calcular e verificar um MAC, o que pode diminuir a performanceMAC, o que pode diminuir a performance

Page 52: Tropyc 1 Tropyc Uma linguagem de Padrão para Software Criptográfico Bringel Filho bringel@lia.ufc.br Universidade Federal do Ceará

TropycTropyc 5252

Secrecy with Sender AuthenticationSecrecy with Sender Authentication

Usos conhecidosUsos conhecidos– SecrecySecrecy e e AuthenticationAuthentication podem ser podem ser

combinados a fim de manter seguros pacotes combinados a fim de manter seguros pacotes IP na InternetIP na Internet

Page 53: Tropyc 1 Tropyc Uma linguagem de Padrão para Software Criptográfico Bringel Filho bringel@lia.ufc.br Universidade Federal do Ceará

TropycTropyc 5353

TropycTropycGeneric Object-Oriented Cryptographic Archtecture

Sender Authentication

InformationSecrecy Signature Message

Integrity

Secrecy withSender

Authentication

Secrecy withSignature

Signaturewith Appendix

Secrecy withIntegrity

Page 54: Tropyc 1 Tropyc Uma linguagem de Padrão para Software Criptográfico Bringel Filho bringel@lia.ufc.br Universidade Federal do Ceará

TropycTropyc 5454

Secrecy with SignatureSecrecy with Signature

ContextoContexto– O emissor e o receptor trocam mensagens cifradas O emissor e o receptor trocam mensagens cifradas

mas eles não podem provar a autoria dessas mas eles não podem provar a autoria dessas mensagensmensagens

– Além disso um interceptor pode modificar, substituir Além disso um interceptor pode modificar, substituir ou incluir mensagens no canal de comunicação de tal ou incluir mensagens no canal de comunicação de tal forma que o emissor e o receptor não possam forma que o emissor e o receptor não possam detectar as mensagens suspeitasdetectar as mensagens suspeitas

– O emissor e o receptor já compartilham chaves para O emissor e o receptor já compartilham chaves para segurançasegurança

Page 55: Tropyc 1 Tropyc Uma linguagem de Padrão para Software Criptográfico Bringel Filho bringel@lia.ufc.br Universidade Federal do Ceará

TropycTropyc 5555

Secrecy with SignatureSecrecy with Signature

ProblemaProblema– Como o receptor pode provar a autoria de Como o receptor pode provar a autoria de

uma mensagem cifrada sem a perda do uma mensagem cifrada sem a perda do segredo, de tal forma que a integridade e segredo, de tal forma que a integridade e autenticidade da origem estejam também autenticidade da origem estejam também implicitamente assegurados?implicitamente assegurados?

Page 56: Tropyc 1 Tropyc Uma linguagem de Padrão para Software Criptográfico Bringel Filho bringel@lia.ufc.br Universidade Federal do Ceará

TropycTropyc 5656

Secrecy with SignatureSecrecy with Signature

SoluçãoSolução– Information SecrecyInformation Secrecy + + SignatureSignature– O emissor assina uma mensagem com sua O emissor assina uma mensagem com sua

chave de assinatura, cifra a mensagem chave de assinatura, cifra a mensagem assinada com a chave de cifragem do assinada com a chave de cifragem do receptor e a enviareceptor e a envia

– O receptor decifra a mensagem cifrada com O receptor decifra a mensagem cifrada com sua chave de decifragem e verifica a sua chave de decifragem e verifica a mensagem assinada com a chave de mensagem assinada com a chave de verificação do emissorverificação do emissor

Page 57: Tropyc 1 Tropyc Uma linguagem de Padrão para Software Criptográfico Bringel Filho bringel@lia.ufc.br Universidade Federal do Ceará

TropycTropyc 5757

Secrecy with SignatureSecrecy with Signature

SignatureAlgorithm

Sender

send()

Receiver

receive ()

Signer

sign()

Decipher

decipher()

Cipher

encipher()

Verifier

verify()

SignerKey VerifierKeyCryptographic

Algorithm

SGN=S.sign(MSG)SGNc=C.encipher(SGN)R.receive(SGNc)

SGN=D.decipher(SGNc)Ok=V.verify(SGN)return(Ok)

R

V DSC

EncipherKey DechiperKey

Page 58: Tropyc 1 Tropyc Uma linguagem de Padrão para Software Criptográfico Bringel Filho bringel@lia.ufc.br Universidade Federal do Ceará

TropycTropyc 5858

Secrecy with SignatureSecrecy with Signature

ConsequênciasConsequências– O O SignatureSignature pode conceder a autoria das pode conceder a autoria das

mensagens cifradas inserindo um passo mensagens cifradas inserindo um passo intermediário no processo intermediário no processo crifragem/decifragem causando uma perda de crifragem/decifragem causando uma perda de eficiênciaeficiência

Page 59: Tropyc 1 Tropyc Uma linguagem de Padrão para Software Criptográfico Bringel Filho bringel@lia.ufc.br Universidade Federal do Ceará

TropycTropyc 5959

TropycTropycGeneric Object-Oriented Cryptographic Archtecture

Sender Authentication

InformationSecrecy Signature Message

Integrity

Secrecy withSender

Authentication

Secrecy withSignature

Signaturewith Appendix

Secrecy withIntegrity

Secrecy with Signature

with Appendix

Page 60: Tropyc 1 Tropyc Uma linguagem de Padrão para Software Criptográfico Bringel Filho bringel@lia.ufc.br Universidade Federal do Ceará

TropycTropyc 6060

Secrecy with Signature with Secrecy with Signature with AppendixAppendix

ContextoContexto– Duas fontes trocam mensagens crifradas e Duas fontes trocam mensagens crifradas e

assinadas para prevenir modificação ou assinadas para prevenir modificação ou substituição e para manter sigilo e aceitação substituição e para manter sigilo e aceitação da mensagemda mensagem

– Eles precisam gerenciar os limitados recursos Eles precisam gerenciar os limitados recursos de armazenamento e processamentode armazenamento e processamento

– Além disso, as mensagens que eles trocam Além disso, as mensagens que eles trocam são muito grandes e produzem grandes são muito grandes e produzem grandes assinaturasassinaturas

Page 61: Tropyc 1 Tropyc Uma linguagem de Padrão para Software Criptográfico Bringel Filho bringel@lia.ufc.br Universidade Federal do Ceará

TropycTropyc 6161

Secrecy with Signature with Secrecy with Signature with AppendixAppendix

ProblemaProblema– Como reduzir a quantidade de memória Como reduzir a quantidade de memória

necessária para armazenar uma mensagem e necessária para armazenar uma mensagem e sua assinatura, aumentando a performance sua assinatura, aumentando a performance do sistema, sem perder o segredo? do sistema, sem perder o segredo?

Page 62: Tropyc 1 Tropyc Uma linguagem de Padrão para Software Criptográfico Bringel Filho bringel@lia.ufc.br Universidade Federal do Ceará

TropycTropyc 6262

Secrecy with Signature with Secrecy with Signature with AppendixAppendix

SoluçãoSolução– Information SecrecyInformation Secrecy + + SignatureSignature with Appendixwith Appendix– O emissor calcula um valor hash da mensagem e a assina com O emissor calcula um valor hash da mensagem e a assina com

sua chave de assinaturasua chave de assinatura– Ele então cifra a mensagem original com a chave de cifragem Ele então cifra a mensagem original com a chave de cifragem

do receptordo receptor– Ambos, mensagem cifrada e valor hash assinado são enviados Ambos, mensagem cifrada e valor hash assinado são enviados

para o receptorpara o receptor– O receptor decifra a mensagem com sua chave de decifragem e O receptor decifra a mensagem com sua chave de decifragem e

decifra o valor hash assinado com a chave de verificação do decifra o valor hash assinado com a chave de verificação do emissoremissor

– O receptor calcula um novo valor hash da mensagem e O receptor calcula um novo valor hash da mensagem e compara-o com o valor recebido do emissorcompara-o com o valor recebido do emissor

– Se eles forem iguais, a assinatura e verdadeira.Se eles forem iguais, a assinatura e verdadeira.

Page 63: Tropyc 1 Tropyc Uma linguagem de Padrão para Software Criptográfico Bringel Filho bringel@lia.ufc.br Universidade Federal do Ceará

TropycTropyc 6363

Secrecy with Signature with Secrecy with Signature with AppendixAppendix

SendersendMsg()sendSgn()

ReceiverreceiveMsg()receiveSgn()

H=E.encode(MSG)Hs=S.sign(H)R.receiveSgn(Hs)

MSG=D.decipher(MSGc)Return(MSG)

R

MSGc=C.encipher(MSG)R.receiveMsg(MSGc)

H=V.verify(Hs)Ok=Dco.decode(H,MSG)Return(Ok)

SignatureAlgorithm

Signer

sign()

Decipher

decipher()

Cipher

encipher()

Verifier

verify()

SignerKey VerifierKeyCryptographic

Algorithm

V DSC

EncipherKey DechiperKey

Encoderencode()

Decoderdecode()

Page 64: Tropyc 1 Tropyc Uma linguagem de Padrão para Software Criptográfico Bringel Filho bringel@lia.ufc.br Universidade Federal do Ceará

TropycTropyc 6464

Secrecy with Signature with Secrecy with Signature with AppendixAppendix

ConsequênciasConsequências– Novamente pequenas perdas de performance Novamente pequenas perdas de performance

devem ser desprezíveis a fim de salvar uma devem ser desprezíveis a fim de salvar uma quantidade de espaço relativamente grande e quantidade de espaço relativamente grande e reduzir a quantidade de dados transmitidosreduzir a quantidade de dados transmitidos

Page 65: Tropyc 1 Tropyc Uma linguagem de Padrão para Software Criptográfico Bringel Filho bringel@lia.ufc.br Universidade Federal do Ceará

TropycTropyc 6565

TropycTropycGeneric Object-Oriented Cryptographic Archtecture

Sender Authentication

InformationSecrecy Signature Message

Integrity

Secrecy withSender

Authentication

Secrecy withSignature

Signaturewith Appendix

Secrecy withIntegrity

Secrecy with Signature

with Appendix