@@ -55,6 +55,19 @@ instructions. There are no guarantees that even a bit-sliced cipher
55
55
implementation (largely based on boolean logic instructions) is secure on a
56
56
core without Zkt attestation.
57
57
58
+ Out-of-order implementations adhering to Zkt are still free to fuse, crack,
59
+ change or even ignore sequences of instructions, so long as the optimisations
60
+ are applied deterministically, and not based on operand data.
61
+ The guiding principle should be that no information about the data being
62
+ operated on should be leaked based on the execution latency.
63
+
64
+ [NOTE]
65
+ ====
66
+ It is left to future extensions or other techniques to tackle the problem
67
+ of data-independent execution in implementations which advanced out-of-order
68
+ capabilities which use value prediction, or which are otherwise data-dependent.
69
+ ====
70
+
58
71
.Note to software developers
59
72
[WARNING,caption="SH"]
60
73
====
@@ -80,7 +93,7 @@ influences a branch or is used for a table lookup.
80
93
* Architectural testing for Zkt can be pragmatic and semi-formal;
81
94
_security by design_ against basic timing attacks can usually be achieved via
82
95
conscious implementation (of relevant iterative multi-cycle instructions or
83
- instructions composed of micro-ops) in way that avoids data-dependant latency.
96
+ instructions composed of micro-ops) in way that avoids data-dependent latency.
84
97
* Laboratory testing may utilize statistical timing attack leakage analysis
85
98
techniques such as those described in ISO/IEC 17825 cite:[IS16].
86
99
* Binary executables should not contain secrets in the instruction encodings
0 commit comments