In questa guida, esploreremo come creare password più sicure utilizzando Python, rispetto alle tradizionali password create in modo ingenuo dalle persone. Utilizzando questa tecnica, potremo garantire una maggiore sicurezza nella gestione delle password e, soprattutto, nella loro creazione senza dover ricorrere a strumenti esterni.

Installazione:

Per installare Python sul tuo sistema operativo, segui queste istruzioni in base alla tua piattaforma:

  • Windows:
    • Visita la pagina ufficiale di Python e fai clic sul pulsante giallo “Download Python 3.x”.
    • Scarica il file del programma di installazione (ad esempio, “python-3.x.exe”).
    • Esegui il file del programma di installazione e segui la procedura guidata.
    • Se vuoi verificare se hai già Python installato, apri il CMD o la Powershell e digita il comando:
python --version 
  • Se visualizzi la versione di Python nell’output, il tuo computer è pronto per eseguire programmi Python.
  • macOS:
    • Python è preinstallato su macOS. Apri il Terminal e verifica la versione di Python con:
python --version
  • Linux (Ubuntu):
    • Python è spesso preinstallato su molte distribuzioni Linux. Verifica la presenza di Python con:
python --version
  • Se non è installato, puoi farlo tramite il gestore di pacchetti. Ad esempio, su Ubuntu:
sudo apt-get update
sudo apt-get install python3

Script python:

import random
import string

def generate_password(length):
characters = string.ascii_letters + string.digits
password = ”.join(random.choice(characters) for _ in range(length))
return password

def estimate_decryption_time(password_length):
# Supponiamo che un attaccante possa fare 1 miliardo di tentativi al secondo
attempts_per_second = 1_000_000_000
seconds_in_five_centuries = 500 * 365 * 24 * 60 * 60
total_attempts = attempts_per_second * seconds_in_five_centuries
time_to_crack = total_attempts / 2 # Dividiamo per 2 per ottenere il tempo medio
return time_to_crack

def main():
password_length = random.randint(16, 21)
password = generate_password(password_length)
print(f”Password generata: {password}”)
decryption_time = estimate_decryption_time(password_length)
years, days = divmod(decryption_time, 365 * 24 * 60 * 60)
print(f”Tempo approssimativo per decifrare: {int(years)} anni e {int(days)} giorni”)

if name == “main“:
main()

Lo script Python che ha due funzioni principali:

generate_password(length): Questa funzione genera una password casuale di lunghezza specificata. Utilizza una combinazione di lettere maiuscole, lettere minuscole e cifre. La password generata viene restituita come risultato.

estimate_decryption_time(password_length): Questa funzione stima il tempo approssimativo necessario per decifrare la password generata. Supponiamo che un attaccante possa fare 1 miliardo di tentativi al secondo per indovinare la password. Utilizzando questa stima, calcoliamo quanto tempo ci vorrebbe per esaurire tutte le possibili combinazioni di caratteri. Infine, dividiamo per 2 per ottenere il tempo medio.

Nell’esempio fornito, lo script genera una password, calcola il tempo approssimativo per decifrarla e mostra entrambi i risultati. Puoi personalizzare la lunghezza della password modificando il valore di password_length nella funzione main().

Avvio script:

Nel mio caso sto usando Windows e una volta installato python avvio il programma nel seguente modo:

python generator.py 

A questo punto, lo script genera una password con il risultato colorato in verde. Se verifichiamo la password su un sito come Kaspersky, possiamo notare quanto tempo ci vorrebbe per decifrare tale password utilizzando un computer domestico.

Controllo password:

Se desideriamo verificare se la nostra password è resistente agli hacker o ai cyber-attaccanti, possiamo visitare il sito Kaspersky Password Check. Basta copiare e incollare la password all’interno del sistema Kaspersky. Il risultato ottenuto ci indicherà se la password è sicura e quanto tempo potrebbe richiedere per violarla. 

Come notiamo, indica che la password, con un computer casalingo, può metterci più di 10.000 mila secoli. Diciamo che, oltre a questa tecnica, è consigliabile inserire anche l’autenticazione a due fattori sul profilo o indirizzo e-mail.

Come proteggere meglio le proprie password:

Per progettare password più sicure, segui queste linee guida:

  • Lunghezza: Le password più lunghe sono generalmente più sicure. Cerca di utilizzare almeno 16 caratteri o più.
  • Complessità: Mescola lettere maiuscole e minuscole, numeri e caratteri speciali (come !, @, #, $, %, ecc.).
  • Evita parole comuni: Non utilizzare parole comuni, nomi, date di nascita o sequenze di tasti (ad esempio “123456” o “qwerty”).
  • Evita sequenze o pattern: Non utilizzare sequenze di tasti come “abcd” o “1234”.
  • Password uniche: Non riutilizzare la stessa password per più account. Ogni account dovrebbe avere una password diversa.