Closed tlaurion closed 6 years ago
This is a very good idea. There is the beginning of a server build of heads in the moc branch to support the Mass Open Cloud project's end-to-end attested design.
Does it have a TPM? That is a fairly hard requirement for measured boot and the attestation system.
Does it have a TPM? That is a fairly hard requirement for measured boot and the attestation system.
TPM YES With Owner Controlled CRTM - TPM is an option addon module
@osresearch : It has a 20-1 header, which normally support TGC 1.2, but there is some TPM enforcing TGC 2.0 for 20-1 pins headers. Any advice on what might be supported best?
Supports Infineon module. http://anzwix.com/a/Coreboot/Mbasuskgped16AddTPMSupport
Forgot to update : OpenBMC port was made. Need to test. https://www.raptorengineering.com/coreboot/kgpe-d16-bmc-port-status.php
@flammit @osresearch
Porting is on it's way! Heads boots, but the TPM is wrongly detected as a version 1.2 instead of 2.0 resulting in ownership being impossible. Investigating. This branch includes RaptorEngineer's flashrom patches so that OpenBMC can be flashed from within Heads.
Actual boot trace: KGPE-D16-No_TPM.txt
@zaolin : Any input on TPM initialization issues encountered in the above trace?
Exerpt of coreboot wrongly detecting the 2.0 TPM as 1.2:
TPM initialization. TPM: Init Found TPM SLB9660 TT 1.2 by Infineon TPM: Open TPM: Startup TPM: command 0x99 returned 0x1e TPM: Error code 0x1e.
This is great news. Glad to hear that progress is being made on the KGPE-D16.
Regarding TPM 2.0, we really need to figure out the best way to work with them. Issue #287 begins to address it, but we'll also need to find a lightweight library that works well with it (and decide if we want to support fTPM systems).
@tlaurion, please bring the issue up on the coreboot mailing list or submit an issue to the coreboot bug tracker with your config, the commit hash and the full boot log.
Also, as far as I understood the Linux TPM folks, the Linux kernel should be able to work around broken firmware and set up the TPM by itself. If not, please try with latest Linux master, and report an issue to the Linux kernel TPM folks.
@paulmenzel: the thing is that we want TPM being initialised and used to measure romstage and ramstage BEFORE Linux enters fully in play.
This patch resolves the issue of SLB9665 TPM2.0 being detected and initialized as a SLB9660 TPM1.2.
Here is my patch against flammit's heads' coreboot 4.7, and my branch, missing proper TPM2.0 tools to use the initialized TPM.
Boot log exerpt:
lpc_tpm: Read reg 0xf00 returns 0x1a15d1 Found TPM SLB9665 TT 2.0 by Infineon TPM: Open
On 01/31/18 17:40, tlaurion wrote:
@paulmenzel: the thing is that we want TPM being initialised and used to measure romstage and ramstage BEFORE Linux enters fully in play.
@tlaurion, sorry for the misunderstanding. I am aware of that. Checking if Linux is able to correctly set it up was just to make sure that it is working in the first place.
[…]
Work continues here.
From there, Heads boots, initializes SL9665 TPM 2.0 chipset, but usage of TPM doesn't work, since no libraries included do support 2.0. So TPM support in heads is there but unused for the moment.
Patch set includes RaptorEngineering's flashrom patches to flash openbmc from within heads. It also contains coreboot patches so that kvm chip can obtain memory access prior to releasing it to coreboot. So openbmc works, permits internal flashing (updates) and updates of kgpe-d16 heads updates both from within heads.
Missing:
make CONFIG=config/kgpe-d16-generic.config -j4
sha256sum kgpe-d16.rom
0d1f6f20b12026b7f20a33a1930957c9e3ecc539384401426e88986a5d32bab3 kgpe-d16.rom
KGPE-D16 is now officially supported by Heads! This workstation/server board supports Qubes perfectly (HVM/IOMMU/HAP/SLAT/TPM/Remapping)! A RYF server board, serving as a base for reasonably secure computing. Note the TPM2 support is still missing from a toolset perspective.
Based on flammit's modifications made atop of this branch
make BOARD=kgpe-d16
Usage:
screen /dev/ttyS0 115200
. Disconnect and kill screen session with ctrl-a ctrl-\
flashrom-kgpe-d16.sh /media/coreboot.rom
Limitation:
sudo minicom -D /dev/ttyUSB0
then flashrom-kgpe-d16-openbmc.sh /media/flash-asus-20180122172732
. Do not forget to turn off REST API access and to change default SSH password when building OpenBMCStill missing:
make BOARD=kgpe-d16 -j4
@osresearch https://github.com/osresearch/heads/pull/335
KGPE-D16 support is merged into Heads!
Still missing:
Would that make sense? Using Qubes as a server spinner for Qubes seems like a nice and practical experiment.