LastPass One Time Recovery Passwords - Come?

6

Il gestore password LastPass memorizza le password One Time Recovery localmente in ciascun browser in cui utilizzi il plug-in:

link

La mia domanda è, come puoi avere più di una password?

Pensavo che LastPass abbia derivato la chiave di crittografia dalla tua password principale utilizzando una variante di PBKDF2 e poi crittografato i tuoi dati con questa chiave di crittografia localmente con AES. Non c'è spazio in questo scenario per più password, a meno che i dati non vengano crittografati più volte. E come possono abilitare o disabilitare gli OTP a meno che non siano archiviati in qualche modo lato server? Ha solo un odore davvero di pesce. Se la chiave di crittografia per i miei dati non esce mai dal mio computer, non riesco a capire come una password oltre alla mia password principale possa consentire l'accesso al mio vault della password a meno che non ci sia qualcosa che LastPass non ci dice e la crittografia locale Javascript è tutto fumo e specchi. .

Aggiorna

Ho contattato LastPass e mi hanno indicato una spiegazione qui: link

    
posta John 27.02.2013 - 16:23
fonte

3 risposte

7

LastPass memorizza, sul server, un "vault" che è una raccolta di dati, crittografata con una chiave derivata dalla "password principale". Chiamiamo K quella chiave. Normalmente, K viene ricostruito sul computer locale ricalcandolo dalla password principale. Tuttavia, lo stesso tasto K potrebbe anche essere memorizzato sul server, questa volta crittografato con una chiave di ripristino K r , permettendo la ricostruzione di K da chiunque conosca K r . La "password di recupero una tantum memorizzata nel browser" sarebbe quella K r (la chiamano "password" ma l'utente non la digita, quindi può essere una grassa sequenza di byte casuali, qualcosa di solito noto come "chiave").

Con un tale sistema, il vault può essere espanso con un "blob di recupero" che è E K r (K) . La generazione di un blob di recupero richiede la conoscenza di K , quindi deve essere avvenuta sul sistema client, poiché LastPass non conosce K o la password principale. Ciò corrisponde all'idea che la password di ripristino una tantum sia specifica per il browser.

Se è possibile memorizzare un "blob di recupero", è possibile memorizzare anche blob di recupero diversi . Quando l'utente vuole preparare il suo browser per un potenziale recupero successivo, fa in modo che il suo browser generi un nuovo K r casuale, memorizzandolo nel interiora del browser e calcolo del blob di ripristino (l'utente digita la sua password principale, il browser ricalcola K e esegue la crittografia con K r ). Il blob di recupero viene quindi inviato ai server di LastPass per l'archiviazione. LastPass non ha mai imparato K o la password principale o una qualsiasi delle "password di ripristino una tantum".

Quello che ho descritto sopra è un'implementazione plausibile . Non posso garantire ciò che LastPass effettivamente fa.

Un punto da prendere, tuttavia, riguarda "una tantum" . Quello è puro marketing. Non c'è nulla di intrinsecamente "una tantum" in ciò che ho descritto. Ciò che intendono è che il server rifiuterà di inviare un determinato blob di recupero all'utente più di una volta. Presumibilmente, quando un utente si connette e richiede il download di un blob di recupero, il server LastPass lo rimanda indietro e allora lo distrugge dalla sua parte. Questo è tutto relativo al livello di conformità di LastPass a questa routine di distruzione dei dati.

(Non può esserci nulla di una tantum in un sistema a meno che parti del sistema non applichino alcune modifiche di stato che l'utente malintenzionato non può ripristinare.Questo è generico.)

    
risposta data 27.02.2013 - 16:58
fonte
1

Potrebbero utilizzare un sistema simile a Impostazione chiave unificata Linux (LUKS), comunemente usata per crittografare partizioni HDD sotto Linux. Anche LUKS viene solitamente distribuito con PBKDF2 e AES, come nella tua domanda.

Con LUKS, i dati vengono crittografati in Master Key , che viene quindi crittografato una volta per ogni User Key . Le chiavi utente sono generate da uno o più User Passwords e ciascuna memorizzata singolarmente. In questo modo, puoi utilizzare una qualsiasi delle password per fornire la chiave master e decrittografare i dati.

Questo è tutto spiegato in dettaglio nella sezione "Panoramica" del pdf linkato sopra.

Puoi anche dare chiavi diverse a persone diverse e revocare l'accesso alle persone senza dover cambiare alcuna chiave / password.

    
risposta data 27.02.2013 - 16:38
fonte
0

Ho tentato di mettere insieme le varie informazioni su questa funzione.

What is the difference between "Login OTPs" and "Recovery OTPs"?

Login OTPs:

Login OTPs or One Time Passwords can be generated on this page: https://lastpass.com/otp.php You can print off these passwords and carry them with you. Each one time password in that list can then be used to log in to LastPass via https://lastpass.com/otp.php - the idea is that if you are on an untrusted computer, and do not want to enter your Master Password because of a keylogger threat, you can use the OTP. It expires after you use it, but allows you to log in without entering your Master Password. These are portable, and are not local to the device where they are generated. The list can be accessed anywhere when you log in at https://lastpass.com/otp.php where you can generate and print more. They are not to be used for account recovery.

Recovery OTPs:

Users do not have direct access to recovery OTPs. These are bits of data that are stored automatically by the browser add-on. When you use the LastPass browser add-on, the add-on generates an OTP that is derived from the Master Password and stores it in the browser's LastPass files. It will stay there until you go through account recovery in that specific browser where the OTP was generated and stored. If you do the recovery process (https://lastpass.com/recover.php) it will try to "call up" that OTP, and allow you to immediately reset your password if it detects that the OTP was stored in the browser.

OTPs are local to specific browsers and one OTP should be generated for each browser, on each computer, where you use LastPass. Recovery OTPs are not portable, they are stored in the specific browser's file, so recovery can only be done on a browser where you have used your LastPass account before. When you next log in to your account after you've reset your Master Password, new OTPs are generated for the browser the next time you login.

*** Note: All OTPs are derived from the master password that is current to the account when they are created. Changing the master password in any way, even through a revert, will cause the OTPs to not function.

From https://lastpass.com/support.php?cmd=showfaq&id=4616

Poi sono stati pubblicati altri dettagli tecnici in questa discussione sul forum LastPass :

...

What we actually do is far more complicated:

  • Create a completely random 128-bit number
  • Make the random key out of the username and the random password as a hash
  • Make a random hash from your username and random password, send this to the server, this will be how we can tell you entered the right 32 digits of hex to allow you to download your encrypted data later
  • Encrypt your actual key with the new random_key, so we can retrieve it when random password is entered later, send this to the server

Basically we recursed our entire process using a 128-bit key that's randomly created.

The safety of this is very high, especially if you turn over your OTPs -- a full 128-bit key to encrypted data which gets wiped once you use it.

There is one minor regret here, but it came about because we needed to implement it on a time-line: we're using the same 128-bit OTP process for the stored password recovery hash -- there's no reason that couldn't be 256 bit (or even longer) since you're not typing it in. We'll hopefully get around to fixing this at some point, but 128-bit AES is still exceptionally strong and it would be the end of the universe before it's brute forced .... time is on our side here.


I hope I understand it now. I'll just repeat for clarity:

In simplified words (in terms of what data is sent and what is used locally), when I ask for an OTP,

  • Random OTP is created locally
  • temp_key = hash(username + OTP)
  • Username + hash(OTP) is sent to the server
  • encrypt(master_password, temp_key) is sent to the server

Thus, neither my master password nor OTP nor temp_key is ever sent to the server.

When I am using the OTP,

  • I enter my username and OTP
  • Username + hash(OTP) is sent to the server for authorization
  • You then send me the encrypted database and the temp_key-encrypted master_password
  • temp_key is recreated locally from username and OTP
  • Master password is locally decrypted
  • Database is locally decrypted
  • You delete the used Username + hash(OTP) value so that this OTP cannot be used for authorization any more.

So basically we are dealing with OTP-encrypted master password.

Is this correct? Then I don't understand how an OTP can be revoked. If you have sent me the OTP-encrypted master_password, and I have entered the OTP locally, someone key-logging on the local machine can save both values and decrypt the master_password later? You will not allow second authorization with the same OTP, but the person has already obtained the master password! Where am I wrong?


Not entirely -- to try to put it in a simple way the OTP creates a hash, which that hash then verifies if the OTP is still valid on the server and if so allows download of random data that can then be combined with the OTP locally (remember the OTP wasn't sent to the server just the hash) to create your key.

Yes if your OTP is valid on the server and is used it's too late -- your key is now local too -- but if you say lose your OTP list you can run to the server and invalidate them all before the person has a chance to use them.

From https://forums.lastpass.com/viewtopic.php?f=12&t=22959&p=87289

Questo aiuta, ma LastPass non sembra aver fornito dettagli di implementazione chiari o conferma dopo questo post.

    
risposta data 01.09.2017 - 02:25
fonte

Leggi altre domande sui tag