Upgrade to Pro — share decks privately, control downloads, hide ads and more …

como funcionam as senhas e por que não funciona...

como funcionam as senhas e por que não funcionam: tentando resolver um problema sem solução

Slides da palestra "como funcionam as senhas e por que não funcionam: tentando resolver um problema sem solução" apresentada na CryptoRave 2024, no dia 11/05/2024.

yyyyyyyan

May 11, 2024
Tweet

More Decks by yyyyyyyan

Other Decks in Technology

Transcript

  1. como funcionam as senhas e por que não funcionam @yyyyyyyan

    / @yyyyyyy07492366 yan orestes software developer (tentando resolver um problema sem solução)
  2. nunca armazene senhas em texto plano! ⚠ ↪ e se

    seu banco de dados vazar? não faça apostas ↪ usuários tendem a reutilizar senhas em diferentes plataformas ❌
  3. o que é uma função hash? ↪ algoritmo de mapeamento

    ↪ recebe um valor de entrada com tamanho arbitrário ↪ retorna um valor de saída com tamanho fixo - digest/soma ↪ deve ser rápida de se calcular ↪ não há garantia de que valores de saída iguais correspondam a valores de entrada iguais https://en.wikipedia.org/wiki/Hash_function
  4. função hash criptográfica 1. modificar o valor de entrada sem

    alterar a hash de saída 2. determinar o valor de entrada a partir da hash de saída 3. encontrar dois valores de entrada que geram a mesma hash de saída deve ser extremamente difícil de: cryptographic hash function
  5. problemas restantes 1. usuários usam poucas senhas e senhas simples

    demais 2. funções hash são iguais em todo lugar 3. funções hash são facilmente calculadas
  6. tabela hash senha hash digest (md5) 00 240181530756648252419641605934510424179 01 200234402242227250667150127387849862099

    02 216577201069318744982597237570303239213 ... ... 99 229138548907862643092856609226723050075 hash table
  7. tabela arco-íris 01 H 200234402242227250667150127387849862099 R 99 99 H 229138548907862643092856609226723050075

    R 75 75 H 277289179729312395903094935180405519811 R 11 11 H 134349327668835346876933282647662472650 R 50 50 H 256249087116017178292043637459846421514 R 14 rainbow table
  8. tabela arco-íris 02 68 04 54 05 40 06 42

    10 46 17 03 18 57 21 33 22 12 23 11 25 46 26 85 27 33 30 38 31 50 37 74 39 51 49 12 52 16 58 11 60 50 63 96 64 11 66 62 67 74 77 12 78 11 81 57 83 43 84 43 86 54 87 74 88 38 90 54 91 75 92 12 94 03 98 54 p r p r p r p r
  9. tabela arco-íris 02 68 04 54 05 40 06 42

    10 46 17 03 18 57 21 33 22 12 23 11 25 46 26 85 27 33 30 38 31 50 37 74 39 51 49 12 52 16 58 11 60 50 63 96 64 11 66 62 67 74 77 12 78 11 81 57 83 43 84 43 86 54 87 74 88 38 90 54 91 75 92 12 94 03 98 54 p r p r p r p r
  10. tabela arco-íris 02 68 04 54 05 40 06 42

    10 46 17 03 18 57 21 33 22 12 23 11 25 46 26 85 27 33 30 38 31 50 37 74 39 51 49 12 52 16 58 11 60 50 63 96 64 11 66 62 67 74 77 12 78 11 81 57 83 43 84 43 86 54 87 74 88 38 90 54 91 75 92 12 94 03 98 54 p r p r p r p r
  11. tabela arco-íris 91 H 111834828427044464997583789365696746132 R 32 32 H 132117099947440863086225782187112663809

    R 09 09 H 13957014806325298886391986709069375046 R 46 46 H 289548202804218369273708443831392368399 R 99 99 H 229138548907862643092856609226723050075 R 75 240181530756648252419641605934510424179
  12. tabela arco-íris ☹ 91 H 111834828427044464997583789365696746132 R 32 32 H

    132117099947440863086225782187112663809 R 09 09 H 13957014806325298886391986709069375046 R 46 46 H 289548202804218369273708443831392368399 R 99 99 H 229138548907862643092856609226723050075 R 75 240181530756648252419641605934510424179
  13. tabela arco-íris 240181530756648252419641605934510424179 R 79 79 H 279127965852212042158562975737410652375 R 75

    r na tabela? ❌ 75 h no caminho? ❌ H 277289179729312395903094935180405519811 R 11 11 r na tabela?
  14. tabela arco-íris 02 68 04 54 05 40 06 42

    10 46 17 03 18 57 21 33 22 12 23 11 25 46 26 85 27 33 30 38 31 50 37 74 39 51 49 12 52 16 58 11 60 50 63 96 64 11 66 62 67 74 77 12 78 11 81 57 83 43 84 43 86 54 87 74 88 38 90 54 91 75 92 12 94 03 98 54 p r p r p r p r
  15. tabela arco-íris 240181530756648252419641605934510424179 R 79 79 H 279127965852212042158562975737410652375 R 75

    r na tabela? ❌ 75 h no caminho? ❌ H 277289179729312395903094935180405519811 R 11 11 r na tabela? ✅ 23 11 58 11 64 11 78 11
  16. tabela arco-íris 23 H 73653967884445055195080758170312354509 R 09 09 H 13957014806325298886391986709069375046

    R 46 46 H 289548202804218369273708443831392368399 R 99 99 H 229138548907862643092856609226723050075 R 75 75 H 277289179729312395903094935180405519811 R 11 240181530756648252419641605934510424179 ☹
  17. tabela arco-íris 58 H 136828743031992740684846204241313544089 R 89 89 H 157220607454102675501137493357688321846

    R 46 46 H 289548202804218369273708443831392368399 R 99 99 H 229138548907862643092856609226723050075 R 75 75 H 277289179729312395903094935180405519811 R 11 240181530756648252419641605934510424179 ☹
  18. tabela arco-íris 64 H 311523190134827763482847747636510740789 R 89 89 H 157220607454102675501137493357688321846

    R 46 46 H 289548202804218369273708443831392368399 R 99 99 H 229138548907862643092856609226723050075 R 75 75 H 277289179729312395903094935180405519811 R 11 240181530756648252419641605934510424179 ☹
  19. tabela arco-íris 78 H 71719428482804011558600081903487337809 R 09 09 H 13957014806325298886391986709069375046

    R 46 46 H 289548202804218369273708443831392368399 R 99 99 H 229138548907862643092856609226723050075 R 75 75 H 277289179729312395903094935180405519811 R 11 240181530756648252419641605934510424179 ☹
  20. tabela arco-íris 240181530756648252419641605934510424179 R 79 79 H 279127965852212042158562975737410652375 R 75

    r na tabela? ❌ 75 h no caminho? ❌ H 277289179729312395903094935180405519811 R 11 11 h no caminho? ❌ H 134349327668835346876933282647662472650 R 50 50 r na tabela?
  21. tabela arco-íris 02 68 04 54 05 40 06 42

    10 46 17 03 18 57 21 33 22 12 23 11 25 46 26 85 27 33 30 38 31 50 37 74 39 51 49 12 52 16 58 11 60 50 63 96 64 11 66 62 67 74 77 12 78 11 81 57 83 43 84 43 86 54 87 74 88 38 90 54 91 75 92 12 94 03 98 54 p r p r p r p r
  22. tabela arco-íris 240181530756648252419641605934510424179 R 79 79 H 279127965852212042158562975737410652375 R 75

    r na tabela? ❌ 75 h no caminho? ❌ H 277289179729312395903094935180405519811 R 11 11 h no caminho? ❌ H 134349327668835346876933282647662472650 R 50 50 r na tabela? ✅ 31 50 60 50
  23. tabela arco-íris 31 H 257093072706249247234947985073233030901 R 01 01 H 200234402242227250667150127387849862099

    R 99 99 H 229138548907862643092856609226723050075 R 75 75 H 277289179729312395903094935180405519811 R 11 11 H 134349327668835346876933282647662472650 R 50 240181530756648252419641605934510424179 ☹
  24. temperando nossa hash: sal 🧂 senha entrada da função hash

    hash digest (md5) senha123 senha123 e7d80ffeefa212b7c5c55700e4f7193e senha123 senha123 e7d80ffeefa212b7c5c55700e4f7193e salt
  25. senha entrada da função hash hash digest (md5) senha123 senha123

    e7d80ffeefa212b7c5c55700e4f7193e senha123 senha123 e7d80ffeefa212b7c5c55700e4f7193e senha sal entrada da função hash hash digest (md5) senha123 yN+$IcdRJb senha123yN+$IcdRJb cb64b87374b53373d9af6b301b257c69 senha123 AA'!OPix-O senha123AA'!OPix-O 4dee1f255bf1d1ba7f2ac8dae1483bae temperando nossa hash: sal 🧂
  26. salting é uma técnica efetiva de defesa contra ataques de

    pré-computação contanto que: 1. o valor do sal não seja reutilizado entre os usuários 2. o valor do sal seja longo o bastante
  27. problemas restantes 1. computadores estão cada vez mais rápidos 2.

    ataques estão cada vez mais modernos e se um atacante tiver acesso ao banco de dados?
  28. hashes de senha e funções de derivação de chave 01.3

    password hash functions; key derivation functions (kdf)
  29. função de hash de senha 1. argon2id ◦ m=47104 (46

    MiB), t=1, p=1 ◦ m=19456 (19 MiB), t=2, p=1 ◦ m=12288 (12 MiB), t=3, p=1 ◦ m=9216 (9 MiB), t=4, p=1 ◦ m=7168 (7 MiB), t=5, p=1 3. bcrypt ◦ work factor = 10 ◦ nota: tamanho máximo de entrada é 72 bytes 2. scrypt ◦ N=2^17 (128 MiB), r=8 (1024 bytes), p=1 ◦ N=2^16 (64 MiB), r=8 (1024 bytes), p=2 ◦ N=2^15 (32 MiB), r=8 (1024 bytes), p=3 ◦ N=2^14 (16 MiB), r=8 (1024 bytes), p=5 ◦ N=2^13 (8 MiB), r=8 (1024 bytes), p=10 4. pbkdf2-hmac-sha256 ◦ 600.000 iterações
  30. evite regras estáticas (ou sobre a farsa da senha complexa)

    • sua senha deve conter pelo menos 8 caracteres • sua senha deve conter pelo menos uma letra maiúscula (A-Z) e um número (0-9) • sua senha deve conter pelo menos um símbolo (@, !, …) • sua senha não pode conter uma sequência de 3 caracteres iguais
  31. evite regras estáticas (ou sobre a farsa da senha complexa)

    expectativa WGG3#GgIUk"qE%W1_=>W gr!vz8!`qDyZC%9k8 w.=%i<D_]5,:a"OKef+B,xw
  32. evite regras estáticas (ou sobre a farsa da senha complexa)

    expectativa realidade WGG3#GgIUk"qE%W1_=>W gr!vz8!`qDyZC%9k8 w.=%i<D_]5,:a"OKef+B,xw Senh@123 M4rquinhos! P@nqu3ca
  33. evite regras estáticas (ou sobre a farsa da senha complexa)

    segurança às custas da usabilidade vem às custas da segurança “ ” Regra de Usabilidade do AviD
  34. liberte-se do ascii 2 3 4 5 6 7 30

    40 50 60 70 80 90 100 110 120 ------------- --------------------------------- 0: 0 @ P ` p 0: ( 2 < F P Z d n x 1: ! 1 A Q a q 1: ) 3 = G Q [ e o y 2: " 2 B R b r 2: * 4 > H R \ f p z 3: # 3 C S c s 3: ! + 5 ? I S ] g q { 4: $ 4 D T d t 4: " , 6 @ J T ^ h r | 5: % 5 E U e u 5: # - 7 A K U _ i s } 6: & 6 F V f v 6: $ . 8 B L V ` j t ~ 7: ' 7 G W g w 7: % / 9 C M W a k u DEL 8: ( 8 H X h x 8: & 0 : D N X b l v 9: ) 9 I Y i y 9: ' 1 ; E O Y c m w A: * : J Z j z B: + ; K [ k { C: , < L \ l | D: - = M ] m } E: . > N ^ n ~ F: / ? O _ o DEL
  35. dê suporte a gerenciadores de senha ⤷ evite invenções no

    formulário de login ⤷ permita a ação de colar (ctrl-v) no formulário de login ⤷ permita navegação com tab pelo formulário de login
  36. biometria ☹ ⤷ único para cada indivíduo ⤷ conveniente e

    fácil de usar ⤷ cada vez mais usada ⤷ irreversível e imutável ⤷ problemas de privacidade ⤷ falsos positivos e negativos
  37. openid/oauth ☹ ⤷ auth delegada ⤷ menos senhas para usuário

    ⤷ controles de acesso granulares ⤷ auth delegada ⤷ implementação complexa ⤷ risco de phishing
  38. links mágicos ☹ ⤷ menos senhas para usuário ⤷ conveniente

    e fácil de usar ⤷ acesso temporário ⤷ depende de segurança terceira ⤷ depende de entrega terceira ⤷ risco de phishing
  39. senha de uso único ☹ ⤷ menos senhas para usuário

    ⤷ conveniente e fácil de usar ⤷ acesso temporário ⤷ depende de dispositivo externo ⤷ risco de intercepção ⤷ risco de phishing
  40. autenticação de múltiplos fatores ↪ algo que você sabe (senha,

    pin) ↪ algo que você tem (otp, chave de hardware, certificado, sms) ↪ algo que você é (biometria, ip, localização, geofencing) ↪ algo que você faz (profiling, movimentos de mouse)
  41. login ↪ "senha incorreta" ↪ "usuário não encontrado" ↪ "usuário

    desativado" ❌ ✅ ↪ "usuário ou senha inválidos"
  42. recuperação de senha ↪ "te enviamos um email com o

    link de recuperação" ↪ "esse email não existe em nosso banco de dados" ❌ ✅ ↪ "se essa conta estiver registada, enviaremos um email para recuperação"
  43. rate limiting mecanismo de defesa contra ataques de negação de

    serviço ⤷ definir limites mínimo e máximo de taxa de transferência de dados ⤷ definir tempo máximo de conexão aberta ⤷ definir limite máximo de requisições a um mesmo serviço
  44. login throttling número máximo de tentativas de login até bloqueio

    da conta ⤷ relativo à conta, não ao ip ⤷ tempo de bloqueio pode ser fixo ou exponencial ⤷ use rate limits para evitar bloqueios propositais da conta de terceiros