I see that there are some APIs which exchange some sort public keys to
secure the content of https connection using asymmetric encryption. Is
there any added benefit to this? As far as I know, it should be
impossible to man in the middle a tls connection which have
certificate pinning.
Leggi come funziona l'intero protocollo TLS, è un ottimo articolo disponibile qui: Come funziona SSL / TLS?
In poche parole le chiavi pubbliche vengono utilizzate per consentire l'autenticazione del contenuto crittografato mediante chiavi simmetriche (chiavi derivate come parte dell'handshake del protocollo).
Gli attacchi Man in the middle non vengono sempre mitigati a causa del blocco dei certificati. Ad esempio, se il browser non ha mai visitato il sito prima che un utente malintenzionato possa restituire il proprio certificato che non menziona nulla sul pinning.
The benefit of end to end encryption is clear when the content is sent
from an end user to another end user, making the backend server unable
to read it.
No. Protegge solo i dati in transito, quando arriva sul server qualsiasi cosa su quel server potrebbe in teoria vedere i dati.
But I have seen some example where it's just sending data to the
backend (end client to end backend), but some kind of asymmetric
encryption was applied.
For example AWS S3 allows client to encrypt data before sending it. I
read somewhere that Akamai might also encrypt the content. I have also
seen some institutions which needs to use their card/keys to encrypt
the content.
S3 consente la crittografia asimmetrica lato client. Il che significa che il tuo computer locale sta crittografando i dati prima di inviarli ad AWS. Questo significa solo che tu, nemmeno AWS, puoi vedere il contenuto dei file. Questo serve per proteggere i dati a riposo, non i dati in transito.
So back to my question, is there actually any benefit of encrypting
content using some means (either RSA, or some device), and sending it
over TLS with certificate pinning?
Dipende dall'accettazione del rischio e dai requisiti di conformità. Ma sì, la crittografia dei dati non autentica i dati da sola. Se invii qualcuno a un file crittografato, come fanno a sapere che in realtà proviene da te? Qualcuno potrebbe aver usato la tua chiave. La crittografia SSL / TLS ma autentica anche la connessione, quindi sai che stai davvero "parlando" al punto finale in cui hai iniziato la comunicazione. Il blocco del certificato aggiunge la certezza che stai ottenendo lo stesso certificato che hai fatto l'ultima volta, e quindi meno probabilità di essere coinvolto in un uomo nell'attacco centrale.