EQUIP Component Toolkit state/startup design notes

2004-05-17, Chris & James

Introduction

Persistence is presumed to ultimately file-based. E.g. file backup/restore can be used to recover a failed node.
Several installations (= multi-host single dwelling system, e.g. Tom's flat) may exist on a single LAN (e.g. Tom's building-area network, BAN)
Setting up a new node should be easy using Java WebStart :-)

Single Dwelling System

A single dwelling system comprises (a) hardware:
(b) Software:

Security and Trust

Direct physical access to hardware is taken as the base-line for security, i.e. at this level you can do whatever you want :-) Consequently, all processes on a given host are presumed mutually trustworthy.
Access to the LAN is assumed to provide a minimal degree of security, but is not sufficient for granting trust (e.g. see multiple dwellings per LAN case, above).
Security model 1 presumes that out of band distribution of a shared secret to a host (PC) incorporates it into that trust domain. E.g. copying a shared secret via a USB flash disk from an existing member of the particular dwelling to a new host would establish mutual trust.

Scenarios:

Additional Requirements

For development/testing/etc it should be possible for a single PC to be part of different installations. It is not clear whether this would only be at different times, or possibly even at the same time :-)

Design 1

When a machine is re-booted, by inspecting its own filesystem (or other local persistence mechanism) it should be able to determine:
What can you do when you start a new machine?
NOTE when (re)starting an installation master the IP and port of installation dataspace may have changed and must be made available.
NOTE when (re)starting a Container the IP and port of the installation dataspace may have changed and must be determined.

Discovery issues

How do you know what installations are available to join?
How do you know what IP and port the installation's dataspace is running on?

Design for use of EQUIP discovery

Background:
Desired outcome (a) installation discovery:
Desired outcome (b) installation dataspace URL discovery:
Option 1:
So:

Design for EQUIP security

Connecting to the dataspace should also require the mutual demonstrated holding of the shared secret :-) E.g. challenge response using deterministically derived key from shared secret.

What happens next?

Presumably the user can see:
The user can presumably, for each active installation of which this machine is currently a master or member:

What might the filesystem look like?

Deterministic choice of common root directory/
    per-installation subdirectory (?made safe version of discovery group)/
       shared secret
       full version of discovery group, or at least Human-readable name
       installation configuration, e.g. restart/rejoin by default, dataspace port number?
       dataspace persistence directory (for installation master, only)
       per-container directories/ (each with)
          container startup configuration, e.g. executable pathname, restart/rejoin by default
          container's own persistence stuff... (inc. component-specific persistence)
          container component deployment directory/
             e.g. jar files
             ??extra metadata for update management e.g. origin website??

EOF