• Tuong Lien's avatar
    tipc: introduce encryption master key · daef1ee3
    Tuong Lien authored
    In addition to the supported cluster & per-node encryption keys for the
    en/decryption of TIPC messages, we now introduce one option for user to
    set a cluster key as 'master key', which is simply a symmetric key like
    the former but has a longer life cycle. It has two purposes:
    
    - Authentication of new member nodes in the cluster. New nodes, having
      no knowledge of current session keys in the cluster will still be
      able to join the cluster as long as they know the master key. This is
      because all neighbor discovery (LINK_CONFIG) messages must be
      encrypted with this key.
    
    - Encryption of session encryption keys during automatic exchange and
      update of those.This is a feature we will introduce in a later commit
      in this series.
    
    We insert the new key into the currently unused slot 0 in the key array
    and start using it immediately once the user has set it.
    After joining, a node only knowing the master key should be fully
    communicable to existing nodes in the cluster, although those nodes may
    have their own session keys activated (i.e. not the master one). To
    support this, we define a 'grace period', starting from the time a node
    itself reports having no RX keys, so the existing nodes will use the
    master key for encryption instead. The grace period can be extended but
    will automatically stop after e.g. 5 seconds without a new report. This
    is also the basis for later key exchanging feature as the new node will
    be impossible to decrypt anything without the support from master key.
    
    For user to set a master key, we define a new netlink flag -
    'TIPC_NLA_NODE_KEY_MASTER', so it can be added to the current 'set key'
    netlink command to specify the setting key to be a master key.
    
    Above all, the traditional cluster/per-node key mechanism is guaranteed
    to work when user comes not to use this master key option. This is also
    compatible to legacy nodes without the feature supported.
    
    Even this master key can be updated without any interruption of cluster
    connectivity but is so is needed, this has to be coordinated and set by
    the user.
    Acked-by: default avatarJon Maloy <jmaloy@redhat.com>
    Signed-off-by: default avatarTuong Lien <tuong.t.lien@dektech.com.au>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    daef1ee3
crypto.c 54 KB