“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