Technologie en Beveiliging
Bixby versleutelt berichten in de browser voordat ze het apparaat verlaten. De server ziet nooit het originele bericht—alleen versleutelde data.
Het bericht wordt versleuteld in de browser voordat het wordt verzonden. De server ontvangt alleen versleutelde data en kan het bericht daarom niet lezen. AES-GCM-256 versleuteling via Web Crypto API. Versleuteling gebeurt client-side, plaintext verlaat apparaat nooit.
async function encryptMessage(plaintext) {
// Genereer 256-bit sleutel
const key = await crypto.subtle.generateKey(
{ name: 'AES-GCM', length: 256 }, true, ['encrypt', 'decrypt']
);
// Willekeurige IV + versleutel (plaintext verlaat apparaat nooit)
const iv = crypto.getRandomValues(new Uint8Array(12));
const encrypted = await crypto.subtle.encrypt(
{ name: 'AES-GCM', iv }, key, new TextEncoder().encode(plaintext)
);
return { encrypted, key };
}
De ontsleutelingssleutel staat in de URL (na de #). Deze wordt niet naar de server gestuurd, waardoor de server het bericht niet kan lezen. 256-bit AES-GCM sleutel in URL fragment. Fragmenten worden niet verzonden in HTTP requests (RFC 3986).
// Versleutel lokaal, stuur alleen versleutelde data naar server
const { encrypted, key } = await encryptMessage(message);
const { id } = await fetch('/api/store', {
method: 'POST', body: JSON.stringify({ encrypted })
}).then(r => r.json());
// Sleutel in URL fragment - wordt nooit naar server gestuurd (RFC 3986)
const link = `https://bixby.nl/read#${id}__${key}`;
Na het lezen wordt het bericht direct verwijderd. Elke link werkt maar één keer. Atomische delete: file_get_contents() + unlink() in één operatie. Voorkomt race conditions.
$id = preg_replace('/[^a-f0-9]/', '', $_POST['id']);
$path = "/messages/{$id}.json";
$data = json_decode(file_get_contents($path), true);
// Direct verwijderen na lezen (eenmalige toegang)
unlink($path);
echo json_encode(['encrypted' => $data['encrypted']]);
Native browser versleuteling. Geen externe libraries nodig. AES-GCM-256, Web Crypto API. IV: 96-bit random. Authenticated encryption.
Eenvoudige PHP API. Geen database nodig. PHP 8.3. File-based storage. TTL: 24 uur. Atomische delete operaties.
Snelle, veilige webserver. Nginx 1.24 + PHP-FPM 8.3. SSL/TLS via Let's Encrypt. Security headers: CSP, HSTS.
Tijdelijke bestanden, automatisch opgeruimd na 24 uur. Encrypted blobs in /messages/. Cron cleanup. Directe toegang geblokkeerd (403).
Alle client-side code is inspecteerbaar. Geen minified JavaScript, geen obfuscatie. Bekijk de belangrijkste bestanden via de link hieronder.
Geen tracking, analytics of logging. Geen tracking cookies. Geen third-party scripts.
Bixby wordt gehost op servers in Nederland. De data blijft binnen de EU en valt onder Nederlandse privacywetgeving. Nederlands datacenter, EU data residency, AVG/GDPR compliant.