Zo werkt onze versleuteling
tempchat.cool versleutelt elk bericht in je browser met AES-256, met een geheime sleutel die alleen bestaat in het deel van de kamerlink na de #. Browsers sturen dat deel nooit naar een server, dus wij bewaren alleen door elkaar gehusselde tekst die we niet kunnen lezen.
De korte versie
- 01
Je browser maakt een sleutel
Als je een kamer maakt, kiest je browser een willekeurig geheim van 256 bits. Het verlaat je apparaat alleen in de link die je deelt.
- 02
De sleutel zit in de link
Het geheim staat na de # in de link. Browsers sturen dat deel niet naar servers, dus het blijft tussen jou en de mensen met wie je de link deelt.
- 03
Alles wordt versleuteld voordat het weggaat
Berichten, bijnamen en de kamernaam worden in je browser versleuteld. Onze server bewaart en verstuurt alleen versleutelde tekst en verwijdert die als de kamer afloopt.
Wat onze server wel en niet kan zien
Je kunt dit zelf controleren. Druk in een kamer op de oogknop om Wat onze server ziet te openen: de echte versleutelde berichten zoals ze over de verbinding binnenkwamen.
| Onze server kan zien | Onze server kan niet zien |
|---|---|
| Het adres van de kamer en wanneer die is gemaakt | De sleutel (het deel na de #) |
| Wanneer de kamer afloopt en hoe lang die moest duren | De naam van de kamer |
| Of er een wachtwoord is ingesteld | Het wachtwoord |
| Hoeveel mensen verbonden zijn en wanneer ze verbinden | Bijnamen, of wie wie is |
| Hoeveel berichten er zijn gestuurd, wanneer, en hun opgevulde grootte | De tekst van een bericht |
Hoe het werkt, in meer detail
- De kamersleutel bestaat uit 256 willekeurige bits, gemaakt met de eigen veilige toevalsgenerator van je browser.
- Uit die sleutel leidt je browser met HKDF twee aparte waarden af: een AES-256-GCM-sleutel om te versleutelen en te ontsleutelen, en een toegangstoken. Wij bewaren alleen een hash van het toegangstoken, zodat we kunnen controleren wie mag verbinden maar nooit bij de sleutel kunnen komen.
- Elk bericht wordt voor het versleutelen opgevuld tot een veelvoud van 256 bytes, zodat de opgeslagen grootte weinig zegt over de lengte.
- Het kameradres en het soort inhoud (bericht, kamernaam) worden in elk versleuteld bericht vastgelegd, zodat een opgeslagen bericht niet naar een andere kamer kan worden verplaatst of voor iets anders kan doorgaan.
- Als je een wachtwoord toevoegt, wordt dat verrekend met PBKDF2 (600.000 rondes) en door de sleutels gemengd. Zonder het wachtwoord kan zelfs de volledige link niets lezen of downloaden. Foute pogingen zijn beperkt tot 5 per minuut per kamer.
- Dit alles gebruikt de cryptografie die in je browser zit (WebCrypto). Op kamerpagina's staan geen scripts van derden.
De eerlijke grenzen
- Iedereen met de link kan het hele gesprek lezen, ook wat er werd gezegd voordat diegene binnenkwam. Deel de link alleen met mensen die je vertrouwt.
- Bijnamen worden niet gecontroleerd. Iedereen kan elke naam intypen.
- Je vertrouwt op de websitecode die wij je sturen. Omdat het een webapp is, zouden we in theorie andere code kunnen sturen. We houden de kamercode klein, laden niets van andere bedrijven en willen dat je het zelf kunt nakijken.
- Browsers kunnen de volledige link, inclusief sleutel, in de geschiedenis bewaren of tussen je apparaten synchroniseren. Gebruik Nu verwijderen voor gevoelige kamers.
- Iedereen in de kamer kan berichten screenshotten of kopiëren. Geen enkele chattool kan dat voorkomen.
- Er is geen forward secrecy: als de link uitlekt terwijl de kamer nog bestaat, kan wie hem heeft de opgeslagen berichten lezen. Korte levensduur is de bescherming.
Vragen die mensen stellen
Kan tempchat.cool mijn berichten lezen?
Nee. De sleutel zit in het deel van de link na de #, dat je browser nooit naar ons stuurt, dus wij bewaren alleen versleutelde tekst.
Is het open source?
Nog niet. We willen de kamercode publiceren zodat mensen die kunnen nakijken; tot dan laat de weergave Wat onze server ziet je de echte data inspecteren.
Wat gebeurt er als een kamer afloopt?
De opgeslagen berichten en de kamer worden van onze servers verwijderd en iedereen in de kamer wordt losgekoppeld.