Laatst bijgewerkt: 18-09-2016, 11:28, door Dick99999: @ Erik van Straten. Is end-to-end encryptie niet automatisch authentiek als asymetrische encryptie wordt gebruikt?
Nee. Om dat te verklaren leg ik eerst (voor alle lezers) uit hoe asymmetrische cryptografie t.b.v. authenticatie werkt.
Op een geheim gebaseerde authenticatieOm anderen jouw identiteit vast te kunnen laten stellen, verzin je een gegeven dat niemand kan raden (bijvoorbeeld een heel groot getal, of zo je wilt een lang en complex wachtwoord - dat de computer zal vertalen in een getal) en dat hou je strikt geheim. Het idee is dat je vervolgens, elke keer als iemand eraan twijfelt of jij bent wie je zegt dat je bent, kunt
bewijzen dat jij dat geheim kent,
zonder dat geheim zelf ooit prijs te geven.
Als dat geheim niet is af te leiden uit de informatie die je
wel verstrekt, niemand dat geheim geraden heeft en je dat geheim meeneemt in je graf (d.w.z. het nooit gelekt hebt), is sprake van perfecte authenticatie - doch slechts in de zin van dat jij steeds
dezelfde entiteit bent (zoals Dick99999, waarvan wij lezers ook niet precies weten wie of wat daarachter zit; "
On the Internet, nobody knows you're a dog" [1]).
Terzijde, wat hier ontbreekt is dat je in een deel van de gevallen zeker moet weten welk individu (absoluut dus) het is dat het geheim kent, bijvoorbeeld door deze face-to-face te ontmoeten en haar of zijn identiteit te laten onderbouwen bijv. door een legitimatiebewijs te laten tonen, de echtheid daarvan vast te stellen en de pasfoto met het gezicht te vergelijken.
Effectief maak je dan gebruik van een TTP (Trusted Third Party), in dit geval de uitgever van zo'n legitimatiebewijs. Bijv. bij WhatsApp is de absolute identiteit gekoppeld aan een telefoonnummer - een niet-persoonsgebonden wereldwijd uniek getal dat, bijv. na beëindiging van een abonnement, kort daarna in andere handen kan vallen.
Op een geheime sleutel gebaseerde authenticatieEen implementatie van bovenstaand concept (weten dat je
steeds opnieuw met dezelfde entiteit van doen hebt, geen absolute authenticatie dus) is mogelijk met asymmetrische cryptografie (zoals het RSA protocol [2]). Daarbij is de private key het geheim, en zijn het RSA protocol en de public key de middelen waarmee jij kunt aantonen dat jij de private key kent -
zonder die private key zelf ooit prijs te geven.
Nb. een wijdverbreid misverstand hierbij is dat de public key hier het essentiële onderdeel vormt, maar dat is niet zo. De
private key vormt de basis; de public key en protocol zijn slechts
middelen die worden gebruikt om aan te tonen dat jij de private key kent.
Werking van private key authenticatiePrivate key authenticatie werkt doordat je, alles wat je met een public key versleutelt, uitsluitend kunt ontcijferen met de bijpassende private key. Dus als de andere partij voor elke (chat-) sessie met jou een willekeurig getal verzint en geheimhoudt, dat getal versleutelt met jouw public key en het resultaat naar jou stuurt, kun jij bewijzen dat jij jij bent door dat versleutelde getal met jouw private key te ontcijferen (alleen
jij kunt dat) en terug te melden wat het willekeurige getal was.
Risico'sHelaas is private key authenticatie allesbehalve risicoloos. Met een voldoende lange public key is deze implementatie redelijk betrouwbaar omdat het met de momenteel beschikbare computerkracht,
extreem lang duurt om, uitgaande van de public key, uit te rekenen wat de private key moet zijn. Essentieel daarbij is dat de sleutels niet zwak zijn doordat, bij het genereren ervan, er van een min of meer voorspelbare random number generator gebruik is gemaakt. Essentieel is het ook dat de private key niet op een ander systeem gegenereerd is (en vervolgens naar het doelsysteem, zoals een smartphone, is gekopieerd). Essentieel is ten slotte ook dat derden (bijv. middels al dan niet bewust geïnstalleerde apps) geen toegang hebben tot de private key, en het (hopelijk enige) device met de private key niet in verkeerde handen valt - op zodanige wijze dat derden toegang krijgen tot die private key.
Private key authenticatie en TTP'sNet zoals jij kunt aantonen dat jij jij bent middels een legitimatiebewijs, kun je ook jouw absolute
digitale identiteit laten bevestigen door een TTP. Onder geen voorwaarde hoort die TTP jouw private key in handen te krijgen (net zo min als de overheid jouw handtekening moet kunnen namaken om jou een paspoort te kunnen verstrekken). Het
enige dat een TTP moet doen is op betrouwbare (subjectief!) wijze vaststellen dat jij jij bent
en dat de public key die jij overlegt daadwerkelijk hoort bij de private key die
alleen jij in bezit kunt hebben. Dat doet zo'n TTP door een document te maken waarin ten minste jouw naam (bij voorkeur aanvullende identificerende gegevens omdat namen zelden uniek zijn), jouw public key en een geldigheidsduur zijn opgenomen, waarna zij dat document van een
digitale handtekening voorzien - zodat het, net als een paspoort, moeilijk vervalst kan worden en jij kunt aantonen dat jij jij bent. Zo'n document noemen we een digitaal certificaat.
Low budget TTP's, naïeve klanten en een brak rootcertificatensysteemHelaas zijn er veel klanten die, net als bij de Action, goedkoop=duurkoop willen, TTP's die hun verantwoordelijkheid niet nemen, toch een beetje geld willen verdienen en dus niet of nauwelijks controleren of jij jij bent, waardoor certificaten vaak aanzienlijk minder betrouwbaar zijn dan paspoorten (die overigens ook worden vervalst). Mede doordat applicaties (waaronder webbrowsers) hooguit onderscheid maken tussen 2 betrouwbaarheidsklassen van certificaten, is dit hele systeem een kaartenhuis geworden.
Gelukkig heb je die onbetrouwbare certificatenboeren niet nodig als slechts "relatieve" authenticatie is vereist, bijv. doordat vertrouwen gaandeweg wordt opgebouwd tussen communicerende partijen (na TOFU, Trust On First Use - niet perfect maar beter dan geheel geen authenticatie). Dan volstaat een losse public key of een
self-signed certificaat.
Laatst bijgewerkt: 18-09-2016, 11:28, door Dick99999: Doen iMessenger, WhatsApp etc dat?
Ik heb geen idee. Voor zover ik weet zijn beiden closed source. Bovendien is het voor doorsnee gebruikers erg moeilijk vast te stellen of de specifieke update(s) van de app die
zij op
hun smarphone krijgen, geen achterdeurtje(s) bevatten - al dan niet beschikbaar gesteld aan (1 of meer) geheime diensten. Waarbij het zakelijk ongewenst is als dat algemeen bekend zou worden, dus dat kom jij niet zomaar te weten.
Mochten deze apps gebruik maken van asymmetrische crypto, dan weet ik niet
waar de sleutelparen worden gegenereerd, hoe lang ze zijn en wat de betrouwbaarheid is van de gebruikte RNG (Random Number Generator).
Het gaat mij echter niet om WhatsApp of iMessage, maar om het principe. Als ik terrorist was zou ik wellicht gebruik maken van apps waarvan de makers claimen dat zij het
beter doen dan WhatsApp, zoals bijv. genoemd in [3] en [4] - met aanvullende encryptie ([5]) en/of steganografie daarbovenop.
P.S. de momenteel laatste (nagekomen) anonieme reactie onder [4], ondertekend door Joost Bruggeman, vind ik interessant. Zou die bijdrage authentiek zijn?
[1]
https://en.wikipedia.org/wiki/On_the_Internet,_nobody_knows_you%27re_a_dog[2]
https://en.wikipedia.org/wiki/RSA_(cryptosystem)[3]
https://www.security.nl/posting/484857/KPN+lanceert+beveiligde+messenger-app+voor+artsen[4]
https://www.security.nl/posting/468090/Artsen+starten+proef+met+WhatsApp-alternatief+Siilo[5]
https://www.security.nl/posting/468370/Encryptie+voor+leken+-+en+waarom+verzwakken+onverstandig,+en+verbieden+zinloos+is