Add table of contents
This commit is contained in:
parent
3536f120f9
commit
eab141c799
7
Makefile
Normal file
7
Makefile
Normal file
@ -0,0 +1,7 @@
|
||||
main.pdf: main.tex refs.bib
|
||||
pdflatex -interaction=nonstop -halt-on-error main.tex
|
||||
bibtex main
|
||||
pdflatex -interaction=nonstop -halt-on-error main.tex
|
||||
|
||||
clean:
|
||||
rm *.bbl *.bcf *.blg *.log *.pdf *.run.xml *.toc *.aux *.out -f
|
BIN
figs/broadwell-die-shot.png
Normal file
BIN
figs/broadwell-die-shot.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 4.7 MiB |
BIN
figs/cachehierarchy.pdf
Normal file
BIN
figs/cachehierarchy.pdf
Normal file
Binary file not shown.
66
main.tex
66
main.tex
@ -8,6 +8,11 @@
|
||||
\usepackage{listings}
|
||||
\usepackage{amsmath}
|
||||
\usepackage[french]{babel}
|
||||
\usepackage{hyperref}
|
||||
\usepackage{graphicx}
|
||||
|
||||
\hypersetup{colorlinks=false}
|
||||
\graphicspath{ {./figs/} }
|
||||
|
||||
% titre
|
||||
\title{Caractérisation de l’instruction \texttt{clflush} sur systèmes multi-socket}
|
||||
@ -20,16 +25,73 @@ RENNES}
|
||||
\date{3 Juin 2024 - 12 Juillet 2024}
|
||||
|
||||
% quelques macros
|
||||
% \newcommand...
|
||||
\newcommand{\TODO}[1]{\textbf{\color{red}#1}}
|
||||
|
||||
% le document lui-même
|
||||
\begin{document}
|
||||
\maketitle
|
||||
\tableofcontents
|
||||
\newpage
|
||||
|
||||
\tableofcontents
|
||||
|
||||
\section{Abstract}
|
||||
|
||||
\TODO{Réécrire parce qu'il fallait juste que je démarre mais ça ne ressemble à rien}
|
||||
|
||||
Les CPU modernes ont beaucoup d'instruction, et leur compréhension complète demande
|
||||
une très grande maitrise technique. De plus, le fonctionnement détaillé des instructions des leaders du domaine
|
||||
(Intel) est souvent non documenté, compliquant l'émergence de nouvelles industries dans ce secteur
|
||||
très compétitif. Certaines attaques par canaux auxiliaire sur le cache comme Flush+Flush \cite{flushflush}
|
||||
exploitent des caractéristiques très fines des processeurs, il est alors important de comprendre
|
||||
le fonctionnement intrinsèque de certaines instruction pour mieux réaliser
|
||||
ces attaques. \textit{Calibration Done right} \cite{calibrationdoneright} caractérise le fonctionnement de
|
||||
l'instruction \texttt{clflush} sur certains processeurs Intel mais a mis en évidence que le fonctionnement
|
||||
sur des systèmes à plusieurs sockets était significativement différent.
|
||||
|
||||
\section{Introduction}
|
||||
|
||||
\subsection{Hiérarchie de cache}
|
||||
|
||||
La mémoire DRAM d'un ordinateur est lente comparée à la fréquence du CPU. Le CPU dispose donc de caches,
|
||||
basés sur une mémoire SRAM, plus petite mais plus rapide. La politique de fonctionnement du cache
|
||||
cherche à minimiser le temps d'exécution qui est bloqué par les accès à la mémoire. Une politique optimale
|
||||
serait donc de charger en priorité les données qui vont être utilisées dans un futur proche et d'évicter
|
||||
les données qui seront utilisées dans plus longtemps ou qui ne sont plus utiles.
|
||||
Comme on ne peut pas déterminer cela aisément, une heuristique de type LRU (Least Recently Used) est
|
||||
généralement mise en place pour déterminer les données à évicter.
|
||||
|
||||
\begin{center}
|
||||
\includegraphics{cachehierarchy}
|
||||
\end{center}
|
||||
|
||||
Les processeurs que nous étudions disposent de 3 niveaux de cache : L1, L2, L3. À l'instar du L1 et L2,
|
||||
le cache L3 est partagé et inclusif\footnote{Cela dépend de l'architecture considérée : à partir de SkyLake, le L3 n'est plus inclusif} : le L3 est le même pour tous les coeurs,
|
||||
alors que chaque coeur dispose de son L1 et son L2 ; toutes les données contenues dans au
|
||||
moins un L1 ou un L2 sont aussi dans le L3
|
||||
|
||||
Si le L3 est partagé, il n'est cependant pas composé d'un unique \TODO{espace mémoire} dans le CPU mais est séparé en différentes slices : des tranches de mémoire accolées chacune à un coeur~
|
||||
\footnote{\TODO{c'est plus compliqué sur les nouveaux proc}}.
|
||||
|
||||
\begin{figure}[h]
|
||||
\centering
|
||||
\includegraphics[width=0.4\textwidth]{broadwell-die-shot}
|
||||
\caption{Broadwell Deca-Core die shot by Intel - annotated by Wikichip \cite{broadwelldieshot}}
|
||||
\end{figure}
|
||||
|
||||
\subsubsection{L'instruction \texttt{clflush}}
|
||||
|
||||
\subsection{Attaques par canaux auxiliaires: Flush+Flush}
|
||||
|
||||
\section{Systèmes multi-socket}
|
||||
\TODO{trouver un titre approprié}
|
||||
|
||||
\subsection{Conduite des expériences}
|
||||
|
||||
\subsection{Analyse des résultats}
|
||||
|
||||
\bibliographystyle{plain}
|
||||
\bibliography{refs}
|
||||
|
||||
Experiments presented in this paper were carried out using the Grid'5000 testbed, supported by a scientific interest group hosted by Inria and including \textsc{Cnrs}, \textsc{Renater} and several Universities as well as other organizations (see \url{https://www.grid5000.fr} ).
|
||||
|
||||
\end{document}
|
||||
|
47
refs.bib
47
refs.bib
@ -1,27 +1,28 @@
|
||||
@misc{flushflush,
|
||||
title={Flush+Flush: A Fast and Stealthy Cache Attack},
|
||||
author={Daniel Gruss and Clémentine Maurice and Klaus Wagner and Stefan Mangard},
|
||||
year={2016},
|
||||
eprint={1511.04594},
|
||||
archivePrefix={arXiv},
|
||||
primaryClass={cs.CR},
|
||||
url={https://arxiv.org/abs/1511.04594},
|
||||
title={Flush+Flush: A Fast and Stealthy Cache Attack},
|
||||
author={Daniel Gruss and Clémentine Maurice and Klaus Wagner and Stefan Mangard},
|
||||
year={2016},
|
||||
eprint={1511.04594},
|
||||
archivePrefix={arXiv},
|
||||
primaryClass={cs.CR},
|
||||
url={https://arxiv.org/abs/1511.04594},
|
||||
}
|
||||
|
||||
@InProceedings{calibrationdoneright,
|
||||
author="Didier, Guillaume
|
||||
and Maurice, Cl{\'e}mentine",
|
||||
editor="Bilge, Leyla
|
||||
and Cavallaro, Lorenzo
|
||||
and Pellegrino, Giancarlo
|
||||
and Neves, Nuno",
|
||||
title="Calibration Done Right: Noiseless Flush+Flush Attacks",
|
||||
booktitle="Detection of Intrusions and Malware, and Vulnerability Assessment",
|
||||
year="2021",
|
||||
publisher="Springer International Publishing",
|
||||
address="Cham",
|
||||
pages="278--298",
|
||||
abstract="Caches leak information through timing measurements and side-channel attacks. Several attack primitives exist with different requirements and trade-offs. Flush+Flush is a stealthy and fast one that uses the timing of the clflush instruction depending on whether a line is cached. We show that the CPU interconnect plays a bigger role than previously thought in these timings and in Flush+Flush error rate.",
|
||||
isbn="978-3-030-80825-9",
|
||||
url={https://doi.org/10.1007/978-3-030-80825-9_14}
|
||||
|
||||
@inproceedings{calibrationdoneright,
|
||||
TITLE = {{Calibration Done Right: Noiseless Flush+Flush Attacks}},
|
||||
AUTHOR = {Didier, Guillaume and Maurice, Cl{\'e}mentine},
|
||||
URL = {https://inria.hal.science/hal-03267431},
|
||||
BOOKTITLE = {{DIMVA 2021 - The 18th Conference on Detection of Intrusions and Malware \& Vulnerability Assessment}},
|
||||
ADDRESS = {Lisboa / Virtual, Portugal},
|
||||
YEAR = {2021},
|
||||
MONTH = Jul,
|
||||
PDF = {https://inria.hal.science/hal-03267431/file/dimva21_didier.pdf},
|
||||
HAL_ID = {hal-03267431},
|
||||
HAL_VERSION = {v1},
|
||||
}
|
||||
|
||||
@misc{broadwelldieshot,
|
||||
title={Broadwell - Microarchitectures - Intel - WikiChip (2024)},
|
||||
url={https://en.wikichip.org/wiki/intel/microarchitectures/broadwell_(client)#Deca-core_Broadwell},
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user