# Commits which modify this file MUST generate the new .png! msc { tenant [textbgcolor="green"], host [textbgcolor="red"], bios [textbgcolor="orange"], bootloader [textbgcolor="orange"], kernel [textbgcolor="orange"], psp [textbgcolor="yellow"]; tenant=>host [label="cert chain request"]; host=>psp [label="cert chain request"]; psp=>host [label="cert chain reply\n(w/ firmware version)"]; host=>tenant [label="cert chain reply\n(w/ firmware version)"]; ...; tenant box tenant [label="validate cert chain"]; tenant box tenant [label="validate fw version"]; tenant box tenant [label="craft exec policy"]; tenant box tenant [label="random cdh keypair"]; tenant box tenant [label="random tek/tik"]; tenant box tenant [label="DH(cdh, pdh) => z"]; tenant box tenant [label="KDF(z) => master"]; tenant box tenant [label="KDF(master) => kek"]; tenant box tenant [label="KDF(master) => kik"]; tenant => host [label="CDH, MAC(tik, policy),\nMAC(kik, ENC(kek, tek||tik))"]; host => psp [label="CDH, MAC(tik, policy),\nMAC(kik, ENC(kek, tek||tik))"]; psp box psp [label="DH(cdh, pdh) => z"]; psp box psp [label="KDF(z) => master"]; psp box psp [label="KDF(master) => kek"]; psp box psp [label="KDF(master) => kik"]; psp box psp [label="check MAC(kik, ...)"]; psp box psp [label="DEC(kek, tek||tik)"]; host => psp [label="guest pages"]; psp box psp [label="measure guest pages"]; psp => host [label="MAC(tik, measurement)"]; host => tenant [label="MAC(tik, measurement)"]; tenant box tenant [label="validate measure"]; tenant box tenant [label="prepare metadata"]; tenant => host [label="enc = ENC(tek, metadata)\nMAC(tik, enc)"]; host => psp [label="enc = ENC(tek, metadata)\nMAC(tik, enc)"]; psp => bios [label="decrypt metadata into guest memory"]; --- [label="VM START"]; bios => bootloader [label="metadata"]; bootloader => kernel [label="metadata"]; kernel box kernel [label="unlock volume"]; --- [label="BOOT COMPLETE"]; }