paper: Text on mesh related work and circuit design

This commit is contained in:
jaseg 2025-03-10 20:41:34 +01:00
parent d0bab63ec0
commit f27afeecbb
2 changed files with 766 additions and 35 deletions

652
paper/iacrtrans.cls Normal file
View file

@ -0,0 +1,652 @@
\def\fileversion{0.94}
\def\filedate{2023/11/08}
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\typeout{^^J *** LaTeX class for IACR Transactions v\fileversion\space ***^^J}
\ProvidesClass{iacrtrans}[\filedate]
% IACR Transactions DOCUMENT CLASS
% Written by Gaetan Leurent gaetan.leurent@inria.fr and others (2016-2020)
%
% To the extent possible under law, the author(s) have dedicated all
% copyright and related and neighboring rights to this software to the
% public domain worldwide. This software is distributed without any
% warranty.
%
% You should have received a copy of the CC0 Public Domain Dedication
% along with this software. If not, see
% <http://creativecommons.org/publicdomain/zero/1.0/>.
%
%
%%% Class options:
%
%% Document mode
% [preprint] Preprint (no copyright info) -- default mode
% [submission] Anonymous submission
% [notanonymous] Keep author names in submission mode
% [final] Final version
% [journal=tosc]
% [journal=tches]
% [draft]
%% Package options
% [spthm] Emulate llncs sptheorem and remove automatic \qed in proof
% [floatrow] Load floatrow package with correct captions
% [nohyperref] Disable automatic loading of hyperref
% [nohyperxmp] Disable automatic loading of hyperxmp
% [nolastpage] Obsolete
% [xcolor=xxx] Pass xxx to xcolor package
% [hyperref=xxx] Pass xxx to hyperref package
%
%%% HOWTO use this class
%
%% Title
% \title[short]{Long title}
%
%% Authors/affiliation:
% \author{Alice \and Bob}
% \institute{ABC\\ \email{alice@abc} \and DEF\\ \email{bob@def}}
%
%% Keywords/abstract:
% \keywords{banana \and apple}
% \begin{abstract}
% Lorem ipsum dolor sit amet...
% \end{abstract}
%
%% Warnings
% - please don't use any \pagestyle or \thispagestyle command
% - if you have proof with explicit \qed inside, you should either
% remove \qed symbols, replace them by \qedhere, or add option [spthm]
% Common definitions
\RequirePackage{xkeyval}
\def\publname{IACR Transactions}
\def\publnameshort{IACR Transactions}
\define@choicekey*+{IACR}{journal}[\val\nr]{tosc,tches}{%
\ifcase\nr\relax
\def\publname{IACR Transactions on Symmetric Cryptology}%
\def\publnameshort{IACR ToSC}%
\or
\def\publname{IACR Transactions on Cryptographic Hardware and Embedded Systems}%
\def\publnameshort{IACR TCHES}%
\fi
}{%
\ClassError{iacrtrans}{journal value is only allowed to be: tosc, or tches}{}%
}
\def\IACR@vol{0}
\def\IACR@no{0}
\def\IACR@fp{1}
\def\IACR@lp{\if@loadhr\pageref*{TotPages}\else\pageref{TotPages}\fi}
\def\IACR@ISSN{XXXX-XXXX}
\def\IACR@DOI{XXXXXXXX}
\def\IACR@Received{20XX-XX-XX}
\def\IACR@Revised{20XX-XX-XX}
\def\IACR@Accepted{20XX-XX-XX}
\def\IACR@Published{20XX-XX-XX}
\newif\if@IACR@Received \@IACR@Receivedfalse
\newif\if@IACR@Revised \@IACR@Revisedfalse
\newif\if@IACR@Accepted \@IACR@Acceptedfalse
\newif\if@IACR@Published \@IACR@Publishedfalse
\newcommand{\setfirstpage}[1]{\def\IACR@fp{#1}\setcounter{page}{#1}}
\newcommand{\setlastpage}[1]{\def\IACR@lp{#1}}
\newcommand{\setvolume}[1]{\def\IACR@vol{#1}}
\newcommand{\setnumber}[1]{\def\IACR@no{#1}}
\newcommand{\setISSN}[1]{\def\IACR@ISSN{#1}}
\newcommand{\setDOI}[1]{\def\IACR@DOI{#1}}
\newcommand{\setReceived}[1]{\@IACR@Receivedtrue\def\IACR@Received{#1}}
\newcommand{\setRevised}[1]{\@IACR@Revisedtrue\def\IACR@Revised{#1}}
\newcommand{\setAccepted}[1]{\@IACR@Acceptedtrue\def\IACR@Accepted{#1}}
\newcommand{\setPublished}[1]{\@IACR@Publishedtrue\def\IACR@Published{#1}}
% Options
\newif\if@loadhr
\@loadhrtrue
\newif\if@hyperxmp@doi
\@hyperxmp@doifalse
\define@key{IACR}{nohyperref}[]{\@loadhrfalse}
\newif\if@loadhxmp
\@loadhxmptrue
\define@key{IACR}{nohyperxmp}[]{\@loadhxmpfalse}
\newif\if@floatrow
\@floatrowfalse
\define@key{IACR}{floatrow}[]{\@floatrowtrue}
\newif\if@submission
\@submissionfalse
\newif\if@anonymous
\@anonymousfalse
\newif\if@preprint
\@preprinttrue
\define@key{IACR}{final}[]{\PassOptionsToClass{\CurrentOption}{article}\@preprintfalse}
\define@key{IACR}{preprint}[]{\@preprinttrue} % Default
\define@key{IACR}{submission}[]{\@submissiontrue\@anonymoustrue}
\define@key{IACR}{draft}[]{\@preprinttrue\PassOptionsToClass{\CurrentOption}{article}}
\define@key{IACR}{notanonymous}[]{\@anonymousfalse}
\newif\if@spthm
\@spthmfalse
\define@key{IACR}{spthm}[]{\@spthmtrue}
\define@key{IACR}{nolastpage}[]{\ClassWarning{Option nolastpage is obsolete}}
\define@key{IACR}{xcolor}{\PassOptionsToPackage{#1}{xcolor}}
\define@key{IACR}{hyperref}{\PassOptionsToPackage{#1}{hyperref}}
\DeclareOptionX*{\PassOptionsToClass{\CurrentOption}{article}}
\ProcessOptionsX<IACR>\relax
% article class with a4paper
\LoadClass[10pt,twoside]{article}[2007/10/19]
% Loading hyperref and hyperxmp is tricky:
% - hyperref must be loaded after most other packages => we use AtEndPreamble
% - version 5.12 of hyperxmp must be loaded after hyperref
% - some versions of hyperxmp (5.x, x<5) have issues when loaded from AtEndPreamble
% => there is no easy way to detect version number before loading, throw error
\if@loadhr
\RequirePackage{xcolor}
\RequirePackage{etoolbox}
\AtEndPreamble{
\@ifpackageloaded{hyperref}{}{\RequirePackage{hyperref}}
\if@loadhxmp
\RequirePackage{hyperxmp} % Load hyperxmp after hyperref
% hyperxmp 5.x, x<5 has issues with AtEndPreamble, throw error
\@ifpackagelater{hyperxmp}{2020/03/20}{
\@ifpackagelater{hyperxmp}{2020/09/24}{}{
\ClassError{iacrtrans}{Unsupported hyperxmp version.\MessageBreak
Add class option nohyperxmp no disable this package}{}
}}{}
% Old versions of hyperxmp do not support DOI
\@ifpackagelater{hyperxmp}{2019/03/14}{\@hyperxmp@doitrue\hypersetup{keeppdfinfo=true}}{}
\fi
\hypersetup{pdflang=en}
\hypersetup{colorlinks=true,
citecolor=black!70!green,
linkcolor=black!70!red}
% Disable latexdiff commands in PDF links
\pdfstringdefDisableCommands{%
\def\DIFadd#1{#1}%
\def\DIFdel#1{}%
}
}
\setcounter{tocdepth}{2}
\fi
% Geometry
\RequirePackage[a4paper,hscale=0.65,vscale=0.75,marginratio=1:1,marginparwidth=2.7cm]{geometry}
\RequirePackage{afterpage}
% Title fonts: bf+sf
\RequirePackage{sectsty}
\allsectionsfont{\sffamily\boldmath}
% Also for descriptions
\renewcommand*\descriptionlabel[1]{\hspace\labelsep
\normalfont\bfseries\sffamily\boldmath #1}
% Title/Author/affiliations
\def\@institute{No institute given.}
\newcommand{\institute}[1]{\gdef\@institute{#1}}
\newcommand{\authorrunning}[1]{\gdef\IACR@runningauthors{#1}}
\newcommand{\titlerunning}[1]{\gdef\IACR@runningtitle{#1}}
\newcounter{IACR@author@cnt}
\newcounter{IACR@inst@cnt}
\newif\if@IACR@autoinst
\@IACR@autoinsttrue
\def\IACR@author@last{0}
\renewcommand\maketitle{\par
\begingroup
\renewcommand\thefootnote{\@fnsymbol\c@footnote}%
\long\def\@makefntext##1{\parindent 1em\noindent
\hb@xt@1.8em{%
\hss\@textsuperscript{\normalfont\@thefnmark}}##1}%
\newpage
\global\@topnum\z@ % Prevents figures from going at top of page.
\@maketitle
\thispagestyle{title}\@thanks
\endgroup
\setcounter{footnote}{0}%
\global\let\thanks\relax
\global\let\maketitle\relax
\global\let\@maketitle\relax
\global\let\@thanks\@empty
% \global\let\@author\@empty
\global\let\@date\@empty
% \global\let\@title\@empty
\global\let\title\relax
\global\let\author\relax
\global\let\date\relax
\global\let\and\relax
% Adjust header size for title page
\addtolength{\headheight}{\baselineskip}%
\addtolength{\headsep}{-\baselineskip}%
\afterpage{%
\global\advance\headheight by -\baselineskip%
\global\advance\headsep by \baselineskip%
}%
}
\def\@maketitle{%
% Count authors and affiliations
\setcounter{IACR@author@cnt}{1}%
\setcounter{IACR@inst@cnt}{1}%
\setbox0\hbox{\def\thanks##1{\global\@IACR@autoinstfalse}\def\inst##1{\global\@IACR@autoinstfalse}\def\and{\stepcounter{IACR@author@cnt}}\@author}%
\setbox0\hbox{\def\and{\stepcounter{IACR@inst@cnt}}\@institute}%
\xdef\IACR@author@last{\theIACR@author@cnt}%
\edef\IACR@inst@last{\theIACR@inst@cnt}%
\ifnum\IACR@author@last=\IACR@inst@last\else\@IACR@autoinstfalse\fi
\ifnum\IACR@author@last=1 \@IACR@autoinstfalse\fi
\newpage
\null
\vskip 2em%
\begin{center}%
\let \footnote \thanks
{\def\@makefnmark{\rlap{\@textsuperscript{\normalfont\@thefnmark}}}%
{\LARGE \bfseries\sffamily\boldmath \@title\par}
\ifdefined\@subtitle\vskip .5em{\large\sffamily\bfseries\@subtitle\par}\fi}%
\vskip 1.5em%
{\large
\lineskip .5em%
\if@anonymous
Anonymous Submission
\else
\setcounter{IACR@author@cnt}{1}%
\def\and{\if@IACR@autoinst\inst{\theIACR@author@cnt} \fi
\stepcounter{IACR@author@cnt}%
\ifnum\theIACR@author@cnt=\IACR@author@last\unskip\space and \ignorespaces\else\unskip, \ignorespaces\fi}
\@author\if@IACR@autoinst\inst{\theIACR@author@cnt}\fi
\vskip 1em\par
\small
\setcounter{IACR@author@cnt}{1}%
\def\and{\par\stepcounter{IACR@author@cnt}$^{\theIACR@author@cnt}$~}
\ifnum\IACR@inst@last>1 $^1$~\fi\ignorespaces%
\@institute
\fi
}%
\end{center}%
\par
\vskip 1.5em}
\def\author{\@ifnextchar[{\IACR@@@author}{\IACR@@author}}
\def\IACR@@@author[#1]#2{\authorrunning{#1}\gdef\@author{#2}}
\def\IACR@@author#1{\gdef\@author{#1}}
\if@anonymous
\gdef\@author{Anonymous Submission to \publnameshort}
\renewcommand{\author}[2][]{}
\renewcommand{\authorrunning}[1]{}
\renewcommand{\institute}[2][]{}
\fi
\def\title{\@ifnextchar[{\IACR@@@title}{\IACR@@title}}
\def\IACR@@@title[#1]#2{\gdef\@title{#2}\titlerunning{#1}}
\def\IACR@@title#1{\gdef\@title{#1}}
\newcommand{\subtitle}[1]{\gdef\@subtitle{#1}}
\newcommand{\inst}[1]{\unskip$^{#1}$}
\def\fnmsep{\unskip$^,$}
% Head/foot
\RequirePackage{fancyhdr}
\RequirePackage{graphicx}
\if@submission
\else
\if@preprint
\else
\RequirePackage{totpages}
\fi%!preprint
\fi%!submission
\fancypagestyle{title}{%
\fancyhf{} % clear all header and footer fields
\if@submission
\else
\if@preprint
\else
\fancyhead[L]{%
\small%
\publname{}\\
ISSN~\IACR@ISSN, Vol.~\IACR@vol, No.~\IACR@no, pp.~\IACR@fp--\IACR@lp. \hfill{}%
\if@loadhr{\href{https://doi.org/\IACR@DOI}{DOI:\IACR@DOI}}\else{DOI:\IACR@DOI}\fi%
}
\fancyfoot[L]{%
\small%
Licensed under %
\if@loadhr{\href{http://creativecommons.org/licenses/by/4.0/}{Creative Commons License CC-BY 4.0.}}%
\else{Creative Commons License CC-BY 4.0.}%
\fi%
\hfill{}%
\includegraphics[clip,height=2ex]{CC-by}\\[.1em]%
\if@IACR@Received Received: \IACR@Received \hfill{} \fi%
\if@IACR@Revised Revised: \IACR@Revised \hfill{} \fi%
\if@IACR@Accepted Accepted: \IACR@Accepted \hfill{} \fi%
\if@IACR@Published Published: \IACR@Published \fi%
}%
\if@loadhr
\if@loadhxmp
\hypersetup{pdfcopyright={Licensed under Creative Commons License CC-BY 4.0.}}
\hypersetup{pdflicenseurl={http://creativecommons.org/licenses/by/4.0/}}
\fi
\hypersetup{pdfsubject={\publname{}, DOI:\IACR@DOI}}
\fi
\fi%!preprint
\fi%!submission
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0pt}
}%fancypagestyle
\fancyhf{}
\fancyhead[RO,LE]{\thepage}
\fancyhead[RE]{%
\ifdefined\IACR@runningtitle\IACR@runningtitle%
\else%
\def\thanks##1{}%
\def\fnmsep{}%
\def\\{}%
\def\footnote##1{}%
\@title%
\fi}
\fancyhead[LO]{%
\ifdefined\IACR@runningauthors\IACR@runningauthors%
\else%
\def\thanks##1{}%
\def\inst##1{}%
\def\fnmsep{}%
\def\\{}%
\def\footnote##1{}%
\setcounter{IACR@author@cnt}{1}%
\def\and{\stepcounter{IACR@author@cnt}%
\ifnum\theIACR@author@cnt=\IACR@author@last\unskip\space and \ignorespaces \else\unskip, \ignorespaces\fi}
\@author%
\fi}
\renewcommand{\markboth}[2]{}
\pagestyle{fancy}
\def\subtitle#1{\gdef\@subtitle{#1}}
%Abstract style, keywords
\def\@IACR@keywords{No keywords given.}
\def\keywords{\@ifnextchar[{\IACR@@@keywords}{\IACR@@keywords}}
\def\IACR@@@keywords[#1]#2{\gdef\@IACR@PDFkeywords{#1}\gdef\@IACR@keywords{#2}}
\def\IACR@@keywords#1{\gdef\@IACR@keywords{#1}}
\renewenvironment{abstract}{%
\small\quotation\setlength{\parindent}{0pt}\noindent
\textbf{\textsf{Abstract.}}}
{\smallskip\par\textbf{\textsf{Keywords:}}
\def\and{\unskip\space\textperiodcentered\space\ignorespaces}\@IACR@keywords
\endquotation%
\if@loadhr
%% PDF keywords
\def\and{, }%
\def\thanks##1{}%
\def\footnote##1{}%
\def\inst##1{}%
\def\fnmsep{}%
\def\\{}%
\def\zap@first@space ##1{##1}
\def\insert@last@space##1,##2{%
##1%
\ifx##2\@empty\space\else, \expandafter\insert@last@space##2\fi}
\def\zap@comma@space##1 ,##2{%
##1%
\ifx##2\@empty\else, \expandafter\zap@comma@space##2\fi}
\def\zap@dbl@space##1 ##2{%
##1%
\ifx##2\@empty\else\space\expandafter\zap@dbl@space##2\fi}
\ifdefined\@IACR@PDFkeywords
\hypersetup{pdfkeywords=\@IACR@PDFkeywords}
\else
\protected@edef\@tmp{\expandafter\@IACR@keywords}
\protected@edef\@tmp{\expandafter\insert@last@space\@tmp,\@empty}
\protected@edef\@tmp{\expandafter\zap@comma@space\@tmp ,\@empty}
\protected@edef\@tmp{\expandafter\insert@last@space\@tmp,\@empty}
\protected@edef\@tmp{\expandafter\zap@dbl@space\@tmp \@empty}
\protected@edef\@tmp{\expandafter\zap@first@space \@tmp}
\hypersetup{pdfkeywords=\@tmp}
\fi
%% PDF author
\def\zap@one##1,##2{##1}
\def\zap@last##1,##2{\ifx##1\@empty\else\space and \expandafter\zap@one##1\fi}
\def\zap@last@comma##1,##2,##3{%
##1%
\ifx##3\@empty%
\expandafter\zap@last\else
,\expandafter\zap@last@comma\fi%
##2,##3}
\ifdefined\IACR@runningauthors
\hypersetup{pdfauthor=\IACR@runningauthors}
\typeout{IACR@AUTHOR: \IACR@runningauthors}
\else
\protected@edef\@tmp{\expandafter\@author}
\protected@edef\@tmp{\expandafter\insert@last@space\@tmp,\@empty}
\protected@edef\@tmp{\expandafter\zap@comma@space\@tmp ,\@empty}
\protected@edef\@tmp{\expandafter\insert@last@space\@tmp,\@empty}
\protected@edef\@tmp{\expandafter\zap@dbl@space\@tmp \@empty}
\ifx\@tmp\empty\else
\protected@edef\@tmp{\expandafter\zap@first@space \@tmp}
\typeout{IACR@AUTHOR: \@tmp}
\hypersetup{pdfauthor=\@tmp}
\fi
\fi
%% PDF title
\ifdefined\IACR@runningtitle
\hypersetup{pdftitle=\IACR@runningtitle}
\typeout{IACR@TITLE: \IACR@runningtitle^^J}
\else
\protected@edef\@tmp{\expandafter\@title}
\protected@edef\@tmp{\expandafter\insert@last@space\@tmp,\@empty}
\protected@edef\@tmp{\expandafter\zap@dbl@space\@tmp \@empty}
\ifx\@tmp\empty\else
\protected@edef\@tmp{\expandafter\zap@first@space \@tmp}
\hypersetup{pdftitle=\@tmp}
\typeout{IACR@TITLE: \@tmp^^J}
\fi
\fi
% PDF metadata
\if@submission\else
\if@preprint\else
\if@hyperxmp@doi
\hypersetup{%
pdfdoi=\IACR@DOI,%
pdfissn=\IACR@ISSN,%
pdfpubtype=journal,%
pdfpublication=\publname,%
pdfvolumenum=\IACR@vol,%
pdfissuenum=\IACR@no,%
pdfpagerange={\IACR@fp-\IACR@lp},%
}
\fi
\fi
\fi
\fi
}
% autoref: capitals for Sections, and adding Algorithm
\def\equationautorefname{Equation}%
\def\footnoteautorefname{footnote}%
\def\itemautorefname{item}%
\def\figureautorefname{Figure}%
\def\tableautorefname{Table}%
\def\partautorefname{Part}%
\def\appendixautorefname{Appendix}%
\def\chapterautorefname{Chapter}%
\def\sectionautorefname{Section}%
\def\subsectionautorefname{Subsection}%
\def\subsubsectionautorefname{Subsubsection}%
\def\paragraphautorefname{paragraph}%
\def\subparagraphautorefname{subparagraph}%
\def\FancyVerbLineautorefname{line}%
\def\theoremautorefname{Theorem}%
\def\pageautorefname{page}%
\def\algorithmautorefname{Algorithm}
\def\definitionautorefname{Definition}
\def\exampleautorefname{Example}
\def\exerciseautorefname{Exercise}
\def\propertyautorefname{Property}
\def\questionautorefname{Question}
\def\solutionautorefname{Solution}
\def\propositionautorefname{Proposition}
\def\problemautorefname{Problem}
\def\lemmaautorefname{Lemma}
\def\conjectureautorefname{Conjecture}
\def\corollaryautorefname{Corollary}
\def\claimautorefname{Claim}
\def\remarkautorefname{Remark}
\def\noteautorefname{Note}
\def\caseautorefname{Case}
% AMS math
\RequirePackage{amsmath,amssymb,amsthm}
\RequirePackage{mathtools}
\theoremstyle{definition}
\newtheorem{definition}{Definition}
\newtheorem{example}{Example}
\newtheorem{exercise}{Exercise}
\newtheorem{property}{Property}
\newtheorem{question}{Question}
\newtheorem{solution}{Solution}
\theoremstyle{plain}
\newtheorem{theorem}{Theorem}
\newtheorem{proposition}{Proposition}
\newtheorem{problem}{Problem}
\newtheorem{lemma}{Lemma}
\newtheorem{conjecture}{Conjecture}
\newtheorem{corollary}{Corollary}
\newtheorem*{claim}{Claim}
\theoremstyle{remark}
\newtheorem{remark}{Remark}
\newtheorem{note}{Note}
\newtheorem{case}{Case}
\theoremstyle{plain}
%Emulate LLNCS spnewtheorem
\if@spthm
\def\spnewtheorem{\@ifstar{\IACR@spstar}{\IACR@sp}}
\def\IACR@spstar#1#2#3#4{%
\expandafter\def\csname th@#1\endcsname{\thm@headfont{#3}#4}\thm@style{#1}
\newtheorem*{#1}{#2}}
\def\IACR@sp#1{\@ifnextchar[{\IACR@sp@b{#1}}{\IACR@sp@a{#1}}}
\def\IACR@sp@a#1#2{%
\@ifnextchar[{\IACR@sp@ab{#1}{#2}}{\IACR@sp@aa{#1}{#2}}}
\def\IACR@sp@ab#1#2[#3]#4#5{%
\expandafter\def\csname th@#1\endcsname{\thm@headfont{#4}#5}\thm@style{#1}
\newtheorem{#1}{#2}[#3]}
\def\IACR@sp@aa#1#2#3#4{%
\expandafter\def\csname th@#1\endcsname{\thm@headfont{#3}#4}\thm@style{#1}
\newtheorem{#1}{#2}}
\def\IACR@sp@b#1[#2]#3#4#5{%
\expandafter\def\csname th@#1\endcsname{\thm@headfont{#4}#5}\thm@style{#1}
\newtheorem{#1}[#2]{#3}}
\let\real@proof\proof
\def\proof{\@ifnextchar[{\proof@sptm}{\proof@@sptm}}
\def\proof@sptm[#1]{\real@proof[\proofname{} (#1)]}
\def\proof@@sptm{\real@proof}
\let\real@pushQED\pushQED
\let\real@qed\qed
\def\pushQED#1{\real@pushQED{\real@qed}}
\let\qed\qedhere
\fi
\theoremstyle{plain} %back to default
% Floats and captions
\if@floatrow
\RequirePackage{floatrow}
\floatsetup[table]{style=Plaintop}
\RequirePackage{caption}
\captionsetup{labelfont={sf,bf}}
\else
\RequirePackage{float}
\newcommand\fs@iacrabove{%
% Swap \abovecaptionskip and \belowcaptionskip
\addtolength\abovecaptionskip{-\belowcaptionskip}
\addtolength\belowcaptionskip{\abovecaptionskip}
\addtolength\abovecaptionskip{-\belowcaptionskip}
\setlength\abovecaptionskip{-\abovecaptionskip}
\fs@plaintop%
\def\@fs@cfont{\sffamily\bfseries}}
\newcommand\fs@iacrbelow{%
\fs@plain%
\def\@fs@cfont{\sffamily\bfseries}}
\floatstyle{iacrabove}
\restylefloat{table}
\floatstyle{iacrbelow}
\restylefloat{figure}
\fi
% Extra commands
\def\email{\@ifnextchar[{\IACR@@email}{\IACR@email}}
\if@loadhr
\def\IACR@@email[#1]#2{\href{mailto:#1}{\nolinkurl{#2}}}
\def\IACR@email#1{\href{mailto:#1}{\nolinkurl{#1}}}
\else
\RequirePackage{url}
\def\IACR@@email[#1]#2{\url{#2}}
\def\IACR@email#1{\url{#1}}
\fi
% Line # for submission
\newcommand\linenomathWithnumbersforAMS{%
\ifLineNumbers
%% \ifx\@@par\@@@par\else
\ifnum\interlinepenalty>-\linenopenaltypar
\global\holdinginserts\thr@@
\advance\interlinepenalty \linenopenalty
\ifhmode % v4.3
\advance\predisplaypenalty \linenopenalty
\fi
%% \advance\postdisplaypenalty \linenopenalty
\advance\interdisplaylinepenalty \linenopenalty
\fi
\fi
\ignorespaces
}
\if@submission
\RequirePackage[mathlines]{lineno}
\RequirePackage{xcolor}
\linenumbers
\def\linenumberfont{\normalfont\tiny\sffamily\color{gray}}
% Taken from http://phaseportrait.blogspot.fr/2007/08/lineno-and-amsmath-compatibility.html
\newcommand*\patchAmsMathEnvironmentForLineno[1]{%
\expandafter\let\csname old#1\expandafter\endcsname\csname #1\endcsname
\expandafter\let\csname oldend#1\expandafter\endcsname\csname end#1\endcsname
\renewenvironment{#1}%
{\linenomathWithnumbersforAMS\csname old#1\endcsname}%
{\csname oldend#1\endcsname\endlinenomath}}%
\newcommand*\patchBothAmsMathEnvironmentsForLineno[1]{%
\patchAmsMathEnvironmentForLineno{#1}%
\patchAmsMathEnvironmentForLineno{#1*}}%
\AtBeginDocument{%
\patchAmsMathEnvironmentForLineno{equation*}%
\patchBothAmsMathEnvironmentsForLineno{align}%
\patchBothAmsMathEnvironmentsForLineno{flalign}%
\patchBothAmsMathEnvironmentsForLineno{alignat}%
\patchBothAmsMathEnvironmentsForLineno{gather}%
\patchBothAmsMathEnvironmentsForLineno{multline}%
}
\fi
% Microtype
\RequirePackage{microtype}
% Fonts
\RequirePackage[T1]{fontenc}
\RequirePackage{lmodern}
\endinput
%end of file iacrtrans.cls

View file

@ -1,4 +1,4 @@
\documentclass[journal,12pt,onecolumn,draftclsnofoot]{IEEEtran}
\documentclass[submission]{iacrtrans}
\usepackage[T1]{fontenc}
\usepackage[
@ -38,11 +38,9 @@
\begin{document}
% TODO
\date{December 11 2024}
\author{\IEEEauthorblockN{Jan Sebastian Götte}\thanks{Jan Sebastian Götte is with the Technical University of Darmstadt,
64283 Darmstadt, Germany (e-mail: jan.goette@tu-darmstadt.de).}}
\author{Jan Sebastian Götte\inst{1} \and Björn Scheuermann\inst{2}}
\institute{Technical University of Darmstadt, Darmstadt, Germany, \email{jan.goette@tu-darmstadt.de}\and
Technical University of Darmstadt, Darmstadt, Germany, \email{bjoern.scheuermann@kom.tu-darmstadt.de}}
\title{Low-Cost, Embeddable Time Domain Reflectometry for High-Fidelity Security Mesh Monitoring in Hardware Security
Modules}
\maketitle
@ -97,42 +95,70 @@ provide protection in directions considered especially vulnerable, without enclo
In this paper, we introduce an approach for the design of security mesh monitoring circuitry that provides dramatically
higher fidelity compared to state-of-the-art conductivity monitoring, improving the sensitivity of meshes even when
manufactured using less advanced technologies such as standard FPC or PCB processes. Our approach
% FIXME old text below.
In sensitive applications such as payment processing, healthcare data management and secure communication, on top of
cryptographic techniques, Hardware Security Modules (HSMs) are used to perform cryptographic operations while
protecting cryptographic secrets at rest. While state-of-the-art cryptographic techniques have largely solved the
problem of protecting data in transit or at rest, cryptography exists embedded in a physical world and the problem of
protecting its keys against physical attackers remains difficult to approach even today.
HSMs fill this gap by incorporating always-on sensors that will quickly erase stored keys when physical tampering is
detected. HSMs differ from devices such as smartcards or trusted platform modules in that their tamper sensors are
continuously powered from a backup power supply to detect tampering attempts even while the rest of the system is shut
down.
% While often the term HSM is usually applied to a class of rackmount, datacenter devices that provide generic
% cryptographic functions to their surrounding infrastructure, in this paper we apply the term more broadly to any
% device that uses active tamper sensors that are designed to detect any conceivable physical attack.
The level of active tamper sensing that is employed in HSMs differs from active tamper sensors in other devices such as
electricity meters or vending machines in its scope. While in many applications such as these, few simple sensors such
as contacts placed on removable panels are sufficient to detect the most tampering attempts, HSMs aim to detect even
sophisticated attacks. A key requirement in HSMs is the ability to detect an attacker drilling through its enclosure to
place probes inside the device. In general, this requires placing sensitive components inside of a tamper sensing
barrier. Usually this barrier is implemented by wrapping the device in a flexible foil entirely covered by a pattern of
meandering conductive traces, called a \emph{security mesh}, that is monitored for changes.
manufactured using less advanced technologies such as standard FPC or PCB processes. Our approach consists of an
optimized, low-cost differential Time Domain Reflectometry (TDR) frontend that provides better than
\qty{200}{\pico\second}( resolution, connected to a security mesh. Using our TDR frontend, mesh integrity can be
characterized at high fidelity, producing several hundred measurements for each meter of mesh trace length.
\todo{citations for applications}
HSMs predate modern cryptography.
\cite{nsaHistoryUSCommunications1973, nsaHistoryUSCommunications1981}
%HSMs predate modern cryptography.
%\cite{nsaHistoryUSCommunications1973, nsaHistoryUSCommunications1981}
\section{Related Work}
% cite satoToucheEnhancingTouch2012 on capacitive fingerprinting
While security meshes are widely used in practice, their design is only covered by a sparse research corpus.
% TODO more citations to their papers here
\paragraph{Meshes as capacitive PUFs}
The most advanced mesh designs such as \textcite{obermaierMeasurementSystemCapacitive2018} use a specialized security
mesh as a Physically Uncloneable Function (PUF), combining tamper sensing with cryptographic key storage. In their
design, the mesh consists of a cross-hatch pattern made up from several dozen individually adressable capacitive
electrodes. Their analog frontend measures the precise mutual capacitance of each pair of electrodes, and they use the
resulting capacitance matrix as the basis of their PUF.
Advantages of their system include very high sensitivity, and that as a PUF, the system does not require a continuous
power supply. Disadvantages include limited mesh surface area and resulting small volume, the specialized and thus
costly mesh manufacturing process, and a cost-intensive monitoring circuit.
\paragraph{Bridge measurement of capacitive interdigital meshes}
\textcite{dupontMiniaturizedUltraLowPowerTamper2022} introduce a simple analog circuit approach for monitoring meshes
laid out as a set of capacitive interdigital structures not unlike the combs found in Micro-Electromechanical System
(MEMS) accelerometers and gyroscopes. They subdivide the mesh into four equal-sized quadrants, each containing two
equal-size interdigital electrodes. They connect the resulting eight electrodes in a capacitive bridge configuration,
and measure the bridge's balance using a simple analog monitoring circuit.
Advantages of their system include the simple, low power monitoring circuit made up from basic, cheap components and the
capability to work with single-layer meshes such as those produced using Laser Direct Structuring (LDS).
\paragraph{Frequency-domain mesh characterization}
\textcite{vasileProtectingSecretsAdvanced2019} introduce a monitoring method where they feed a variable-frequency signal
into one end of a continuous mesh trace, and measure the power of the signal coming out of the other end. In essence,
their setup measures $S_{12}$ magnitude in a similar way to a network analyzer.
Advantages of their design include the simple implementation, and the potentially robust nature of frequency-domain
measurements. Disadvantages include a nonstandard three-layer mesh stackup, as well as the susceptibility of the system
to attack by emulation given that the log power sensor they are using at the mesh output is designed to be insensitive
to any signal characteristics apart from total signal power.
\paragraph{Time-domain mesh monitoring}
\textcite{vasileActiveTamperDetection2017,vasileTemperatureSensitiveActive2017} propose monitoring the time-domain
response of a mesh using a circuit made up from a pulse generator and a fast analog-to-digital converter (ADC). To avoid
the need for a full high-speed data processing pipeline, their design is centered around a specialized high-speed ADC
that has a small built-in sample memory, allowing them to capture a pulse at high speed before slowly processing it from
sample memory.
Advantages of their design include better sensitivity to changes in total mesh trace length compared to simple
continuity monitoring and the low complexity of their analog frontend. Disadvantages include the high cost of the
specialized components, coarse time resolution of \qty{5}{\nano\second} and the choice of a $S_{12}$ measurement
configuration, which while sensitive to changes in \emph{length}, is insensitive to changes in \emph{impedance}. In
contrast, a TDR approach measuring $S_11$ when used with a reflector at the far end of the mesh will detect both changes
in overall length and changes in impedance.
\subsection{Security Mesh Monitoring and Design}
\cite{vasileTemperatureSensitiveActive2017}
@ -148,8 +174,61 @@ HSMs predate modern cryptography.
\section{Time-Domain Reflectometry}
An issue with a plain TDR measurement is that it only measures reflected signal components. If we connected a TDR
frontend to one end of a security mesh, then placed termination matched to the mesh's characteristic impedance at the
far end of the mesh, in an intact mesh that has constant impedance along its length, our TDR would measure nothing. The
transmitted pulse would simply tranverse the mesh, and be absorbed entirely by the termination. In this scenario, an
attacker could cut the mesh at any point along its length by simply placing matched termination there.
The obvious solution to this issue would be to measure not just the reflected signal component, but also its transmitted
component. However, this solution would incur additional component cost and requires the far end of the mesh to return
to the TDR circuit.
A better solution to this issue is to exploit the low insertion loss of the mesh and to place an impedance discontinuity
at the far end of the mesh, resulting in most of the incident pulse being reflected back. In an intact mesh, this will
lead to a TDR return after twice the mesh's transit time. By realizing this impedance discontinuity as a short, the
reflection will have opposite sign to the incident pulse, allowing for easy detection during signal processing.
\section{Circuit Design and Driving Approach}
A TDR can be broken down into three basic components. First, we need a source of fast pulses (or fast edges!) to
stimulate the mesh. Second, we need a coupler that allows us to couple the stimulus pulses into the mesh, and their
reflections out of it. Finally, we need a fast ADC to capture the reflections.
The focus of our circuit design is on cost. Since physical attacks happen on a time scale of minutes or hours, we do not
need a fast acquisition rate. Thus, we chose an equivalent-time sampling setup instead of direct conversion, reducing
the requirements of our data acquisition and signal processing fronted from gigasamples per second to mere megasamples,
well within the range what a commodity microcontroller can handle.
Since an intact mesh has low insertion loss, the amplitude of the response of an intact mesh is large. Thus, we do not
need a high dynamic range in either the frontend amplifiers nor in the ADC, enabling the use of commodity operational
amplifiers (opamps) and the built-in ADC of a commodity microcontroller. Further, the strong signal allows us to use a
comparatively lossy \qty{-6}{\deci\bel} resistive tee instead of a directional coupler. A resistive tee does not provide
directionality, but in our case the incident pulse can never interfere with reflections at the sampling output of the
divider because of causality.
To implement a picosecond-timescale sampler, we chose a simple diode bridge sampler made from contemporary commodity RF
schottky diodes, which offer rise time better than \qty{100}{\pico\second} for less than 1€.
We base our circuit around a STM32G474RB, a 5€-class commodity ARM microcontroller. Beyond sheer processing speed, this
microcontroller offers two features that are critical to our design. First, its internal ADCs are both higher resolution
and faster than those of many older parts. % FIXME concrete numbers
Second, it is one of a few parts in its series that include a \emph{high-resolution timer} (HRTIM) peripheral that provides
several outputs that can be controlled with better than \qty{200}{\pico\second} resolution through per-output,
self-calibrating delay line circuitry. We use this peripheral to produce both the stimulus pulse and the
phase-adjustable sampling pulse.
While the HRTIM peripheral allows us to finely adjust the phase of its output waveform, the digital output structures of
the STM32G4 series are still limited to nanosecond-scale rise and fall times. % FIXME concrete numbers
We work around this issue applying two circuit tricks. First, we send its output through a fast amplifier that was
originally intended as a signal conditioner (\emph{redriver}) for DisplayPort applications. This amplifier squares up
the edges to a rise time better than \qty{500}{\pico\second}, and can drive its output at up to \qty{1200}{\milli\volt}
amplitude, which is plenty to turn on our schottky diode bridges. The remaining problem is that while we now have nice and
crisp square pulses, due to constraints of the HRTIM peripheral, at several nanoseconds these pulses are still much too
wide to be useful. We solve this issue by applying a clip line pulse forming network at the output of the amplifier
similar to the one used in \todo{some tek sampling head}--i.e.\ we connect the amplifier's output to the load in
parallel with a short, terminated transmission line stub. The length of this stub determines pulse width.
\section{Anomaly Detection through Machine Learning}
\section{Experimental Evaluation}