DOMANDA Differenza tra psw generata da password manager e psw generata da programma personale

Hero467

Utente Attivo
689
404
OS
I use ARCH btw
Salve a tutti,
leggendo discussioni qui sul forum mi è sorta una domanda spontanea: prendendo solo in considerazione l’opzione che un eventuale hacker provi a craccarmi la password, c’è differenza in termini di sicurezza tra una fatta dal password manager di Kaspersky e una fatta dal mio generatore di password creato in Python?
 

Hero467

Utente Attivo
689
404
OS
I use ARCH btw
Il programma permette di generare password di lunghezza arbitraria con simboli, numeri, lettere maiuscole e minuscole, utilizzando il modulo random. La domanda era se una psw generata da Kaspersky lunga 14 caratteri fosse più sicura di una generata dal mio programma sempre di 14 caratteri, contando che l’hacker non abbia modo di accedere al mio programma
 

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,223
1,853
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed
Dovresti riportare il codice, giusto per avere un'idea. 😉

Ad ogni modo no, se è davvero "pseudo random" e utilizza numeri, simboli, lettere maiuscole e minuscole, non ci sono differenze.

L'unica differenza che probabilmente ci sarà, è che nel tuo caso la password non sarà univoca (o meglio: potrebbe non esserlo). Con questo intendo dire che un Password manager che fa lo store di N password, sa quali password ha generato. Se fai uno script che genera solo una password, non hai la storia delle precedenti, quindi può capitarne anche una doppia.

Ah, se stai pensando al creare un pwd manager, ti direi di evitare, se non a scopo di "studio".
 

Hero467

Utente Attivo
689
404
OS
I use ARCH btw
Per il codice posso postarlo oggi pomeriggio, perché al momento non sono a casa.

Per il problema dell’unicità hai ragione, visto che il mio non è un password manager (non ancora almeno), ma la probabilità che escano due password uguali con 96 (mi sembra sia questo il numero di caratteri che ho usato) alla 14a combinazioni è infinitesimale. Per farti capire ho impostato il programma per generare continuamente password con numeri, lettere e simboli finché non ne trovasse una specifica, e dopo due ore l’ho dovuto interrompere perché si stava surriscaldando il processore, e la password in questione era 11 caratteri, quindi meno sicura di una di 14 con simboli
 

Dumah Brazorf

Utente cAttivo
Utente Èlite
7,591
3,532
Il programma permette di generare password di lunghezza arbitraria con simboli, numeri, lettere maiuscole e minuscole, utilizzando il modulo random.
Eh, adesso ne sappiamo di più. Prima poteva anche scrivere 12345 per quel che ne sapevamo.
Massì dai che va bene.
L'unica disquisizione temperasupposte possibile è sulla reale randomicità del random di python, se googli trovi qualcosa, ma stiamo parlando di 14caratteri mica la tua data di nascita...
 

Hero467

Utente Attivo
689
404
OS
I use ARCH btw
Si, ho letto qualcosa, ma lo stesso principio dovrebbe valere anche per un generatore professionale, in quanto entrambi usano algoritmi per generare numeri casuali. Che gli algoritmi possano essere diversi e che quello di Kaspersky possa essere più complesso per fare reverse engineering non lo metto in dubbio, ma nessuno dei due è casuale veramente
 

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,223
1,853
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed
Per il codice posso postarlo oggi pomeriggio, perché al momento non sono a casa.

Va bene. 😉

Si, ho letto qualcosa, ma lo stesso principio dovrebbe valere anche per un generatore professionale, in quanto entrambi usano algoritmi per generare numeri casuali. Che gli algoritmi possano essere diversi e che quello di Kaspersky possa essere più complesso per fare reverse engineering non lo metto in dubbio, ma nessuno dei due è casuale veramente

Si, i generatori saranno comunque pseudo-casuali.
Il discorso del rischio non è tanto quello di indovinare una password (puoi generarla a caso anche premendo tasti sulla tastiera, se lo fai senza alcuna logica) nel caso di uno password manager, ma il fatto di non salvarle in modo sicuro o peggio ancora scrivere un'applicazione non sicura in sè (dove reversandola si riesce a bypassare un controllo e che ti fa vedere tutte le pwd).

Il discorso rimane ancor più valido se usi un linguaggio che non è nemmeno compilato (e se non lo offuschi). Per questo dicevo che a scopo didattico va benissimo, ma al posto tuo non lo utilizzerei comunque per cose serie.
 

Hero467

Utente Attivo
689
404
OS
I use ARCH btw
(dove reversandola si riesce a bypassare un controllo e che ti fa vedere tutte le pwd).
ma per reversarla si dovrebbe comunque ottenere una copia del programma originale (inteso cioè il programma di quell’utente in particolare), visto che un programma del genere sarebbe eseguito solo in locale, quindi questo implica che hai accesso al computer della vittima, e questo è possibile solo se hai violato tale dispositivo o se hai la possibilità di un accesso fisico, e a quel punto tanto vale immettere un trojan o uno spyware per monitorare direttamente tutto il pc, senza bisogno di reversare il osa manager, perché a quel punto potresti aprirlo direttamente.

Il discorso rimane ancor più valido se usi un linguaggio che non è nemmeno compilato (e se non lo offuschi). Per questo dicevo che a scopo didattico va benissimo, ma al posto tuo non lo utilizzerei comunque per cose serie.
Ecco, questo è un argomento che mi affascina molto, ma di cui non so letteralmente niente. Come si offusca del codice?
 

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,223
1,853
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed
ma per reversarla si dovrebbe comunque ottenere una copia del programma originale (inteso cioè il programma di quell’utente in particolare), visto che un programma del genere sarebbe eseguito solo in locale, quindi questo implica che hai accesso al computer della vittima, e questo è possibile solo se hai violato tale dispositivo o se hai la possibilità di un accesso fisico, e a quel punto tanto vale immettere un trojan o uno spyware per monitorare direttamente tutto il pc, senza bisogno di reversare il osa manager, perché a quel punto potresti aprirlo direttamente.

Si, il problema è proprio questo: come le salvi poi le password? Su un file di testo cifrato? Non sei sicuro che in caso di malware quel file sia sicuro. E in caso di un ransom ad esempio, rischi di perdere le password.

Ecco, questo è un argomento che mi affascina molto, ma di cui non so letteralmente niente. Come si offusca del codice?

Ci sono dei tool, come questo: https://github.com/davidteather/python-obfuscator
O questo: https://pypi.org/project/pyarmor/

Insomma, c'è sempre modo di deoffuscarli (ad esempio scrivendo qualcosa e offuscando con il medesimo tool).

Da questo punto di vista un linguaggio compilato da più filo da torcere, specie se si usano protezioni, e ne esistono parecchie.
 

Hero467

Utente Attivo
689
404
OS
I use ARCH btw
Si, il problema è proprio questo: come le salvi poi le password? Su un file di testo cifrato? Non sei sicuro che in caso di malware quel file sia sicuro. E in caso di un ransom ad esempio, rischi di perdere le password.
Appunto, la mia considerazione riguardava però il fatto che se uno riesce ad accedere al programma, riuscirebbe anche ad accedere a tutto il pc, sessione di chrome compresa. Quindi o prendi le psw direttamente da li o fai mille altre cose. Era per dire che il programma sarebbe l'ultimo dei tuoi problemi.

Ci sono dei tool, come questo: https://github.com/davidteather/python-obfuscator
O questo: https://pypi.org/project/pyarmor/

Insomma, c'è sempre modo di deoffuscarli (ad esempio scrivendo qualcosa e offuscando con il medesimo tool).

Da questo punto di vista un linguaggio compilato da più filo da torcere, specie se si usano protezioni, e ne esistono parecchie.
Interessante, me lo studierò
 

Hero467

Utente Attivo
689
404
OS
I use ARCH btw
Mi sono appena ricordato di postare il codice, eccolo qui:
Python:
from tkinter import *
from random import *



def generate_password(*args):
    global error
    global psw_return

    try:
        error.destroy()
    except:
        pass

    ALL_ASCII = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!"£$%&/()=?^*+[]ç@°#§;,:.-_<>'
    ASCII_WITHOUT_SYMBOLS = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890'
    psw_list = []

    try:
        for i in range(int(lenght_entry.get())):
            if symbols_var.get() != False:
                carachter = choice(ALL_ASCII)
                psw_list.append(carachter)
            else:
                carachter = choice(ASCII_WITHOUT_SYMBOLS)
                psw_list.append(carachter)

        psw = ''.join(psw_list)

        psw_return = Entry()
        psw_return.insert(END, psw)
        psw_return.place(relx=.315, rely=.7)
    except:
        try:
            psw_return.destroy()
        except:
            pass

        error = Label(text='Error: lenght field may be unfilled or filled with a non-valid character')
        error.place(relx=.03, rely=.7)

def fun(*args):
    if symbols_var.get():
        symbols_check.deselect()
    else:
        symbols_check.select()


window = Tk()
window.title('Password Generator')
window.geometry('480x270')
window.resizable(False, False)


lenght_var = StringVar()

lenght_text = Label(text='Lenght:', font=('Ubuntu', 13))
lenght_entry = Entry(width=3, textvariable=lenght_var)

lenght_text.place(relx=.37, rely=.1)
lenght_entry.place(relx=.55, rely=.1)


symbols_var = BooleanVar(value=True)

symbols_check = Checkbutton(text='Symbols', variable=symbols_var)
symbols_check.place(relx=.4, rely=.3)

gen_psw = Button(text='Generate Password', command=generate_password)
gen_psw.place(relx=.33, rely=.5)


window.bind('<Return>', generate_password)
window.bind('<Control-s>', fun)



if __name__ == '__main__':
    window.mainloop()

C'è inquinamento di tkinter, ma essenzialmente è questo
 

Andretti60

Utente Èlite
6,440
5,091
Il tuo codice va bene, se lo usi “tanto per provare”
Comunque Python ha il Secret package che è fatto apposta per generare password, in caso tu sia interessato.

In generale, password generate automaticamente non sono più sicure di una password creata a mano purché sia ben fatta, il problema è che sono difficili da digitare e occorre per forza usare un password manager che memorizza nel cloud in modo che sia accessibile da ogni dispositivo che si usa.
 

Hero467

Utente Attivo
689
404
OS
I use ARCH btw
Quindi non mi consigliate di utilizzarlo per rimpiazzare tutte le mie password? Le caricherei lo stesso su un gestore professionale (BitWarden)
 

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,223
1,853
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed
Quindi non mi consigliate di utilizzarlo per rimpiazzare tutte le mie password? Le caricherei lo stesso su un gestore professionale (BitWarden)

Io sinceramente rimango della mia precedente opinione: è molto meglio se usi uno strumento creato apposta, un password manager. Considera che viene anche cifrato tutto.

Per altro quei password manager hanno estensioni per i browser e tutto quanto, quindi sono molto comodi.

Il tuo script può andar bene se vuoi impratichirti con il linguaggio o per utilizzi simili, ma non affiderei le mie credenziali a quello. Possono andare storte molte cose e rischi di rimanere senza password.
 
  • Mi piace
Reazioni: Andretti60

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili