Miguel Osorio | 8f14dfc | 2020-01-07 16:33:51 -0800 | [diff] [blame] | 1 | --- |
Miguel Osorio | b8a8591 | 2020-11-02 22:02:51 -0800 | [diff] [blame] | 2 | title: "OpenTitan Security" |
Miguel Osorio | 8f14dfc | 2020-01-07 16:33:51 -0800 | [diff] [blame] | 3 | --- |
| 4 | |
| 5 | ## Overview |
| 6 | |
Miguel Osorio | b8a8591 | 2020-11-02 22:02:51 -0800 | [diff] [blame] | 7 | OpenTitan's mission is to create a trustworthy, vendor-agnostic open source |
| 8 | silicon Root of Trust (RoT) widely adopted across the industry. We do this by |
| 9 | implementing strong logical security integrity guarantees in the hardware and |
| 10 | firmware components, and restricting licensing of the OpenTitan trademark to |
| 11 | those implementations conforming to OpenTitan standards. |
Miguel Osorio | 8f14dfc | 2020-01-07 16:33:51 -0800 | [diff] [blame] | 12 | |
Miguel Osorio | a0983e5 | 2020-12-07 10:09:53 -0800 | [diff] [blame] | 13 | ## [OpenTitan Security Model Specification][security_model] |
| 14 | |
| 15 | The [OpenTitan Security Model Specification][security_model] defines the logical |
| 16 | security properties of the discrete IC. It covers device and software |
| 17 | attestation, provisioning, secure boot, chip lifecycle, firmware update, chip |
| 18 | identity, and chip ownership transfer. |
| 19 | |
| 20 | ## [Logical Security Model][logical_security_model] |
Miguel Osorio | 8f14dfc | 2020-01-07 16:33:51 -0800 | [diff] [blame] | 21 | |
Miguel Osorio | b8a8591 | 2020-11-02 22:02:51 -0800 | [diff] [blame] | 22 | The [OpenTitan Security Model][logical_security_model] provides a high level |
| 23 | framework for device provisioning and run-time operations. It starts by |
| 24 | enumerating the range of logical entities supported by the architecture, and |
| 25 | their mapping into software stages. Runtime isolation properties and baseline |
| 26 | identity concepts are introduced in this document. |
| 27 | |
Miguel Osorio | 8f14dfc | 2020-01-07 16:33:51 -0800 | [diff] [blame] | 28 | ## Functional Guarantees |
| 29 | |
| 30 | At the functional level OpenTitan aims to provide the following guarantees: |
| 31 | |
Miguel Osorio | b8a8591 | 2020-11-02 22:02:51 -0800 | [diff] [blame] | 32 | * Silicon Owners shall be able to deploy their own Root of Trust (RoT) Public |
| 33 | Key Infrastructure (PKI) after taking ownership of the device. |
| 34 | * Silicon Creators shall endorse the authenticity of the hardware. Endorsement |
| 35 | is contingent on the silicon adhering to the physical implementation |
| 36 | guidelines and standard requirements stipulated by the project. The |
| 37 | endorsement shall be measurable via a Transport Certificate. |
| 38 | * OpenTitan shall provide full boot attestation measurements to allow Silicon |
| 39 | Owners to verify the boot chain configuration. The attestation chain shall |
| 40 | be anchored in the Silicon Owner's RoT PKI. |
| 41 | * OpenTitan shall provide a key manager implementation strongly bound to the |
| 42 | boot chain. Only a boot chain signed with the expected set of keys shall be |
| 43 | able to unlock stored keys/secrets. |
| 44 | * OpenTitan shall provide a key versioning scheme with support for key |
| 45 | migration bound to the firmware versioning and update implementation. |
Miguel Osorio | 8f14dfc | 2020-01-07 16:33:51 -0800 | [diff] [blame] | 46 | |
| 47 | ## Use Cases |
| 48 | |
| 49 | The security goals of the project are derived from a list of target use cases. |
Miguel Osorio | b8a8591 | 2020-11-02 22:02:51 -0800 | [diff] [blame] | 50 | See [OpenTitan's Use Cases][use_cases] for more details. The security goals are |
| 51 | used to define OpenTitan's threat model, as well as functional and assurance |
| 52 | security requirements. Such requirements influence the system architecture, as |
| 53 | well as the certification strategy for silicon implementations. |
Miguel Osorio | 8f14dfc | 2020-01-07 16:33:51 -0800 | [diff] [blame] | 54 | |
| 55 | ## Security Primitives |
| 56 | |
Miguel Osorio | b8a8591 | 2020-11-02 22:02:51 -0800 | [diff] [blame] | 57 | All hardware security primitives adhere to the OpenTitan |
| 58 | [comportable][comportable_ip] peripheral interface specification. |
| 59 | Implementations for some of these components are available for reference and |
| 60 | may not meet production or certification criteria yet. |
Miguel Osorio | 8f14dfc | 2020-01-07 16:33:51 -0800 | [diff] [blame] | 61 | |
Miguel Osorio | b8a8591 | 2020-11-02 22:02:51 -0800 | [diff] [blame] | 62 | ### [Entropy source][entropy_source] |
Miguel Osorio | 8f14dfc | 2020-01-07 16:33:51 -0800 | [diff] [blame] | 63 | |
Miguel Osorio | b8a8591 | 2020-11-02 22:02:51 -0800 | [diff] [blame] | 64 | Digital wrapper for a NIST SP 800-90B compliant entropy source. An additional |
| 65 | emulated entropy source implementation will be available for FPGA functional |
| 66 | testing. |
Miguel Osorio | 8f14dfc | 2020-01-07 16:33:51 -0800 | [diff] [blame] | 67 | |
Miguel Osorio | b8a8591 | 2020-11-02 22:02:51 -0800 | [diff] [blame] | 68 | ### [CSRNG][csrng] |
Miguel Osorio | 8f14dfc | 2020-01-07 16:33:51 -0800 | [diff] [blame] | 69 | |
Miguel Osorio | b8a8591 | 2020-11-02 22:02:51 -0800 | [diff] [blame] | 70 | Cryptographically Secure Random Number Generator (CSRNG) providing support for |
| 71 | both deterministic (DRBG) and true random number generation (TRNG). |
Miguel Osorio | 8f14dfc | 2020-01-07 16:33:51 -0800 | [diff] [blame] | 72 | |
Miguel Osorio | b8a8591 | 2020-11-02 22:02:51 -0800 | [diff] [blame] | 73 | The DRBG is implemented using the `CTR_DRBG` construction specified in |
| 74 | NIST SP 800-90A. |
Miguel Osorio | 8f14dfc | 2020-01-07 16:33:51 -0800 | [diff] [blame] | 75 | |
Miguel Osorio | b8a8591 | 2020-11-02 22:02:51 -0800 | [diff] [blame] | 76 | ### [AES][aes] |
Miguel Osorio | 8f14dfc | 2020-01-07 16:33:51 -0800 | [diff] [blame] | 77 | |
Miguel Osorio | b8a8591 | 2020-11-02 22:02:51 -0800 | [diff] [blame] | 78 | Advanced Encryption Standard (AES) supporting Encryption/Decryption using |
| 79 | 128/192/256 bit key sizes in the following cipher block modes: |
Miguel Osorio | 8f14dfc | 2020-01-07 16:33:51 -0800 | [diff] [blame] | 80 | |
Miguel Osorio | b8a8591 | 2020-11-02 22:02:51 -0800 | [diff] [blame] | 81 | * Electronic Codebook (ECB) mode, |
| 82 | * Cipher Block Chaining (CBC) mode, |
| 83 | * Cipher Feedback (CFB) mode with fixed data segment size of 128 bits, |
| 84 | * Output Feedback (OFB) mode, and |
| 85 | * Counter (CTR) mode. |
Miguel Osorio | 8f14dfc | 2020-01-07 16:33:51 -0800 | [diff] [blame] | 86 | |
Miguel Osorio | b8a8591 | 2020-11-02 22:02:51 -0800 | [diff] [blame] | 87 | ### [HMAC][hmac] |
Miguel Osorio | 8f14dfc | 2020-01-07 16:33:51 -0800 | [diff] [blame] | 88 | |
Miguel Osorio | b8a8591 | 2020-11-02 22:02:51 -0800 | [diff] [blame] | 89 | HMAC with SHA-2 FIPS 180-4 compliant hash function, supporting both |
| 90 | HMAC-SHA256 and SHA256 modes of operation. |
Miguel Osorio | 8f14dfc | 2020-01-07 16:33:51 -0800 | [diff] [blame] | 91 | |
Miguel Osorio | b8a8591 | 2020-11-02 22:02:51 -0800 | [diff] [blame] | 92 | ### [Key Manager][keymgr] |
Miguel Osorio | 8f14dfc | 2020-01-07 16:33:51 -0800 | [diff] [blame] | 93 | |
Miguel Osorio | b8a8591 | 2020-11-02 22:02:51 -0800 | [diff] [blame] | 94 | Hardware backed symmetric key generation and storage providing key isolation |
| 95 | from software. |
Miguel Osorio | 8f14dfc | 2020-01-07 16:33:51 -0800 | [diff] [blame] | 96 | |
Miguel Osorio | b8a8591 | 2020-11-02 22:02:51 -0800 | [diff] [blame] | 97 | ### [OTBN][otbn] |
Miguel Osorio | 8f14dfc | 2020-01-07 16:33:51 -0800 | [diff] [blame] | 98 | |
Miguel Osorio | b8a8591 | 2020-11-02 22:02:51 -0800 | [diff] [blame] | 99 | Public key algorithm accelerator with support for bignum operations in hardware. |
Miguel Osorio | 8f14dfc | 2020-01-07 16:33:51 -0800 | [diff] [blame] | 100 | |
Miguel Osorio | b8a8591 | 2020-11-02 22:02:51 -0800 | [diff] [blame] | 101 | ### [Alert Handler][alert_handler] |
Miguel Osorio | 8f14dfc | 2020-01-07 16:33:51 -0800 | [diff] [blame] | 102 | |
Miguel Osorio | b8a8591 | 2020-11-02 22:02:51 -0800 | [diff] [blame] | 103 | Aggregates alert signals from other system components designated as potential |
| 104 | security threats, converting them to processor interrupts. It also supports |
| 105 | alert policy assignments to handle alerts completely in hardware depending on |
| 106 | the assigned severity. |
Miguel Osorio | 8f14dfc | 2020-01-07 16:33:51 -0800 | [diff] [blame] | 107 | |
Miguel Osorio | b8a8591 | 2020-11-02 22:02:51 -0800 | [diff] [blame] | 108 | [aes]: {{< relref "hw/ip/aes/doc" >}} |
| 109 | [alert_handler]: {{< relref "hw/ip/alert_handler/doc" >}} |
| 110 | [comportable_ip]: {{< relref "doc/rm/comportability_specification" >}} |
| 111 | [csrng]: {{< relref "hw/ip/csrng/doc" >}} |
| 112 | [entropy_source]: {{< relref "hw/ip/entropy_src/doc" >}} |
| 113 | [hmac]: {{< relref "hw/ip/hmac/doc" >}} |
| 114 | [keymgr]: {{< relref "hw/ip/keymgr/doc" >}} |
| 115 | [logical_security_model]: {{< relref "doc/security/logical_security_model" >}} |
| 116 | [otbn]: {{< relref "hw/ip/otbn/doc" >}} |
| 117 | [security_model]: {{< relref "doc/security/specs" >}} |
| 118 | [use_cases]: {{< relref "doc/security/use_cases" >}} |