Are TLS session keys cached in a browser?
Sì, a volte, ma non come stai descrivendo.
La risposta in linea più semplice per te è "Sì, le sessioni vengono memorizzate nella cache fino alla chiusura del browser." Questo non è assolutamente vero o vero in tutti i casi, ma è una convinzione ragionevolmente sicura per te basare le tue azioni su
when authenticating to a TLS protected service, and then closing the
tab, you can sometimes reconnect to the service afterwards without
re-authenticating.
Quello che stai descrivendo qui è che ti sei autenticato a una web application con cui hai navigato usando una connessione TLS. A meno che non ti sia stato richiesto di fornire un certificato client per la prima volta, l'autenticazione non è per TLS, è per l'app.
Probabilmente quell'app sta usando i cookie, e quei cookie significano che quando torni in un'altra scheda, ti riconosce e non devi autenticarti di nuovo. A seconda della configurazione, questo stato autenticato potrebbe persistere anche dopo la chiusura e il riavvio del browser, la sospensione del sistema e la modifica dell'indirizzo IP! Ho avuto sessioni web autenticate che funzionano su entrambi i lati di un giorno di viaggio aereo.
(Anche se ti è stato richiesto un certificato client ... i browser ricorderanno il tuo certificato selezionato e lo ripresenteranno come necessario fino a quando non chiudi il browser. La chiusura della scheda non influirà su questo.)
In preservation of perfect forward secrecy, the key should be deleted
after the session terminates. Does the session only "terminate" when
the browser closes, or is there a "Time To Live"-like expiration on
session keys not in use?
Realisticamente, l'accelerazione fornita da ripresa della sessione supera il potenziale negativo del riutilizzo delle chiavi: tenere presente che la maggior parte delle transazioni HTTP sono sorprendentemente piccole, mentre PFS diventa un problema pratico più grande con protocolli come IPSec che andranno avanti per giorni / settimane / mesi e scambiano grandi quantità di dati. p>
Quindi, in termini pratici, i browser ricorderanno gli ID di sessione TLS recenti e li useranno per provare e abbinare il processo di negoziazione TLS. La chiusura di una scheda non li farà dimenticare (anche se la chiusura del browser probabilmente lo farà). Sono usati in modo invisibile; l'uso di uno riduce 4-8 pacchetti di back-and-forth quando si imposta TLS e quindi accelera la connessione.
Ma - ancora - questo non ha nulla a che fare con l'autenticazione che potresti vedere, e si svolge in silenzio, dietro le quinte.
Il "time-to-live" è determinato sia dal client (che deve ricordare l'ID della sessione) che dal server (che deve anche ricordare l'ID della sessione). C'è un buon articolo qui che parla di come modificare la cache per vari server per limitare la quantità di sessioni passate che sarebbero state compromesse se il server fosse stato compromesso.
E questo interessante la risposta suggerisce che Chrome e Opera memorizzano le chiavi di sessione fino al riavvio del browser (o in altre situazioni limitate).