“Como implementar autenticação e segurança de 2º Fator com Software Livre”
Julho / 2012
José Damico
[email protected]
Como implementar autenticação e segurança de 2º Fator com Software Livre [Jose Damico – [email protected]]
1/13
O que é segundo fator de segurança?
1º Fator
Nome de usuário & Senha
Algo que você sabe
Algo que está em você
Senha de uso único
Algo que você não sabe
Algo está com você
2º Fator
Como implementar autenticação e segurança de 2º Fator com Software Livre [Jose Damico – [email protected]]
2/13
Padronização
IETF
RFCs
HOTP (4226)
Initiatives
TOTP (6238)
PSKC (6030)
OATH
Specifications
OATH Reference Architecture
Como implementar autenticação e segurança de 2º Fator com Software Livre [Jose Damico – [email protected]]
3/13
Algoritmos disponíveis
●
HOTP: (RFC 4226)
●
●
TOTP: (RFC 6238)
●
●
Baseado na assinatura HMAC de um contador;
Baseado na assinatura HMAC de um contador
relacionado ao tempo;
OCRA: (RFC 6287)
●
Baseado em HOTP e em um algoritmo de desafioresposta;
Como implementar autenticação e segurança de 2º Fator com Software Livre [Jose Damico – [email protected]]
4/13
TOTP
(RFC 6238)
Resposta
Decimal
HOTP(K,C) = Truncate(HMAC-SHA-1(K,C))
TOTP = HOTP(K, T)
Segredo
compartilhado
T = (Current Unix time - T0) / X
Como implementar autenticação e segurança de 2º Fator com Software Livre [Jose Damico – [email protected]]
5/13
TOTP
●
(RFC 6238)
Parâmetros iniciais:
●
Seed: Semente ou segredo compartilhado. Array de
bytes de 16 à 20 posições gerado a partir de um
algoritmo de derivação de chaves;
●
T0: Contador inicial de tempo
●
Time interval: Intervalo de geração de OTPs
●
Epoch Time: Tempo na representação epoch
●
Size: Comprimento da resposta do OTP
Como implementar autenticação e segurança de 2º Fator com Software Livre [Jose Damico – [email protected]]
6/13
Implementação em Java
https://github.com/damico/JavaOTP
Show me
the code
Como implementar autenticação e segurança de 2º Fator com Software Livre [Jose Damico – [email protected]]
7/13
Implementação em Arduino / C++
https://github.com/damico/ARDUINO-OATH-TOKEN
Show me
the code
Como implementar autenticação e segurança de 2º Fator com Software Livre [Jose Damico – [email protected]]
8/13
Janela de Validação
https://github.com/damico/JavaOTP/blob/master/src/org/jdamico/tfa/oath/test/TestTotp.java
Show me
the code
public void TestOtpWindow()
12:00:00
11:59:30
11:59:00
11:58:30
11:58:00
-1
0
12:00:30
1
-2
12:01:00
2
-3
12:01:30
3
-4
12:02:00
4
Passado
Futuro
|-4| + |Current| + |+4| = 9 OTPs
Como implementar autenticação e segurança de 2º Fator com Software Livre [Jose Damico – [email protected]]
9/13
Token Serial Number
Referencial entre o usuário e
sua semente.
[NF][AR][00000001]
OATH prefix
Manufacturer
token type
Manufacturer
serial number
Como implementar autenticação e segurança de 2º Fator com Software Livre [Jose Damico – [email protected]]
10/13
Implementação de Tokens com PSKC
●
PSKC: Portable Symetric Key Container
●
A xml message to import/export tokens
https://github.com/damico/PskcBuilder
Show me
the code
Como implementar autenticação e segurança de 2º Fator com Software Livre [Jose Damico – [email protected]]
11/13
Arquitetura
hsm
usuário
site
autenticador
Segredo compartilhado
em ambas as extremidades
em dispositivos físicos seguros
Como implementar autenticação e segurança de 2º Fator com Software Livre [Jose Damico – [email protected]]
12/13
Obrigado!
[email protected]
https://github.com/damico
@josedamico
http://br.linkedin.com/in/josedamico
Como implementar autenticação e segurança de 2º Fator com Software Livre [Jose Damico – [email protected]]
13/13
Download

“Como implementar autenticação e segurança de 2º