Proteção para Aplicações Web
através de Assinaturas Digitais
Marco “Kiko” Carnut, CISSP <[email protected]>
S.A.T.I.
Março/2005
Agenda
 O Encontro de Dois Problemas
Fragilidade do Documento Digital
A Fragilidade do Nome e Senha
 Certificados e Assinaturas Digitais
Chaves Públicas e Privativas
 Autenticação em Aplicações Web
Protocolo Desafio-Resposta
Documento Digital: Fácil de Forjar
 Documentos digitais são, em última instância,
longas seqüências de bits
 Modificá-los é rápido, corriqueiro, eficiente e não
deixa evidências físicas
Em geral não é possível determinar se um
documento foi feito a partir de outro nem qual
deles foi criado primeiro
Meta-dados de controle, tal como a data de
criação/modificação do arquivo, também são
documentos digitais e, portanto, fáceis de forjar
 O Medo dos Advogados (e Operadores do Direito)
Documentos Digitais  Menor Segurança Jurídica
Certificado Digital
O=FreeICP.ORG
OU=Verified Identity TEST Certification Authority
CN=Marco
MarcoCarnut
Carnut
CISSP – Diretor
[email protected]
[email protected]
www.tempest.com.br
Recife Pública (criptossistema RSA)
Chave
SHA1)
Emitente:
São Paulo Digital (RSA com hash
Assinatura
C=BR, ST=Pernambuco, L=Recife, O=Tempest Security Technologies,
e=65537,n=1422393678584169757767099738
Av. Marquês de Olinda, 126 - 5o andar 33075934827641443832364074228931158343776148908996240094
Rua Jerônimo da Veiga, 164 - 6o andar
42099845693490214573567788278071557866894234862782864842
OU=FreeICP.ORG,
CN=Verified
Identity
TEST Certification Authority
65450073964317047967537963581498770739
6545007396431704796753796358149877073
Edf. Citibank – Recife Antigo – 50.030-901 51455849200634542666561258358995507426132214943300762331
Itaim Bibi – 04.536-001
72735352209208923034348773158786975299
9727353522092089230343487731587869752
81366338592418165284224170147414022293897823647640714225
[email protected]
fone/fax: +55 81 3424.3670
fone/fax:
+55 11 3644.7249
31994119155607620122108426217561226430893455427068133155
49419316967438262954152524442271030154
9949419316967438262954152524442271030
46738202719032214613329726227611001523581952839114702966
24408026248310161052096481075828264719
1542440802624831016105209648107582826
43838056479664666109300055400808210775643032518735065622
55212814734330719191043365649478275153
4719552128147343307191910433656494782
61793490643836045444308449796374610594658997400915322105
90796308390577728115388982061569023874759615059714693126
27547373178822435050444998262398873910
7515327547373178822435050444998262398
90727810942165136600914535375858050220668032178381632165
48898863537027610940275999724385631333
8739104889886353702761094027599972438
63737476746283832612840308825648045756458529060541743815
089769833207271
5631333089769833207271
Chaves Privadas
 A toda chave pública está associada uma (e
somente uma) chave privada
Chave Pública
Chave Privada
e=65537,n=14223936785841697577
67099738654500739643170479675
37963581498770739727353522092
08923034348773158786975299494
19316967438262954152524442271
03015424408026248310161052096
48107582826471955212814734330
71919104336564947827515327547
37317882243505044499826239887
39104889886353702761094027599
9724385631333089769833207271
d=455130737264022744971121873
75821996218728416949314546946
14044858778948103863909601600
27491877618917638036708084138
39912801228572529665774876532
96263537913163056722091731362
26557927435951598580164810267
85861643971550766288990167133
657888343401183947460265117578
35001950039889837206493980062
2637320099687830497

(mentirinhaaaaa... essa não é minha
chave privada de verdade....)
 As duas nascem juntas,
a partir de certos ingredientes matemáticos,...
 Uma vez descartados esses ingredientes, não é
possível calcular uma a partir da outra!
Chaves Privadas
 Como na prática as
chaves são muito
longas, decorá-las é
inviável
 O usuário não lida com
elas diretamente – as
operações com elas são
feitas por programas
criptográficos em
nome do usuário
 Ficam armazenadas em
disco rígido, memória,
smart cards, etc.
Chave Privada
45513073726402
27449711218737582199
62187284169493145469461404
4858778948103 8639096016002
749187761891
763803670808
41383991280
12285725296
657748765329
626353791316
3056722091731 36226557927435
95159858016481026785861643
97155076628899016713
36578883434011
83947
460265
11757835
001950
03988
983720
649
39800
622637
32009968
78304
97
Assinatura Digital: Geração
Declaro para os
devidos fins que a
Empresa XYZ Ind. E
Com. Ltda está rigorosamente em dia
com todas suas obrigações junto à Secretaria da Receita
Federal.
2B0C407F
49CBA6BF
F84E96CA
12D75301
RSA
Tw+1
4+ajkwLx
kOEjYlzQ
e//qZi
1. O documento digital é inserido no
um programa criptográfico para
ser assinado. Esse programa
também cuida do armazena
mento da chave privada.
2. Gera-se um resumo matemático
que “represente” a mensagem
de forma curta e independente de seu tamanho.
3. O resumo é cifrado com a chave
privada do assinante, resultando
na assinatura digital. Como supostamente só o signatário detém
o controle de sua chave privada,
só ele poderia tê-la gerado.
4. A assinatura resultante é anexada à mensagem, ou, alternativamente, enviada em separado.
Verificação da Assinatura
Declaro para os
devidos fins que a
Empresa XYZ Ind. E
Com. Ltda está rigorosamente em dia
com todas suas obrigações junto à Secretaria da Receita
Federal.
1. O verificador computa independentemente o
resumo digital do documento.
2B0C407F
49CBA6BF
F84E96CA
12D75301
IDÊNTICOS
2B0C407F
49CBA6BF
F84E96CA
12D75301
2. O verificador usa a chave
pública do signatário
(obtida previamente de uma
fonte confiável) para
decifrar a assinatura e reaver o resumo digital originalmente calculado.
3. A assinatura será válida se
os dois resumos forem iguais; e inválida caso contrário.
Modelo Clássico de Apps Web
 Fachada: visualização e
controle (“regras de negócio”)
tipicamente um servidor web
+ linguagens de aplicação
- Apache+JServ+Java
- Apache+mod_perl+Perl
- IIS+ASP
 Retaguarda: modelo abstrato
dos dados
 tipicamente em um
Gerenciador de Banco de
Dados Relacional
- SQL Server, Postgres,
Oracle...
Autenticação Típica para Web Apps
 Cookies:
dado pequeno que o servidor pede que o navegador
salve e reapresente toda vez que contactá-lo
Na realidade, identifica o navegador, não o usuário
Freqüentemente usado para o site lembrar se
aquele navegador já o visitou antes
 Nome+senha:
Pequeno segredo que só o usuário e o servidor
deveriam conhecer
Na realidade, identifica aqueles que conhecem a
senha
Viabiliza uso em ambientes com
navegadores/computadores compartilhados
Nome+senha+cookies: Desvantagens
 O servidor deve guardar uma cópia da senha
Muitas aplicações salvam as senhas totalmente às
claras: fácil roubar a senha de outrem
Muitas aplicações gravam as senhas cifradas
evitar isso
A aplicação (e os admins por ela responsáveis)
são guardiões (“fiéis depositários”) da sua senha
 Para poder ser conferida pelo servidor, a senha
(cifrada ou não) tem de trafegar pela rede
Ataques em trânsito: Torna-se alvo fácil para
ataques de interceptação, replay, etc.
Phishing scams: É fácil convencer o usuário a
dar a senha para um atacante – basta ele fazer
um site que se pareça com o real
Desafio-Resposta via Assinatura
 Autenticação por Chaves Públicas
Desafio: Site envia um
“documento” aleatório
Resposta: O programa
criptográfico do cliente, sob
controle e permissão do usuário,
assina aquele documento
Verificação: se a assinatura
desafio
bater, o site sabe que você
detém a chave privada
correspondente àquela
Site
chave pública...
XYZ
Ltda
resposta
Pressupostos da Verificação
 Verificação: se a assinatura bater, o site sabe que
você detém a chave privada correspondente àquela
chave pública...
Essa chave pública está dentro de um certificado
digital que contém seu nome dentro de algum
sistema de identificação
Se seu certificado digital foi assinado por uma
entidade em que a aplicação confie, ela poderá
deduzir que o usuário do outro lado da linha
Vantagens
 Dispensa tabela de senhas
Substituída pela tabela de certificados digitais,
que são públicos
Podemos reconhecer o usuário apenas pelo seu
certificado digital
Não mais somos fiéis depositários de dados de
autenticação do usuário
 A senha não trafega pela rede em momento
algum
Nem jamais sai do computador do usuário
 Naturalmente mais resistente a phishing scams
Conclusões
 Ceritificação Digital e Assinaturas Digitais
provêem maior proteção para documentos
digitais e autenticação em aplicações Web
 Implementam o conceito de segurança fima-fim, onde um interceptador é impotente
para atrapalhar a transação
 Coloca a segurança mais sob controle do
usuário final; ele não mais precisa confiar
cegamente no provedor da aplicação web
Obrigado! Perguntas?
[email protected]
Download

Chave Privada - Marco "Kiko" Carnut