User Tools

Site Tools


content:tech:rhizome_bundle

Rhizome bundle

The bundle is the fundamental unit of data that is transported and stored by the Rhizome file distribution service.

A Rhizome bundle consists of a manifest and an optional payload.

Sender and recipient
  • If a bundle does not indicate the Serval Identity (SID) of its intended recipient, it is for general consumption (broadcast)
  • If a bundle does not indicate the Serval Identity (SID) of its sender, then it is of unknown origin (anonymous)

Bundle integrity

  • Rhizome does not modify any manifest once it is created
  • Rhizome does not modify any payload
  • Rhizome creates a random 256-bit Elliptic Curve private key for every bundle, called the Bundle Secret or BS
  • The 256-bit public key derived from the Bundle Secret is called the Bundle ID or BID
  • Rhizome does not reveal the Bundle Secret to any other application or node
  • Rhizome computes the 512-bit SHA512 hash of the payload, called the Payload Hash or PH (also File Hash or FH)
  • At injection, Rhizome inserts the Payload Hash into the bundle's manifest
  • Rhizome signs every complete manifest using the Bundle Secret
  • Rhizome nodes will only store and transmit manifests with valid signatures
  • Only an application possessing the original Bundle Secret can alter the manifest or payload

The net result of Rhizome's crytpo system is that:

  • any party may create a new bundle (with a new Bundle ID)
  • only the originating party may modify the manifest or payload of an existing bundle (keeping the same Bundle ID)
  • thus, once a bundle is created, all new payloads with the same Bundle ID are guaranteed to be from the same original sender

Payload security

  • Rhizome can optionally encrypt a payload during injection with a one-way asymmetric cipher using the recipient's Serval Identity (SID) public key
  • Rhizome can optionally encrypt a payload during injection with a two-way session cipher constructed using the sender's and recipient's Serval Identity (SID) public keys
  • Rhizome will decrypt an encrypted payload during extraction if the node possesses the recipient's Serval Identity (SID) secret key
  • The Payload Hash of an encrypted payload is the SHA512 hash of the encrypted form, not the clear text form
content/tech/rhizome_bundle.txt · Last modified: 02/05/2014 01:17 by Andrew Bettison