Zoals ik al meermalen heb aangegeven, encryptie kan prima ZONDER certificaat.
Dat ontken ik ook niet, en dat snap ik.
Maar enkel encryptie is niet het enige belangrijke.
Zoals ik al meermalen heb aangegeven, encryptie kan prima ZONDER certificaat. Gewoon met een public/private keypair. Zo gebeurt dat bij SSL ook, alleen is dan een certificaat verplicht. Dat laatste, dat zou anders kunnen.
Maar
hoe dan?
Een encrypted verbinding is altijd beter dan een unencrypted verbinding
Mwah, ik snap het punt wel "het is in ieder geval encrypt"; maar dat is niet het enige dat belangrijk is.
En leuk dat het encrypt is, maar als je niet eens zeker weet of het certificaat wel te vertrouwen is en wel toebehoort aan de persoon/server met wie je wil babbelen: dan heb je toch geen garanties en kan je niets controleren? Waarom zou je dan zomaar je data overpompen...?
En daar komen we aan bij het volgende punt:
De validatie van certificaten is alleen dan relevant wanneer het van groot belang is dat jij exact met wie jij versleuteld communiceert.
Het is altijd enorm van belang. (Nouja, misschien niet op "localhost"; maar dat zijn weer van die uitzondering.)
Je wilt toch altijd weten of je wel versleuteld communiceert met wie jij wilt communiceren, en niet bijvoorbeeld met sjaakie die gezellig in 't midden is gaan zitten?? Iemand anders had 't net over de NSA; hoe controleer je of dat self-signed certificaatje dan niet door hen in 't midden er tussen is geknikkerd? Dat gaat een beetje lastig zonder CA.
1.) De CA is de partij die trusted is om te controleren of een certificaat klopt, waar moet zonder hen die controle dan uitgevoerd worden...?
2.) Je kan een self-signed certificaat wel handmatig accepteren, maar hoe weet je bij de initiele exchange dan of het wel te vertrouwen is; en dat de public key correct is?
Wat is er zo veilig aan een self-signed encrypted verbinding, als je het certificaat niet eens kan controleren?
Jaja, I know: het encrypt het verkeer; en voor lokale beveiliging is dat allemaal leuk en aardig; maar je weet nog steeds niet zeker met wie je nou eigenlijk aan 't praten bent... Dus welke garantie heb je dan? Wil je dat handmatig gaan doen, dan heb je nogal een usability probleem.
Een fundamenteel onderdeel van SSL is het kunnen vertrouwen van de verbinding. Bij self-signed is dat gewoon niet het geval.
En derhalve spuugt je browser een error uit. En ja, ik ben 't helemaal eens dat HTTP verkeer een zelfde waarschuwing moet weergeven (rood open slotje oid); maar dat is eigenlijk weer een ander probleem dat weinig te maken heeft met de CA opzet.
Om SSL te kunnen vertrouwen moet die derde partij er aan te pas komen, zo simpel is het. Zo is het gebouwd... En dat is een erg slimme opzet.
Dit impliceert dus dat je de andere partij ook daadwerkelijk kent en vertrouwd.
Absoluut niet. Het stelt enkel dat het SSL certificaat en de uitgewisselde key valide is.
Dat zegt helemaal *niets* over de betrouwbaarheid van de partij met wie je communiceert. (Alhoewel als het OV of EV is, dan weet je in ieder geval wel dat er veel moeite en geld in gepompt is.)
Dat een mailtje met de link "https://rabobank-login-herstellen.nl/login.php" egt dat ik dit heel snel moet inloggen, met een prachtig SSL certificaatje, betekend niet dat ik hen ken, betekend niet dat ik hen vertrouw, en het impliceert niets. (Trouwens, rabobank.nl zelf ken ik ook niet; ik weet niet wie die servers beheren, ik ken de bankiers niet, et cetera.)
Het enige dat de controle oplevert is dat je communiceert met wie jij wil communiceren (in dit geval een phising link

). Dat zegt dus wel dat het certificaat valide is en dat jij dus babbelt met wie je wilde bereiken; maar het garandeert op geen enkele wijze dat de partij met wie je babbelt te vertrouwen valt, je data goed behandeld, et cetera.
Natuurlijk kan je daar bij veel partijen wel vanuit gaan (eg: bank.); maar het SSL zelf wordt daar niet per definitie voor ingezet: die zorgt enkel voor de authenticatie/integrity en encryptie. De inhoud van de communicatie en wat er verder met die data gedaan wordt is je eigen probleem; doch bij legitieme en bekende sites is dat vertrouwen meestal niet misplaatst en kun je veilig je gang gaan.
Deze controle is derhalve belangrijk bij alle SSL verbindingen zodat je gewoon weet of een certificaat wel te vertrouwen is.
En als dat niet met zekerheid gesteld kan worden (self-signed): dan kan er niets anders gedaan worden dan een foutmelding te geven.
Anders kan je net zo goed alles self-signed maken, als er toch geen controle plaatsvindt en nooit foutmeldingen worden gegeven.

Dat ondermijnt het hele systeem, en dan wordt een trust creeeren een behoorlijk opgave.
Ik bedoel, jij zegt bijvoorbeeld:
De validatie van certificaten is alleen dan relevant wanneer het van groot belang is dat jij exact met wie jij versleuteld communiceert
Maar hoe moet een CA, of het HTTPS protocol an sich, weten wanneer het wel en wanneer het niet van groot belang is dat je het weet...? En wie bepaalt dat eigenlijk...? De een vind bankzaken belangrijk, de ander boeit het niet. (Oei.) En de een wil zelfs met zekerheid encrypt hebben als hij/zij een post schrijft dat hij/zij vandaag een wolkje in de lucht zag! ... Ongeacht dat dit totaal niet naar die persoon te herleiden valt en er *altijd* wolken in de lucht zijn: totaal niet boeiende of gevoelige info dus.
Dus, wie bepaalt (voor ons...) wat dan wel en niet van belang is?
Moet ik dan zelf aan gaan geven wat ik wel of niet belangrijk vind? Of per keer aangeven of ik dit keer wel of niet het certificaat wil laten toetsen? Dat is niet erg user-friendly; en ook nogal een beveiligingsprobleempje...

Of mogen opeens enkel banken bijvoorbeeld een getoetst certificaat aanvragen, en andere mensen niet? Hoe zit dat?
Derhalve wordt het voor het gemak en de veiligheid
altijd gecontroleerd, en dat is maar goed ook.

Dit gaat voor de meeste encrypted verbindingen niet op.
Precies, maar niet vanwege de reden die je hier boven als argumentatie geeft.
Een https-verbinding met Google bijvoorbeeld, ik ken die mensen heel niet. Een self-signed certificaat zou dus prima voldoen.
Neen, want dan weet je dus niet of je wel werkelijk encrypt met Google communiceert...
Het hele punt van CA is als derde partij op te treden zodat gevalideerd kan worden of de sleutels wel in orde zijn en het certificaat (nog) geldig is.
Het zegt niets over het wel of niet kunnen vertrouwen van de partij an sich.
Dat een site een valide SSL heeft, betekend niet dat je daarom maar zomaar je login gegevens moet overknallen oid.
Ik zie dus niet in hoe het relevant is dat jij de site die je bezoekt vertrouwt, daar gaat dat hele CA systeem totaal niet over.
Het gaat er enkel om of het certificaat en de sleutels te vertrouwen zijn; en adh daarvan kan je dus wel zeker weten dat het SSL certificaat inderdaad toebehoort aan de gene met wie jij wenst te communiceren; en derhalve heb je een valide certificaat die gevalideerd wordt door de externe third-party: de CA.
Als ik Google.com wil openen, wil ik wel zeker weten dat ik ook echt met Google.com aan het babbelen ben en dat de sleutels valide zijn.
Ik wil geen self-signed certificaat. Ik zie liever eigenlijk nergens, behalve kleine miniscule onderdelen binnen eigen infra en test omgevingen, self-signed certificaten.
De CA's zijn belangrijk, en het is een mooi systeem. Vind ik.

Het voorkomt nog steeds dat als ik in een internetcafé zit mijn mede-gebruikers mijn zoekopdrachten kunnen opsnuiven
Ja, dat doet het; maar je weet nog steeds niet zeker of je wel werkelijk met een valide SSL zit te werken die bewezen eigendom is van die partij...
Je kan niet zomaar het SSL vertrouwen. (Ja, dat kan bij HTTP verkeer ook niet; maar daar gaat het niet om. Dat is gewoon een tweede probleem, dat maakt het eerste probleem niet ongeldig.

)
CA's spelen een erg belangrijke en waardevolle rol. Nee, het is niet waterdicht; maar er is eigenlijk nog niemand met een *echt* goed alternatief gekomen; dat ook nog adapted is.
Het grootste probleem is eigenlijk dat er veels teveel CA's zijn, trouwens.
Een ideale oplossing is de setup van DNSSEC: publiceer de public keys van je webservers via DNS, ondertekend mbv van DNSSEC, en je bent klaar. Geen MITM meer mogelijk aangezien je browser de keys van de TLD's heeft en dus de hele chain kan controleren.
Nee, absoluuuuuuut niet.
Bij DNSSEC vertrouw je op:
- De beheerder van de TLD's (in sommige gevallen zijn dat grappig genoeg ook de CA's

) *kuch*verisign*kuch*
- ICANN, SIDN, etc.
- Je registrar
- De beheerder van de DNS server
Je kan ook moeilijk een complete domeinextensie "untrusten". Bij een CA kan je tenminste nog de CA uit je browser donderen. Dat wordt knap lastig bij domeinnamen.
DNSSEC gaat hem niet worden.
Het enige wat wellicht enigszins boeiend is, is dit concept:
http://convergence.io/
[Reactie gewijzigd door WhatsappHack op 23 juli 2024 06:16]