Senhas e chaveiros
Vitor Mattos
incremente sua segurança
Fotografem, comentem, twittem!
@VitorMattosRJ







Quem sou eu?
Desenvolvedor PHP desde 2003
Amante de opensource
Evangelista PHP
PHP Zend Certified Engineer ( ZEND024235 )
PHPRio ( https://telegram.me/phprio )
CTO Lyseon Tech
Redes sociais: ( VitorMattos ou VitorMattosRJ )
A Lyseon Tech é uma cooperativa de trabalho com modelo de gestão democrática, segura e eficiente composta por profissionais de T.I. altamente qualificados e experientes no mercado. Prezamos por apresentar vantagens, tanto para o cooperado como para as empresas parceiras.

Cronograma
Tentarei ser breve :-D
- Introdução / definições
- Aplicações web
- hash
- oAuth
- 2FA
- Políticas de senhas
- Criando senhas
- Chaveiros de senhas
- KeePass
O que é uma senha?
Password
*
*
*
*
*
*
*
*
O que é secreto?
Dados sensíveis

Dados sensíveis
Não versione!

Aplicações web
Armazenamento: hash
Definição: "transformação de uma grande quantidade de dados em uma pequena quantidade de informações"
Função de mão única
Mensagem
Entrada
0101001001010101010010101010101011110010101001010010101001010100101...
função hash
10101101
Saída
Tamanho fixo
plain/text, base64, md5, sha1
INSERT INTO login (username, password)
VALUES ('admin', '123456');mysql_query("INSERT INTO login (username, password)
VALUES ('admin', '".base64_encode('12345678')."')");mysql_query("INSERT INTO login (username, password)
VALUES ('admin', '".md5('12345678')."')");mysql_query("INSERT INTO login (username, password)
VALUES ('admin', '".sha1('12345678')."')");
Rainbow Table
Definição: "Uma rainbow table é uma tabela de consulta de hashes pré calculados."

Evitando Rainbow Table
Evitando Rainbow Table

password_hash
php > for($i=1;$i<=3;$i++)
php > echo password_hash("Vitor Mattos", PASSWORD_DEFAULT)."\n";$2y$10$iDT0scwr0cP28mb.J0edvOKmmHdGfonvQcnrlQnc6M0BIUoZQ/waW$2y$10$Dmfc8Dc9ohV2lKnOjk5IxehCos6AayVx/vvgz78MuIy9KaxVKuChe$2y$10$rVlAfjB3CX8ZmwjCT8boL.Wi8pFMsUZzTkA5XDSsTNbzBa2vvZ3xCvar_dump(password_verify(
"Vitor Mattos",
"$2y$10$Dmfc8Dc9ohV2lKnOjk5IxehCos6AayVx/vvgz78MuIy9KaxVKuChe"
));Criando hash
Validando hash
trueCorrigindo o problema
if ($hash == md5($_POST['password'])) {
$hash = password_hash(
$_POST['password'],
PASSWORD_DEFAULT
);
$db->exec(
"UPDATE login SET password = ? WHERE user = ?"
);
}Bruteforce

hashcat is the world’s fastest and most advanced password recovery tool.
This version combines the previous CPU-based hashcat (now called hashcat-legacy) and GPU-based oclHashcat.
Cluster GPU

25 GPUs brute force 348 billion hashes per second to crack your passwords
Cálculo de complexidade
Entropia: "média de informação transmitida por um evento, quando se considera todos os resultados possíveis"

Bruteforce
Bruteforce
Senhas complexas e pequenas só são difíceis de decorar, mas continuam sendo simples de quebrar.
Resolvendo o problema de bruteforce em aplicações web ...
oAuth

oAuth
Segurança
"Facebook hackeado: ataque atinge 50 milhões de usuários"
2018-09-28


oAuth
Privacidade

2FA, 3FA, 4FA, ..., nFA

2FA, 3FA, 4FA, ..., nFA
Quem aceita?

2FA, 3FA, 4FA, ..., nFA
Token SMS

2FA, 3FA, 4FA, ..., nFA
TOTP, o que é?
"Time-based One-Time Password algorithm (TOTP)"

2FA, 3FA, 4FA, ..., nFA
Hardware de TOTP

2FA, 3FA, 4FA, ..., nFA
Hardware de TOTP: riscos

2FA, 3FA, 4FA, ..., nFA
TOTP no celular

2FA, 3FA, 4FA, ..., nFA
TOTP no celular: riscos

Prefira sempre HTTPS

Política de senhas

Política de senhas

Desculpe, sua senha deve conter uma letra maiúscula, dois números, um símbolo, uma mensagem inspiradora, um feitiço, um sinal de gangue, um hieróglifo e o sangue de uma virgem.
Política de senhas
Limite máximo

Criando senhas
Vazamento











Criando senhas
Vazamento: senhas comuns

Criando senhas
Vazamento: toda senha deve ser forte
Criando senhas
trate sua senha como sua escova de dentes
Escolha uma boa
Nunca compartilhe
Troque com certa frequência
Criando senhas
Evite:
- informações pessoais
- redes sociais revelam senhas
- observadores
Criando senhas
Evite: anotar senhas

Criando senhas
Evite: salvar em arquivos abertos
/*/senhas.txt
/*/password.txt
/*/senhas.xlsx
Criando senhas
Faça:
- passphrase
- senhas únicas
- caracteres especiais e aleatórios
- distribuição de proporcional de caracteres
- senhas longas
- mude se alguém criou
Senhas geradas por humanos
- baixa entropia
- Memória humana falha

Segurança x Conveniência

Chaveiros de senhas:
O que são?

Chaveiros de senhas:
porque usar?
Senhas grandes - entropia
Senhas únicas
Não perder senhas
Ocupar a mente com o que é importante
Onde usar?

Navegadores

Aplicações desktop


Terminal
Celular
Chaveiros de senhas:
Riscos: Salvar no navegador
- Nem sempre se tem backup
- Extensões maliciosas
- Alguém pode usar seu pc
Chaveiros de senhas:
Riscos: Chaveiro na nuvem

Chaveiros de senhas:
Riscos: Terceiros guardarem suas senhas
Google e outros serviços de chaveiro online proprietários

OpenSource



4 liberdades do software livre
Liberdade nº 0: A liberdade para executar o programa, para qualquer propósito;
Liberdade nº 1: A liberdade de estudar como o programa funciona, e adaptá-lo para as suas necessidades. Acesso ao código-fonte é um pré-requisito para esta liberdade;
Liberdade nº 2: A liberdade de redistribuir de forma que você possa ajudar o seu próximo;
Liberdade nº 3: A liberdade de modificar o programa, e liberar estas modificações, de modo que toda a comunidade se beneficie. Acesso ao código-fonte é um pré-requisito para esta liberdade;
Chaveiros livres: KeePass





Clientes
KeePass

Primeira versão livre
Escrito em .NET
É multiplataforma.
Funciona em sistemas Linux mas precisa do Mono, fica meio feio
Clientes
KeePassX

Como o nome já diz, cross platform.
Problema: o projeto está meio abandonado, o mantenedor não aceita Pull Request faz um tempo
Clientes
KeePassXC

Um fork do KeePassX...
Só que mantido pela comunidade, este aceita PR e é um projeto bem ativo.
Clientes
Celular

Para iPhone, nunca usei, nem quero usar. 😜
Clientes
Celular
- Interface bem amigável
- Teclado exclusivo
(facilita muito) - Aceita plugins
- Desbloqueio biométrico
(nunca testei) - Sincronismo da base de dados com vários lugares diferentes
- Pode abrir várias bases de dados simultaneamente
- Autocomplete ( Andriod >= 8)

Criando o primeiro chaveiro

Criando o primeiro chaveiro
Configurações de criptografia

Senha mestre
- Troque de vez em quando
- Esta deve ser complexa
- Multifator
- Bloquear chaveiro ao bloquear máquina
- Cuidado com pessoas observando
- Não confie em sua memória, tenha alguém de confiança para backup da senha
Senha mestre
Use em computadores seguros:
Keyloggers

Onde salvar?
Sincronismo







Proprietários
Criando a base de dados
Diferentes bases para diferentes fins
- Clientes
- Empresa A
- Empresa B
- Pessoais
- Outras pessoas
Novo registro
O que salvar no chaveiro?
- Senhas (dãããhh)
- Dados de documentos
- Dados de cartões
- Anotações secretas diversas
- Chaves de SSH
- Outras chaves de autenticação
- Mapa do tesouro
Novo registro
Geração de senhas

Novo registro
Campos extras

Novo registro
Importação de senhas

Autotype
Tecla de atalho
CTRL+SHIFT+V
Autotype
Tecla de atalho global
Autotype
Tecla de atalho global


Autotype
Sequência configurável
TOTP


Integrando com navegador

Integrando com navegador

Integrando com navegador
Nas configurações do navegador:
- Desabilitar autocomplete
- Desabilitar de salvar senhas
ssh-agent

1 - Criar uma senha para a chave privada e copiar
ssh-agent
2 - Gerar uma chave SSH com a senha copiada
~$ ssh-keygen -t rsa -b 4096 -o -f id_rsa -C user@email.com
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in id_rsa.
Your public key has been saved in id_rsa.pub.
The key fingerprint is:
SHA256:/0AquhdSloVxKketevMFRknU+UgniQI4OxWzZOv2HHg user@email.com
The key's randomart image is:
+---[RSA 4096]----+
| .*oo*++ o |
| oo.=oo* * . |
| ++ o* . = |
| o. += o . . |
| .++E.S.. |
| .o++. +. |
| o++..o |
| .... o |
| oo . |
+----[SHA256]-----+ssh-agent
2 - Anexar o arquivo id_rsa no KeePass

ssh-agent
3 - Informar onde está a chave privada e utilizar a pública

ssh-agent
3 - Informar onde está a chave privada e utilizar a pública
~$ ssh-add -l
4096 SHA256:6hKPtN8/Kb9ZUz12rRwevxHf2qdvJ8x4b6fB3fS2oOk user@email.com (RSA)
~$ git clone git@github.com:vitormattos/crack-password-calc.git
Cloning into 'crack-password-calc'...
remote: Enumerating objects: 67, done.
remote: Counting objects: 100% (67/67), done.
remote: Compressing objects: 100% (56/56), done.
remote: Total 67 (delta 23), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (67/67), 26.59 KiB | 41.00 KiB/s, done.
Resolving deltas: 100% (23/23), done.
Temas
1 - Instalar o qt5ct
sudo apt install qt5ct2 - Exportar a seguinte variável:
OBS: pode colocar no arquivo ~/.profile
export QT_QPA_PLATFORMTHEME="qt5ct"3 - Execute o programa qt5ct e escolha um tema
PHP

Referências
https://keepassxc.org/
https://keepass.info/
https://wpengine.com/unmasked/
https://en.wikipedia.org/wiki/List_of_data_breaches
https://github.com/hashcat/hashcat
https://php.net/password_hash
The life


Obrigado!
Podem fazer perguntas durante o evento
Redes sociais:
( VitorMattos ou VitorMattosRJ )



