I am trying to consider the feasibility of implementing an encrypted file sharing system, which both provides forward secrecy but also allows public key verification. I am stuck on the marriage between these two requirements that hopefully someone can help me out with.
In order to provide forward secrecy, I think a new random keypair should be generated for every file transfer request rather than two users sharing long-term public keys in advance. That way, if a private key for a particular file share is somehow compromised, it would only compromise that one file and not all of the files ever sent from that user.
However, the creation of a new keypair for every file share introduces a problem with public key verification. Traditionally speaking, the fingerprint of a public key should be verified in person and would remain verified for the lifetime of the keypair. If a new keypair is generated for every file share, then that means each new public key needs to be verified in person, which is infeasible.
Is it possible to utilize unique keypairs for every file share for forward secrecy while also securely verifying a public key is sent from the correct user only once?
Note that the system is meant for asynchronous file transfer, meaning the encrypted data would be uploaded to the cloud temporarily until downloaded by the recipient. However, file share requests would include a mandatory expiration date.