Os administradores de sistemas e os desenvolvedores de software encontram diversas necessidades em que a geração de senhas aleatórias e seguras se torna necessária.
Posso destacar algumas delas:
- Criar usuários no sistema operacional;
- Resetar senhas de usuários;
- Instalar máquinas virtuais, ou VPS, com o usuário root, além de um usuário de suporte;
- Gerar senhas aleatórias para sites na internet;
- Dentre diversas outras.
Para essas atividades em que serão geradas senhas, deve-se levar em consideração alguns pontos, já que a senha é a porta de entrada para as contas on-line do administrador, do desenvolvedor, ou de seus clientes. Ela costuma ser a última barreira que protege os dados e, muitas vezes, até mesmo as informações confidenciais de diversas empresas. Por isso, em ambientes digitais, é de suma importância ter uma senha consistente, que dificulte ela ser quebrada por hackers.
Quanto maior a senha, melhor
Todos, com certeza, já devem ter ouvido ou lido, sobre a quantidade de caracteres que fazem uma senha segura. Especialistas recomendam que o mínimo necessário para criar uma senha segura é de doze caracteres. Isto é recomendado por conta dos softwares utilizados pelos usuários mal intencionados para quebrar as senhas.
Programas deste tipo utilizam a poder de hardware do PC para decifrar os códigos. Quanto maior a senha, mais poder de processamento é exigido e mais tempo é necessário para que o software seja eficiente. Utilize senhas grandes!
Caracteres especiais
Apenas uma senha grande não costuma garantir a proteção de uma conta on-line. Então, é importe a inclusão de caracteres especiais na hora de gerar uma senha. O motivo é justamente o software que tem a função de decifrar senhas, como exposto anteriormente.
Com a inclusão de caracteres especiais, este programa precisa se esforçar muito mais para conseguir ter um resultado satisfatório. Além dos caracteres especiais, para dificultar ainda mais de ser decifrada, a senha deve conter letras maiúsculas, minúsculas e números, como neste exemplo: OXF-9em@V8CuTo!V.
Engenharia Social
Um tipo de senha bastante utilizada, é mesclando datas de nascimento e nomes do usuário ou de familiares, como o sobrenome, apelido ou o nome do bichinho de estimação. Além disso, muitas pessoas utilizam números de documentos nas senhas, por ser mais fácil de memorizar, sendo este um grande erro.
Estes métodos de elaboração de senha são bastante perigosos, já que essas informações podem ser descobertas por usuários mal intencionados, utilizando táticas de Engenharia Social. Por isso, quando for criar uma senha, não utilize informações que sejam fáceis de serem descobertas!
Memorização
Do que adianta gerar uma senha bem elaborada e segura, se não conseguimos lembrar dela? Uma técnica interessante pode ser utilizada quando for criar uma senha, é mesclar letras iniciais de frases marcantes, utilizando os caracteres especiais para identificar qual serviço a senha pertence. Por exemplo: @Eh0DdAeATnPp3C.
No caso, utilizei o caractere @ para identificar que era uma senha de e-mail e o restante da senha, as letras iniciais da frase "É hoje o dia da alegria e a tristeza não pode pensar em chegar".
Outra forma, como a que eu utilizo, é utilizar um software para armazenar seus usuários e senhas. Eu particularmente utilizo o
KeePass Password Safe, o
KeePassX e o
KeePassXC Password Manager, embora conheça muitas pessoas que utilizem o
LastPass ou o
1Password.
Site que verifica a força da senha
Muitas vezes, criamos uma senha que pensamos ser realmente segura e nos enganamos. A Intel, além de outros fornecedores, tem um site onde é possível verificar o quanto a senha demoraria em ser quebrada. A senha abc12345 demoraria apenas 0.0002 segundos para ser decifrada. Já a senha @Eh0DdAeATnPp3C, que utilizamos como exemplo, seria necessário mais de um milhão de anos para ser descoberta.
Script em Python para gerar senhas
Existem diversas formas de gerarmos senhas aleatórias com uma boa segurança. Abaixo, um script em
Python que utilizo em meus servidores:
"""
Gerar senhas em Python, com letras, números, símbolos e outras variações
-
Diego Mendes Rodrigues
"""
import secrets
import string
import uuid
def gerar_senha_letras(comprimento):
"""Gerar uma senha com letras, com o comprimento informado
:param comprimento: Comprimento da senha
:return: Senha gerada
"""
password_characters = string.ascii_letters
password = ''.join(secrets.choice(password_characters) for i in range(comprimento))
return password
def gerar_senha_letras_numeros(comprimento):
"""Gerar uma senha com letras e números, com o comprimento informado
:param comprimento: Comprimento da senha
:return: Senha gerada
"""
password_characters = string.ascii_letters + string.digits
password = ''.join(secrets.choice(password_characters) for i in range(comprimento))
return password
def gerar_senha_letras_numeros_simbolos(comprimento):
"""Gerar uma senha com letras, números e símbolos, com o comprimento informado
:param comprimento: Comprimento da senha
:return: Senha gerada
"""
password_characters = string.ascii_letters + string.digits + string.punctuation
password = ''.join(secrets.choice(password_characters) for i in range(comprimento))
return password
def gerar_senha_hexadecimal(metade_comprimento):
"""Gerar uma senha hexadecimal, sendo o comprimento igual o dobro
:param metade_comprimento: Comprimento da senha
:return: Senha gerada
"""
password = secrets.token_hex(metade_comprimento)
return password
def gerar_senha_uuid():
"""Gerar uma senha com UUID com 36 caracteres
:return:
"""
password = uuid.uuid4()
return password
if __name__ == '__main__':
"""Função principal do script que gera senhas em Python"""
senha = gerar_senha_letras(16)
print(senha)
senha = gerar_senha_letras_numeros(16)
print(senha)
senha = gerar_senha_letras_numeros_simbolos(16)
print(senha)
senha = gerar_senha_hexadecimal(12)
print(senha)
senha = gerar_senha_uuid()
print(senha)
Segue um exemplo de resultado:
- zEmCDAwzcjTHERyE
- fkNGi7K0FY1Vxlzs
- Asf|H;{fFY-/K,bK
- ee3d4ed996a5690a16fe028f
- b7f1c2b4-5eb4-497d-a0f4-fe9ba99d6f2f
Conclusão
Scripts em Python podem ajudar usuários
Linux, ou administradores de sistemas em diversas rotinas e automações que envolvam a criação de novas senhas, ou senhas aleatórias.
Qual método para gerar senhas você utiliza?