Vraag:
Clientcertificaat in SSL-handshake onveilig?
ESer
2012-11-27 22:00:32 UTC
view on stackexchange narkive permalink

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?

Terwijl het certificaat in gewone lekken wordt verzonden, is de identiteit van de klant niet toegestaan ​​om de klant na te bootsen. Een certificaat is gewoon een (ondertekende) publieke sleutel, maar voor nabootsing heb je de private key nodig.
Vier antwoorden:
Thomas Pornin
2012-11-27 22:52:53 UTC
view on stackexchange narkive permalink

Het certificaat bevat alleen de openbare sleutel - dat zijn openbare gegevens. Het belangrijkste onderdeel is niet het Certificate -bericht dat de klant verstuurt, maar het CertificateVerify -bericht dat de klant ook verstuurt. Dat bericht bevat een digitale handtekening die de klant berekent met zijn privésleutel en over de eerdere handshakeberichten. De aanvaller kan alles ruiken wat hij wil, hij krijgt de privésleutel niet, die niet wordt verzonden, en hij zal geen andere handtekening kunnen berekenen die van toepassing is op een andere SSL-uitwisseling.

Ahhhh ... dus de server zal de publieke sleutel van de client gebruiken om de hash over alle voorgaande berichten te krijgen en wanneer dit dezelfde waarde is als de hash die hij zelf kan creëren, weet de server dat het de juiste client is. Begrepen ! Hartelijk bedankt
Bruno
2012-11-28 04:30:42 UTC
view on stackexchange narkive permalink

Zelfs als het clientcertificaat zichtbaar is, kan de handtekening die is gemaakt met de privésleutel niet worden vervalst. Eerdere antwoorden hebben meer details gegeven over het Certificate Verify -bericht, maar het principe van de publieke / private sleutel is hetzelfde als voor servercertificaten (of asymmetrische cryptografische mechanismen in het algemeen): als u niet over de private key, kunt u zich niet voordoen als de entiteit waaraan het certificaat is uitgegeven.

Een secundair probleem van clientcertificaatverificatie is dat, als dit wordt gedaan tijdens de eerste handshake, het certificaat zelf zichtbaar is voor de afluisteraar duidelijk. In sommige gevallen is dit misschien niet bevredigend, aangezien dit de identiteit van de gebruiker kan onthullen (bijv. CN = Bob Smith ).

Een manier om dit te verhelpen is door client -authenticatie alleen in een heronderhandelde handdruk.

AJ Henderson
2012-11-27 22:51:09 UTC
view on stackexchange narkive permalink

De klant ondertekent zijn bericht met zijn privésleutel die kan worden gedecodeerd met behulp van de openbare sleutel die openlijk wordt gedeeld en wordt vertrouwd als corresponderend met de klant. Omdat de server deze informatie kan decoderen met de openbare sleutel van de client, weet hij dat de informatie van de client afkomstig is. In het geval dat de volgende stap van de onderhandeling RSA is, is de inhoud van het pakket een deel van een sleutel die is gecodeerd met de openbare sleutel van de server, zodat alleen de server het tweede coderingsniveau kan decoderen.

Wat betreft een malafide gebruiker die het certificaat oppikt en probeert de sessie te kapen, de server heeft de openbare sleutel voor de gebruiker en de aanvaller zal geen informatie kunnen genereren die met die openbare sleutel wordt ontsleuteld, dus de verbinding is gegarandeerd dat de veroorzaker van de verbinding blijft de cliënt van de verbinding.

Als het cliëntcertificaat niet vooraf gedeeld is, zou het mogelijk zijn om te voorkomen dat een sessie met de cliënt wordt gevormd en in plaats daarvan een aanvaller te vervangen openbare sleutel, maar op dat moment zou de beoogde gebruiker niet in de sessie zijn en zou hij niet de sleutelinformatie voor de sessie hebben. Dezelfde MITM-preventie is van toepassing als normaal servercertificaat SSL na de eerste handshake, de verstrekking van een clientcertificaat garandeert eenvoudigweg dat de clientidentiteit hetzelfde blijft gedurende een of meer sessies.

user5065
2012-11-28 02:06:10 UTC
view on stackexchange narkive permalink

Ook iets anders om te overwegen. Om het certificaat van een klant illegaal te maken, hebt u een certificaat nodig dat is ondertekend door een certificeringsinstantie - het is de taak van deze instantie om in te staan ​​voor wie u bent. De klant mag alleen de certificaten vertrouwen die zijn ondertekend door een betrouwbare CA.



Deze Q&A is automatisch vertaald vanuit de Engelse taal.De originele inhoud is beschikbaar op stackexchange, waarvoor we bedanken voor de cc by-sa 3.0-licentie waaronder het wordt gedistribueerd.
Loading...