Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Architecture

Overview

The system uses four independent components that together provide automated, policy-driven access control without requiring a central authority or blockchain.

Standards used

StandardRoleSpecification
ODRLAccess policies (permissions, prohibitions, duties)W3C Recommendation
NanopublicationsImmutable, signed policy and audit recordsnanopub.net
DIDDecentralized identity (did:web)W3C Recommendation
RO-CrateResearch object packaging and metadataRO-Crate 1.1
I-ADOPTVariable semantics for automatic column mappingI-ADOPT
AES-256-GCMAuthenticated encryptionNIST SP 800-38D
ECDH + HKDFKey agreement for wrappingRFC 6090

Encryption scheme

Data encryption

Each dataset is encrypted with a unique AES-256-GCM symmetric key:

Plaintext file                  Encrypted file
buildings.gpkg     ──AES-256-GCM──►  [12B nonce][ciphertext + 16B GCM tag]
                     │
                     key (32 bytes, stored as GitHub Secret)

Key wrapping

The dataset key is wrapped (encrypted) for each authorized recipient using an ECIES-like scheme:

1. Generate ephemeral EC P-256 keypair
2. ECDH shared secret = ephemeral_private × recipient_public
3. Wrapping key = HKDF-SHA256(shared_secret)
4. Wrapped key = AES-256-GCM(wrapping_key, dataset_key)
5. Output: { ephemeral_public_key, nonce, wrapped_key }

Only the holder of the recipient’s private key can reverse step 2 to derive the wrapping key and unwrap the dataset key.

Access request flow

Why not blockchain?

The nanopublication network provides the same guarantees often attributed to blockchain:

PropertyBlockchainNanopublications
ImmutabilityHash-chain consensusContent-addressed URI + cryptographic signature
DecentralizationDistributed ledgerPeer-to-peer nanopub servers
VerifiabilityPublic ledgerSigned RDF, independently verifiable
Audit trailTransaction logAccess grant nanopubs
CostGas feesFree
Science-readyNoYes (designed for scholarly communication)

Migration paths

The architecture is modular — each component can be replaced independently:

ComponentCurrentAlternative
Key serverGitHub Pages + ActionsFastAPI on LifeWatch / university server
Data storageZenodo + S3Any HTTP/S3-compatible storage
Identitydid:webdid:key, did:ethr, institutional SSO
Policy storeNanopub networkLocal JSON-LD files
Pipelineurban_pfrAny tool that reads GeoPackage/FlatGeobuf