paper: Text on mesh related work and circuit design
This commit is contained in:
parent
d0bab63ec0
commit
f27afeecbb
2 changed files with 766 additions and 35 deletions
652
paper/iacrtrans.cls
Normal file
652
paper/iacrtrans.cls
Normal 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
|
||||
149
paper/paper.tex
149
paper/paper.tex
|
|
@ -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}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue