Alle projecten
Een vrouw met halflang donker haar in een wit linnen overhemd op een cognackleurige bank tussen grote kamerplanten, voorovergebogen typend op een laptop op de salontafel, een kop koffie ernaast.
Case · Hostmatters

De veiligste manier om een bestand te versturen

Versleuteld en Europees gehost, verlopende links, auditlog, verplichte tweestapsverificatie.

Opdrachtgever
Hostmatters
Product
Codocs
Route
Klanten online bedienen
Onderwerp
Beveiliging & privacyInterface ontwerp
Platform
Web
Jaar
2026
Resultaat

1 miljoen

bestanden verstuurd, versleuteld

Wie een offerte, contract of dossier verstuurt via de bekende diensten geeft de controle uit handen: je weet niet waar het bestand staat, hoe lang het blijft staan, of het geopend is en door wie. Voor een vakantiefoto maakt dat niets uit, voor een personeelsdossier wel. Codocs is een Europese, versleutelde deeldienst waarin de standaardstand al de veilige is (versleuteld, verlopend, opgeruimd) en de uitklapper er is voor wie méér wil, niet voor wie het minimum moet halen.

Gebouwd met
  • AES-256-GCM
  • bcrypt
  • TLS · HSTS
  • EU-hosting
Cijfers

In het kort

accounts
1.200
verstuurde bestanden
1 miljoen
veld bij registratie: je e-mailadres
1
dagen, dan verloopt elke link
7
per bestand, streaming versleuteld
2 GB
tweestapsverificatie, niet uit te zetten
100 %
maximaal dataverlies
24 u
De opgave

Wat er lag

Wie een offerte, een contract of een dossier verstuurt via de bekende diensten geeft de controle uit handen: je weet niet waar het staat, hoe lang het blijft en wie het opent. Voor een vakantiefoto maakt dat niets uit, voor een personeelsdossier wel. De opgave van Hostmatters: een Europese, versleutelde deeldienst waarin de standaardstand al de veilige is. Versleuteld, verlopend en opgeruimd als uitgangspunt, en beveiliging als uitklapper in plaats van als drempel.

Hoogtepunten

Drie details die het verschil maken

Schermen

Het product in zes schermen

  • De homepage van Codocs: Deel bestanden. Niet je privacy. over een foto van een vrouw op een bank achter een laptop, met het label Gehost in de EU · AVG-compliant.
    De homepage: één belofte, één knop, en het label dat een inkoper zoekt.
  • De functies van Codocs onder de kop Versleuteld voordat het de schijf raakt: zes kaarten met per functie een pictogram en twee regels uitleg.
    De functies, in de woorden van de beveiligingspagina en niet andersom.
  • De sectie Drie stappen. Meer niet. op de site van Codocs: uploaden, een link delen, en de controle houden, elk met een schermbeeldje erboven.
    Drie stappen, meer niet. Alles in het ontwerp is getoetst of het die drie korter of langer maakt.
  • De sectie met het overzicht Mijn bestanden: vier bestanden met per regel de grootte, de datum en een label als Gedeeld, Wachtwoord of Verloopt over 3 dagen, en onderaan een upload die nog versleutelt.
    Mijn bestanden: wachtwoord, vervaldatum en met wie het gedeeld is staan op de regel zelf.
  • De beveiligingspagina van Codocs met kaarten over versleuteling onderweg en in rust, opslag binnen de EU, tweestapsverificatie en deellinks onder eigen controle.
    De beveiligingspagina noemt de maatregelen bij naam, inclusief wat ze niet zijn. Dit is de pagina die de rest van de site hoort te sturen.
  • De prijzensectie van Codocs met drie abonnementen naast elkaar: Gratis, Pro en Business, met per abonnement de opslag en de maximale bestandsgrootte.
    Drie abonnementen, tijdens de beta alle drie kosteloos, en de white-labelvariant voor bureaus ernaast.
Het verhaal

Hoe het is gemaakt

Je stuurt een bestand en raakt het kwijt

Wie een offerte, een contract of een dossier verstuurt via WeTransfer, Dropbox of een bijlage in Gmail geeft daarmee de controle uit handen. Je weet niet waar het bestand fysiek staat, hoe lang het bewaard blijft, of het geopend is, en door wie. Voor een vakantiefoto maakt dat niets uit. Voor een personeelsdossier, een medisch verslag of een concept-overeenkomst wel.

Daar komt bij dat vrijwel alle grote spelers Amerikaans zijn. Sinds het Privacy Shield sneuvelde en de discussie over de CLOUD Act oplaaide is “waar staat mijn data en wie kan erbij” voor Nederlandse bedrijven, advocaten, zorgpartijen en overheden geen theoretische vraag meer maar een inkoopeis.

De vraag was niet of we bestanden konden versturen. Die vraag is opgelost.

Vier uitgangspunten, en wat erop sneuvelde

Voordat er een regel code stond lagen er vier principes vast, en elke latere beslissing is daaraan getoetst. Een paar populaire functies hebben het niet overleefd.

Dataminimalisatie is bij Codocs een ontwerpprincipe, geen paragraaf in de voorwaarden. Registratie vraagt om een e-mailadres. Meer niet: een voornaam mag, de rest niet. Geen bedrijfsnaam, geen telefoonnummer, geen “hoe hoorde je over ons”. Elk veld dat we niet uitvragen is een veld dat niet kan lekken, niet bewaard hoeft te worden en niet in een verwerkingsregister hoeft.

Elke deling is tijdelijk, tenzij. De standaard in de meeste diensten is dat een bestand eeuwig blijft staan tot iemand het weggooit. Hier is dat omgedraaid: een link verloopt, en daarna wordt het bestand verwijderd, tenzij je expliciet aanvinkt dat je het wilt bewaren. Dat is één vinkje, maar het verandert wie het werk moet doen. Opruimen is de taak van het systeem geworden.

Alles wat er gebeurt is zichtbaar. Uploaden, downloaden, delen, intrekken, inloggen: elke gebeurtenis komt in een logboek met tijdstip, IP-adres en user agent. Dat logboek is er omdat het de belofte waarmaakt: “je houdt de controle” is leeg zonder een scherm dat laat zien wat er gebeurd is.

En geen advertenties, geen doorverkoop, gewoon een abonnement. Cookieloze statistieken, geen trackers. Minder spannend dan een groeimodel op data, en het enige model dat niet in tegenspraak is met de rest van het verhaal.

Beveiliging is een uitklapper, geen drempel

Dit is de belangrijkste ontwerpbeslissing in het product, en meteen de meest contra-intuïtieve voor een beveiligingsdienst. Een wachtwoord op een link en een verloopdatum zijn de dingen waar dit product zijn bestaansrecht aan ontleent. Ze staan niet prominent in beeld. Ze zitten achter één klik, onder de geavanceerde opties.

De redenering: de veilige route moet ook de makkelijkste zijn. Elk bestand is al versleuteld, elke link verloopt al na zeven dagen, elke link is al in te trekken. Wie niets aanraakt krijgt dus al de veilige uitkomst. De uitklapper is er voor wie méér wil. Iemand die bij élke verzending een wachtwoordveld voor zijn neus krijgt gaat dat veld op den duur negeren, of erger: “dezelfde als vorige keer” invullen.

Die velden zijn uitgegrijsd tot er een bestand ligt. Ze verdwijnen niet en ze zijn niet klikbaar; ze zijn zichtbaar aanwezig en inactief. Zo vertelt het scherm de volgorde (eerst het bestand, dan de opties) zonder er een foutmelding of een uitlegzin voor nodig te hebben.

Hetzelfde principe zit in de teksten. Onder de bewaaroptie staat niet wat het vinkje betekent, maar wat er gaat gebeuren in de stand waarin het nú staat: het bestand wordt verwijderd nadat de link verloopt. Je hoeft niet te redeneren over een instelling, je leest een gevolg. En verder: “Bestand versturen” in plaats van “Verzenden”, “Link verloopt na” in plaats van “TTL”, “Met mij gedeeld” in plaats van “Inbox”.

Twee deelstromen naast elkaar

Het eerlijkste onderdeel van deze case. Het product kan op dit moment op twee manieren hetzelfde doen, met verschillende mogelijkheden en een verschillend uiterlijk. Versturen is de nieuwe, uitgewerkte route: sleepvlak, meerdere ontvangers, bericht, wachtwoord, verloopdatum, bewaaroptie. Delen vanuit de bestandslijst is de oorspronkelijke route: een aparte pagina met twee velden.

Zo ontstaat dat. De bestandslijst kwam eerst, met delen als actie op een rij. Later bleek de dominante behoefte niet “iets dat ik bewaar delen” maar “iets versturen dat ik verder niet wil bewaren”, en daar is het verstuurscherm voor gebouwd. De oude route bleef staan omdat hij werkte.

Dat is klassieke productschuld: twee wegen naar dezelfde bestemming, waarvan er één stiller is en minder kan, en de gebruiker heeft geen enkele manier om te weten welke de goede is. De oplossing is de oude route laten verdwijnen: delen in het rijmenu hoort hetzelfde paneel te openen als versturen, met het bestand al ingevuld.

Geleerd

Wat we eruit hebben geleerd

  1. 01

    De veilige weg moet de luie weg zijn. Elke maatregel die inspanning van de gebruiker vraagt wordt op termijn omzeild. Vandaar: standaard versleuteld, standaard verlopend, standaard opgeruimd, verplichte tweestapsverificatie. Wie niets instelt krijgt de veilige uitkomst; alleen wie méér wil moet iets doen. Dat klinkt als een beveiligingsprincipe en het is er vooral een over gedrag.

  2. 02

    Een oude route laten staan is geen neutrale keuze. De twee deelstromen kostten niets om te laten bestaan, en zijn daardoor blijven bestaan. Maar voor een gebruiker is dat geen extra optie, dat is een twijfelmoment. Het opruimen had moeten meeliften op het bouwen van de nieuwe route, niet daarna op een lijstje moeten belanden. Want daar staat het nog steeds.

  3. 03

    En de derde, die pas zichtbaar werd toen we het opschreven: bij een product dat vertrouwen verkoopt is de securitypagina de bron van waarheid, en hoort de rest van de site daarvan afgeleid te worden. Niet andersom. Eén technisch geletterde klant die een verschil opmerkt tussen wat de landingspagina belooft en wat de techniek doet, weegt zwaarder dan honderd bezoekers die de sterkere claim geloofden.

Ontwerp

Letters en kleuren

Letters
Koppen
ManropeExtra vet (800), strak en breed: de belofte op de homepage in drie woorden.
Lopende tekst
FigtreeRegular (400) voor alle tekst en de knoppen; één familie voor de interface.
Kleuren
  • Nachtblauw
    #0f1b2d
    tekst, knoppen en de donkere vlakken
  • Oranje
    #f97316
    het ene accent: privacy in de kop, de prijs die opvalt
  • Leigrijs licht
    #f8fafc
    de achtergrond van de pagina
  • Wit
    #ffffff
    kaarten en velden
  • Mintgroen
    #f0fdf4
    het label Gehost in de EU
  • Eén accentkleur, en die staat alleen waar hij iets zegt: het woord privacy en de gekozen prijs.
  • Knoppen zijn pillen, kaarten hebben een zachte hoek en één lijn; niets heeft een schaduw die de aandacht trekt.
  • De gemeten waarden komen uit de CSS van codocs.nl op 7 september 2026; wat achter de inlog staat is niet gemeten.
Techniek

Waar het van gemaakt is

  • Versleuteling
    • AES-256-GCM
    • Sleutel per bestand
    • Streaming

    Per bestand een eigen sleutel, in blokken versleuteld terwijl het binnenkomt, en geauthenticeerd: gerommel wordt gemerkt in plaats van onzin.

  • Toegang
    • Wachtwoord
    • Eenmalige code per e-mail
    • bcrypt

    Tweestapsverificatie voor iedereen, niet uit te zetten, want de administratie van een advocatenkantoor installeert geen app.

  • Transport en hosting
    • TLS
    • HSTS
    • EU-hosting
    • Dagelijkse back-ups

    Alles binnen de EU, met versleutelde back-ups naar een tweede locatie en bewaking die alarm slaat als een back-up uitblijft.

  • Delen en logboek
    • Willekeurige tokens
    • Intrekken als stand
    • Logboek als reeks gebeurtenissen

    Deellinks zijn niet te raden, een ingetrokken link blijft zichtbaar in het logboek, en elk scherm is een uitsnede van diezelfde reeks.

Verdieping

Voor wie verder wil lezen

Onder de motorkap

Bestanden worden versleuteld met AES-256-GCM, met een unieke sleutel per bestand.

Bestanden worden versleuteld met AES-256-GCM, met een unieke sleutel per bestand. Die keuze (per bestand, niet per gebruiker of per installatie) betekent dat een gecompromitteerde sleutel precies één bestand kost en geen archief. Het versleutelen gebeurt bovendien streaming: het bestand wordt in blokken verwerkt terwijl het binnenkomt en staat nooit in zijn geheel in het geheugen. Dat is een randvoorwaarde en geen optimalisatie achteraf, want het zakelijke abonnement staat bestanden tot 2 GB toe en een implementatie die eerst alles inleest valt bij die maat om.

GCM en geen CBC, omdat het geauthenticeerde versleuteling is: het merkt dat er aan de versleutelde tekst gerommeld is in plaats van er stilzwijgend onzin van te maken. Bij een dienst waarvan de hele belofte is dat je kunt vertrouwen wat je terugkrijgt, is dat het verschil tussen versleutelen en beveiligen.

Inloggen vraagt altijd om een wachtwoord plus een eenmalige code per e-mail. Niet optioneel, niet aanbevolen, niet uit te zetten. Dat e-mail als tweede factor zwakker is dan een authenticator-app weten we. Maar de doelgroep is een advocatenkantoor of een zorginstelling waar de administratie geen app installeert, en verplichte e-mailverificatie voor iedereen beschermt in de praktijk beter dan optionele authenticator-codes die zes procent aanzet.

Het logboek is geen achteraf gemaakt overzicht maar een reeks gebeurtenissen waar alleen aan toegevoegd wordt; de schermen zijn er uitsnedes van. Dat is de architectonisch juiste volgorde. Was het andersom gebouwd, een statusveld per bestand met later een logboekje erbij, dan was “wie heeft dit geopend, en vanaf waar” een vraag geweest die het systeem niet kon beantwoorden. Nu is elke functie die controle belooft een afgeleide van diezelfde reeks.

Deellinks zijn cryptografisch willekeurige tokens: niet te raden en niet af te leiden uit een oplopend nummer. Intrekken is een aparte stand op de link en geen verwijdering, zodat een ingetrokken link zichtbaar blijft in het logboek in plaats van spoorloos te verdwijnen. Alles staat in de EU, met dagelijkse versleutelde back-ups naar een tweede, onafhankelijke locatie, en met bewaking die alarm slaat als een back-up uitblijft, want de fout die de meeste back-upstrategieën fataal wordt is niet dat er geen back-up is maar dat niemand merkt dat hij al drie weken niet draait.

Waar het nu staat

Codocs draait als beta, met drie abonnementen: gratis (1 GB, 100 MB per bestand), Pro (25 GB, 500 MB) en Business (100 GB, 2 GB).

Codocs draait als beta, met drie abonnementen: gratis (1 GB, 100 MB per bestand), Pro (25 GB, 500 MB) en Business (100 GB, 2 GB). Tijdens de beta zijn ze alle drie kosteloos.

Daarnaast wordt er een white-labelvariant aangeboden aan bureaus en bedrijven, en dat is de interessantere route van de twee: één bureau brengt zijn hele klantenkring mee. Een losse abonnee is een gebruiker, een bureau is een kanaal.

Hoe lang blijft een bestand staan?

Elke link verloopt na zeven dagen, en daarna wordt het bestand verwijderd, tenzij je expliciet aanvinkt dat je het wilt bewaren. Opruimen is de taak van het systeem.

Wat heb je nodig om te beginnen?

Een e-mailadres. Een voornaam mag, de rest vraagt Codocs niet: geen bedrijfsnaam, geen telefoonnummer.

Waar staan de bestanden?

In de EU, met dagelijkse versleutelde back-ups naar een tweede, onafhankelijke locatie.

Is tweestapsverificatie verplicht?

Ja, altijd: een wachtwoord plus een eenmalige code per e-mail, voor iedereen, niet uit te zetten.

Wat kost het?

Drie abonnementen: gratis (1 GB, 100 MB per bestand), Pro (25 GB, 500 MB) en Business (100 GB, 2 GB). Tijdens de beta zijn ze alle drie kosteloos.

Meer werk

Lees ook

De oprichter van een filmstudio voor de ledwand met een zonsondergang, een laptop onder zijn arm.

Een halfuur gratis sparren over jouw digitale idee?

Waar loop jij tegenaan in je bedrijf? Wat kan beter? Wat kan sneller? Wat gaat nog met de hand en moet nodig geautomatiseerd worden?

  • Een halfuur sparren over jouw idee, gratis
  • Je weet direct welke route je nodig hebt
  • Ruwe inschatting over de prijs en het aantal weken
Wat is jouw idee?

Een alarm op onze spreadsheet dat appt zodra een getal buiten de marge valt.

administratiekantoor, Sneek

Alexander Kaan, zwart-witfoto.

Vertel me je probleem, je geniale idee of stel gewoon wat vragen!

Alexander Kaan · Product Designer