Hi Jon/all, As mentioned, I'd like to share the series that I have added some new features in order to complete the TIPC encryption:
- Patch 1 ("tipc: fix using smp_processor_id() in preemptible"): - Patch 2 ("tipc: optimize key switching time and logic"): These two patches just do a bug-fix and optimization for the code as a preparation for later commits. - Patch 3 ("tipc: introduce encryption master key"): This will introduce a 'master key' support which is set by user as a 'long-term' or static key (e.g. shared between nodes in the cluster in user control way). It will act like a key encryption key for the later key exchange, as well as allow a new node joins the cluster while it has no knowledge of current active session keys in the existing nodes. The master key setting will use the same 'tipc node set key' command but with a 'master' flag (see below). - Patch 4 ("tipc: add automatic session key exchange"): TX key of a node will now be able to be exchanged to peer nodes ( encrypted/decrypted by the master key) and attached as the corresponding RX keys automatically. A node can also 'request' for a TX key from peer whenever needed. This will enable us to do the later rekeying, and also make a new node being able to obtain the session keys from existing nodes. - Patch 5 ("tipc: add automatic rekeying for encryption key"): Finally, this patch will add the automatic rekeying which will generate a session key on each node at a specific interval. The key will be also distributed automatically to peer nodes, so it will be switched to be active shortly and traffic will be finally encrypted/decrypted by that new key. The rekeying interval is configurable as well, also user can disable or trigger an immediate rekeying if he wants. Besides, there will be a patch in the 'iproute2/tipc' including the new 'tipc node set key' command options, basically it will look like this: --------- $tipc node set key --help Usage: tipc node set key KEY [algname ALGNAME] [PROPERTIES] tipc node set key rekeying REKEYING KEY Symmetric KEY & SALT as a composite ASCII or hex string (0x...) in form: [KEY: 16, 24 or 32 octets][SALT: 4 octets] ALGNAME Cipher algorithm [default: "gcm(aes)"] PROPERTIES master - Set KEY as a cluster master key <empty> - Set KEY as a cluster key nodeid NODEID - Set KEY as a per-node key for own or peer REKEYING INTERVAL - Set rekeying interval (in minutes) [0: disable] now - Trigger one (first) rekeying immediately EXAMPLES tipc node set key 0x746869735F69735F615F6B657931365F73616C74 tipc node set key this_is_a_key16_salt algname "gcm(aes)" nodeid 1001002 tipc node set key this_is_a_master_key master rekeying now tipc node set key rekeying 600 --------- So, please help check the patches and give your comments, thanks a lot! BR/Tuong Tuong Lien (5): tipc: fix using smp_processor_id() in preemptible tipc: optimize key switching time and logic tipc: introduce encryption master key tipc: add automatic session key exchange tipc: add automatic rekeying for encryption key include/uapi/linux/tipc.h | 2 + include/uapi/linux/tipc_netlink.h | 2 + net/tipc/crypto.c | 986 ++++++++++++++++++++++++++++---------- net/tipc/crypto.h | 41 +- net/tipc/link.c | 5 + net/tipc/msg.h | 10 +- net/tipc/netlink.c | 2 + net/tipc/node.c | 89 ++-- net/tipc/node.h | 2 + net/tipc/sysctl.c | 9 + 10 files changed, 862 insertions(+), 286 deletions(-) -- 2.13.7 _______________________________________________ tipc-discussion mailing list tipc-discussion@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/tipc-discussion