Reaves.dev

v0.1.0

built using

Phoenix v1.7.20

Security In Andrew

Stephen M. Reaves

::

2024-04-27

Notes about Lecture 11b for CS-6210

Summary

State of Computing circa 1988

Workstations conneccted to central server over lan

  • local disks served as caches

Andrew Architecture

Client workstation

  • Unix
  • Called virtues

Servers are clusted in secure environment

  • Called vice
  • Secure

Clients need to access servers over insecure links

Process called Venus used for auth and client caching

Encryption Primer

Private Key System

  • Symmetric keys used in login
    • like password

Public Key System

  • Asymmetric keys
    • Public key published
      • Used to encrypt
    • Private key hidden
      • Used to decrypt

Challenges for Andrew File System

  • Authenticate users
  • Authenticate server
  • Prevent replay attacks
  • Isolate users

Private key crypto system

Identity of sender in cleartext

Overuse of both username and password is a security hole

  • Over-exposing key makes it easier to break key

Solution

  • Username and Password only for login
  • Use ephemeral id and keys for subsequent venus-vice communication

3 classes of client-server interaction

  • login
  • RPC Session Establishment
  • FS Access during session

Login Process

2 Data strucutures:

  • cleartoken
    • extract handshake key client (HKC)
  • secrettoken
    • cleartoken encrypted with key known only to vice
    • unique for this login session
      • used as ephemeral client_id

Venus uses secretoken as the client id and the RPC messages are encoded with HKC

RPC Session Establishment

serverclientserverclientclientIdent is secret tokenX & Y are random numbersclientIdent,E[X, HKC]Decrypt message using HKCE[X+1, Y, HKC]Decrypt message using HKCE[Y+1, HKC]Generate session key (sk)E[sk, num, HKC]

Incrementing random number by 1 proves that sender is genuine

num is the starting sequence number for RPC

Login is a Special Case of Bind

  • Username is used for clientIdent
  • Password is used as HKC
  • Get back two tokens, encrypted with password
    • secrettoken
    • cleartoken

Putting it All Together

vicevenusvicevenuslogin(user,pass)secret, clearRPC(secret, HKC)skfs calls(secret, sk)response

Username and password are only used once per login session

HKC used only for a new RPC session

SK used for all RPC calls to a filesystem