forked from lolo859/vystem
Vystem 0.2
This commit is contained in:
@@ -12,7 +12,7 @@ SBFIE has been conceived with the following limitations in mind:
|
||||
- due to the will of it being compatible with a large variety of devices, it doesn't integrate TPM utilization (but support in an eventual future is planned)
|
||||
- any user of a non-QWERTY keyboard will have a hard time typing a password in an UEFI console
|
||||
- it use the EFI console as input (support of self-made input methods and protocol will be implemented in a near future)
|
||||
- any missing file that is supposed to be protected by SPFIE will cause the boot process to fail
|
||||
- any missing file that is supposed to be protected by SBFIE will cause the boot process to fail
|
||||
|
||||
## How it work
|
||||
|
||||
@@ -27,15 +27,16 @@ The `key.h` header contain the following datas:
|
||||
- `bp_key_pkblob`: an array of `64*N` bytes containing `N` Sphincs+ public keys, one for each file
|
||||
- `bp_key_pwdsalt`: an array of 32 bytes containing the salt to use for hashing the boot password
|
||||
- `bp_key_files`: an array of `N` strings indicating the order in which boot files should be verified for each public key from `sh_key_pkblob` to correspond with each file
|
||||
- `bp_key_files_sign`: an array of `N` strings indicating the corresponding signature file for each file of `bp_key_files`
|
||||
|
||||
We assume that all files are in the `\EFI\BlastProofFiles` folder with their corresponding names as specified in `bp_key_files` and that their Sphincs+ signatures are stored as `<file name>.sig` inside of the `\EFI\BlastProofSign` folder.
|
||||
We assume that all files are in the `\EFI\BPFILES` folder with their corresponding names as specified in `bp_key_files` and that their Sphincs+ signatures are stored inside `bp_key_files_sign` as `<file name without extension>.sig` inside of the `\EFI\BPSIGN` folder.
|
||||
|
||||
### Detailled steps
|
||||
|
||||
The steps in which SPFIE check the files is as follow:
|
||||
The steps in which SBFIE check the files is as follow:
|
||||
|
||||
1. The user enter the boot password
|
||||
2. The boot password is hashed using Argon2 using 262144 of memory cost and 3 of time cost. The salt is stored inside `bp_key_pwdsalt`The output is a 96 digest.
|
||||
2. The boot password is hashed using Argon2 using 262144 of memory cost and 3 of time cost. The salt is stored inside `bp_key_pwdsalt`. The output is a 96 digest.
|
||||
3. The digest is used as seed for generating a Sphincs+ keypair, immediately erasing the private key and keeping only the public key.
|
||||
4. The generated public key is used to verify the signature inside `bp_key_mainsig` with the message being `bp_key_pkblob`
|
||||
5. If the verification is successfull, the boot process continue. If not, the boot process is halted.
|
||||
@@ -46,8 +47,8 @@ The steps in which SPFIE check the files is as follow:
|
||||
|
||||
## Concerned files
|
||||
|
||||
To this date, the following files generated by build script are protected by SPFIE:
|
||||
- `bp.conf`
|
||||
- `bitra-ascii-medium.fbm`
|
||||
- `initfs-footprint.bin`
|
||||
- `signsyst-hash.bin`
|
||||
To this date, the following files generated by build script are protected by SBFIE:
|
||||
- `BP.CFG`
|
||||
- `FONT.FBM`
|
||||
- `INITFSFP.BIN`
|
||||
- `SSHASH.BIN`
|
||||
|
||||
Reference in New Issue
Block a user