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

13
1/13 Como implementar autenticação e segurança de 2º Fator com Software Livre [Jose Damico – [email protected]] “Como implementar autenticação e segurança de 2º Fator com Software Livre” Julho / 2012 José Damico [email protected]

Transcript of “Como implementar autenticação e segurança de 2º Fator com...

1/13Como implementar autenticação e segurança de 2º Fator com Software Livre [Jose Damico – [email protected]]

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

com Software Livre”

Julho / 2012José Damico

[email protected]

2/13Como implementar autenticação e segurança de 2º Fator com Software Livre [Jose Damico – [email protected]]

O que é segundo fator de segurança?

Nome de usuário & Senha

Senha de uso único

Algo que você sabe

Algo que você não sabe

Algo que está em você

Algo está com você

1º Fator

2º Fator

3/13Como implementar autenticação e segurança de 2º Fator com Software Livre [Jose Damico – [email protected]]

Padronização

RFCs

IETF

HOTP (4226)

TOTP (6238)

PSKC (6030)

OATH

Specifications

OATH Reference Architecture

Initiatives

4/13Como implementar autenticação e segurança de 2º Fator com Software Livre [Jose Damico – [email protected]]

Algoritmos disponíveis● HOTP:HOTP: (RFC 4226)

● Baseado na assinatura HMAC de um contador;

● TOTP: TOTP: (RFC 6238)(RFC 6238) ● Baseado na assinatura HMAC de um contador

relacionado ao tempo;

● OCRA: OCRA: (RFC 6287) ● Baseado em HOTP e em um algoritmo de desafio-

resposta;

5/13Como implementar autenticação e segurança de 2º Fator com Software Livre [Jose Damico – [email protected]]

TOTP (RFC 6238)(RFC 6238)

HOTP(K,C) = Truncate(HMAC-SHA-1(K,C))HOTP(K,C) = Truncate(HMAC-SHA-1(K,C))

TOTP = HOTP(K, T)TOTP = HOTP(K, T)

Resposta Resposta DecimalDecimal

Segredo Segredo compartilhadocompartilhado

T = (Current Unix time - T0) / X

6/13Como implementar autenticação e segurança de 2º Fator com Software Livre [Jose Damico – [email protected]]

TOTP (RFC 6238)(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

7/13Como implementar autenticação e segurança de 2º Fator com Software Livre [Jose Damico – [email protected]]

Implementação em Javahttps://github.com/damico/JavaOTP

Show me the code

8/13Como implementar autenticação e segurança de 2º Fator com Software Livre [Jose Damico – [email protected]]

Implementação em Arduino / C++https://github.com/damico/ARDUINO-OATH-TOKEN

Show me the code

9/13Como implementar autenticação e segurança de 2º Fator com Software Livre [Jose Damico – [email protected]]

Janela de Validação

12:00:00

12:00:30

12:01:00

12:01:30

12:02:00

11:59:30

11:59:00

11:58:30

11:58:00

0

1

2

3

4

-1

-2

-3

-4

FuturoPassado

|-4| + |Current| + |+4| = 9 OTPs

Show me the code

public void TestOtpWindow()

https://github.com/damico/JavaOTP/blob/master/src/org/jdamico/tfa/oath/test/TestTotp.java

10/13Como implementar autenticação e segurança de 2º Fator com Software Livre [Jose Damico – [email protected]]

Token Serial Number

[NF][AR][00000001]

OATH prefixManufacturer token type

Manufacturer serial number

Referencial entre o usuário e sua semente.

11/13Como implementar autenticação e segurança de 2º Fator com Software Livre [Jose Damico – [email protected]]

Implementação de Tokens com PSKC

● PSKC: Portable Symetric Key Container● A xml message to import/export tokens

Show me the code

https://github.com/damico/PskcBuilder

12/13Como implementar autenticação e segurança de 2º Fator com Software Livre [Jose Damico – [email protected]]

Arquitetura

usuáriosite

autenticador

hsm

Segredo compartilhado em ambas as extremidades

em dispositivos físicos seguros

13/13Como implementar autenticação e segurança de 2º Fator com Software Livre [Jose Damico – [email protected]]

[email protected]

https://github.com/damico

@josedamico

http://br.linkedin.com/in/josedamico