200 likes | 305 Views
Naming Operations for SCF. Wes Eddy MTI Systems, Inc. Introduction. To mitigate potential threats to network, data, and application security SCF needs ways for: Applications (end-applications and agents) to validate received data End-applications to protect transmitted data
E N D
Naming Operations for SCF Wes Eddy MTI Systems, Inc
Introduction • To mitigate potential threats to network, data, and application security SCF needs ways for: • Applications (end-applications and agents) to validate received data • End-applications to protect transmitted data • Agents to validate end-applications that attempt to utilize them • Agents to validate one another when in contact • Basic idea in this proposal for SCF naming is to use certificates to convey capabilities to send/receive data using a given name • Names come in two forms: locators and identifiers • Locators are hierarchical; also known as addresses • Identifiers are not necessarily hierarchical, and may be human readable
Outline • Specify: • How to create a namespace • How to allocate names within the namespace • How to locally query for names known within a local processing system or connected subnetwork • How to validate ownership of a given name • How to authenticate data from a given name • How to encrypt data to a given name • Discuss issues: • Revoking names
How to Create a Namespace • Create a namespace ownership certificate: • Generate a GUID for the namespace • Generate a public/private keypair for the namespace owner • Use private key to digitally sign a Namespace-Identification (NSI) certificate containing the: • GUID • Public key • Create an empty database of granted names • Schema: name (string), allocated_time (time), name_owner_pubkey (hex string / binary data), revoked_time (time)
Creating a Namespace Namespace Owner NSI Creates the NSI Creates Database for the Namespace
Notes on Generating a GUID • A 128-bit GUID/UUID can be generated per RFC 4122 • Contains bits for a timestamp, sequence number, and spatially-unique node identification • Not human-readable • But this doesn’t matter, since applications will either be preconfigured with the GUIDs identifying the namespaces they operate within, or a directory can map GUIDs to human-readable names
GUID per RFC 4122 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | time_low | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | time_mid | time_hi_and_version | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |clk_seq_hi_res | clk_seq_low | node (0-1) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | node (2-5) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Notes on Crypto Algorithms • There are numerous crypto algorithms available for generating the needed key pairs, digital signatures, etc., as well as specifications for certificate encoding and other aspects • Due to nature of SCF and design principles of SCF, need to Keep It Simple • Select one public key crypto suite: e.g. ECC per NSA Suite B (256-bit prime modulus ECDH and ECDSA) • Select one block cipher: e.g. AES-128 CTR • Select one hash algorithm: e.g. SHA-256 • Etc. • NSI certificate can indicate which algorithms are to be used for operations within the namespace
How to Allocate Names Within a Namespace • Need to obtain a Proof-of-Name (PoN) certificate from the namespace owner • Requesting a specific name (used for identifiers): • Provide your public key to the namespace owner • The namespace owner checks its database to see if it’s available (assume it is here) • Namespace owner marks it as in-use, storing the public key • Return PoN certificate for the name, signed by the namespace owner • Requesting an empty name (used for locators): • Namespace owner gets to choose what name to allocate • E.g. may be hierarchically assigned, supporting addressing as just another type of namespace that happens to have structure controlled by the owner • May support requesting a batch of names (a sub-namespace); this allows for secure prefix-delegation in an addressing system
Allocating a Name Name Requester Namespace Owner 1. Provide Public-Key and Request Name PoN 2. Update Database 3. Return/Publish PoN
PoN Certificate • Namespace GUID (matching the NSI) • Name granted • Public key of name-holder • Signature from namespace owner • Uncertain parts: • Timestamps? • Sequence number?
How to Locally Query for Names • Several options: 1. Namespace owner’s database holds all pairs of public keys and names that have been allocated • No expectation that it has current locators though! 2. Neighbor discovery protocol can locally broadcast PoN certificates • Can be used to learn “fresh” nearby locators 3. Gossiping query protocol can spread PoN certificates on-demand
How To Validate Ownership of a Given Name • The NSI generated by the namespace owner is either preconfigured or distributed to all applications operating within the namespace • The NSI holds the same public key from the namespace owner that’s used to sign PoN certificates, so it can be used to validate PoN certificates • This proves that the name has been given out to someone with a given public key • To prove ownership, you just need to show that you can decrypt something that was encrypted using the public-key in the PoN certificate • This proves that the PoN certificate was given to you
Validating Ownership of a Name Relay/Mule Data Source 1. Send PoN PoN PoN 2. Encrypt Challenge 3. Decrypt Challenge
How to Authenticate Data from a Given Name • The sender signs the data using the private key corresponding to the public key in the sender’s PoN being used • The receiver uses the PoN public key to check the signature
Authenticating Data from a Name Relay/Mule Data Source 1. Send PoN NSI PoN PoN 2. Use NSI to Validate PoN 3. Send Signed Containers
How to Encrypt Data To a Given Name • The sender uses the public key in the destination’s PoN to encrypt data • The receiver uses the private key portion of the keypair identified in its PoN in order to decrypt the data it receives
Issue: Revoking Names • Names should have an expiration date • But supporting this goes back to the time synchronization requirement that SCF needs to avoid. However, for this purpose, it could be much “rougher” than the rough sync that DTN/BP currently requires. • Do not support non-repudiation • Namespace owner destroys the namespace if it revokes its own certificate
Hierarchical Namespaces • Modifications to basic operations: • PoN certificate’s name field needs to indicate a range of names that have been allocated • Namespace owner’s database needs to handle ranges of names • All PoN certificate holders become namespace owners and need to hold their own database of any PoNs they grant within the delegated subset of the namespace • When Hierarchical PoN (HPoN) certificates are given out from the subsets of the namespace, they’re just like PoNs, but include a copy of the sub-namespace owner’s PoN as well • This is needed in order to validate the HPoNs using (and trusting) only the NSI certificate
NSI PoN