Fysiek afspreken is niet meer nodig: Signal automatiseert vergelijken van keys
Signal gaat cryptografische sleutels voortaan automatisch verifiëren. Het gaat om de functie waarmee gebruikers via een QR-code kunnen controleren of hun gesprekspartner inderdaad de juiste ontvanger van een bericht is. Om dat nu te verifiëren, moeten gebruikers fysiek afspreken, maar dat proces besteedt Signal nu uit aan Cloudflare en een ander beveiligingsbedrijf.
Signal noemt dat proces Automatic Key Verification. De chatapp gaat de verificatie in de toekomst cryptografisch automatiseren door een samenwerking met 'auditors', specifiek Cloudflare en Trail of Bits.
Key verification is een functie in Signal (en WhatsApp heeft het ook) waarmee gebruikers kunnen controleren of een gesprekspartner wel is wie die zegt te zijn. Dat werkt door in de chat naar 'Verify safety number' te gaan. Daar staat een cryptografische code van 60 cijfers. Zowel de verzender als de ontvanger zien in hun chats met elkaar dezelfde cijfers. Die cijfers worden cryptografisch gegenereerd op het moment dat de twee gebruikers een chat met elkaar beginnen. Voor het gebruikersgemak worden die cijfers ook omgezet in een QR-code.
Hacker in het midden
De veiligheidscheck is bedoeld voor het geval dat Signal wordt gehackt of een aanvaller via een adversary-in-the-middle-aanval berichten probeert te onderscheppen. Daardoor kan die bijvoorbeeld berichten meelezen. Op dat moment verandert ook de cryptografische sleutel tussen verzender en ontvanger. Om zeker te weten of je als verzender wel een bericht stuurt aan de juiste ontvanger en niet aan een hacker-in-het-midden, bestaat de functie om cryptografische sleutels met elkaar te vergelijken.
Het grote probleem daarbij is alleen dat verzender en ontvanger daarvoor fysiek bij elkaar moeten komen en hun telefoons langs elkaar moeten houden. Dat doet niemand. En precies dat proces neemt Signal nu uit handen.
Auditors controleren logs
Signal verzamelt daarvoor alle wijzigingen in de cryptografische sleutels op een centrale plek, een 'ledger'. Daarin staat of de koppeling tussen een Signal-telefoonnummer en een public key nog klopt – ook dat gaat overigens grotendeels cryptografisch. Maar omdat de functie bedoeld is om juist aanvallen op Signal zelf te spotten, kan Signal niet de enige partij zijn die die ledger controleert.
Daarom werkt Signal samen met twee partijen die als auditor gelden. Dat zijn Cloudflare en securitybedrijf Trail of Bits. Die controleren onafhankelijk van elkaar de ledger. Cloudflare schrijft daar zelf over: "Cloudflare haalt periodiek batches met updates uit Signals Key Transparency-log en verifieert cryptografisch dat iedere update consistent is met alles dat eerder is opgenomen. Zodra die check slaagt, ondertekent Cloudflare de update en Signal stuurt de ondertekende update naar zijn gebruikers. Die kunnen dat verifiëren en zeker weten dat Signal hen een globaal consistent inzicht in het log toont." Ook Trail of Bits heeft een blogpost geschreven.
Twee = een en een = geen
Voor de veiligheid zijn er twee partijen die dat naast Signal doen. Cloudflare en Trail of Bits verifiëren de systemen onafhankelijk van elkaar, zodat er geen nieuwe single point of failure ontstaat dat kan worden aangevallen. De auditors werken alleen met cryptografische verificatie en kunnen dus geen gebruikersnamen of telefoonnummers zien, of zelfs de public keys zelf.
In de praktijk betekent dat dus dat gebruikers ervan uit kunnen gaan dat de cryptografische verificatie tussen verzender en ontvanger niet is onderschept, zonder dat ze elkaar fysiek hoeven te ontmoeten. Dat moet het verificatieproces veel laagdrempeliger maken, al moeten gebruikers nog steeds zelf de functie opzoeken in een chat als ze die willen gebruiken.
Alleen telefoonnummers
De functie van key transparency werkt zowel handmatig als automatisch alleen met telefoonnummers. Gebruikers die elkaar alleen kennen op basis van hun gebruikersnamen kunnen elkaar niet verifiëren.
Daarnaast werkt de functie niet meer als een van de gebruikers zijn of haar telefoonnummer of gebruikersnaam verandert. Dan geldt weer hetzelfde. De gebruikers moeten elkaar dan opnieuw fysiek ontmoeten om de keys te controleren.
Lees meer
Reacties (58)
Je moet dus nog steeds handmatig via User info -> View Safety Number -> Automatic verification de verificatie uitvoeren. Het voelt tegenstrijdig om handmatig iets "automatisch" te moeten starten. OK, de verificatie is automatisch, maar dit moet toch volledig automatisch kunnen gebeuren? Zoals bij WA, zodra je een nieuwe chat start met iemand.
[Reactie gewijzigd door striper op 14 augustus 2026 12:00]
Er wordt op verschillende manieren omheen gewerkt, maar je moet altijd ergens iets of iemand verifiëren en vertrouwen:
HTTPS vertrouwt een lijst van enkele honderden certificeringsautoriteiten (CA's) waarvan de public keys op jouw systeem voorgeïnstalleerd staan. Als een van hen het certificaat ondertekent waarvoor de server de bijbehorende private key heeft, krijg jij een groen slotje in de browser te zien. Een tweede afhankelijkheid hier is dat je die lijst ergens gedownload hebt toen je de browser installeerde en dat die regelmatig updates krijgt. Dit overlapt dan met "is mijn OS wel veilig?" maar omdat het om sleutels uitwisselen gaat, schaar ik het er in dit geval ook onder.
Chat-app Keybase probeerde Blockchain te gebruiken (ik meen specifiek Bitcoin) een aantal jaar geleden. Dat was een leuk idee, maar je wilt geen terabytes aan data op een telefoon hoeven opslaan om waarden in de blockchain te kunnen checken. Daar kun je met light clients best een leuk ontwerp omheen maken, maar zover ik weet staat dat ontwerpticket nog open, terwijl ze wel adverteerden (banner bij het openen van een nieuwe chat) met end-to-end-versleuteling. Die 'ends' waren dus helemaal niet geverifieerd en je vertrouwt erop dat de server de goede sleutel opstuurt. Je kon het ook niet zelf handmatig checken. NCC Group had dit ge-audit en over het hoofd gezien. Daarop heb ik het gerapporteerd en ze snapten het probleem niet en vroegen om een proof-of-concept (hun server is closed source: ik zou dan het hele protocol moeten reverse engineeren en een kwaadaardige server in elkaar knutselen... voor wat, omdat zij niet willen toegeven dat ze nooit e2ee waren? Pre-LLM een week aan werk wat vervolgens in de prullenbak kan omdat je het natuurlijk niet gaat gebruiken... dus dat hebben ze nooit opgelost of erkend). Anyway, zelfs als je dit zou doen moet je aannemen dat Bitcoin betrouwbaar blijft (dat geen mining pool >50% in handen krijgt of er meerdere samenzweren), wat ik niet onredelijk vind maar het onderliggende principe van derden moeten vertrouwen blijft hetzelfde.
Threema toont verschillende verificatieniveau's, maar dat is eigenlijk vooral anti-phishing: je krijgt een gele in plaats van een rode indicator bij contacten die in je adresboek staan, groen wordt het dan wanneer je hun sleutel zelf verifiëert.
PGP werkt met een web of trust: als jouw vriend Pietje (die je geverifieerd hebt) de sleutel van Jantje al gecontroleerd heeft, en jij instelt dat je Pietje vertrouwt om dit fatsoenlijk na te kijken (niet zoals Cueball in XKCD), dan hoef jij dit niet nogmaals te doen. Je hebt dan al een chain of trust (jij vertrouwt A, A vertrouwt
Signal werkt al jaren met Intel-CPU's voor private contact discovery, wat niet echt een key distribution problem is maar het vertrouwen van de sleutel van een derde werkt op een vergelijkbare manier: hun CPU's hebben een private key ingebakken die de maker, Intel, ondertekend heeft bij productie. De CPU certificeert welk programma het uitvoert (remote attestation), in dit geval het programma dat zoekt naar overeenkomstige contacten zonder daarbij jouw contactenlijst voor de amerikaanse Signal Foundation inzichtelijk te maken. Als jij Intel vertrouwt, weet je dus zeker dat de server het juiste programma draait. Nu is het, net als bij dit nieuws, jammer dat het allemaal onder de zeggenschap valt van de amerikaanse overheid, en dat Intel SGX (zoals de functie heet) talloze lekken kent en algemeen als onveilig beschouwd wordt, maar het is wel een vernieuwende oplossing die nog niet elders wordt toegepast zover ik weet.
De meest decentrale oplossing (geen één partij die alles moet bijhouden, tracken, of offline kan gaan) blijft nog altijd PGP. Deze ledger van Signal zouden derden als ik ook kunnen verifiëren, maar ik heb die sleutels niet gecontroleerd: beide chatpartijen moeten dan aan mij doorgeven of hun sleutel in de ledger zit, anders kan het ook Signal of de AIVD zijn die doorgeven "hoi ik ben +31612345678 en mijn sleutel is inderdaad 0x5up3rev1l".
Maargoed, Signal laat het toch niet toe om zomaar een controlerende partij te worden. Het blijft dus vertrouwen dat Trail of Bits, Cloudflare, en Signal niet samenwerken, dan wel dezelfde brief gekregen hebben van de overheid.
[Reactie gewijzigd door baseoa op 14 augustus 2026 18:33]
Doet WA deze sleutel verificatie bij elke chat? Voor zover ik weet heeft WA hetzelfde als Signal. Verificatie fysiek maar niet remote. Ik weet het niet omdat ik al jaren geen WA met gebruik.Zoals bij WA, zodra je een nieuwe chat start met iemand.
Trail of Bits: 228 Park Ave S #80688, New York, NY 10003
Cloudflare: 101 Townsend St. San Francisco, CA 94107
Als je threat level hoog genoeg is dat de VS Cloudflare en Trail of Bits zou forceren om, bijvoorbeeld alle sleutel verificatie te ondermijnen voor een bepaalde tijd die overeenkomt met de tijd dat jij de verificatie zou doen, en daar bovenop nog eens een 'man in the middle' attack op je uitvoert zonder dat Signal hier van weet, dan kan je altijd nog gewoon fysiek met je contact je sleutels verifieren.
Hoezo zonder Signal het weet? Signal kan gedwongen worden te zwijgenzonder dat Signal hier van weet
Signal Technology Foundation: 650 Castro Street, Suite 120-223, Mountain View, CA 94041
Als iemand 'man in the middle' attack op mijn thuisinternet kan uitvoeren, moet van de kaliber CIA of NSA zijn, dus alle 3 Signal, Cloudflare en Trail of Bits zijn niet te vertrouwen.
Maarja dan nog, dan moeten ze eerst een patch uitbrengen die jij dan moet downloaden om de verificatie van cryptografische sleutels te bypassen. En dat terwijl al hun software open source is en constant gaudit word door derden.
Zolang men meer wil weten dan nodig is en alles door brieft, is het een no-go voor mij.
Dit systeem bestaat alleen maar om sleutelverificatie makkelijker te maken voor de meeste mensen. Als jij verwacht dat je door de CIA/NSA gaat worden onderzocht dan ga je toch niet dit systeem gebruiken, maar wel de in-person sleutelverificatie.
Om te denken dat deze hele constructie een opzet is door Signal zodat ze in de toekomst heel stiekem een patch kunnen uitbrengen voor een handjevol gebruikers om de hele encryptie te slopen is echt gewoon een dikke conspiracy-theory.
[Reactie gewijzigd door astro_volt op 14 augustus 2026 14:45]
Daarna hoef je toch niks meer te checken, je encrypt je berichten met die public key. Als persoon ineens wijzigt van public key jammer voor hem. Kan hij ook geen berichten meer ontsleutelen.
Snap dit probleem niet zo. Met pgp gaat het ook zo. Public key uitwisselen via veilig kanaal. En vanaf dat moment kan je altijd verifiëren of bericht gesigned is door persoon x. Of bericht persoon x ontsleutelen. Niks en niemand voor nodig.
- Trail of Bits: 228 Park Ave S #80688, New York, NY 10003, USA
- Cloudflare: 101 Townsend St. San Francisco, CA 94107, USA
- Signal Messenger LLC: 650 Castro Street, Suite 120-223 Mountain View, CA 94041, USA
- Apple Inc.: One Apple Park Way, Cupertino, CA 95014, USA
- Google LLC: 1600 Amphitheatre Parkway, Mountain View, CA 94043, USA
- Samsung Electronics Co., Ltd.: 129 Samsung-ro, Yeongtong-gu, Suwon-si, Gyeonggi-do, South Korea
[Reactie gewijzigd door Blizz op 15 augustus 2026 01:53]
Ik vraag me af of ze geen betere clubs hadden kunnen vinden om dit te doen om reputatieschade te voorkomen.
En dit is optionele verificatie. Je kan nog steeds gewoon fysiek de QR code scannen of de code invoeren en manueel verifieren als je Cloudflare en Trail of Bits niet vertrouwd.
Bovendien halen ze de in-person sleutelverificatie niet er uit. Dit is gewoon een additionele optie die wat makkelijker is te gebruiken en heel moeilijk kan worden misbruikt.
Als ze een partij in Zwitserland hadden ingeschakelt dan kan de VS ook invloed uitoefenen, kijk maar naar hoeveel dataverzoeken bijvoorbeeld Proton moet delen via de Zwitserse authoriteiten met hun buitenlandse partners tegen 'potentiele criminele activiteiten'. Dat is hier eigenlijk niet anders.
Daarom toch juist? Als zij in Nederland zaten zou je een verificatie in Rusland willen hebben zitten en omgekeerd. Nu dat zowel de controlerende instantie als de gecontroleerde in de VS zitten, weet je niet of ze niet beide dezelfde brief hebben gekregen met een tapbevelDe Signal foundation is ook gewoon een non-profit gebaseerd in de VS.
Natuurlijk voor nagenoeg niemand relevant en je kan ook gewoon de volledige verificatie zelf doen, maar als je toch bezig bent, waarom dan niet ook gelijk een partij elders op de wereld nemen
Moet je het bij elk bericht weer opnieuw doen?
iMessage heeft deze functie ook al een tijdje maar hoeft niet perse fysiek bij elkaar te zijn, daar kun je je contactpersoon vragen om het Verificatie-code menuutje op zijn (m/v) telefoon te openen en als je dat zelf op hetzelfde moment doet kun je ook verifiëren.
Ik heb een nieuwe iPhone in gebruik genomen een week of wat geleden en m'n publieke key bleef hetzelfde, waarschijnlijk omdat ik m'n iCloud backup 1-op-1 teruggezet heb.
Die publieke key kan je ook gewoon online delen trouwens. Is ook handig.
Dat zegt tegelijkertijd ook wel veel over chat apps als Whatsapp en Telegram die dat niet doen. Het eigenlijk gewoon houden op "simpele" e2e.
I now, dit is wat kort door de bocht, maar je snapt m'n punt wel denk ik🙃
[Reactie gewijzigd door ECM-Droid op 14 augustus 2026 11:53]
Een 'gewone' gebruiker hoeft daar niet zoveel mee. Maar dat de optie er is is op zich mooi. Ik vermijd sowieso mensen die Whatsapp gebruiken trouwens maar goed, dát het kan is leuk.
iMessage kan dat ook al een tijdje, en ook semi-op-afstand.
[Reactie gewijzigd door DigitalExorcist op 14 augustus 2026 11:58]
Daar komt dat niet door; een nieuwe sleutel niet zomaar vertrouwen is geen unieke feature van het Signal Protocol. Dat gebeurt al sinds asymmetrische versleuteling gemeengoed werd met PGPWhatsApp gebruikt dezelfde methode als Signal.
[Reactie gewijzigd door baseoa op 14 augustus 2026 18:57]
iMessage heeft dat trouwens ook al een tijdje.. zowel automagisch als fysiek...
[Reactie gewijzigd door Recursio op 14 augustus 2026 12:33]
Ik neem aan dat je "mensen" bedoelde? Want het zelfstandig naamwoord "man" refereert in deze context niet naar mannen, maar naar mensen.en toch niet meer alleen over mannen hoeft te gaan
Woorden hebben vaak meer dan één betekenis en uit context zijn deze zeer makkelijk te begrijpen, alleen struikelen sommige mensen hier tegenwoordig over door tunnelvisie van hun ideologieën, als een stier op een rood doek.man noun (PEOPLE)
- the human race
- a person
In het Nederlands is dit ook zo:
3) persoon, mens
op de man af iets vragen
als één man achter iemand staan
Zie daarnaast de verschuiving van betekenissen en connotaties. Vroeger berekende gay heel wat anders in het Engels en nog niet zo lang geleden was neger een geaccepteerd woord in het Nederlands. Vroeger moest je inderdaad maar genoegen nemen met dat je er half bij hangt wanneer men over "man" spreekt, alsof zo iedereen genoemd is die ertoe doet. Hoe anno 2026 de zin "a man intercepts your connection" verstaan wordt, kan ieder voor zich invullen. Ik zie iig geen nadeel in het gebruik van de term "machine". Uiteindelijk is dat toch wat het is – voor niet-cyborgmensen die geen ethernet kunnen voelen xD
[Reactie gewijzigd door baseoa op 14 augustus 2026 19:18]
Dus ligt beetje aan de risico nivo en hoe je er over denkt zeg maar.
Niet alleen moet je het op dit moment zelf bij elk contact uitvoeren, nadat je het groene vinkje krijgt bij de automatische check wordt het safety nummer niet eens automatisch gemarkeerd als "vertrouwd". Dat moet je kennelijk ook nog zelf doen zonder dat dit duidelijk gemaakt wordt. Als je dit niet doet en later hetzelfde contact opnieuw bekijkt zie je nergens of/hoe/wanneer er een eerdere (automatische) verificatie poging is gedaan.
Er is ook nergens beschreven wat er gebeurt wanneer er wel een aanval door het systeem wordt ontdekt van het type waartegen zij zeggen dat dit bescherming biedt. Krijg je dan automatisch een melding? Moet je voor elk verstuurd bericht zelf een nieuwe verificatie doen? Binnen chats of het contact overzicht is in ieder geval nergens een UI-element dat de status van de verificatie in één oogopslag toont.
Ook over de verificatie van je eigen keys is het niet erg duidelijk. Dat zou wel automatisch gebeuren op de achtergrond, maar volgens de documentatie krijg je de volgende melding als er onregelmatigheden worden gedetecteerd:
In welke wereld is dat de tekst die duidelijk zou moeten maken dat je keys gemanipuleerd kunnen zijn. "Currently unavailable" klinkt als een tijdelijke storing, totaal geen indicatie van urgentie.If the app is unable to verify the log, or finds that not all keys are expected, the user is presented with a warning that “Automatic Key Verification is currently unavailable for your device.”
Al met al voelt dit, in de huidige staat, als een heleboel extra werk voor minimaal praktisch nut voor de eindgebruiker.
Om te kunnen reageren moet je ingelogd zijn
/i/2008306256.png?f=imagenormal)
:strip_exif()/i/2008260802.jpeg?f=imagenormal)

:strip_icc():strip_exif()/u/5960/crop5c1c1a9c82c25_cropped.jpeg?f=community)
/u/2279434/crop6800236ee5201_cropped.png?f=community)
:strip_icc():strip_exif()/u/204061/crop591d528256d44.jpeg?f=community)
:strip_exif()/u/324634/crop659fcf9abb18b_cropped.gif?f=community)
:strip_icc():strip_exif()/u/219282/crop65bfaacd66e4c_cropped.jpg?f=community)
/u/508326/02fe8676b9194155ae0a61dd1cfc9f8c.png?f=community)
/u/23785/crop5dcd5c59e07f9.png?f=community)
:strip_icc():strip_exif()/u/632901/crop68b8491c45b1d_cropped.jpg?f=community)
:strip_icc():strip_exif()/u/177567/crop5f8591cadf088_cropped.jpeg?f=community)
/u/2008130/crop6536ebba0daf2_cropped.png?f=community)
/u/2161070/crop66ded91aaf680_cropped.png?f=community)
:strip_icc():strip_exif()/u/2503532/crop6a6dcb3844ab6_cropped.jpg?f=community)