-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.html
237 lines (177 loc) · 9.76 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
<!DOCTYPE html>
<html>
<head>
<title> SideLine </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.00, minimum-scale=1.00">
<meta name="author" content="Joseph Gravellier">
<link rel="stylesheet" href="style_index.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<link rel="icon" type="image/png" href="https://josephgravellier.github.io/sideline/media/sideline-icon.png"/>
</head>
<body style="background-color:white">
<div class = "background-color">
<ul class="menu">
<li style="display: inline-block;"><a href="https://josephgravellier.github.io/sideline/" class="links_menu col-menu"> <b>SIDELINE</b></a></li>
<li style="display: inline-block;"><a href="#link-qa" class="links_menu col-menu">Q & A</a></li>
<li style="display: inline-block;"><a href="#link-reproduce" class="links_menu col-menu">Reproduce</a></li>
</ul>
<hr>
</div>
<div class = "main-logo-block col-main-logo">
<img src="https://josephgravellier.github.io/sideline/media/sideline_logo_tr.png" class="main-logo">
</div>
<!--<div class = "main-logo-block col-main-logo">
<img src="https://josephgravellier.github.io/sideline/media/sideline_logo_tr.png" class="main-logo"> <br/>
</div>-->
<hr>
<div class = "text-block col-text">
<br/><br/>
<div class="larger-text">
<b><i>Delay-Lines Leak Secrets from your SoC</i> </b>
</div>
<br/>
<div class="text">
SideLine is a <b>software-based</b> power side-channel analysis vector. It uses <b>delay-lines</b> (located in SoC memory controllers) as power meters. <br/><br/>
There is a strong and reliable relationship between the <b>delay-line state</b> and your <b>CPU activity</b>. <br/><br/>
A SideLine-based malware may <b>monitor your power activity without your consent</b> and steal your personal data. Logical isolation, restricted access or tamper resistance do not mitigate Sideline.<br/> <br/>
<!-- A CPU infected by a SideLine-based malware is suceptible to the theft of personal and private data such as cryptographic secrets.-->
</div>
<br/><br/>
</div>
<hr>
<div class = "links-block col-links">
<a href="https://eprint.iacr.org/2020/1127.pdf">
<img src="https://josephgravellier.github.io/sideline/media/read_logo.png" class="links" ></a>
<a href="mailto:[email protected]">
<img src="https://josephgravellier.github.io/sideline/media/email_logo.png" class="links" ></a>
<a href="https://arxiv.org/abs/2009.07773" target="_blank">
<img src="https://josephgravellier.github.io/sideline/media/cite_logo.png" class="links" ></a>
<a href="https://github.com/josephgravellier" target="_blank">
<img src="https://josephgravellier.github.io/sideline/media/github_logo.png" class="links" ></a>
</div>
<br><br>
<div class = "title-text">
SideLine Demo Videos<br><br>
</div>
<hr>
<div class = "text-block col-text">
<br/><br/>
<div class = "larger-text">
<b><i>On Cortex-A and Cortex-M based SoC</i></b><br><br>
</div>
<div class="text">
Using SideLine we perform several core-vs-core Correlation Power Analysis attacks. For each scenario, one core (the victim) runs Openssl AES encryptions. The other core (attacker) uses SideLine to eavesdrop the victim's core activity.<br><br>
We target high-end SoCs designed for IoT, automotive or mobile solutions which can run complex OS such as Linux or Android. In the paper, a dual-core <b>Cortex-A9</b> processor and a dual-core <b>Cortex-A7</b> processor associated with a <b>Cortex-M4</b> processor (demo below) are evaluated.<br>
</div>
<br><br>
<!--<div class = "larger-text">
<b>Demonstration:</b><br><br>
</div>-->
<div class="text">
<!--<i>SideLine-based core-vs-core power SCA live</i>-->
<div class = "yt">
<iframe width="420" height="315" src="https://www.youtube.com/embed/7gVvwF-SGNY"></iframe>
</div>
</div> <br> <h1 id="link-qa"></h1>
</div>
<hr>
<div class = "links-block col-links">
<div class = "title-text">
<br>Q & A<br><br>
</div>
</div><br>
<hr>
<div class = "text-block col-text">
<div class="text">
<br><br>
<div class="subtitle-white">
<b>About SideLine Impact</b><br><br>
</div>
<div class="subtitle-grey">
<b>SideLine is unprecedented</b></div>
This is the first time that intra power side-channel attacks are launched on complex SoCs with rich OS implemented. Especially it introduces internal CPU-vs-MCU side-channel attacks which clearly meet real-life scenarios on state-of-the-art SoCs.<br><br>
<div class="subtitle-grey">
<b>SideLine is not obvious</b></div>
It does not use a sensor. It leverages a performance mechanism whose security implication was not even questioned until now. It is the starting point of a novel area of research distracting hardware IPs from their primary use to collect information. <br><br>
<div class="subtitle-grey">
<b>SideLine is everywhere</b></div>
Every processor that uses external memory is potentially vulnerable. While our contribution focused on ARM devices, x86 and RISC-V exploits seem likely to arise in the near future.<br><br>
<div class="subtitle-grey">
<b>SideLine is not a magic bullet</b></div>
It doesn't pretend thwarting existing counter-measures against SCA. Rather it aims at warning the community that even remote systems, that by nature were not supposed to be the target of SCA, are now at risk.<br><br><br>
<div class="subtitle-white">
<b>About Attack Privileges</b><br><br>
</div>
<div class="subtitle-grey">
<b>The attacker is root:</b>
</div>
<i>He can use mmapping to access the delay line registers.</i><br/><br/>
<li>He may target an encryption trustlet running within a Trusted Execution Environment.</li><br/>
<li>He may target a crypto module or a security dedicated MCU e.g AP-to-MCU scenario in the paper. </li><br/><br/>
<div class="subtitle-grey">
<b>The attacker isn't root:</b> </div>
<i>No access to mmapping</i><br/><br/>
<li>He may take advantage of an existing kernel device that enables user-space processes to access the memory controller registers (e.g through DRAM test program disassembling) and then conduct the above attacks.</li><br/><br/>
<div class="subtitle-white">
<b>Other Questions</b><br/>
</div><br>
<div class="subtitle-grey">
<b>About Setup Complexity:</b></div>
All we need is a laptop (acquisition and CPA), a micro-USB cable and the development board. (an AC adapter was used for the second target).<br/><br/>
<div class="subtitle-grey">
<b>Was the temperature controlled?</b>
</div>
No, during the Covid19 period, we had to conduct the experiments outside the lab with no access to any thermal chamber. However, the temperature noise was taken into account to improve the attack results. We attenuated its effect by applying post-treatment high-pass filtering on the collected SCA traces.<br/><br/>
<div class="subtitle-grey">
<b>How did you run OpenSSL in a bare metal setting?</b>
</div>
The workaround we found was to only download AES related sources. We then used the AES_ecb_encrypt function to conduct the experiments.<br/><br/>
<div class="subtitle-grey">
<b>How can one actually read out the command register?</b>
</div>
By simply reading at the register physical address: DLL_value = *(volatile u32 *) DLL_Addr<br/><br/>
<div class="subtitle-grey">
<b>Do you assume nothing else is running on the system?</b>
</div>
No, there is the whole Linux rich OS running in background with kernel processes, interrupts, etc.<br/><br/>
<div class="subtitle-grey">
<b>Can you generate a baseline while some other, unknown code is running?</b></div>
Yes, we are working on multi-core processors that handle simultaneous thread execution.<br/><br/>
<div class="subtitle-grey">
<b>How do you know when an encryption is being performed?</b></div>
In local SCA, the attacker needs to trigger an encryption. We believe that the exact same is possible in an internal SCA scenario. Hence, the application processor (attacker) may trigger hardware acceleration (victim) by asking for a signature, an encryption, etc.<br/><br/>
<div class="subtitle-grey">
<b>About DLL update frequency:</b></div>
By definition, the DLL update has to be fast to ensure proper DRAM operation. That's why we obtain decent sampling frequency (16MHz) compared to what we could have done with low cost ADCs (<1MHz).<br/><br/>
<div class="subtitle-grey">
<b>About DLL data type:</b> </div>
The datatype is defined as delay value. The command range is (0:64) for coarse-delay and (0:3) for fine-delay. The delay value can be represented as the phase shift applied to the signal. Unfortunately, SoC providers do not give precise information to convert the delay value into phase shift.<br><br><h1 id="link-reproduce"></h1>
</div>
</div>
<hr>
<div class = "links-block col-links">
<div class = "title-text">
<br>Reproducing SideLine<br><br>
</div>
</div>
<hr>
<div class = "text-block col-text">
<div class = "text">
<br><br>
Responsible Disclosure ongoing...
<br><br><br>
<!--<img src="https://josephgravellier.github.io/sideline/media/CPA.png" class="png_image" >
<br><br>-->
</div>
</div>
<hr>
<div class="text_bottom">
© Joseph Gravellier 2020, All Rights Reserved
</div>
<ul class="menu">
<li style="display: inline-block;"><a href="https://josephgravellier.github.io/sideline/" class="links_menu col-menu"> <b>SIDELINE</b></a></li>
<li style="display: inline-block;"><a href="#link-qa" class="links_menu col-menu">Q & A</a></li>
<li style="display: inline-block;"><a href="#link-reproduce" class="links_menu col-menu">Reproduce</a></li>
</ul>
</body>
</html>