I am taking the #devember2020 #code challenge as a good excuse to sit down and improve what my brain already had in plan, writing down here the project status and progressions as well as answering questions on any level.
The mboot project is something that came from the idea of allowing a system to have partial trust of X in close proximity (network wise) clients. Using Y of those X clients as storage for the unseal key of the core system.
Using something similar to dropbear ssh shell, but not having to store the full key on any client but split them, which is possible via the shamir’s secret sharing algorithm.
What is already in place:
- boot hook script allowing configure to fetch passphrase or arbitrary script
- code for generating the split key/script for clients
- example code for setting up simple clients
- documentation setup
- live machine locally (media player server) + old local testing vms using this setup
Implementation plans:
- improve the client to allow
- using gotify/pushover/other notification service on clients
DONE: implemented via single line of script call inside the ssh authorized line prior to unlock, using LWP perl like in the pushover example. - have MFA (currently only ssh key of server is used, plan is to have another device eg. public web server or android device to provide a signed OKAY message that tells the client to allow sending the key segment
- using gotify/pushover/other notification service on clients
- improve documentation around threat model and mitigations
- eg. add gpg support on server side to only execute trusted code if Y clients are compromised (bi-directional trust)
- improve server part to:
- use proper log_msg functions
- retry for a certain period of time
- general items