-
Notifications
You must be signed in to change notification settings - Fork 0
10_Security_and_Trust
BioPro uses a hierarchical Trust Tree architecture to ensure that every analysis module you run is authentic, untampered, and verified by a recognized authority.
Unlike a simple "binary" lock, BioPro uses a chain of cryptographic proofs. This allows for institutional delegation (e.g., a University trusting a Lab, which in turn trusts a Researcher).
graph TD
Root[🏛️ BioPro Core Authority] -->|Signs| Uni[🏫 University Anchor]
Uni -->|Signs| Lab[🧪 Research Lab]
Lab -->|Signs| Dev[👤 Developer Key]
Dev -->|Signs| Plugin[📦 Analysis Plugin]
subgraph "Local Trust Circle"
User[👤 End User] -->|Manually Trusts| Indie[👤 Independent Dev]
end
The ultimate anchor is the BioPro Core Authority. Its public key is baked into the BioPro application. Every official plugin must eventually trace its heritage back to this root.
When a developer is "Verified," it means an Authority (like BioPro or a registered University) has cryptographically signed their public key. This signature is stored in a delegation.json file on the developer's machine and bundled into every plugin they sign.
BioPro is an open ecosystem. If you want to run code from an independent researcher who isn't signed by a major authority:
- The app will show a
⚠️ warning. - You can choose to "Trust this Developer" manually.
- BioPro saves their ceremony to your local
~/.biopro/trusted_roots/folder, effectively making them a "Verified Developer" on your machine only.
Whenever you open a plugin, the TrustManager performs three strict checks:
- Integrity Check: It calculates a SHA-256 hash of every file in the plugin directory and compares it to the signed manifest. If even a single line of code is changed, the check fails.
- Signature Check: It verifies the digital signature of the manifest using the developer's public key.
-
Chain Check: It recursively follows the
trust_chain.jsonuntil it finds an "Anchor" (a key present in your local or hardcoded trusted roots).
To become part of the trust tree, you must:
-
Initialize: Generate your keys using
biopro-sign init. -
Request Delegation: Send your
public.pubhex to an authority (like the BioPro team or your PI) to get adelegation.json. -
Sign: Run
biopro-sign sign <folder>before distribution.
For technical details on the CLI, see the Developer Handbook.