Een encryptie-engine die nergens anders wil werken
Een encryptie-engine die elke sleutel bindt aan precies de server die hem aanmaakte. Zo zijn een gestolen database en een gestolen hoofdsleutel samen nog steeds niet genoeg om iets te ontsleutelen.
De meeste encryptietools gaan uit van een gevaarlijke aanname. Ze behandelen "de juiste sleutel hebben" als voldoende bewijs dat iemand iets mag ontsleutelen. Maar het meest voorkomende inbraakpatroon in de praktijk is niet een hacker die je live server overneemt. Het is diefstal van alleen de data: een gelekt back-upbestand, een verkeerd ingestelde cloudbucket, een buitgemaakte set inloggegevens. Vaak ligt de encryptiesleutel gewoon naast de data die hij beschermt. Als het bezit van de sleutel op zichzelf genoeg is, betekent een gelekte sleutel dat elk record dat hij ooit heeft aangeraakt in een klap gecompromitteerd is. We wilden een betere aanpak, voor onze eigen producten en voor toekomstig klantwerk. We wilden een encryptiearchitectuur waarin de sleutel alleen niet genoeg is.
We bouwden KrakenCrypt. Dit is een native C-extensie voor PHP voor het hashen van wachtwoorden en het versleutelen van persoonsgegevens, waarbij elke sleutel cryptografisch gebonden is aan de specifieke host die hem aanmaakte. De sleutel zelf wordt afgeleid van de eigen identifier van die machine op OS-niveau.
Wat dat in de praktijk betekent: een gestolen database en een gestolen hoofdsleutel zijn samen nog steeds niet genoeg om iets te ontsleutelen zonder de oorspronkelijke host. Daarbovenop roteren wachtwoordhashes en versleutelde persoonsgegevens automatisch naar een nieuwe waarde bij elk succesvol gebruik. Zo blijft zelfs een waarde die ooit is uitgelekt haar eigen blootstellingsvenster verkleinen. KrakenCrypt schaalt ook horizontaal via een primary-relay-architectuur. Daardoor kan een fleet achter een loadbalancer een host-gebonden identiteit delen in plaats van dat elke node echt sleutelmateriaal in handen heeft.
De kernclaim is bewezen, niet beweerd. De geautomatiseerde testsuite bevat een direct bewijs dat een token dat met host-binding is aangemaakt echt niet meer te verifieren of te ontsleutelen is zodra het naar een andere machine wordt verplaatst. Dat is precies het scenario "gestolen data, gestolen sleutel, nog steeds onleesbaar" waar het product om draait. Twintig geautomatiseerde regressietests dekken nu het hashen van wachtwoorden, het versleutelen en roteren van persoonsgegevens, het weigeren van host-binding, sleutelmigratie, horizontaal schalen en het native oplossen van sleutels. Het draait in productie met een openbare, interactieve demo waarin bezoekers wordt gevraagd het zelf te proberen te kraken.