rse_attestation_flow.puml 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. @startuml
  2. skinparam ParticipantPadding 10
  3. skinparam BoxPadding 10
  4. box AP
  5. participant RMM
  6. participant BL31
  7. endbox
  8. box RSE
  9. participant DelegAttest
  10. participant InitAttest
  11. participant MeasuredBoot
  12. participant Crypto
  13. endbox
  14. == RMM Boot phase ==
  15. RMM -> BL31: get_realm_key(\n\t**hash_algo**, ...)
  16. BL31 -> DelegAttest: get_delegated_key
  17. DelegAttest -> MeasuredBoot: read_measurement
  18. Rnote over DelegAttest: Compute input\n\ for key derivation\n\ (hash of measurements)
  19. DelegAttest -> Crypto: derive_key
  20. Rnote over DelegAttest: Compute public key\n\ hash with **hash_algo**.
  21. Rnote over Crypto: Seed is provisioned\n\ in the factory.
  22. DelegAttest --> BL31: get_delegated_key
  23. BL31 --> RMM: get_realm_key
  24. Rnote over RMM: Only private key\n\ is returned. Public\n\ key and its hash\n\ must be computed.\n\
  25. Public key is included\n\ in the realm token.\n\ Its hash is the input\n\ for get_platform_token
  26. RMM -> BL31: get_platform_token(\n\t**pub_key_hash**, ...)
  27. BL31 -> DelegAttest: get_delegated_token
  28. Rnote over DelegAttest: Check **pub_key_hash**\n\ against derived key.
  29. DelegAttest -> InitAttest: get_initial_token
  30. Rnote over InitAttest: Create the token including\n\ the **pub_key_hash** as the\n\ challenge claim
  31. InitAttest -> MeasuredBoot: read_measurement
  32. InitAttest -> Crypto: sign_token
  33. InitAttest --> DelegAttest: get_initial_token
  34. DelegAttest --> BL31: get_delegated_token
  35. BL31 --> RMM: get_platform_token
  36. Rnote over RMM: Platform token is\n\ cached. It is not\n\ changing within\n\ a power cycle.
  37. @enduml