Stel dat we een toepassing hebben die probeert een veilige verbinding met een server tot stand te brengen door middel van SSL. Nu willen we dat de gebruiker zichzelf verifieert met een clientcertificaat dat hij opslaat in een beveiligde sleutelopslag.
Dus als ik deze specificatie goed lees, verzendt de server zijn certificaat tijdens de handshake protocol en is in staat om een certificaat van de klant te vragen met een certificaatverzoek, als dat nodig is. Nu stuurt de gebruiker zijn certificaat naar de server, net zoals de server dat eerder deed, wat betekent in platte tekst aangezien er nog geen sleutels zijn uitgewisseld.
Wat ik nu niet krijg, is dat als het clientcertificaat in platte tekst wordt verzonden en het certificaat is niet gebonden aan een specifiek apparaat en de openbare sleutel van de client in het certificaat wordt niet gebruikt om de symmetrische sleutel te genereren die later wordt gebruikt voor versleuteling, waarom is het niet mogelijk voor een aanvaller om het handshake-protocol tussen de client en de server, ervan uitgaande dat hij zich in hetzelfde draadloze netwerk bevindt als zijn slachtoffer? Zo kon hij het clientcertificaat zien, kopiëren en zelfstandig gebruiken.
Dus hoe wordt dit scenario voorkomen? Natuurlijk zou de aanvaller sommige gegevens van het certificaat niet kunnen wijzigen omdat hij niet de privésleutel heeft waarmee het certificaat is ondertekend, maar zou het niet voldoende zijn om het certificaat te kopiëren om de identiteit van zijn slachtoffer te stelen? ontbreekt hier? Is het certificaat toch aan het apparaat gebonden? Maar ik dacht dat dit niet zou gebeuren, omdat het alleen wat informatie bevat over de cliënt zelf en zijn publieke sleutel.
Ik dacht dat het een beter idee zou zijn om het cliëntcertificaat te sturen na het handshake-protocol wanneer een symmetrische sleutel is uitgewisseld en de applicatiegegevens zijn versleuteld. Ik weet dat u ook aanvullende gebruikersreferenties kunt gebruiken, zoals een gebruikersnaam en een wachtwoord, maar ik heb het nu alleen over de beveiliging van het clientcertificaat.
Dus wat denkt u?