blob: 96346725e45132b957e22a2863c55b3fe03b10fe [file] [log] [blame] [view]
Hugo McNallyf6298b32023-02-12 14:47:22 +00001# Device Life Cycle
Miguel Osorio3ee47a62020-08-05 19:48:10 -07002
Miguel Osorio3ee47a62020-08-05 19:48:10 -07003## Overview
4
5This document describes the OpenTitan device operational states supported for
6manufacturing, provisioning, regular operation and RMA[^1].
7
8Provisioning refers to the process in which a device creates a unique and
9trusted identity.
10
11Manufacturing refers to the process in which a device is tested and prepared for
12silicon correctness prior to production.
13
Hugo McNallyaef0a662023-02-11 19:44:55 +000014The technical specification of the corresponding life cycle controller IP can be found [here](../../../../hw/ip/lc_ctrl/README.md).
Michael Schaffner03ab58e2020-12-01 20:48:53 -080015
Miguel Osorio3ee47a62020-08-05 19:48:10 -070016## Background
17
Hugo McNallyaef0a662023-02-11 19:44:55 +000018First see [here](../../logical_security_model/README.md) for
Miguel Osorio3ee47a62020-08-05 19:48:10 -070019OpenTitan's logical entity breakdowns.
20
21OpenTitan implements standard device life cycle manufacturing states which are
22configured via OTP[^2] memory. These states allow the **Silicon Creator** to
23manage the state of the device as it is being manufactured and provisioned for
24shipment.
25
26An additional set of life cycle states are used to encode the device ownership
27state. A device that has been personalized with a unique Silicon Creator
28Identity, can be provisioned with a Silicon Owner Identity and Credentials. This
29enables the Silicon Owner to run signed code on the device. The process of
30assigning a Silicon Owner to a device is referred to as Ownership Transfer.
31Depending on the product SKU configuration, a device may support a single and
32permanent ownership transfer or multiple ones. The multiple ownership transfer
33use case has additional state control requirements which are described in more
34detail in later sections.
35
36## Architecture
37
38Life cycle states are defined by a combination of OTP and flash. OTP state
39transitions cannot be reverted, while flash defined states are meant to be
40'flexible', especially when ownership transfer is required. This implies that
41when OTP states are transitioned from A to B, we cannot go back to A from B.
42However, it is still possible to transition from B to C, assuming such a
43transition is legal and allowed by the life cycle definition.
44
45See the table below for more details.
46
Drew Macrae93536cd2021-07-17 13:32:52 -070047<!--SVG for flow chart below in google docs at
48https://docs.google.com/drawings/d/1kENEhJzrWDkzonu8ZC6SKDRtjETyH6S4SslcO1RpVPM/edit?usp=sharing-->
Miguel Osorio3ee47a62020-08-05 19:48:10 -070049<img src="device_life_cycle_fig1.svg" alt="Fig1" style="width: 800px;"/>
50
51In the diagram above,
52
53* **BLACK** arcs represent unconditional OTP transitions. Specifically, this
54 means that the state will transition as long as it was requested; no
55 additional authorization is necessary.
56* **ORANGE** arcs represent conditional flash transitions. Specifically, the
57 transition requires either specific value patterns or device specific values
58 to be programmed. Since flash states are managed by software, this is not
59 further covered in this specification.
60* **RED** arcs represent conditional transitions. These transitions require
61 the user to supply specific device-unique values and meet specific
62 conditions. These transitions cannot be reversed.
63
64Device life cycle is split into two domains.
65
66* Manufacturing state
67* Identity & Ownership state
68
69Manufacturing state largely refers to the presence of debug functions and
70liveness of the device. This is closely connected to manufacturing testing
71status as well as desired debug visibility during development and production.
72
73Identity & Ownership state refers to the state of provisioned identities as
74defined by the provisioning flow.
75
76The life cycle management system splits the states into two because there are
77attributes defined by each that are not strictly related most of the time. By
78decoupling a single definition into two, more flexibility is allowed in the
79system.
80
81In addition, while certain states are defined by OTP (thus hard), other states
82are defined by flash. This gives the latter more flexibility in changing values
83to support the provisioning flow ownership transfer model.
84
85For example, transitions into the DEV / PROD / RMA manufacturing states affect
86OTP states and therefore cannot be reversed once completed.
87
Drew Macrae93536cd2021-07-17 13:32:52 -070088LOCKED_OWNERSHIP / UNLOCKED_OWNERSHIP identity states are defined in flash and thus can be reversed
Miguel Osorio3ee47a62020-08-05 19:48:10 -070089under the right circumstances.
90
91Below, each state is described in detail.
92
93### Manufacturing States
94
95<table>
96 <tr>
97 <td><strong>Name</strong></td>
98 <td><strong>Encoding</strong></td>
99 <td><strong>Description</strong></td>
100 </tr>
101 <tr>
102 <td>RAW</td>
103 <td>OTP</td>
104 <td>
105
106This is the default state of the OTP.
107
Michael Schaffner27bf5692020-11-04 09:37:10 -0800108During this state, no functions other than transition to TEST_UNLOCKED0 are
Miguel Osorio3ee47a62020-08-05 19:48:10 -0700109available.
110
Michael Schaffner27bf5692020-11-04 09:37:10 -0800111The token authorizing the transition from RAW to TEST_UNLOCKED0 is a value that
Miguel Osorio3ee47a62020-08-05 19:48:10 -0700112is secret global to all devices. This is known as the RAW_UNLOCK token.
113 </td>
114 </tr>
115 <tr>
Michael Schaffner27bf5692020-11-04 09:37:10 -0800116 <td>TEST_LOCKED{N}</td>
Miguel Osorio3ee47a62020-08-05 19:48:10 -0700117 <td>OTP</td>
118 <td>
119
Michael Schaffner27bf5692020-11-04 09:37:10 -0800120TEST_LOCKED{N} states have identical functionality to RAW state and serve as a
Miguel Osorio3ee47a62020-08-05 19:48:10 -0700121way for the Silicon Creator to protect devices in transit.
122
123It is not possible to provision OTP root secrets during this state. This
124is enforced by hardware and is implementation defined.
125
Michael Schaffner27bf5692020-11-04 09:37:10 -0800126To progress from a TEST_LOCKED state to another TEST_UNLOCKED state, a TEST_UNLOCK
Miguel Osorio3ee47a62020-08-05 19:48:10 -0700127token is required.
128 </td>
129 </tr>
130 <tr>
Michael Schaffner27bf5692020-11-04 09:37:10 -0800131 <td>TEST_UNLOCKED{N}</td>
Miguel Osorio3ee47a62020-08-05 19:48:10 -0700132 <td>OTP</td>
133 <td>
134
135Transition from RAW state using OTP write.
136
137This state is used for <strong>manufacturing and production testing.</strong>
138
139During this state:
140
141 * CPU execution is enabled
142 * NVM backdoor functions are enabled
143 * Debug functions are enabled
144 * DFT functions are enabled
145
146Note: during this state it is not possible to provision specific OTP root
147secrets. This will be enforced by hardware.
148
Michael Schaffner27bf5692020-11-04 09:37:10 -0800149It is expected that during TEST_UNLOCKED0 the TEST_UNLOCK and TEST_EXIT tokens will be
Miguel Osorio3ee47a62020-08-05 19:48:10 -0700150provisioned into OTP.
151
152Once provisioned, these tokens are no longer readable by software.
153 </td>
154 </tr>
155 <tr>
156 <td>PROD</td>
157 <td>OTP</td>
158 <td>
159
Timothy Chencae406c2022-10-06 19:10:42 -0700160Transition from TEST_UNLOCKED or TEST_LOCKED state via OTP write. PROD is a mutually exclusive state to
Miguel Osorio3ee47a62020-08-05 19:48:10 -0700161DEV and PROD_END.
162
163To enter this state, a TEST_EXIT token is required.
164
165This state is used both for provisioning and mission mode.
166
167During this state:
168
169 * CPU execution is enabled
170 * NVM backdoor functions are disabled
171 * Debug functions are disabled
172 * DFT functions are disabled
173 </td>
174 </tr>
175 <tr>
176 <td>PROD_END</td>
177 <td>OTP</td>
178 <td>
179
180This state is identical in functionality to PROD, except the device is never
181allowed to transition to RMA state.
182
183To enter this state, a TEST_EXIT token is required.
184 </td>
185 </tr>
186 <tr>
187 <td>DEV</td>
188 <td>OTP</td>
189 <td>
190
Michael Schaffner27bf5692020-11-04 09:37:10 -0800191Transition from TEST_UNLOCKED state via OTP write. This is a mutually exclusive state to
Tobias Wölfel4ca3a2b2021-02-18 22:38:34 +0100192PROD and PROD_END.
Miguel Osorio3ee47a62020-08-05 19:48:10 -0700193
194To enter this state, a TEST_EXIT token is required.
195
196This state is used for developing provisioning and mission mode software.
197
198During this state
199
200 * CPU execution is enabled
Michael Schaffner431f84a2020-12-14 12:48:54 -0800201 * NVM backdoor functions are disabled
Miguel Osorio3ee47a62020-08-05 19:48:10 -0700202 * Debug functions are enabled
203 * DFT functions are disabled
204 </td>
205 </tr>
206 <tr>
207 <td>RMA</td>
208 <td>OTP</td>
209 <td>
210
Michael Schaffner27bf5692020-11-04 09:37:10 -0800211Transition from TEST_UNLOCKED / PROD / DEV via OTP write. It is not possible to reach
Miguel Osorio3ee47a62020-08-05 19:48:10 -0700212this state from PROD_END.
213
214When transitioning from PROD or DEV, an RMA_UNLOCK token is required.
215
Michael Schaffner27bf5692020-11-04 09:37:10 -0800216When transitioning from TEST_UNLOCKED, no RMA_UNLOCK token is required.
Miguel Osorio3ee47a62020-08-05 19:48:10 -0700217
218A hardware-backed mechanism will erase all owner flash content before RMA
219transition is allowed. This includes the isolation owner flash partitions as
220well as any owner code. Once erasure is confirmed and verified, RMA transition
221will proceed.
222
223During this state
224
225 * CPU execution is enabled
226 * NVM backdoor is enabled
227 * Debug functions are enabled
228 * DFT functions are enabled
229 </td>
230 </tr>
231 <tr>
232 <td>SCRAP</td>
233 <td>OTP</td>
234 <td>
235
236Transition from any manufacturing state via OTP write.
237
238During SCRAP state the device is completely dead. All functions, including CPU
239execution are disabled.
240
241No owner consent is required to transition to SCRAP.
242
243Note also, SCRAP is meant as an EOL manufacturing state. Transition to this
Scott Johnson19092fe2020-10-14 16:15:42 -0700244state is always purposeful and persistent, it is NOT part of the device's
Miguel Osorio3ee47a62020-08-05 19:48:10 -0700245native security countermeasure to transition to this state.
246 </td>
247 </tr>
248 <tr>
249 <td>INVALID</td>
250 <td>OTP</td>
251 <td>
252
253Invalid is any combination of OTP values that do not fall in the categories
Scott Johnson19092fe2020-10-14 16:15:42 -0700254above. It is the "default" state of life cycle when no other conditions match.
Miguel Osorio3ee47a62020-08-05 19:48:10 -0700255
256Functionally, INVALID is identical to SCRAP in that no functions are allowed
257and no transitions are allowed.
258
259A user is not able to explicitly transition into INVALID (unlike SCRAP),
260instead, INVALID is meant to cover in-field corruptions, failures or active
261attacks.
262 </td>
263 </tr>
264</table>
265
266The various functionalities controlled by life cycle states can be broken into
267the following categories:
268
269* DFT Functionality
270 * Refers to the ability to run any DFT function. (In this context, DFT
271 functions include scan-based manufacturing testing, etc., as opposed to
272 JTAG-based CPU debug.)
273* NVM backdoor access
274 * Certain NVM modules can be backdoor accessed from alternate paths
275 * For example, there may be a functional bit-banging path that
276 bypasses the normal protection controls.
277 * For example, there may be a pin connected path used to debug the NVM
278 modules meant only for critical debug.
279 * If these paths are DFT-based, they are absorbed into the category above
280* Debug
281 * Refers to both invasive CPU debug (JTAG) and non-invasive system debug
282 (debug output bus or analog test points)
283* CPU Functionality
284 * Refers to the ability to run ROM or any custom code
285
286In addition, the life cycle states are mixed into the key manager, ensuring that
287each state will diversify into a different key tree.
288
289The table below summarizes the availability of various functions in each state.
290A `"Y"` mark means the function is directly enabled by hardware during that
291state. A `"grey"` box means a particular function is not available during that
292state.
293
294<table style="text-align:center">
295 <tr>
296 <td style="text-align:left"><strong>Functions</strong></td>
Michael Schaffnere9c8aaf2020-11-05 19:22:31 -0800297 <td><strong>DFT_EN</strong></td>
298 <td><strong>NVM_DEBUG_EN</strong></td>
299 <td><strong>HW_DEBUG_EN</strong></td>
300 <td><strong>CPU_EN</strong></td>
Miguel Osorio3ee47a62020-08-05 19:48:10 -0700301 <td><strong>Change State</strong></td>
302 </tr>
303 <tr>
304 <td style="text-align:left">RAW</td>
305 <td colspan="4" style="background:#dadce0"> </td>
306 <td rowspan="7" >See table below</td>
307 </tr>
308 <tr>
309 <td style="text-align:left">TEST_LOCKED</td>
310 <td colspan="4" style="background:#dadce0"> </td>
311 </tr>
312 <tr>
Michael Schaffner27bf5692020-11-04 09:37:10 -0800313 <td style="text-align:left">TEST_UNLOCKED</td>
Miguel Osorio3ee47a62020-08-05 19:48:10 -0700314 <td>Y</td><td>Y</td><td>Y</td><td>Y</td>
315 </tr>
316 <tr>
317 <td style="text-align:left">DEV</td>
318 <td colspan="2" style="background:#dadce0"> </td><td>Y</td><td>Y</td>
319 </tr>
320 <tr>
321 <td style="text-align:left">PROD</td>
322 <td colspan="3" style="background:#dadce0"> </td><td>Y</td>
323 </tr>
324 <tr>
325 <td style="text-align:left">PROD_END</td>
326 <td colspan="3" style="background:#dadce0"> </td><td>Y</td>
327 </tr>
328 <tr>
329 <td style="text-align:left">RMA</td>
330 <td>Y</td><td>Y</td><td>Y</td><td>Y</td>
331 </tr>
332 <tr>
333 <td style="text-align:left">SCRAP</td>
334 <td colspan="5" style="background:#dadce0"> </td>
335 </tr>
336 <tr>
337 <td style="text-align:left">INVALID</td>
338 <td colspan="5" style="background:#dadce0"> </td>
339 </tr>
340</table>
341
342The following table shows the allowed state transitions in each state. INVALID
343state is not an explicit transition destination, therefore it is not listed as
344one of the target states. The `"C"` marks represent conditional transitions
345qualified by the token table that follows.
346
347<table style="text-align:center">
348 <tr>
349 <td style="text-align:left"><strong>States</strong></td>
350 <td><strong>RAW</strong></td>
351 <td><strong>TEST LOCKED</strong></td>
Michael Schaffner27bf5692020-11-04 09:37:10 -0800352 <td><strong>TEST_UNLOCKED</strong></td>
Miguel Osorio3ee47a62020-08-05 19:48:10 -0700353 <td><strong>DEV</strong></td>
354 <td><strong>PROD</strong></td>
355 <td><strong>PROD_END</strong></td>
356 <td><strong>RMA</strong></td>
357 <td><strong>SCRAP</strong></td>
358 </tr>
359 <tr>
360 <td style="text-align:left">RAW</td>
361 <td colspan="2" style="background:#dadce0"> </td><td>C</td><td colspan="4" style="background:#dadce0"> </td><td>Y</td>
362 </tr>
363 <tr>
364 <td style="text-align:left">TEST_LOCKED</td>
365 <td colspan="2" style="background:#dadce0"> </td><td>C</td><td>C</td><td>C</td><td>C</td><td style="background:#dadce0"> </td><td>Y</td>
366 </tr>
367 <tr>
Michael Schaffner27bf5692020-11-04 09:37:10 -0800368 <td style="text-align:left">TEST_UNLOCKED</td>
Miguel Osorio3ee47a62020-08-05 19:48:10 -0700369 <td style="background:#dadce0"> </td><td>Y</td><td style="background:#dadce0"> </td><td>C</td><td>C</td><td>C</td><td>Y</td><td>Y</td>
370 </tr>
371 <tr>
372 <td style="text-align:left">DEV</td>
373 <td colspan="6" style="background:#dadce0"> </td><td>C</td><td>Y</td>
374 </tr>
375 <tr>
376 <td style="text-align:left">PROD</td>
377 <td colspan="6" style="background:#dadce0"> </td><td>C</td><td>Y</td>
378 </tr>
379 <tr>
380 <td style="text-align:left">PROD_END</td>
381 <td colspan="7" style="background:#dadce0"> </td><td>Y</td>
382 </tr>
383 <tr>
384 <td style="text-align:left">RMA</td>
385 <td colspan="7" style="background:#dadce0"> </td><td>Y</td>
386 </tr>
387 <tr>
388 <td style="text-align:left">SCRAP</td>
389 <td colspan="8" style="background:#dadce0"> </td>
390 </tr>
391 <tr>
392 <td style="text-align:left">INVALID</td>
393 <td colspan="8" style="background:#dadce0"> </td>
394 </tr>
395</table>
396
397The following table enumerates the tokens and their properties. The storage
398format is implementation specific.
399
400<table style="text-align:center">
401 <tr>
402 <td><strong style="text-align:left">Token</strong></td>
403 <td><strong>Storage</strong></td>
404 <td><strong>Device Unique?</strong></td>
405 <td><strong>Usage</strong></td>
406 </tr>
407 <tr>
408 <td style="text-align:left">RAW_UNLOCK</td>
409 <td>RTL</td>
410 <td>No</td>
Michael Schaffner27bf5692020-11-04 09:37:10 -0800411 <td>From RAW->TEST_UNLOCKED0</td>
Miguel Osorio3ee47a62020-08-05 19:48:10 -0700412 </tr>
413 <tr>
414 <td style="text-align:left">TEST_UNLOCK</td>
415 <td>OTP</td>
416 <td>Silicon creator choice</td>
Michael Schaffner27bf5692020-11-04 09:37:10 -0800417 <td>From TEST_LOCKED{N} to TEST_UNLOCKED{N}</td>
Miguel Osorio3ee47a62020-08-05 19:48:10 -0700418 </tr>
419 <tr>
420 <td style="text-align:left">TEST_EXIT</td>
421 <td>OTP</td>
422 <td>Silicon creator choice</td>
Michael Schaffner27bf5692020-11-04 09:37:10 -0800423 <td>From any TEST_UNLOCKED state to DEV, PROD_END or PROD</td>
Miguel Osorio3ee47a62020-08-05 19:48:10 -0700424 </tr>
425 <tr>
426 <td style="text-align:left">RMA_UNLOCK</td>
427 <td>OTP</td>
428 <td>Yes</td>
429 <td>From PROD/DEV to RMA</td>
430 </tr>
431</table>
432
433#### RMA Unlock
434
435When in either PROD or DEV state, the device can be transitioned into RMA state
436to re-enable full debug functionality.
437
438A device unique RMA token is required to enter RMA. This RMA token is under the
439control of the Silicon Creator. To prevent abuse of this authority, the current
440manufacturing state is mixed by hardware directly into the key manager. This
441ensures that the Silicon Creator cannot arbitrarily put a device into RMA mode
442and impersonate a victim silicon owner. It also ensures that the Silicon Creator
443cannot accidentally leak any content wrapped by the owner under key manager, as
444the keys can never be re-created.
445
446Further, before transitioning to RMA, a hardware backed mechanism will erase all
447existing owner content in flash. In addition to the key manager mixing above,
Scott Johnson19092fe2020-10-14 16:15:42 -0700448this wipe further limits the Creator's ability to abuse the existing device.
Miguel Osorio3ee47a62020-08-05 19:48:10 -0700449
450### Identity & Ownership States
451
452<table>
453 <tr>
454 <td><strong>Name</strong></td>
455 <td><strong>Encoding</strong></td>
456 <td><strong>Description</strong></td>
457 </tr>
458 <tr>
459 <td>BLANK</td>
460 <td>OTP</td>
461 <td>
462
463Initial identity and ownership state. There is no hardware identity or
464ownership provisioned
465 </td>
466 </tr>
467 <tr>
468 <td>CREATOR<br>PERSONALIZED</td>
469 <td>OTP</td>
470 <td>
471
472The hardware relevant information has been provisioned. This includes:
473
474 * RMA_UNLOCK Token
475 * Creator Root Key
476 * Creator Diversification Key
477
478Once the identity state advances to CREATOR_PERSONALIZED, creator provisioned
479secrets (see Identity flow) are no longer accessible to software and are
480directly consumed by hardware.
481 </td>
482 </tr>
483 <tr>
Drew Macrae93536cd2021-07-17 13:32:52 -0700484 <td>UNLOCKED_OWNERSHIP</td>
Miguel Osorio3ee47a62020-08-05 19:48:10 -0700485 <td>Flash</td>
486 <td>
487
488This state represents a device which contains a Creator Identity but does not
489yet have a Silicon Owner provisioned.
490
491Since this state is software managed, software is free to define a different
492state.
493 </td>
494 </tr>
495 <tr>
Drew Macrae93536cd2021-07-17 13:32:52 -0700496 <td>LOCKED_OWNERSHIP</td>
Miguel Osorio3ee47a62020-08-05 19:48:10 -0700497 <td>Flash</td>
498 <td>
499
500This state represents a device which contains both a Creator Identity and a
501Silicon Owner.
502
Drew Macrae93536cd2021-07-17 13:32:52 -0700503A device in the LOCKED_OWNERSHIP state can transition back to UNLOCKED_OWNERSHIP when it is explicitly
Miguel Osorio3ee47a62020-08-05 19:48:10 -0700504unbound. The unbinding process is described separately.
505
506Since this state is software managed, software is free to define a different
507state.
508 </td>
509 </tr>
510 <tr>
511 <td>EOL</td>
512 <td>Flash</td>
513 <td>
514
515This state represents a device that has reached its identity EOL.
516
517Since this state is software managed, software is free to define a different
518state.
519 </td>
520 </tr>
521</table>
522
523### States and Isolation Properties
524
525The manufacturing state is used as part of the key generation and derivation
526process. (Please see key manager and life cycle implementation for more
527details). By doing this, the device ensures that states with invasive debug
528capabilities, typically used for debug, manufacturing testing and RMA, cannot be
529used to expose device secrets during mission mode.
530
531The identity states are not used as part of the key generation process. Instead
532they are used as metadata to control software accessibility to the OTP
533partitions used to hold device unique secrets provisioned during manufacturing.
534
535* When identity state is BLANK, software can access the relevant OTP
536 partitions
537* When identity state is PERSONALIZED, software can no longer access the
538 relevant OTP partitions
539
540Please see life cycle and OTP implementation for more details
541
542### State Conditionals
543
544Entry into RMA should be conditioned upon application of the RMA\_UNLOCK token.
545
546Entry into TERMINATED / SCRAP is unconditional. If the correct command is
547presented, the transition shall not be stopped.
548
549### State Dependencies
550
551There is one manufacturing and identity state dependency.
552
Michael Schaffner27bf5692020-11-04 09:37:10 -0800553* When the manufacturing state is **RAW** or **TEST_UNLOCKED**, the provisioning of
Miguel Osorio3ee47a62020-08-05 19:48:10 -0700554 creator entropy is disabled and identity state SHALL be **BLANK.**
555* Once manufacturing state transitions to **DEV / PROD / PROD\_END**,
556 provisioning is then enabled and the identity state is allowed to transition
557 from **BLANK**.
558
559## Functionality not Supported
560
561#### PROD Volatile Debug Unlock
562
563There will be no debug unlock after the device enters production states. To
564properly implement volatile debug unlock, the debug period must be both time
565bound and power cycle bound. This means that in ROM or ROM\_ext, we are required
566to setup functionality in non-volatile storage to track how many times the
567device has been rebooted and a locked timer to check how long the device has
568been alive. Additionally, in order to ensure that the same debug payload is not
569replayed, it must be signed through a challenge-response scheme where the device
570must first provide a nonce and then verify the signed payload.
571
572Lastly, when debug unlock is granted, the device can be hijacked by an external
573entity without the processor being aware; this makes it too dangerous a
574functionality to exist in PROD.
575
576## Compatibility with Standards and Protection Profiles
577
578### Security IC Platform Protection Profile with Augmentation Packages
579
Scott Johnson19092fe2020-10-14 16:15:42 -0700580OpenTitan's Device Life Cycle design may support the PP084 TOE[^3] life cycle
Miguel Osorio3ee47a62020-08-05 19:48:10 -0700581phase requirements including the composite product life cycle phases.
582
583The list of TOE life cycle phases is available here for reference, See
584[BSI-CC-PP-0084-2014 section 1.2.3](https://www.commoncriteriaportal.org/files/ppfiles/pp0084b_pdf.pdf)
585for more details.
586
587<table>
588 <tr>
589 <td><strong>TOE<br>Manufacturer</strong></td>
590 <td><strong>Composite</strong><br><strong>Manufacturer</strong></td>
591 <td><strong>Life Cycle Phase</strong></td>
592 <td><strong>Entity</strong></td>
593 </tr>
594 <tr>
595 <td> </td>
596 <td style="text-align:center">Y</td>
597 <td>1: Embedded Software Development</td>
598 <td>IC Embedded Software Developer</td>
599 </tr>
600 <tr>
601 <td style="text-align:center">Y</td>
602 <td> </td>
603 <td>2: IC Development</td>
604 <td>IC Developer</td>
605 </tr>
606 <tr>
607 <td style="text-align:center">Y</td>
608 <td> </td>
609 <td>3: IC Manufacturing</td>
610 <td>IC Manufacturer</td>
611 </tr>
612 <tr>
613 <td colspan="2" style="text-align:center">Y</td>
614 <td>4: IC Packaging</td>
615 <td>IC Packaging Manufacturer</td>
616 </tr>
617 <tr>
618 <td> </td>
619 <td style="text-align:center">Y</td>
620 <td>5: Composite Product Integration</td>
621 <td>Composite Product<br>Integrator</td>
622 </tr>
623 <tr>
624 <td> </td>
625 <td style="text-align:center">Y</td>
626 <td>6: Personalisation</td>
627 <td>Personaliser</td>
628 </tr>
629 <tr>
630 <td> </td>
631 <td style="text-align:center">Y</td>
632 <td> </td>
633 <td>Composite Product Issuer</td>
634 </tr>
635 <tr>
636 <td> </td>
637 <td> </td>
638 <td>7: Operational Usage </td>
639 <td>Consumer of Composite<br>Product (End-consumer)</td>
640 </tr>
641</table>
642
643<!-- Footnotes themselves at the bottom. -->
644
645## Notes
646
Scott Johnson19092fe2020-10-14 16:15:42 -0700647[^1]: RMA ("Return Material Authorization") refers to the process in which a
Miguel Osorio3ee47a62020-08-05 19:48:10 -0700648 device is returned to the Silicon Creator for more triage and debugging.
649 It represents a terminal state of the device, as it cannot be returned to
650 production afterwards.
651
652[^2]: One Time Programmable Memory
653
654[^3]: "Security IC Platform Protection Profile with Augmentation Packages
655 (BSI-CC-PP-0084-2014)"
656 https://www.commoncriteriaportal.org/files/ppfiles/pp0084b_pdf.pdf.