>
Skip to main contentSend MRI, CT, and X-ray files via post-quantum encrypted relay. Client-side encryption, burn-on-read, Merkle audit trail. Zero persistent storage. EU only.
DICOM files carry the most sensitive patient data there is: images, metadata with BSN, birth date, diagnosis codes, referring physician. Every transfer is a compliance event.
| Requirement | Regulation | Legacy solutions fail because... |
|---|---|---|
| End-to-end encrypted transport | GDPR Art. 32 · NEN 7510-2 | SFTP encrypts the channel, not the file. Email is plaintext. WeTransfer has no E2E. |
| No persistent storage of patient data | GDPR Art. 5(1)(e) · NEN 7510-1 | Cloud shares, email attachments, and SFTP all retain copies indefinitely. |
| Tamper-evident audit trail | NEN 7510-1 §9.4 · WGBO | SFTP logs are mutable. Email headers are forgeable. WeTransfer provides no audit export. |
| EU jurisdiction only | GDPR Art. 46 | Most SaaS solutions route through US infrastructure (AWS, Azure, GCP). |
| Post-quantum readiness by 2030 | NCSC PQC migration guideline | No widely deployed file transfer tool uses ML-KEM or equivalent today. |
All encryption happens on the client. The relay sees only opaque ciphertext. The file is destroyed after the first authorised download.
Runs on any Debian/Ubuntu system, including Raspberry Pi and embedded Linux. No Python environment needed — the .deb bundles everything.
# Debian / Ubuntu (amd64 or arm64) curl -fsSL https://paramant.app/install-client.sh | bash # Or manual .deb install wget https://github.com/Apolloccrypt/paramant-relay/releases/latest/download/paramant-client_amd64.deb sudo dpkg -i paramant-client_amd64.deb # Verify paramant-sender.py --version # paramant-client 2.4.5
Request a pgp_ API key at privacy@paramant.app. Keys for healthcare are issued against the health.paramant.app sector.
# Interactive setup paramant-setup # Relay: health.paramant.app # Key: pgp_xxxxxxxxxxxxxxxx # Device: mri-001 # Or write config directly mkdir -p ~/.paramant cat > ~/.paramant/config.json <<EOF { "relay": "https://health.paramant.app", "key": "pgp_xxxxxxxxxxxxxxxx", "device": "mri-001", "sector": "health" } EOF
Files are encrypted before leaving the machine. The relay only sees ciphertext.
# Single file paramant-sender.py --key pgp_xxx --device mri-001 --sector health scan.dcm # → Uploaded: https://health.paramant.app/v2/blob/abc123 # → CT leaf: 3fa7b2c4d8e1... # → Expires: burn-on-read (no TTL) # Watch folder — auto-send new DICOM files as they appear paramant-sender.py \ --watch /dicom/outbox/ \ --device mri-001 \ --sector health \ --key pgp_xxx
# /etc/systemd/system/paramant-dicom.service
[Unit]
Description=Paramant DICOM sender
After=network.target
[Service]
ExecStart=/usr/local/bin/paramant-sender.py \
--watch /dicom/outbox/ \
--device mri-001 \
--sector health \
--key pgp_xxx
Restart=always
RestartSec=10
User=paramant
[Install]
WantedBy=multi-user.target
sudo systemctl enable --now paramant-dicom
The receiver polls the relay, decrypts locally, and forwards the raw DICOM bytes to your PACS.
# STOW-RS compatible endpoint paramant-receiver.py \ --key pgp_xxx \ --sector health \ --forward http://pacs.hospital.nl:11112/api/dicom # DICOM DIMSE (C-STORE SCU) paramant-receiver.py \ --key pgp_xxx \ --sector health \ --forward-dcm pacs.hospital.nl:11112 \ --forward-aet DESTINATION_AET
Every transfer creates a Merkle leaf hash. The log proves delivery at a specific timestamp without storing any patient data.
curl https://health.paramant.app/v2/ct/log?limit=5 \
-H "X-Api-Key: pgp_xxx" \
| python3 -m json.tool
# Example response { "ok": true, "root": "3fa7b2c4...", "entries": [ { "index": 47, "leaf_hash": "3fa7b2c4d8e1...", "tree_hash": "9b4c1a2e...", "device_hash": "a1b2c3...", "ts": 1744649123 } ] }
How Paramant maps to the NEN 7510 and GDPR requirements for DICOM transport.
| Aspect | Implementation | Standard |
|---|---|---|
| Encryption | ML-KEM-768 (FIPS 203) + AES-256-GCM, client-side only | NEN 7510-2 A.10.1 · NCSC PQC |
| Storage | Zero bytes on relay — RAM only, destroyed after first read | AVG Art. 5(1)(e) · NEN 7510-1 |
| Jurisdiction | Hetzner Falkenstein, Germany — no US sub-processors | AVG Art. 46 |
| Audit trail | Merkle CT log — SHA-256 leaf hashes, append-only | NEN 7510-1 §9.4 · WGBO |
| Relay identity | ML-DSA-65 self-signed relay certificate | FIPS 204 |
| DPA | Data Processing Agreement (GDPR Art. 28) available on request | AVG Art. 28 |
Request a pgp_ key for the healthcare relay. Verwerkersovereenkomst included.