TSEC: Difference between revisions
| Line 1,738: | Line 1,738: | ||
|}  | |}  | ||
==   | == Authenticated Mode ==  | ||
===== Entry =====  | |||
From non-secure mode, upon jumping to a page marked as secret, a secret fault occurs. This causes the CPU to verify the region specified in $cauth against the MAC loaded in $c6. If the comparison is successful, $pc is set to the base of the $cauth region. If the comparsion fails, the CPU is halted.  | |||
===== Exit =====  | |||
The CPU automatically goes back to non-secure mode when returning back into non-secret pages.  | |||
== Crypto processing ==  | |||
Part of the information here (which hasn't made it into envytools documentation yet) was shared by [https://wiki.0x04.net/wiki/Marcin_Ko%C5%9Bcielnicki mwk] from reverse engineering falcon processors over the years.  | Part of the information here (which hasn't made it into envytools documentation yet) was shared by [https://wiki.0x04.net/wiki/Marcin_Ko%C5%9Bcielnicki mwk] from reverse engineering falcon processors over the years.  | ||
| Line 1,744: | Line 1,751: | ||
Falcon tracks permission metadata about each crypto reg. Permissions include read/write ability per execution mode, as well as ability to use the reg for encrypt/decrypt, among other permissions. Permissions are propagated when registers are referenced by instructions (e.g. moving a value from read-protected $cX to $cY will result in $cY also being read-protected).  | Falcon tracks permission metadata about each crypto reg. Permissions include read/write ability per execution mode, as well as ability to use the reg for encrypt/decrypt, among other permissions. Permissions are propagated when registers are referenced by instructions (e.g. moving a value from read-protected $cX to $cY will result in $cY also being read-protected).  | ||
===   | === cauth ===  | ||
$cauth is a special purpose register in the CPU.  | |||
{| class="wikitable" border="1"  | |||
!  Bits  | |||
!  Description  | |||
|-  | |||
| 0-15 || Start of region to authenticate (in 0x100 pages)  | |||
|-  | |||
| 16 || Use secret xfers (?)  | |||
|-  | |||
| 17 || Region is signed and encrypted and double the size (?)  | |||
|-  | |||
| 18 ||  | |||
|-  | |||
| 19 ||  | |||
|-  | |||
| 31-24 || Size of region to authenticate (in 0x100 pages)  | |||
|}  | |||
=== csigauth ===  | === csigauth ===  | ||