diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..5e8dcb9 --- /dev/null +++ b/Makefile @@ -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 diff --git a/figs/broadwell-die-shot.png b/figs/broadwell-die-shot.png new file mode 100644 index 0000000..d147f19 Binary files /dev/null and b/figs/broadwell-die-shot.png differ diff --git a/figs/cachehierarchy.pdf b/figs/cachehierarchy.pdf new file mode 100644 index 0000000..6a68b44 Binary files /dev/null and b/figs/cachehierarchy.pdf differ diff --git a/main.tex b/main.tex index 158fc57..6c62825 100644 --- a/main.tex +++ b/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} diff --git a/refs.bib b/refs.bib index 200040c..08865b1 100644 --- a/refs.bib +++ b/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}, }