Naar de inhoud

Hoe veilig is Crunu?

We bouwen Crunu in de veronderstelling dat de server wordt aangevallen. Hier staat per aanvaller uit het dreigingsmodel van het product wat die krijgt, wat niet en welke laag in de weg staat, ook waar Crunu niet kan helpen.

  • AES-256-GCM versleutelt elke versie
  • X25519 versleutelt sleutels, Ed25519 ondertekent
  • Accountsleutel uit je wachtwoord (PBKDF2-SHA256, 1.000.000 iteraties) en een Secret Key van ongeveer 128 bits; geen van beide gaat naar de server
  • Geen sleutel om te ontsleutelen op de server, in geen enkele stap

Drie beschermingslagen, en releases die je kunt controleren

Het dreigingsmodel van Crunu koppelt elke verdediging aan de laag die haar levert. Dat telt vooral als de aanvaller de server zelf is, want dan blijven maar sommige lagen werken.

  • Cryptografie

    Wie de sleutel heeft

    Omgevingssleutels worden alleen versleuteld voor de mensen, machines en tokens die je toestaat, en toegangslijsten en versies zijn ondertekend. Zonder de sleutel blijft versleutelde data versleuteld.

    Als de server is overgenomenBlijft werken.

  • Server

    Aan wie hij versleutelde data levert, en wiens wijzigingen hij accepteert

    Limieten voor inloggen, het verlopen van sessies, netwerkregels, de wachttijd van de herstelcode en het afsluiten van iemand die je hebt verwijderd.

    Als de server is overgenomenWerkt niet meer.

  • Client

    Wat je browser en de agent controleren

    Handtekeningen, versienummers en vingerafdrukken: apparaten weigeren alles wat niet is ondertekend of ouder is dan wat ze al hebben gezien. Waarden op het scherm verbergen is ook een regel van de client, en die voorkomt ongelukjes, niet het kopiëren.

    Als de server is overgenomenBlijft werken, tenzij de server een gemanipuleerde webpagina stuurt.

  • Controleerbare releases

    Of de code die je draait echt is

    Elke release van de agent en de webapp is ondertekend met Ed25519. De webbuild is reproduceerbaar, en de pagina staat geen scripts van derden toe.

    Als de server is overgenomenUpdates van de agent blijven controleren. De webapp controleert zichzelf binnen de pagina die ze controleert, dus ze vangt geen server die beide aanpast.

Voorbeeld. Kiteline is een fictief bedrijf.

Aanval per aanval

Eén kaart voor elke aanvaller in het dreigingsmodel van Crunu. Het oordeel gaat over de waarden in je omgevingen; al het andere dat een aanvaller krijgt, staat op de kaart.

  • BeschermdJe waarden blijven onleesbaar en ongewijzigd.
  • BeperktZe krijgen iets echts, en de kaart noemt het.
  • Niet beschermdCrunu kan het niet tegenhouden. De kaart zegt wat helpt.
  1. Er lekt een kopie van de database

    Beschermd

    Een gelekte back-up, een gestolen schijf, een inbraak bij een andere dienst, of een hostingbedrijf dat te kwader trouw handelt.

    Ze krijgen

    • Versleutelde data van elke omgeving, publieke sleutels en ondertekende records
    • Metadata: namen van projecten en omgevingen, wie er in het team zit en hoe vaak er iets verandert
    • Tokens, maar alleen als hashes met sleutel (HMAC)

    Ze krijgen niet

    • Je waarden: er zit nergens een sleutel in om ze te ontsleutelen
    • Een kortere weg naar je wachtwoord: elke gok heeft ook je Secret Key nodig, die nooit op de server stond, dus één gok controleren betekent zoeken tussen ongeveer 2¹²⁸ mogelijkheden
    • Werkende tokens: de sleutel voor die hashes staat niet in de database

    Houd secrets uit namen: een project dat naar een nog niet aangekondigde deal is vernoemd, vertelt iedereen die de kopie leest over die deal.

    Beschermd doorCryptografieServer

  2. Iemand neemt de server over

    Beperkt

    Controle over de code en de database: een indringer, een kwaadwillende beheerder of een gekaapt cloudaccount. Op app.crunu.com beheert Crunu die server; op je eigen server doe jij dat.

    Ze krijgen

    • Alles uit een kopie van de database, plus wie welke versie wanneer heeft gedownload
    • De macht om dienst te weigeren of je wijzigingen te laten vallen
    • De kans om een gemanipuleerde webpagina te sturen die je wachtwoord en Secret Key onderschept terwijl je inlogt. Dit is het grootste resterende risico.

    Ze krijgen niet

    • Een plek tussen de ontvangers: omgevingssleutels worden alleen versleuteld voor sleutels die je organisatie heeft gecertificeerd, en je apparaten controleren de ondertekende toegangslijst
    • Een verwisselde sleutel of gewijzigde data: sleutels liggen vast in ondertekende records, en elke versie is ondertekend en gebonden aan haar omgeving en nummer
    • Een ongemerkte terugdraaiing op een apparaat dat nieuwere data heeft gezien. Een apparaat dat die data nooit heeft gezien, merkt het niet.

    De app controleert zichzelf bij elk laden tegen het ondertekende manifest van Crunu, en de pagina staat geen scripts van derden toe. Die controle draait in dezelfde pagina, dus ze vangt geen server die beide aanpast.

    Beschermd doorCryptografieClient

  3. Iemand onderschept de verbinding

    Beperkt

    Een vervalst TLS-certificaat of een kwaadaardige proxy tussen je apparaat en de server.

    Ze krijgen

    • Wat de server op die verbinding ziet: versleutelde data en metadata
    • Dezelfde kans als een overgenomen server om een gemanipuleerde webpagina te sturen

    Ze krijgen niet

    • Je wachtwoord of Secret Key: geen van beide gaat in welke vorm dan ook over het netwerk
    • Een inlog om opnieuw af te spelen: elke inloghandtekening noemt het adres van de server en een eenmalige waarde (nonce), dus die werkt één keer, en alleen op die server

    Beschermd doorCryptografieClient

  4. Een collega vertrekt met ruzie

    Beperkt

    Iemand die je uit de organisatie hebt verwijderd en die alles heeft gehouden wat mogelijk was.

    Ze krijgen

    • Alles wat die persoon zag voordat je die verwijderde. Die waarden blijven werken bij je providers tot je ze opnieuw uitgeeft.

    Ze krijgen niet

    • Nog iets van de server: die levert meteen niets meer aan die persoon
    • Nieuwe versies: elke omgevingssleutel die die persoon had, wordt geroteerd, dus de oude sleutels openen niets nieuws, ook niet met gestolen versleutelde data

    Het blootstellingsrapport toont welke versies die persoon heeft ontvangen, en de checklist voor opnieuw uitgeven noemt de waarden die je bij elke provider moet wijzigen.

    Beschermd doorServerCryptografie

  5. Een collega kijkt verder dan de eigen rol

    Beschermd

    Een eerlijk maar nieuwsgierig lid: een ontwikkelaar met toegang tot development, of een Operator die machines inricht.

    Ze krijgen

    • De omgevingen die ze hebben gekregen, en die kunnen ze kopiëren. Waarden verbergen in de app is een weergavekeuze, geen versleuteling.

    Ze krijgen niet

    • Production via toegang tot development: ze hebben de sleutel ervan niet
    • Waarden als Operator: Operators hebben helemaal geen omgevingssleutel
    • Andere bestanden met de rol Specific files: ze krijgen een versleutelde kopie van alleen de gekozen bestanden

    Beschermd doorCryptografie

  6. Er wordt een sessietoken gestolen

    Beperkt

    Gekopieerd uit het geheugen van de browser of uit een proxylog.

    Ze krijgen

    • Wat de server dat account toestaat tot de sessie eindigt: na 12 uur zonder activiteit, of na hooguit 7 dagen

    Ze krijgen niet

    • Je waarden: om ze te ontsleutelen zijn sleutels nodig die het token niet bevat
    • Ondertekende wijzigingen: een toegangslijst of versie vraagt je ondertekeningssleutel
    • Controle over je account: je wachtwoord of Secret Key wijzigen vraagt ze allebei

    Je account toont elk apparaat en elke sessie, en je kunt er één of allemaal beëindigen.

    Beschermd doorServerCryptografie

  7. Je laptop wordt gestolen

    Beperkt

    Een apparaat waarop je bent ingelogd, meegenomen terwijl de app open of vergrendeld is.

    Ze krijgen

    • Je Secret Key, die de browser standaard bewaart, waardoor je wachtwoord de drempel is die overblijft
    • Alles wat open staat, tot de app vergrendelt na 10 minuten zonder activiteit (de standaard)

    Ze krijgen niet

    • Je sleutels zodra de app is vergrendeld: zonder je wachtwoord blijven ze versleuteld
    • Je account: een open sessie kan je wachtwoord, Secret Key of accountsleutels niet wijzigen

    Verwijder het gestolen apparaat vanaf een ander apparaat, of gebruik Device compromised: dat vervangt je accountsleutels en roteert elke omgeving waarvan je een sleutel had.

    Beschermd doorCryptografieServer

  8. Iemand krijgt root op een machine met de agent

    Beperkt

    Een server waarop de agent crunu draait, is een legitieme ontvanger, en dat geldt ook voor wie hem beheerst.

    Ze krijgen

    • Alles wat aan die machine is geleverd. Een programma dat al draait, houdt zijn variabelen tot het opnieuw start.

    Ze krijgen niet

    • Andere machines of omgevingen: elke machine heeft eigen sleutels en krijgt alleen wat haar is gegeven
    • Langdurige toegang: een lease eindigt na 24 uur zonder contact, en een ingetrokken machine laat haar omgevingen binnen enkele minuten los, zolang ze online is

    Beschermd doorCryptografieServer

  9. Er lekt een inschrijfcode

    Beschermd

    De eenmalige code die je op een nieuwe machine aan crunu enroll geeft.

    Ze krijgen

    • Een kans om een eigen machine in te schrijven, als ze de code gebruiken voordat jouw machine dat doet

    Ze krijgen niet

    • Goedkeuring: een admin keurt een machine pas goed na het vergelijken van de vingerafdruk die crunu enroll op de echte machine toont
    • Een ongemerkte tweede poging: de code is standaard 15 minuten geldig, vervalt bij het eerste gebruik, en een hergebruikte code geeft een waarschuwing

    Beschermd doorCryptografieServer

  10. Er lekt een CI-token

    Beperkt

    Een servicetoken dat uit de secretopslag van een pipeline is gekopieerd.

    Ze krijgen

    • Precies wat het token is gegeven, vaak één omgeving, tot je het intrekt of het verloopt

    Ze krijgen niet

    • Een andere omgeving: de sleutel van production wordt nooit versleuteld voor een token dat production niet heeft gekregen
    • Een inlog van ergens anders, als het token met OIDC is gebonden: zonder het token van je CI-provider voor de juiste repository en branch komt het niet binnen

    Beschermd doorCryptografieServer

  11. Iemand probeert wachtwoorden uit op de server

    Beschermd

    Inlogpogingen vanaf één adres of verspreid over veel adressen.

    Ze krijgen

    • 10 mislukte pogingen per IP-adres en 5 per account per 15 minuten

    Ze krijgen niet

    • Een hint dat een account bestaat: een onbekend e-mailadres en een verkeerd wachtwoord krijgen hetzelfde antwoord
    • Binnenkomen met alleen het wachtwoord: inloggen vraagt ook je Secret Key, en een nieuw apparaat vraagt je tweede factor zodra je er een aanzet
    • Een kortere weg via codes en links: die bevatten minstens 128 willekeurige bits en worden bewaard als hashes met sleutel

    Beschermd doorServerCryptografie

  12. Iemand knoeit met een release van de agent

    Beschermd

    Een aangepaste binary van crunu of een aangepast installatiescript.

    Ze krijgen

    • Alleen een weg naar binnen als ze ook de webapp beheersen die je installatieopdracht toont, zoals bij een overgenomen server

    Ze krijgen niet

    • Een ongemerkte installatie: de installatieopdracht in de webapp bevat SHA-256-checksums uit het releasemanifest, en de webapp controleert de Ed25519-handtekening van het manifest
    • Een ongemerkte update: crunu self-update controleert de releasehandtekening met een sleutel die in de agent is ingebouwd

    Beschermd doorCryptografieClient

  13. Er draait malware op je apparaat

    Niet beschermd

    Een keylogger, een kwaadaardige browserextensie, of iemand met root op je computer.

    Ze krijgen

    • Je wachtwoord en Secret Key terwijl je ze typt, en alles wat dat apparaat ontsleutelt

    Ze krijgen niet

    • Omgevingen die je account niet kan openen

    Geen enkele versleuteling kan een apparaat tegen zichzelf beschermen. Gebruik apparaten die je zelf beheert, gebruik na een inbraak Device compromised vanaf een schoon apparaat, en geef de waarden die het apparaat kon bereiken opnieuw uit.

    Beschermd doorNiets in Crunu

Elke bekende grens, en wat je eraan doet

De cryptografie

Standaardbouwstenen in twee implementaties: de ingebouwde WebCrypto van de browser en de standaardbibliotheek van Go in de agent. Beide worden getest met dezelfde gedeelde testvectoren.

De cryptografie
AlgoritmeWat het doet in CrunuWaar het draait
AES-256-GCMVersleutelt elke versie van een omgeving. Extra geauthenticeerde data (AAD) bindt de versleutelde data aan de organisatie, de omgeving en het versienummer, zodat die niet voor een andere versie kan doorgaan.Browser en agent
X25519Versleutelt een omgevingssleutel voor één ontvanger: een persoon, een machine of een servicetoken. Elke versleutelde kopie gebruikt een nieuw sleutelpaar.Browser en agent
Ed25519Ondertekent toegangslijsten, versies, deellinks en releases. Apparaten controleren elke handtekening voordat ze een record vertrouwen.Browser en agent; Crunu ondertekent releases
HKDF-SHA256Leidt uit één geheim een aparte sleutel af voor elke taak, zodat geen sleutel twee doelen dient.Browser, agent en server
PBKDF2-SHA256, 1.000.000 iteraties, en de Secret KeyMaakt van je wachtwoord de ene helft van je accountsleutel. Je Secret Key, ongeveer 128 willekeurige bits, is de andere helft. Geen van beide verlaat je apparaat.Je browser, of crunu in de terminal
SHA-256Koppelt de regels van de auditlog tot een hashketen, en maakt vingerafdrukken van sleutels die je met het oog kunt vergelijken.De server schrijft de keten; je browser en je eigen tools kunnen die narekenen
Opvullen tot 4.096 bytesRondt elke versleutelde versie naar boven af op hele blokken van 4 KB, zodat de precieze grootte niet zichtbaar is.Browser en agent, vóór het versleutelen
  • Een sleutel voor elke omgeving. Toegang tot development opent niets in production. Elke persoon, machine en elk token krijgt een eigen versleutelde kopie van alleen de sleutels die zijn toegestaan.
  • Elk formaat draagt zijn versie. Elk record vermeldt zijn formaatversie ("v": 2), en de sleutelafleiding heeft een eigen versie (kdf.v). Apparaten weigeren versies die ze niet kennen, dus de server kan het raden van je wachtwoord niet goedkoper maken of een ouder formaat ertussen schuiven.

Quantumcomputers

Een quantumcomputer die groot genoeg is, zou sommige van deze bouwstenen breken en andere nauwelijks raken. Zo’n computer bestaat vandaag niet. Hier staat waar Crunu staat, zonder te gokken wanneer er een komt.

Quantumcomputers
AlgoritmeQuantumaanvalWat het voor Crunu zou betekenen
AES-256-GCMHet algoritme van Grover: sneller zoeken naar de sleutelEr blijft ongeveer 128 bits sterkte over. NIST verwacht dat AES-256 nog heel lang veilig blijft.
SHA-256 en HMACZoeken zoals bij GroverEr blijft een ruime marge over voor de hashketen van de auditlog en voor hashes met sleutel. NIST gebruikt SHA-256 als maatstaf voor de beveiligingsniveaus van zijn post-quantumstandaarden.
PBKDF2 en de Secret KeyZoeken zoals bij Grover; het algoritme van Shor is niet van toepassingRaden vraagt nog steeds de 128 willekeurige bits van de Secret Key, zo groot als een AES-128-sleutel, waarvan NIST verwacht dat die nog tientallen jaren veilig blijft. Wachtwoord noch Secret Key bereikt de server.
X25519Het algoritme van Shor: de privésleutel uit de publieke sleutelGebroken. Omgevingssleutels die ermee zijn versleuteld, zouden te openen zijn.
Ed25519Het algoritme van ShorGebroken. Handtekeningen zouden te vervalsen zijn, maar alleen op het moment van een aanval. Eerdere data komt niet bloot te liggen.

Nu verzamelen, later ontsleutelen

Elke omgevingssleutel wordt versleuteld voor de publieke X25519-sleutels van de ontvangers, en die versleutelde kopieën staan op de server naast die publieke sleutels. Wie een kopie van de database bewaart, zou die kopieën kunnen openen zodra er een grote quantumcomputer bestaat, en de versies lezen die in die kopie zijn opgeslagen. NIST noemt deze dreiging ‘harvest now, decrypt later’.

Deze aanval bereikt alleen wat die kopie bevat. Versies die na het maken van de kopie zijn opgeslagen, zitten er niet in, en toegangsgegevens die je bij de provider opnieuw hebt uitgegeven, zijn waardeloos voor wie de oude ontsleutelt.

Je wachtwoord, Secret Key en accountsleutel liggen op deze manier niet bloot: ze bereiken de server nooit, en er worden alleen symmetrische functies op toegepast. De aanval heeft ze ook niet nodig, want die richt zich direct op de X25519-sleutels.

Handtekeningen

Ed25519-handtekeningen beschermen toegangslijsten, versies en releases. Met een quantumcomputer zou iemand nieuwe kunnen vervalsen, maar een vervalsing telt pas als ze wordt gemaakt en geaccepteerd. Het is dus een risico voor de dag dat zo’n computer bestaat, niet voor data die vandaag wordt vastgelegd. NIST zegt hetzelfde: handtekeningen lopen geen risico door ‘harvest now, decrypt later’.

Wat Crunu vandaag gebruikt, en wat er komt

Crunu gebruikt vandaag geen post-quantumalgoritmen. NIST publiceerde zijn eerste post-quantumstandaarden in augustus 2024: ML-KEM voor het afspreken van sleutels (FIPS 203) en ML-DSA voor handtekeningen (FIPS 204). Het overgangsplan, afgerond in oktober 2026, noemt sleutelafspraak met elliptische krommen en EdDSA bij de algoritmen die NIST na 2030 als verouderd aanmerkt en na 2035 in NIST-standaarden niet meer toestaat.

De overstap op post-quantumcryptografie staat op de roadmap van Crunu. We kondigen geen algoritmen of datums aan die we nog niet kunnen toezeggen: als de cryptografie van Crunu verandert, staat dat op deze pagina.

Wat je nu kunt doen

  • Bedenk hoe lang elk secret waardevol blijft. Een sleutel die je om de paar maanden opnieuw uitgeeft, verliest weinig aan een kopie die jaren later wordt ontsleuteld; een langlevende roottoegang verliest meer.
  • Geef langlevende waarden volgens een schema opnieuw uit bij hun provider, en sla elke nieuwe waarde op als nieuwe versie.
  • Maak je je zorgen om een kopie van de database in andermans handen, draai dan je eigen server. De database en de back-ups blijven dan bij jou.

Controleer het zelf

We hebben nog geen keurmerken of certificaten om te laten zien. Hier staat wat je vandaag kunt controleren, en wat er niet is.

  • Ondertekende releases.Elke release van de agent en de webapp is ondertekend met een Ed25519-releasesleutel. crunu self-update controleert de handtekening met een sleutel die in de agent is ingebouwd, en de webapp toont Signed build zodra ze zichzelf heeft gecontroleerd tegen het ondertekende manifest.
  • Een reproduceerbare webbuild.Eén broncommit levert altijd dezelfde bestanden op, byte voor byte. De broncode is niet gepubliceerd, dus vandaag kan alleen Crunu een release opnieuw bouwen en vergelijken.
  • Geen scripts van derden.Het beveiligingsbeleid voor content (CSP) van de pagina staat alleen de eigen code van Crunu toe, die ze laadt met integriteitschecksums (SRI).
  • Weinig afhankelijkheden.De agent gebruikt alleen de standaardbibliotheek van Go, en de browsercode bevat één npm-pakket, yaml.
  • Een auditlog die je buiten Crunu kunt controleren.Eigenaren en admins kunnen de log als JSONL exporteren en de SHA-256-hashketen met hun eigen tools narekenen.
  • Wat ontbreekt.Geen externe beveiligingsaudit, geen SOC 2- of ISO 27001-certificering en geen gepubliceerde broncode. Crunu is in vroege toegang; Audits en documenten noemt de documenten die we wel hebben.
  • Een probleem gevonden?Mail naar security@crunu.com. Hetzelfde contact staat in onze security.txt, en Bekende beperkingen noemt elke grens die we al kennen.
Voorbeeld. Kiteline is een fictief bedrijf.

Vragen over de beveiliging van Crunu

Kan Crunu mijn secrets lezen?

Nee. De server, door Crunu beheerd op app.crunu.com of door jou op je eigen server, bewaart alleen versleutelde data en heeft geen sleutel die die kan ontsleutelen. Hij ziet wel metadata: namen, e-mailadressen, de auditlog en wanneer elke versie is opgeslagen. Om bij je waarden te komen, zou de code op je apparaat moeten worden gewijzigd, bijvoorbeeld via een gemanipuleerde webpagina. Dat is het grootste resterende risico op deze pagina.

Wat gebeurt er als jullie server wordt gehackt?

Wie inbreekt, krijgt versleutelde data, publieke sleutels, hashes met sleutel van tokens en metadata. Je waarden ontsleutelen lukt niet, en zichzelf aan een toegangslijst toevoegen of een versie wijzigen ook niet zonder dat je apparaten het merken. Wel kan die persoon stoppen met je bedienen of een gemanipuleerde webpagina sturen. Wordt er ingebroken op app.crunu.com, dan mailen we de getroffen accounthouders zonder onnodige vertraging.

Wat als ik mijn wachtwoord vergeet?

Niemand kan het resetten, ook wij niet, want we ontvangen je wachtwoord en je Secret Key nooit. Je afgedrukte Emergency Kit en een herstelcode zijn de wegen terug in je account. Raak je ze allemaal kwijt, dan kan je account niet meer worden geopend, al kunnen eigenaren en admins de gedeelde omgevingen van de organisatie nog steeds openen.

Beschermt Crunu tegen quantumcomputers?

Gedeeltelijk. AES-256 en SHA-256 houden naar verwachting stand. X25519 en Ed25519 zouden vallen voor een grote quantumcomputer, en die bestaat vandaag niet. Crunu gebruikt vandaag geen post-quantumalgoritmen, dus een kopie van de database die jarenlang wordt bewaard, kan ooit de versies daarin blootleggen. De overstap op post-quantumcryptografie staat op de roadmap van Crunu.

Is Crunu geaudit?

Nee. Crunu is in vroege toegang, heeft geen SOC 2- of ISO 27001-certificering, en er is geen externe beveiligingsaudit gepubliceerd. De broncode is ook niet gepubliceerd. Wat je vandaag kunt controleren, staat hierboven onder ‘Controleer het zelf’.

Is een eigen server veiliger dan app.crunu.com?

Het verandert wie je vertrouwt, niet de versleuteling. Je eigen server houdt de database en de back-ups bij jou en stuurt de webpagina vanaf infrastructuur die jij beheert. Daar staat tegenover dat back-ups, updates en het eigen geheim van de server jouw taak worden. De server is op aanvraag beschikbaar via support@crunu.com.

Hoe meld ik een kwetsbaarheid?

Mail naar security@crunu.com met de stappen om het probleem te reproduceren, en laat echte secrets uit je melding. Hetzelfde contact staat in ons bestand security.txt, en de pagina Beveiligingsmodel noemt de regels voor testen.

Bewaar de secrets van je team op een server die ze niet kan lezen

Maak je account aan op app.crunu.com. Je sleutels worden in je browser aangemaakt, en de server krijgt alleen versleutelde data.

Gratis tijdens de vroege toegang. Beveiligingsmodel lezen