A potential security issue in OTBN was discovered where some errors triggered by a fault being detected only asserted their error signal for a single cycle. When this occurred along with an OTBN start command this would allow the fault to be missed. The fix was to latch various errors, so once an error signal is raised it stays raised. See this PR for more detail: https://github.com/lowRISC/opentitan/pull/15611
We should consider introducing primitives to handle this.
Create a prim_hold or prim_err_latch or similar which implements the set and only clear on reset behaviour
Add this behaviour to prim_count for its error output (in OTBN most of the issues were around the counter error only being asserted for a single cycle, though this was because the count was being cleared the same cycle the fault was being injected).
This isn't an M2 issue, but something to consider for the future
A potential security issue in OTBN was discovered where some errors triggered by a fault being detected only asserted their error signal for a single cycle. When this occurred along with an OTBN start command this would allow the fault to be missed. The fix was to latch various errors, so once an error signal is raised it stays raised. See this PR for more detail: https://github.com/lowRISC/opentitan/pull/15611
We should consider introducing primitives to handle this.
prim_hold
orprim_err_latch
or similar which implements the set and only clear on reset behaviourprim_count
for its error output (in OTBN most of the issues were around the counter error only being asserted for a single cycle, though this was because the count was being cleared the same cycle the fault was being injected).This isn't an M2 issue, but something to consider for the future
@tjaychen @cdgori @moidx