Met alle respect (ook ik heb het moeten leren en moet de ontwikkelingen bijhouden - n.a.v. jouw reactie heb ik mijn geheugen opgefrist en deels moeten corrigeren :-), maar ik denk dat je je wat beter kunt inlezen.
Cipher suitesVoor de leken onder de lezers: je kunt een set (verzameling) van cipher suites vergelijken met de set van talen die een persoon spreekt (een cipher suite staat dus voor één taal, maar kan ook iets over een dialect zeggen, of bijv. En-US versus En-UK - denk bijv. aan "gray" versus "grey", "center" vs "centre" etc).
Stel een Braziliaan en een Bulgaar willen met elkaar een gesprek starten. Als de Bulgaar de initiator is (de client, deze begint met het sturen van een "ClientHello" bericht [0]), stuurt deze een lijstje met talen naar de de Braziliaan (de server) die hij spreekt, bijvoorbeeld Bulgaars, Engels en Duits. Dat lijstje, vergelijkbaar met een lijstje met cipher suites, vergelijkt de Braziliaan (de server) met diens eigen lijst van ondersteunde talen, en zoekt naar overeenkomsten. Als er meerdere overeenkomsten zijn, kiest de server welke gebruikt gaat worden.
[0]
https://www.cloudflare.com/learning/ssl/what-happens-in-a-tls-handshake/RSADoor Anoniem: RSA wordt gebruikt als handtekeningalgoritme van certificaten en in cipher suites.
Een RSA sleutelpaar kan ook worden gebruikt voor versleuteling (van een beperkt aantal bytes, vandaar dat er vaak een
symmetrische sleutel mee wordt versleuteld).
De term "RSA" in namen van cipher suites kan verwarrend zijn:
1) TLS_RSA_WITH_AES_128_GCM_SHA256 [1]
2) TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 [2]
Bij de eerste wordt RSA
zowel voor key exchange
als voor authenticatie van de server gebruikt, bij de tweede alleen voor authenticatie (de server bewijst over een private key te beschikken zonder deze prijs te geven).
Bij die eerste werkt het e.e.a. als volgt: de client kiest een symmetrische sessiesleutel, versleutelt die met de RSA public key uit het servercertificaat en stuurt het resultaat naar de server. Als niemand anders dan die server over de bijpassende RSA private key beschikt (en de private key niet uit de public key herleid kan worden, zoals cpumem suggereert), kan alleen die server de symmetrische sessiesleutel decrypten en gebruiken.
Daarmee is de key exchange en authenticatie in één handeling uitgevoerd, en maakt het certificaat (d w.z. het asymmetrische sleutelpaar, met de public key in het certificaat) onderdeel uit van de versleutelingsketen. Bij de tweede cipher suite is de versleuteling volledig onafhankelijk van het certificaat, dat uitsluitend gebruikt wordt voor authenticatie van de server (tevens gebruik maken van een clientcertificaat is ook mogelijk, maar niet erg gebruikelijk bij het verbinden met websites).
[1] Weak:
https://ciphersuite.info/cs/TLS_RSA_WITH_AES_128_GCM_SHA256/[2] Secure:
https://ciphersuite.info/cs/TLS_DHE_RSA_WITH_AES_128_GCM_SHA256/RSA key-exchangeAangezien de RSA
key-exchange werd afgeraden in TLS v1.2 en (als ik het goed begrepen heb) niet meer is toegestaan in TLS v1.3, zie je de letters "RSA" steeds minder vaak in namen van cipher suites.
Het doel van het vervangen van RSA voor de key-exchange is "forward secrecy", waar "ephemeral Diffie-Hellman keys" (éénmalig in te zetten) voor worden gebruikt. Dat is
niet omdat dit
cryptografisch veiliger is dan RSA, maar om te voorkómen dat opgenomen (versleutelde) sessies later kunnen worden ontsleuteld als de aanvaller de (langdurig gebruikte) RSA private key in handen krijgt.
RSA authenticatieBovendien wordt RSA (voor authenticatie) niet meer genoemd in TLS v1.3 ciphers, omdat daar niks over te onderhandelen valt (tijdens elke handshake tussen client en server). Immers, gebruikelijk is dat een TLS server maar één servercertificaat (plus bijpassende private key) heeft, dat minstens 3 maanden geldig is; er valt dus niks te kiezen door clients.
Certificaatkeuze door clients in de toekomst?Er is overigens wel wat te zeggen voor zo'n protocol: zodra er certificaten verschijnen met een
langer dan 4096 bits RSA key of een nu nog ongebruikt (of zelfs nog onbekend) asymmetrisch algoritme, zal er een overgangsperiode zijn waarbij (nog) niet alle webbrowsers dat ondersteunen. Servers zouden dan een oud (mogelijk onveilig) en een nieuw (veiliger) certificaat "aan boord" kunnen hebben, en het oude type alleen verzenden naar browsers die de nieuwe nog niet ondersteunen.
Voorbeeld van allerlei verschillende cipher suitesEen "mooi" voorbeeld van een lange lijst met afschuwelijke cipher suites zag ik zojuist in
https://www.ssllabs.com/ssltest/analyze.html?d=fy2023tour.club%2dt.com. De betreffende server (fy2023tour.club-t.com) ondersteunt zelfs de "anon" ciphers "TLS_DH_
anon_WITH_AES_128_GCM_SHA256" [3] en "TLS_DH_
anon_WITH_AES_256_GCM_SHA384" - waarbij de server niet hoeft te authenticeren (geen certificaat op hoeft te sturen en niet hoeft aan te tonen over de bijpassende private key te beschikken).
[3] Insecure:
https://ciphersuite.info/cs/TLS_DH_anon_WITH_AES_128_GCM_SHA256/Goede achtergrondinfoEen uitgebreide uitleg van o.a. TLS v1.3, RSA versus DH key exchange en allerlei aanvallen vind je in
https://blog.cloudflare.com/rfc-8446-aka-tls-1-3/. M.i. zeer leerzaam, maar uit 2018 dus mogelijk niet meer helemaal up-to-date.
RSA versus ECCDoor Anoniem: Dat is het risico van Let's encrypt's E1. De onderliggende certificaten zijn niet allemaal gebaseerd op EC keys maar ook op een RSA keys:
https://letsencrypt.org/certificates/ Reken je niet rijk met ECC (Eliptic Curve Cryptography). Uit
https://en.wikipedia.org/wiki/Elliptic-curve_cryptography#Quantum_computing_attack (vette opmaak toegevoegd door mij):
Shor's algorithm can be used to break elliptic curve cryptography by computing discrete logarithms on a hypothetical quantum computer. The latest quantum resource estimates for breaking a curve with a 256-bit modulus (128-bit security level) are 2330 qubits and 126 billion Toffoli gates. For the binary elliptic curve case, 906 qubits are necessary (to break 128 bits of security). In comparison, using Shor's algorithm to break the RSA algorithm requires 4098 qubits and 5.2 trillion Toffoli gates for a 2048-bit RSA key, suggesting that ECC is an easier target for quantum computers than RSA.
Dat zou dus ook zomaar kunnen gelden voor een
andere technologie dan quantum computers (zoals ASIC's of Data's Positronic Brain).
Geruchten?Door Anoniem: Het bedrijf cpumem heeft het met RSA versleutelde communicatie zonder dat te specificeren. Dat is dus weer een iets andere toepassing van RSA.
Het verbaast mij niets dat je met ASIC's sneller zou kunnen factoriseren dan met een "gewone" CPU, maar uit niets blijkt dat die snelheidswinst zelfs maar in de buurt komt van wat nodig is om bang te worden. Net zo min verbaast het mij dat een commercieel bedrijfje met onbewezen verzinsels de aandacht probeert te trekken.