Architecture Design Record - Configuration interface for signature handling¶
Problem¶
It should be configurable if crinit shall use/expect signed configurations. How that is done will have implications on usability and security. We should find a secure way with reasonable usability.
Influencing Factors¶
Assumptions¶
a secure boot scheme is used
Considered Alternatives¶
Option 1 - Configuration at build-time¶
The signature functionality can be activated or deactivated at build-time using compiler definitions.
Pros¶
simple implementation
Cons¶
Causes problems with packaging. We would need to maintain and install two different crinit packages depending if we want to use signatures or not.
testing more complicated if multiple binaries exist
Option 2 - Configured in global configuration¶
Crinit’s global configuration would be always verified and offer a runtime configuration to activate or deactivate signatures for task configurations.
Pros¶
simple implementation
uses already present configuration parser
Cons¶
impossible to have an unverified global configuration
Option 3 - command line argument¶
Crinit will accept command line arguments to activate or deactivate signatures.
Pros¶
flexible
easy to parse with getopt
extensible
Cons¶
unusual for an init system
awkward to use from bootloader perspective
Option 4 - parse Kernel command line¶
Parse Kernel command line with arguments like crinit.signatures={yes|no}
and similar to configure signature.
Pros¶
implicitly secure if secure boot chain is used
reasonably easy to parse with re2c
easy to use from bootloader perspective
extensible
Cons¶
completely new parser code required
Decision¶
Option 4 is taken.