Mi sono guardato intorno su come funziona la crittografia lato server. Grazie al documento nextcloud capisco l'implementazione.
In sostanza, quando si accede per la prima volta una coppia di chiavi viene creata e la chiave privata viene crittografata utilizzando una chiave derivata dalla password dell'utente. Quando viene creato un nuovo file, viene utilizzata una chiave simmetrica e tale chiave viene crittografata con la chiave pubblica e può essere decifrata solo con la chiave privata.
Quando vuoi leggere quel file, fai il login, la chiave privata viene decifrata dalla chiave derivata dalla password (e salvata in memoria), quindi la chiave simmetrica viene decifrata (quindi puoi decifrare il file).
Ma sto usando l'autenticazione a due fattori sul server, con un Yubikey. Quindi, quando voglio un client desktop per connettermi al mio prossimo, uso una password per l'app. Come viene decrittografata la chiave privata quando utilizzo il client desktop nextcloud con una password per l'app? Inoltre, la password dell'utente non è memorizzata in testo normale. Forse la password dell'app è derivata dalla password dell'utente, ma come?
Modifica: non sto guardando in che modo la tecnica viene implementata in Nextcloud in particolare, solo a una spiegazione generale su come può essere fatto.