mirror of
https://sharelatex.tu-darmstadt.de/git/681e0e7a3a9c7c9c6b8bb298
synced 2025-12-07 05:08:01 +00:00
Update on Overleaf.
This commit is contained in:
166
Acronyms.tex
Normal file
166
Acronyms.tex
Normal file
@@ -0,0 +1,166 @@
|
||||
% !TeX root = ./Thesis.tex
|
||||
\newacronym{aes}{AES}{Advanced Encryption Standard}
|
||||
\newacronym{aid}{AID}{Application Identifier}
|
||||
\newacronym{api}{API}{Application Programming Interface}
|
||||
\newacronym{asn1}{ASN.1}{Abstract Syntax Notation One}
|
||||
\newacronym{bpp}{BPP}{Bound Profile Package}
|
||||
\newacronym{bsp}{BSP}{BPP Security Protocol}
|
||||
\newacronym{ca}{CA}{Certificate Authority}
|
||||
\newacronym{casd}{CASD}{Controlling Authority Security Domain}
|
||||
\newacronym{cat}{CAT}{Card Application Toolkit}
|
||||
\newacronym{ci}{CI}{Certificate Issuer}
|
||||
\newacronym{cmac}{CMAC}{Cipher-based MAC}
|
||||
\newacronym{cp}{CP}{Command Port}
|
||||
\newacronym{crl}{CRL}{Certificate Revocation List}
|
||||
\newacronym{crt}{CRT}{Control Reference Template}
|
||||
\newacronym{dh}{DH}{Diffie-Hellman}
|
||||
\newacronym{devic}{DEV-IC}{Device Information Code}
|
||||
\newacronym{dloa}{DLOA}{Digital Letter Of Approval}
|
||||
\newacronym{dpi}{DPI}{Delegated Platform Identifier}
|
||||
\newacronym{e4e}{E4E}{E4 ENVELOPE (ENVELOPE command with tag 'E4')}
|
||||
\newacronym{ecasd}{ECASD}{eUICC Controlling Authority Security Domain}
|
||||
\newacronym{ecc}{ECC}{Elliptic Curve Cryptography}
|
||||
\newacronym{ecdhe}{ECDHE}{Elliptic Curve Diffie-Hellman using Ephemeral keys}
|
||||
\newacronym{ecdsa}{ECDSA}{Elliptic Curve cryptography Digital Signature Algorithm}
|
||||
\newacronym{ecid}{ECID}{Event Checking Identifier}
|
||||
\newacronym{ecka}{ECKA}{Elliptic Curve cryptography Key Agreement algorithm}
|
||||
\newacronym{eid}{EID}{eUICC identifier}
|
||||
\newacronym{ein}{EIN}{EUM Identification Number}
|
||||
\newacronym{esin}{ESIN}{EUM Specific Identification Number}
|
||||
\newacronym{etsi}{ETSI}{European Telecommunications Standards Institute}
|
||||
\newacronym{eum}{EUM}{eUICC Manufacturer}
|
||||
\newacronym{fci}{FCI}{File Control Information}
|
||||
\newacronym{ffs}{FFS}{For Further Study}
|
||||
\newacronym{fqdn}{FQDN}{Fully Qualified Domain Name}
|
||||
\newacronym{gid1}{GID1}{Group Identifier 1}
|
||||
\newacronym{gid2}{GID2}{Group Identifier 2}
|
||||
\newacronym{gp}{GP}{GlobalPlatform}
|
||||
\newacronym{gsma}{GSMA}{GSM Association}
|
||||
\newacronym{gsmaci}{GSMA CI}{GSM Association Certificate Issuer}
|
||||
\newacronym{hlr}{HLR}{Home Location Register}
|
||||
\newacronym{hri}{HRI}{High Resolution Icon}
|
||||
\newacronym{iccid}{ICCID}{Integrated Circuit Card ID}
|
||||
\newacronym{icv}{ICV}{Initial Chaining Vector}
|
||||
\newacronym{iin}{IIN}{Issuer Identifier Number}
|
||||
\newacronym{imei}{IMEI}{International Mobile Equipment Identity}
|
||||
\newacronym[plural=IMSIs]{IMSI}{IMSI}{International Mobile Subscriber Identity}
|
||||
\newacronym{isd}{ISD}{Issuer Security Domain}
|
||||
\newacronym{isdp}{ISD-P}{Issuer Security Domain Profile}
|
||||
\newacronym{isdr}{ISD-R}{Issuer Security Domain Root}
|
||||
\newacronym{iso}{ISO}{International Standards Organisation}
|
||||
\newacronym{itu}{ITU}{International Telecommunications Union}
|
||||
\newacronym{ka}{KA}{Key Agreement}
|
||||
\newacronym{lds}{LDS}{Local Discovery Service}
|
||||
\newacronym{ldsd}{LDSd}{Local Discovery Service when LPA is in the Device}
|
||||
\newacronym{ldse}{LDSe}{Local Discovery Service when LPA is in the eUICC}
|
||||
\newacronym{loa}{LOA}{Letter Of Approval}
|
||||
\newacronym{lpa}{LPA}{Local Profile Assistant}
|
||||
\newacronym{lpad}{LPAd}{Local Profile Assistant when LPA is in the Device}
|
||||
\newacronym{lpae}{LPAe}{Local Profile Assistant when LPA is in the eUICC}
|
||||
\newacronym{lpd}{LPD}{Local Profile Download}
|
||||
\newacronym{lpdd}{LPDd}{Local Profile Download when LPA is in the Device}
|
||||
\newacronym{lpde}{LPDe}{Local Profile Download when LPA is in the eUICC}
|
||||
\newacronym{lpm}{LPM}{Local Profile Management}
|
||||
\newacronym{lprd}{LPRd}{LPA Proxy when LPA is in the Device}
|
||||
\newacronym{lsi}{LSI}{Logical SE Interface}
|
||||
\newacronym{lte}{LTE}{Long Term Evolution}
|
||||
\newacronym{lui}{LUI}{Local User Interface}
|
||||
\newacronym{luid}{LUId}{Local User Interface when LPA is in the Device}
|
||||
\newacronym{luie}{LUIe}{Local User Interface when LPA is in the eUICC}
|
||||
\newacronym{m4m}{M4M}{Mifare4Mobile\texttrademark}
|
||||
\newacronym{mac}{MAC}{Message Authentication Code}
|
||||
\newacronym{mep}{MEP}{Multiple Enabled Profiles}
|
||||
\newacronym{mno}{MNO}{Mobile Network Operator}
|
||||
\newacronym{mnosd}{MNO-SD}{Mobile Network Operator - Security Domain}
|
||||
\newacronym{moc}{MOC}{Mandatory, Optional or Conditional}
|
||||
\newacronym{mxp}{MXP}{Message eXchange Pattern}
|
||||
\newacronym{naa}{NAA}{Network Access Application}
|
||||
\newacronym{os}{OS}{Operating System}
|
||||
\newacronym{ota}{OTA}{Over The Air}
|
||||
\newacronym{pcm}{PCM}{Profile Content Management}
|
||||
\newacronym{pcmaa}{PCMAA}{PCM Admin Agent}
|
||||
\newacronym{pcmp}{PCMP}{Profile Content Management Platform}
|
||||
\newacronym{pe}{PE}{Profile Element}
|
||||
\newacronym{pix}{PIX}{Proprietary application Identifier eXtension}
|
||||
\newacronym{pki}{PKI}{Public Key Infrastructure}
|
||||
\newacronym{pos}{POS}{Point Of Sale}
|
||||
\newacronym{ppar}{PPAR}{Profile Policy Authorisation Rule}
|
||||
\newacronym{ppe}{PPE}{Profile Policy Enabler}
|
||||
\newacronym{ppk}{PPK}{Profile Protection Key}
|
||||
\newacronym{ppkenc}{PPK-ENC}{Profile Protection Key for encryption}
|
||||
\newacronym{ppkmac}{PPK-MAC}{Profile Protection Key for MAC}
|
||||
\newacronym{ppp}{PPP}{Protected Profile Package}
|
||||
\newacronym{ppr}{PPR}{Profile Policy Rule}
|
||||
\newacronym{pre}{PRE}{Profile Rules Enforcer}
|
||||
\newacronym{rat}{RAT}{Rules Authorisation Table}
|
||||
\newacronym{rfu}{RFU}{Reserved for Future Use}
|
||||
\newacronym{rpm}{RPM}{Remote Profile Management}
|
||||
\newacronym{rsa}{RSA}{Rivest / Shamir / Adleman asymmetric algorithm}
|
||||
\newacronym{rsp}{RSP}{Remote SIM Provisioning}
|
||||
\newacronym{sas}{SAS}{Security Accreditation Scheme}
|
||||
\newacronym{sbpp}{SBPP}{Segmented Bound Profile Package}
|
||||
\newacronym{scp}{SCP}{Secure Channel Protocol}
|
||||
\newacronym{scws}{SCWS}{Smartcard Web Server}
|
||||
\newacronym{sd}{SD}{Security Domain}
|
||||
\newacronym{seac}{SEAC}{Secure Element Access Control}
|
||||
\newacronym{sep}{SEP}{Single Enabled Profile}
|
||||
\newacronym{sim}{SIM}{Subscriber Identity Module}
|
||||
\newacronym{esim}{eSIM}{embedded Subscriber Identity Module}
|
||||
\newacronym{isim}{iSIM}{integrated Subscriber Identity Module}
|
||||
\newacronym{svn}{SVN}{SGP.22 Specification Version Number}
|
||||
\newacronym{smdpp}{SM-DP+}{Subscription Manager Data Preparation Plus}
|
||||
\newacronym{smds}{SM-DS}{Subscription Manager Discovery Service}
|
||||
\newacronym{senc}{S-ENC}{Session Key for encryption}
|
||||
\newacronym{smac}{S-MAC}{Session Key for MAC}
|
||||
\newacronym{tac}{TAC}{Type Allocation Code}
|
||||
\newacronym{tar}{TAR}{Toolkit Application Reference}
|
||||
\newacronym{tls}{TLS}{Transport Layer Security}
|
||||
\newacronym{tlv}{TLV}{Tag-Length-Value}
|
||||
\newacronym{tp}{TP}{Target Port}
|
||||
\newacronym{tre}{TRE}{Tamper Resistant Element}
|
||||
\newacronym{ui}{UI}{User Interface}
|
||||
\newacronym{uim}{UIM}{User Interface Module for LPAe}
|
||||
\newacronym{upp}{UPP}{Unprotected Profile Package}
|
||||
\newacronym{uri}{URI}{Uniform Resource Identifier}
|
||||
\newacronym{url}{URL}{Uniform Resource Locator}
|
||||
\newacronym{usim}{USIM}{Universal Subscriber Identity Module}
|
||||
\newacronym{w3c}{W3C}{World Wide Web Consortium}
|
||||
|
||||
\newacronym{sgp22}{SGP.22}{Remote SIM Provisioning Architecture for Consumer Devices (GSMA Specification)}
|
||||
\newacronym{iot}{IoT}{Internet of Things}
|
||||
\newacronym{udp}{UDP}{User Datagram Protocol}
|
||||
\newacronym{t0}{T=0}{Character-oriented transmission protocol (ISO/IEC 7816-3)}
|
||||
\newacronym[plural=eUICCs]{euicc}{eUICC}{embedded Universal Integrated Circuit Card}
|
||||
\newacronym{ue}{UE}{User Equipment}
|
||||
\newacronym{sptp}{SPTP}{SIM Profile Transparency Protocol}
|
||||
\newacronym{mifare}{MIFARE}{Mikron Fare Collection System}
|
||||
\newacronym{jcre}{JCRE}{Java Card Runtime Environment}
|
||||
\newacronym{jcvm}{JCVM}{Java Card Virtual Machine}
|
||||
|
||||
\newacronym{cpu}{CPU}{Central Processing Unit}
|
||||
\newacronym{ram}{RAM}{Random Access Memory}
|
||||
\newacronym{rom}{ROM}{Read-Only Memory}
|
||||
|
||||
\newacronym{3gpp}{3GPP}{3rd Generation Partnership Project}
|
||||
\newacronym{uicc}{UICC}{Universal Integrated Circuit Card}
|
||||
\newacronym{apdu}{APDU}{Application Protocol Data Unit}
|
||||
\newacronym{tpdu}{TPDU}{Transport Protocol Data Unit}
|
||||
\newacronym{5g}{5G}{Fifth Generation Mobile Network}
|
||||
|
||||
|
||||
\newacronym[plural=C-APDUs]{capdu}{C-APDU}{Command APDU}
|
||||
\newacronym[plural=R-APDUs]{rapdu}{R-APDU}{Response APDU}
|
||||
\newacronym[plural=C-TPDUs]{ctpdu}{C-TPDU}{Command TPDU}
|
||||
\newacronym[plural=R-TPDUs]{rtpdu}{R-TPDU}{Response TPDU}
|
||||
|
||||
\newacronym{ber}{BER}{Basic Encoding Rules}
|
||||
|
||||
\newacronym{df}{DF}{Dedicated File}
|
||||
\newacronym{ef}{EF}{Elementary File}
|
||||
\newacronym{adf}{ADF}{Application Dedicated File}
|
||||
\newacronym{fid}{FID}{File Identifier}
|
||||
\newacronym{mf}{MF}{Master File}
|
||||
\newacronym{aram}{ARA-M}{Access Rule Application - Master}
|
||||
|
||||
\newacronym{imsi}{IMSI}{International Mobile Subscriber Identity}
|
||||
|
||||
78
AdditionalPackages.tex
Normal file
78
AdditionalPackages.tex
Normal file
@@ -0,0 +1,78 @@
|
||||
% !TeX root = ./Thesis.tex
|
||||
|
||||
\graphicspath{{./Graphics/}}
|
||||
|
||||
% need to pass languages explicitly
|
||||
\PassOptionsToPackage{capitalize, noabbrev, ngerman, english}{cleveref}
|
||||
\usepackage{cleveref}
|
||||
\usepackage{datetime} % for formating submission date
|
||||
\usepackage{lipsum} % for template text
|
||||
|
||||
|
||||
% include Git commit hash when drafting
|
||||
\makeatletter
|
||||
\ifthenelse{\boolean{ct@drafting}}{
|
||||
\usepackage{gitinfo2}
|
||||
\renewcommand{\PrelimText}{\footnotesize[\,\today\ at \thistime\ -- version \myVersion{} -- git \gitAbbrevHash\,]}
|
||||
}{}
|
||||
\makeatother
|
||||
|
||||
|
||||
% nice cv style for PhD theses
|
||||
\iftoggle{phd}{
|
||||
\usepackage[LabelsAligned]{currvita}
|
||||
}{}
|
||||
|
||||
|
||||
% to enable wide text/floats taking the space of margin notes (435pt instead of 336pt)
|
||||
% note that this changes the \linewidth (not \textwidth), so follow this example
|
||||
% to include a wide figure:
|
||||
% \begin{figure}
|
||||
% \begin{wide}
|
||||
% \includegraphics[width=\linewidth]{logos/tud-logo}
|
||||
% \caption{Athene logo of TU Darmstadt.}
|
||||
% \end{wide}
|
||||
% \end{figure}
|
||||
\usepackage[strict]{changepage}
|
||||
\newlength{\fullwidthlen}
|
||||
\setlength{\fullwidthlen}{\marginparwidth}
|
||||
\addtolength{\fullwidthlen}{\marginparsep}
|
||||
\newenvironment{wide}{%
|
||||
\begin{adjustwidth*}{}{-\fullwidthlen}\hsize=\linewidth%
|
||||
}{%
|
||||
\end{adjustwidth*}%
|
||||
}
|
||||
|
||||
|
||||
% TikZ/PGFPlots
|
||||
\usepackage{tikz}
|
||||
\usepackage{pgfplots}
|
||||
\pgfplotsset{compat=newest}
|
||||
\usetikzlibrary{
|
||||
chains,
|
||||
positioning,
|
||||
quotes,
|
||||
}
|
||||
|
||||
\def\StripPrefix#1>{}
|
||||
\def\isOverleaf{\fi
|
||||
\def\overleafJobname{output}% overleaf defaults to 'output' as \jobname
|
||||
\edef\overleafJobname{\expandafter\StripPrefix\meaning\overleafJobname}%
|
||||
\edef\job{\jobname}%
|
||||
\ifx\job\overleafJobname
|
||||
}
|
||||
|
||||
% To cache tikz pictures you have to run pdflatex with -shell-escape or --enable-write18
|
||||
\ifnum\pdfshellescape=1
|
||||
\usepgfplotslibrary{external}
|
||||
\if\isOverleaf
|
||||
\tikzexternaldisable
|
||||
\else
|
||||
\tikzexternalize[prefix=GraphicsCache/]
|
||||
\fi
|
||||
\fi
|
||||
|
||||
|
||||
% Lengths for matlab2tikz
|
||||
\newlength\figureheight
|
||||
\newlength\figurewidth
|
||||
12
Appendices/SomeProof.tex
Normal file
12
Appendices/SomeProof.tex
Normal file
@@ -0,0 +1,12 @@
|
||||
% !TeX root = ../Thesis.tex
|
||||
|
||||
%********************************************************************
|
||||
% Some Proof (Appendix)
|
||||
%*******************************************************
|
||||
% -- TemplateKnob
|
||||
% If problems with the headers: get headings in appendix etc. right
|
||||
%\markboth{\spacedlowsmallcaps{Appendix}}{\spacedlowsmallcaps{Appendix}}
|
||||
\chapter{Some Proof}\label{ch:SomeProof}
|
||||
\glsresetall % Resets all acronyms to not used
|
||||
|
||||
\lipsum[8]
|
||||
0
AuthorPublications.bib
Normal file
0
AuthorPublications.bib
Normal file
427
Bibliography.bib
Normal file
427
Bibliography.bib
Normal file
@@ -0,0 +1,427 @@
|
||||
|
||||
@misc{gsma_sgp21_2021,
|
||||
title = {{SGP}.21 v2.3 {RSP} {Architecture}},
|
||||
url = {https://www.gsma.com/solutions-and-impact/technologies/esim/wp-content/uploads/2021/07/SGP.21-2.3.pdf},
|
||||
urldate = {2025-02-24},
|
||||
author = {{GSMA}},
|
||||
month = jun,
|
||||
year = {2021},
|
||||
file = {PDF:/Users/privat/Zotero/storage/9RWMQ5EI/SGP.21 v2.3 RSP Architecture.pdf:application/pdf},
|
||||
}
|
||||
|
||||
@misc{gsma_sgp22_2024,
|
||||
title = {{SGP}.22 v2.6 {RSP} {Technical} {Specification}},
|
||||
url = {https://www.gsma.com/solutions-and-impact/technologies/esim/wp-content/uploads/2024/09/SGP.22-v2.6.pdf},
|
||||
urldate = {2025-02-24},
|
||||
author = {{GSMA}},
|
||||
month = sep,
|
||||
year = {2024},
|
||||
file = {PDF:/Users/privat/Zotero/storage/5BBQVAT6/SGP.22 v2.6 RSP Technical Specification.pdf:application/pdf},
|
||||
}
|
||||
|
||||
@misc{etsi_etsi_1997,
|
||||
title = {{ETSI} {GSM} 11.14 {SIM} {Application} {Toolkit}},
|
||||
url = {https://www.etsi.org/deliver/etsi_gts/11/1114/05.04.00_60/gsmts_1114v050400p.pdf},
|
||||
urldate = {2025-03-03},
|
||||
author = {{ETSI}},
|
||||
month = jul,
|
||||
year = {1997},
|
||||
file = {PDF:/Users/privat/Zotero/storage/6TLW4EZW/ETSI GSM 11.14 SIM Application Toolkit.pdf:application/pdf},
|
||||
}
|
||||
|
||||
@misc{etsi_etsi_2020,
|
||||
title = {{ETSI} {TS} 131 111 {USIM} {Application} {Toolkit}},
|
||||
url = {https://www.etsi.org/deliver/etsi_ts/131100_131199/131111/16.01.00_60/ts_131111v160100p.pdf},
|
||||
urldate = {2025-03-03},
|
||||
author = {{ETSI}},
|
||||
month = jul,
|
||||
year = {2020},
|
||||
file = {PDF:/Users/privat/Zotero/storage/HQ5NC5HT/ETSI TS 131 111 USIM Application Toolkit.pdf:application/pdf},
|
||||
}
|
||||
|
||||
@misc{trusted_connectivity_alliance_st_2009,
|
||||
title = {S@{T} 01.50 v4.0.0 {S}@{T} {Browser} {Behavior} {Guidlines}},
|
||||
url = {https://trustedconnectivityalliance.org/wp-content/uploads/2020/01/S@T-01.50-v4.0.0-Release-2009.pdf},
|
||||
urldate = {2025-01-02},
|
||||
author = {{Trusted Connectivity Alliance}},
|
||||
year = {2009},
|
||||
file = {PDF:/Users/privat/Zotero/storage/XWXLNA5W/S@T 01.50 v4.0.0 S@T Browser Behavior Guidlines.pdf:application/pdf},
|
||||
}
|
||||
|
||||
@misc{etsi_etsi_2023,
|
||||
title = {{ETSI} {TS} 102 221 {V4}.10.0 {UICC}-{Terminal} interface},
|
||||
url = {https://www.etsi.org/deliver/etsi_ts/102200_102299/102221/04.10.00_60/ts_102221v041000p.pdf},
|
||||
urldate = {2025-02-03},
|
||||
author = {{ETSI}},
|
||||
month = jun,
|
||||
year = {2023},
|
||||
file = {PDF:/Users/privat/Zotero/storage/DAXFX2XH/ETSI TS 102 221 V4.10.0.pdf:application/pdf},
|
||||
}
|
||||
|
||||
@misc{trusted_connectivity_alliance_euicc_2021,
|
||||
title = {{eUICC} {Profile} {Package}: {Interoperable} {Format} {Technical} {Specification} v3.0},
|
||||
url = {https://trustedconnectivityalliance.org/wp-content/uploads/2021/05/Profile-interoperability-technical-specification_V3.0-Final.pdf},
|
||||
urldate = {2025-02-14},
|
||||
author = {{Trusted Connectivity Alliance}},
|
||||
month = may,
|
||||
year = {2021},
|
||||
file = {PDF:/Users/privat/Zotero/storage/PMG9FK4I/eUICC Profile Package Interoperable Format Technical Specification v3.0.pdf:application/pdf},
|
||||
}
|
||||
|
||||
@misc{etsi_ts_2022,
|
||||
title = {{TS} 102 226 {V17}.0.0 {Remote} {APDU} structure for {UICC} based applications},
|
||||
language = {en},
|
||||
author = {{ETSI}},
|
||||
month = oct,
|
||||
year = {2022},
|
||||
file = {PDF:/Users/privat/Zotero/storage/WPCH9N8K/TS 102 226 - V17.0.0 - Smart Cards\; Remote APDU structure for UICC based applications (Release 17).pdf:application/pdf},
|
||||
}
|
||||
|
||||
@misc{nonpointer_estkme_2025,
|
||||
title = {{eSTK}.me: {The} next generation of swappable consumer {eSIM} cards {\textbar} {Echo}},
|
||||
shorttitle = {{eSTK}.me},
|
||||
url = {https://iecho-cc.translate.goog/2024/03/16/estk-me-next-generation-removable-consumer-esim/?_x_tr_sl=zh-CN&_x_tr_tl=en&_x_tr_hl=zh-CN&_x_tr_pto=wapp},
|
||||
abstract = {让国行手机用上 eSIM:支持 iOS 写卡切卡、OTA 远程管理的可插拔 eSIM 卡。},
|
||||
language = {en},
|
||||
urldate = {2025-02-24},
|
||||
author = {nonPointer},
|
||||
month = feb,
|
||||
year = {2025},
|
||||
file = {Snapshot:/Users/privat/Zotero/storage/6IIWBLRP/estk-me-next-generation-removable-consumer-esim.html:text/html},
|
||||
}
|
||||
|
||||
@misc{etsi_etsi_2022,
|
||||
title = {{ETSI} {TS} 102 221 {V17}.1.0},
|
||||
url = {https://www.etsi.org/deliver/etsi_ts/102200_102299/102221/17.01.00_60/ts_102221v170100p.pdf},
|
||||
urldate = {2025-02-16},
|
||||
author = {{ETSI}},
|
||||
month = jan,
|
||||
year = {2022},
|
||||
file = {PDF:/Users/privat/Zotero/storage/L9JNWCIF/ETSI TS 102 221 V17.1.0.pdf:application/pdf},
|
||||
}
|
||||
|
||||
@misc{gsma_sgp02_2020,
|
||||
title = {{SGP}.02 v4.1 {Remote} {Provisioning} {Architecture} for {Embedded} {UICC}},
|
||||
url = {https://www.gsma.com/solutions-and-impact/technologies/esim/wp-content/uploads/2020/06/SGP.02-v4.1.pdf},
|
||||
urldate = {2025-02-16},
|
||||
author = {{GSMA}},
|
||||
month = may,
|
||||
year = {2020},
|
||||
file = {PDF:/Users/privat/Zotero/storage/Q9BSLLSK/SGP.02 v4.1 Remote Provisioning Architecture for Embedded UICC.pdf:application/pdf},
|
||||
}
|
||||
|
||||
@misc{gsma_ts38_2019,
|
||||
title = {{TS}.38 {SIM} {Toolkit} {Device} {Requirements} - {User} {Experience} {Enhancements} v2.0},
|
||||
url = {https://www.gsma.com/newsroom/wp-content/uploads//TS.38-v2.0.pdf},
|
||||
urldate = {2025-02-17},
|
||||
author = {{GSMA}},
|
||||
month = mar,
|
||||
year = {2019},
|
||||
file = {PDF:/Users/privat/Zotero/storage/XXQD9Y5B/TS.38 SIM Toolkit Device Requirements - User Experience Enhancements v2.0.pdf:application/pdf},
|
||||
}
|
||||
|
||||
@misc{gsma_sgp22_2025,
|
||||
title = {{SGP}.22 v2.6.1 {RSP} {Technical} {Specification}},
|
||||
url = {https://www.gsma.com/solutions-and-impact/technologies/esim/wp-content/uploads/2025/04/SGP.22-v2.6.1.pdf},
|
||||
urldate = {2025-04-29},
|
||||
author = {{GSMA}},
|
||||
month = apr,
|
||||
year = {2025},
|
||||
file = {PDF:/Users/privat/Zotero/storage/K6CTMKMX/SGP.22 v2.6.1 RSP Technical Specification.pdf:application/pdf},
|
||||
}
|
||||
|
||||
@misc{gsma_sgp22_2023,
|
||||
title = {{SGP}.22 v3.1 {RSP} {Technical} {Specification}},
|
||||
url = {https://www.gsma.com/solutions-and-impact/technologies/esim/wp-content/uploads/2023/12/SGP.22-v3.1.pdf},
|
||||
language = {en},
|
||||
publisher = {GSMA},
|
||||
author = {{GSMA}},
|
||||
month = jan,
|
||||
year = {2023},
|
||||
note = {SGP.22 v3.1. Published by GSMA for the eSIM ecosystem},
|
||||
file = {SGP.22-v3.1.pdf:/Users/privat/Zotero/storage/JFU8XMUB/SGP.22-v3.1.pdf:application/pdf},
|
||||
}
|
||||
|
||||
@misc{frank_ruan_frank_2024,
|
||||
title = {Frank {Ruan}'s {Blog} - {Removable} {eUICCs}...},
|
||||
url = {https://frank-ruan.com/2024/08/27/removable-euicc/},
|
||||
language = {en-us},
|
||||
urldate = {2025-02-22},
|
||||
author = {{Frank Ruan}},
|
||||
month = aug,
|
||||
year = {2024},
|
||||
file = {Snapshot:/Users/privat/Zotero/storage/25NJYNJL/removable-euicc.html:text/html},
|
||||
}
|
||||
|
||||
@misc{gsma_esim_2024,
|
||||
title = {{eSIM} {Consumer} and {IoT} {Specifications}},
|
||||
url = {https://www.gsma.com/solutions-and-impact/technologies/esim/esim-specification/},
|
||||
abstract = {The below content provides the status of the eSIM specifications that have been published by GSMA and a comprehensive way to link the core specifications with the related test and requirement specifications. Architecture Specifications Technical Specifications Test Specifications GSMA EID Definition and Assignment Compliance Specifications To notify Software changes on eUICC certified products there is a GSMA […]},
|
||||
language = {en-US},
|
||||
urldate = {2025-01-04},
|
||||
journal = {eSIM},
|
||||
author = {{GSMA}},
|
||||
year = {2024},
|
||||
file = {Snapshot:/Users/privat/Zotero/storage/84VDANVV/esim-specification.html:text/html},
|
||||
}
|
||||
|
||||
@misc{security_research_labs_github_2019,
|
||||
title = {{GitHub} - srlabs/{SIMTester}: {A} tool to test {SIM} card security},
|
||||
url = {https://github.com/srlabs/SIMTester/tree/main},
|
||||
urldate = {2025-01-02},
|
||||
author = {{Security Research Labs}},
|
||||
year = {2019},
|
||||
file = {GitHub - srlabs/SIMTester\: A tool to test SIM card security:/Users/privat/Zotero/storage/WQD9GVYP/main.html:text/html},
|
||||
}
|
||||
|
||||
@misc{enea_simjacker_2019,
|
||||
title = {Simjacker},
|
||||
url = {https://www.enea.com/info/simjacker/},
|
||||
language = {en-GB},
|
||||
urldate = {2025-01-02},
|
||||
journal = {Enea},
|
||||
author = {{ENEA}},
|
||||
year = {2019},
|
||||
file = {PDF:/Users/privat/Zotero/storage/UYMWY5RR/Simjacker.pdf:application/pdf;Snapshot:/Users/privat/Zotero/storage/MAIKW559/simjacker.html:text/html},
|
||||
}
|
||||
|
||||
@misc{paljak_globalplatformpro_2024,
|
||||
title = {{GlobalPlatformPro}},
|
||||
copyright = {LGPL-3.0},
|
||||
url = {https://github.com/martinpaljak/GlobalPlatformPro},
|
||||
abstract = {<EFBFBD><EFBFBD> <20><> Manage applets and keys on JavaCard-s like a pro},
|
||||
urldate = {2025-01-02},
|
||||
author = {Paljak, Martin},
|
||||
month = dec,
|
||||
year = {2024},
|
||||
note = {original-date: 2014-01-15T15:34:22Z},
|
||||
keywords = {cli, globalplatform, java, javacard, sdk, smartcard},
|
||||
}
|
||||
|
||||
@inproceedings{zhao_securesim_2021,
|
||||
address = {New York, NY, USA},
|
||||
series = {{MobiCom} '21},
|
||||
title = {{SecureSIM}: rethinking authentication and access control for {SIM}/{eSIM}},
|
||||
isbn = {978-1-4503-8342-4},
|
||||
shorttitle = {{SecureSIM}},
|
||||
url = {https://dl.acm.org/doi/10.1145/3447993.3483254},
|
||||
doi = {10.1145/3447993.3483254},
|
||||
abstract = {The SIM/eSIM card stores critical information for a mobile user to access the 4G/5G network. In this work, we uncover three vulnerabilities of the current SIM practice. We show that the PIN-based access control may expose the in-SIM data to an adversary through both hardware and software. Once exposed, such in-SIM information can be used to reconstruct various keys used for device authentication, data encryption, etc. They thus enable a number of attacks, including traffic eavesdropping, man-in-the-middle attack, impersonation, etc. The fundamental problem is that, the current SIM design does not offer proper authentication and fine-grained access control to hundreds of in-SIM files for various in-card applets and off-card units. We next propose a new solution that offers both authentication and fine-grained access control. Our implementation and evaluation have confirmed the viability of our proposal.},
|
||||
urldate = {2024-12-16},
|
||||
booktitle = {Proceedings of the 27th {Annual} {International} {Conference} on {Mobile} {Computing} and {Networking}},
|
||||
publisher = {Association for Computing Machinery},
|
||||
author = {Zhao, Jinghao and Ding, Boyan and Guo, Yunqi and Tan, Zhaowei and Lu, Songwu},
|
||||
month = oct,
|
||||
year = {2021},
|
||||
pages = {451--464},
|
||||
file = {Full Text PDF:/Users/privat/Zotero/storage/Q4DJCTU5/Zhao et al. - 2021 - SecureSIM rethinking authentication and access control for SIMeSIM.pdf:application/pdf},
|
||||
}
|
||||
|
||||
@misc{welte_euicc_2024,
|
||||
title = {{eUICC} and {eSIM} {Developer} {Manual}},
|
||||
url = {https://euicc-manual.osmocom.org/},
|
||||
abstract = {This is the Osmocom eUICC and eSIM Developer Manual.},
|
||||
language = {en-US},
|
||||
urldate = {2024-12-16},
|
||||
journal = {eUICC and eSIM Developer Manual},
|
||||
author = {Welte, Harald},
|
||||
year = {2024},
|
||||
file = {Snapshot:/Users/privat/Zotero/storage/R4ACBEUQ/euicc-manual.osmocom.org.html:text/html},
|
||||
}
|
||||
|
||||
@misc{welte_pysim_2024,
|
||||
title = {pysim},
|
||||
copyright = {GPL-2.0},
|
||||
url = {https://gitea.osmocom.org/sim-card/pysim},
|
||||
abstract = {python libraires and command line tools for SIM/UICC/USIM/ISIM card analysis and programming},
|
||||
urldate = {2024-12-16},
|
||||
publisher = {Osmocom},
|
||||
author = {Welte, Harald and Maier, Philipp and Herle, Supreeth and Yanitskiy, Vadim},
|
||||
month = dec,
|
||||
year = {2024},
|
||||
note = {original-date: 2016-01-18T08:48:09Z},
|
||||
keywords = {3gpp, cellular, osmocom, sim, telecommunications, usim-cards},
|
||||
}
|
||||
|
||||
@misc{welte_sysmoeuicc1_2024,
|
||||
title = {{sysmoEUICC1} {User} {Manual}},
|
||||
url = {https://www.sysmocom.de/manuals/sysmoeuicc-manual.pdf},
|
||||
language = {en},
|
||||
publisher = {Sysmocom},
|
||||
author = {Welte, Harald},
|
||||
year = {2024},
|
||||
file = {PDF:/Users/privat/Zotero/storage/LAU8TCF3/Welte - sysmoEUICC1 User Manual.pdf:application/pdf},
|
||||
}
|
||||
|
||||
@misc{gsma_esim_2018,
|
||||
title = {{eSIM} {Whitepaper}},
|
||||
url = {https://www.gsma.com/solutions-and-impact/technologies/esim/wp-content/uploads/2018/12/esim-whitepaper.pdf},
|
||||
publisher = {GSMA},
|
||||
author = {{GSMA}},
|
||||
year = {2018},
|
||||
file = {esim-whitepaper.pdf:/Users/privat/Zotero/storage/5URD9U72/esim-whitepaper.pdf:application/pdf},
|
||||
}
|
||||
|
||||
@article{mckeeman_differential_1998,
|
||||
title = {Differential {Testing} for {Software}},
|
||||
volume = {10},
|
||||
url = {https://www.cs.swarthmore.edu/~bylvisa1/cs97/f13/Papers/DifferentialTestingForSoftware.pdf},
|
||||
abstract = {Differential testing, a form of random testing,
|
||||
is a component of a mature testing technology
|
||||
for large software systems. It complements
|
||||
regression testing based on commercial test
|
||||
suites and tests locally developed during prod-
|
||||
uct development and deployment. Differential
|
||||
testing requires that two or more comparable
|
||||
systems be available to the tester. These sys-
|
||||
tems are presented with an exhaustive series
|
||||
of mechanically generated test cases. If (we
|
||||
might say when) the results differ or one of
|
||||
the systems loops indefinitely or crashes, the
|
||||
tester has a candidate for a bug-exposing test.
|
||||
Implementing differential testing is an interest-
|
||||
ing technical problem. Getting it into use is an
|
||||
even more interesting social challenge. This
|
||||
paper is derived from experience in differential
|
||||
testing of compilers and run-time systems at
|
||||
DIGITAL over the last few years and recently
|
||||
at Compaq. A working prototype for testing
|
||||
C compilers is available on the web.},
|
||||
language = {en},
|
||||
number = {1},
|
||||
author = {McKeeman, William M},
|
||||
year = {1998},
|
||||
pages = {100--107},
|
||||
file = {PDF:/Users/privat/Zotero/storage/UJDPELAV/McKeeman - Differential Testing for Software.pdf:application/pdf},
|
||||
}
|
||||
|
||||
@inproceedings{lisowski_simurai_2024,
|
||||
title = {\{{SIMurai}\}: {Slicing} {Through} the {Complexity} of \{{SIM}\} {Card} {Security} {Research}},
|
||||
isbn = {978-1-939133-44-1},
|
||||
shorttitle = {\{{SIMurai}\}},
|
||||
url = {https://www.usenix.org/conference/usenixsecurity24/presentation/lisowski},
|
||||
language = {en},
|
||||
urldate = {2024-12-16},
|
||||
author = {Lisowski, Tomasz Piotr and Chlosta, Merlin and Wang, Jinjin and Muench, Marius},
|
||||
year = {2024},
|
||||
pages = {4481--4498},
|
||||
file = {Full Text PDF:/Users/privat/Zotero/storage/RB2QNKQP/Lisowski et al. - 2024 - SIMurai Slicing Through the Complexity of SIM Card Security Research.pdf:application/pdf},
|
||||
}
|
||||
|
||||
@article{ahmed_security_2024,
|
||||
title = {Security {Analysis} of the {Consumer} {Remote} {SIM} {Provisioning} {Protocol}},
|
||||
volume = {27},
|
||||
issn = {2471-2566},
|
||||
url = {https://dl.acm.org/doi/10.1145/3663761},
|
||||
doi = {10.1145/3663761},
|
||||
abstract = {Remote SIM provisioning (RSP) for consumer devices is the protocol specified by the GSM Association for downloading SIM profiles into a secure element in a mobile device. The process is commonly known as eSIM, and it is expected to replace removable SIM cards. The security of the protocol is critical because the profile includes the credentials with which the mobile device will authenticate to the mobile network. In this article, we present a formal security analysis of the consumer RSP protocol. We model the multi-party protocol in applied pi calculus, define formal security goals, and verify them in ProVerif. The analysis shows that the consumer RSP protocol protects against a network adversary when all the intended participants are honest. However, we also model the protocol in realistic partial compromise scenarios where the adversary controls a legitimate participant or communication channel. The security failures in the partial compromise scenarios reveal weaknesses in the protocol design. The most important observation is that the security of RSP depends unnecessarily on it being encapsulated in a TLS tunnel. Also, the lack of pre-established identifiers means that a compromised download server anywhere in the world or a compromised secure element can be used for attacks against RSP between honest participants. Additionally, the lack of reliable methods for verifying user intent can lead to serious security failures. Based on the findings, we recommend practical improvements to RSP implementations, future versions of the specification, and mobile operator processes to increase the robustness of eSIM security.},
|
||||
number = {3},
|
||||
urldate = {2024-12-16},
|
||||
journal = {ACM Trans. Priv. Secur.},
|
||||
author = {Ahmed, Abu Shohel and Peltonen, Aleksi and Sethi, Mohit and Aura, Tuomas},
|
||||
month = aug,
|
||||
year = {2024},
|
||||
pages = {23:1--23:36},
|
||||
file = {Full Text PDF:/Users/privat/Zotero/storage/JTYF7F4Q/Ahmed et al. - 2024 - Security Analysis of the Consumer Remote SIM Provisioning Protocol.pdf:application/pdf},
|
||||
}
|
||||
|
||||
@article{ahmed_transparency_2021,
|
||||
title = {Transparency of {SIM} profiles for the consumer remote {SIM} provisioning protocol},
|
||||
volume = {76},
|
||||
issn = {1958-9395},
|
||||
url = {https://doi.org/10.1007/s12243-020-00791-2},
|
||||
doi = {10.1007/s12243-020-00791-2},
|
||||
abstract = {In mobile communication, User Equipment (UE) authenticates a subscriber to a Mobile Network Operator (MNO) using credentials from the MNO specified SIM profile that is securely stored inside the SIM card. Traditionally, a change in a subscriber’s SIM profile, such as a change in a subscription, requires replacement of the physical SIM card. To address this shortcoming, the GSM Association (GSMA) has specified the consumer Remote SIM Provisioning (RSP) protocol. The protocol enables remote provisioning of SIM profiles from a server to SIM cards, also known as the embedded Universal Integrated Circuit Card (eUICC). In RSP, any GSMA-certified server is trusted by all eUICCs, and consequently any server can provision SIM profiles to all eUICCs, even those not originating from the MNO associated with the GSMA-certified RSP server. Consequently, an attacker, by compromising a server, can clone a genuine SIM profile and provision it to other eUICCs. To address this security problem, we present SIM Profile Transparency Protocol (SPTP) to detect malicious provisioning of SIM profiles. SPTP assures to the eUICC and the MNO that all SIM provisioning actions—both approved and unapproved—leave a permanent, non-repudiatable trail. We evaluate security guarantees provided by SPTP using a formal model, implement a prototype for SPTP, and evaluate the prototype against a set of practical requirements.},
|
||||
language = {en},
|
||||
number = {3},
|
||||
urldate = {2024-12-16},
|
||||
journal = {Annals of Telecommunications},
|
||||
author = {Ahmed, Abu Shohel and Thakur, Mukesh and Paavolainen, Santeri and Aura, Tuomas},
|
||||
month = apr,
|
||||
year = {2021},
|
||||
keywords = {Consumer RSP, eSIM security, SIM profile cloning, Transparency},
|
||||
pages = {187--202},
|
||||
file = {Full Text PDF:/Users/privat/Zotero/storage/JSB5G2YT/Ahmed et al. - 2021 - Transparency of SIM profiles for the consumer remote SIM provisioning protocol.pdf:application/pdf},
|
||||
}
|
||||
|
||||
@misc{osmocom_simtrace_nodate,
|
||||
title = {{SIMtrace} 2 - {Open} {Source} {Mobile} {Communications}},
|
||||
url = {https://osmocom.org/projects/simtrace2/wiki},
|
||||
urldate = {2025-05-11},
|
||||
author = {{Osmocom}},
|
||||
file = {Wiki - SIMtrace 2 - Open Source Mobile Communications:/Users/privat/Zotero/storage/YGSSZYR3/wiki.html:text/html},
|
||||
}
|
||||
|
||||
@misc{welte_wireshark_nodate,
|
||||
title = {Wireshark {GSM} {SIM} dissector},
|
||||
url = {https://github.com/wireshark/wireshark/blob/master/epan/dissectors/packet-gsm_sim.c},
|
||||
abstract = {Read-only mirror of Wireshark\&\#39;s Git repository at https://gitlab.com/wireshark/wireshark. ⚠️ GitHub won\&\#39;t let us disable pull requests. ⚠️ THEY WILL BE IGNORED HERE ⚠️ Upload them at GitLab...},
|
||||
urldate = {2025-05-11},
|
||||
publisher = {Wireshark},
|
||||
author = {Welte, Harald},
|
||||
file = {Snapshot:/Users/privat/Zotero/storage/LCYMD2GY/packet-gsm_sim.html:text/html},
|
||||
}
|
||||
|
||||
@misc{petercxy_openeuicc_nodate,
|
||||
title = {{OpenEUICC}},
|
||||
url = {https://gitea.angry.im/PeterCxy/OpenEUICC},
|
||||
abstract = {eSIM LPA (Local Profile Assistant) implementation for Android. System privilege or ARA-M allowlisting required.},
|
||||
urldate = {2025-05-11},
|
||||
author = {{PeterCxy}},
|
||||
file = {Snapshot:/Users/privat/Zotero/storage/45U7S476/OpenEUICC.html:text/html},
|
||||
}
|
||||
|
||||
@misc{esimmoe_minilpa_nodate,
|
||||
title = {{MiniLPA}},
|
||||
url = {https://github.com/EsimMoe/MiniLPA},
|
||||
urldate = {2025-05-11},
|
||||
author = {{EsimMoe}},
|
||||
file = {GitHub - EsimMoe/MiniLPA\: Professional LPA UI:/Users/privat/Zotero/storage/CMWHRGQM/MiniLPA.html:text/html},
|
||||
}
|
||||
|
||||
@misc{icedtangerine_easylpac_2025,
|
||||
title = {{EasyLPAC}},
|
||||
copyright = {MIT},
|
||||
url = {https://github.com/creamlike1024/EasyLPAC},
|
||||
abstract = {lpac GUI Frontend},
|
||||
urldate = {2025-05-11},
|
||||
author = {{IcedTangerine}},
|
||||
month = may,
|
||||
year = {2025},
|
||||
note = {original-date: 2024-01-09T04:56:09Z},
|
||||
keywords = {esim, lpa, sgp22},
|
||||
}
|
||||
|
||||
@misc{osmocom_open_nodate,
|
||||
title = {Open {Source} {Mobile} {Communications}},
|
||||
url = {https://osmocom.org/},
|
||||
urldate = {2025-05-11},
|
||||
author = {{Osmocom}},
|
||||
file = {Open Source Mobile Communications:/Users/privat/Zotero/storage/GBAJJJN5/osmocom.org.html:text/html},
|
||||
}
|
||||
|
||||
@misc{estkme_lpac_2025,
|
||||
title = {lpac},
|
||||
copyright = {AGPL-3.0},
|
||||
url = {https://github.com/estkme-group/lpac},
|
||||
abstract = {C-based eUICC LPA},
|
||||
urldate = {2025-05-11},
|
||||
publisher = {eSTK.me Group},
|
||||
author = {{estk.me}},
|
||||
month = may,
|
||||
year = {2025},
|
||||
note = {original-date: 2023-09-21T04:12:56Z},
|
||||
keywords = {sgp22, euicc},
|
||||
}
|
||||
|
||||
@misc{security_research_labs_simtester_2025,
|
||||
title = {{SIMTester}},
|
||||
url = {https://github.com/srlabs/SIMTester},
|
||||
abstract = {A tool to test SIM card security},
|
||||
urldate = {2025-05-11},
|
||||
publisher = {Security Research Labs},
|
||||
author = {{Security Research Labs}},
|
||||
month = may,
|
||||
year = {2025},
|
||||
note = {original-date: 2022-10-25T09:34:57Z},
|
||||
}
|
||||
340
COPYING
Normal file
340
COPYING
Normal file
@@ -0,0 +1,340 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||
51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
License is intended to guarantee your freedom to share and change free
|
||||
software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Library General Public License instead.) You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if you
|
||||
distribute copies of the software, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights that
|
||||
you have. You must make sure that they, too, receive or can get the
|
||||
source code. And you must show them these terms so they know their
|
||||
rights.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
distribute and/or modify the software.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a free
|
||||
program will individually obtain patent licenses, in effect making the
|
||||
program proprietary. To prevent this, we have made it clear that any
|
||||
patent must be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains
|
||||
a notice placed by the copyright holder saying it may be distributed
|
||||
under the terms of this General Public License. The "Program", below,
|
||||
refers to any such program or work, and a "work based on the Program"
|
||||
means either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of it,
|
||||
either verbatim or with modifications and/or translated into another
|
||||
language. (Hereinafter, translation is included without limitation in
|
||||
the term "modification".) Each licensee is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running the Program is not restricted, and the output from the Program
|
||||
is covered only if its contents constitute a work based on the
|
||||
Program (independent of having been made by running the Program).
|
||||
Whether that is true depends on what the Program does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that you
|
||||
conspicuously and appropriately publish on each copy an appropriate
|
||||
copyright notice and disclaimer of warranty; keep intact all the
|
||||
notices that refer to this License and to the absence of any warranty;
|
||||
and give any other recipients of the Program a copy of this License
|
||||
along with the Program.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
you may at your option offer warranty protection in exchange for a fee.
|
||||
|
||||
2. You may modify your copy or copies of the Program or any portion
|
||||
of it, thus forming a work based on the Program, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any
|
||||
part thereof, to be licensed as a whole at no charge to all third
|
||||
parties under the terms of this License.
|
||||
|
||||
c) If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
announcement including an appropriate copyright notice and a
|
||||
notice that there is no warranty (or else, saying that you provide
|
||||
a warranty) and that users may redistribute the program under
|
||||
these conditions, and telling the user how to view a copy of this
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Program, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Program.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
a) Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections
|
||||
1 and 2 above on a medium customarily used for software interchange; or,
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three
|
||||
years, to give any third party, for a charge no more than your
|
||||
cost of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
|
||||
c) Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is
|
||||
allowed only for noncommercial distribution and only if you
|
||||
received the program in object code or executable form with such
|
||||
an offer, in accord with Subsection b above.)
|
||||
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to
|
||||
control compilation and installation of the executable. However, as a
|
||||
special exception, the source code distributed need not include
|
||||
anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component
|
||||
itself accompanies the executable.
|
||||
|
||||
If distribution of executable or object code is made by offering
|
||||
access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program is
|
||||
void, and will automatically terminate your rights under this License.
|
||||
However, parties who have received copies, or rights, from you under
|
||||
this License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
5. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Program or works based on it.
|
||||
|
||||
6. Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Program at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Program by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
may add an explicit geographical distribution limitation excluding
|
||||
those countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
the limitation as if written in the body of this License.
|
||||
|
||||
9. The Free Software Foundation may publish revised and/or new versions
|
||||
of the General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies a version number of this License which applies to it and "any
|
||||
later version", you have the option of following the terms and conditions
|
||||
either of that version or of any later version published by the Free
|
||||
Software Foundation. If the Program does not specify a version number of
|
||||
this License, you may choose any version ever published by the Free Software
|
||||
Foundation.
|
||||
|
||||
10. If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the author
|
||||
to ask for permission. For software which is copyrighted by the Free
|
||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||
make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
of promoting the sharing and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||
REPAIR OR CORRECTION.
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program is interactive, make it output a short notice like this
|
||||
when it starts in an interactive mode:
|
||||
|
||||
Gnomovision version 69, Copyright (C) year name of author
|
||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, the commands you use may
|
||||
be called something other than `show w' and `show c'; they could even be
|
||||
mouse-clicks or menu items--whatever suits your program.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
|
||||
This General Public License does not permit incorporating your program into
|
||||
proprietary programs. If your program is a subroutine library, you may
|
||||
consider it more useful to permit linking proprietary applications with the
|
||||
library. If this is what you want to do, use the GNU Library General
|
||||
Public License instead of this License.
|
||||
212
Chapters/Background.tex
Normal file
212
Chapters/Background.tex
Normal file
@@ -0,0 +1,212 @@
|
||||
% !TeX root = ../Thesis.tex
|
||||
|
||||
%************************************************
|
||||
\chapter{Background}\label{ch:design}
|
||||
%************************************************
|
||||
\glsresetall % Resets all acronyms to not used
|
||||
|
||||
\section{Subscriber Identity Module}
|
||||
\label{sec:sim}
|
||||
|
||||
% - base is a smart card -> also used for bank cards, MIFARE cards, etc
|
||||
% - contains a CPU, ROM, RAM and can be connected via 8 PINS on the back side
|
||||
% - access is provided via the OS running on the card, offers file structure
|
||||
% - The os on the card can also run java card applets to provide additional functionality
|
||||
% - java card applets enable the use of the java language to be used on smart cards, use the Java Card Runtime Environment which runs inside the Java Card VM
|
||||
|
||||
The \gls{sim} card is a specialized type of smart card, a form factor also employed in applications such as banking (\eg, EMV cards) and access control (\eg, \gls{mifare} cards). As a smart card, a SIM contains essential computing components: a \gls{cpu}, \gls{rom}, and \gls{ram}, all of which are accessed through up to eight physical contacts (pins) on the card's surface~\cite{smartcard-standard}.
|
||||
|
||||
Interaction with the \gls{sim} is governed by an embedded operating system, which provides a standardized file system structure for data access and application management. In addition to storing subscriber data and cryptographic keys, the \gls{sim} operating system can execute Java Card applets to extend its functionality.
|
||||
|
||||
Java Card applets are applications written in a restricted subset of the Java programming language, specifically tailored for execution on constrained devices. They operate within the \gls{jcre}, which itself runs inside the \gls{jcvm}. This environment enables secure, platform-independent execution of custom logic directly on the \gls{sim} card, a capability that is heavily utilized in mobile network provisioning, secure authentication, and value-added services.
|
||||
|
||||
|
||||
\paragraph{Standards}
|
||||
% - how SIMs operate and function is defined by 3 parties: ETSI, 3GPP, and the GSMA
|
||||
% - ETSI: defines how the SIM works as a platform i.e UICC hardware, how APDU are structured and work, and the smart card file system (cite TS 131 221)
|
||||
% - 3GPP: defines how the SIMs are integrated into the mobile networks by defining the mobile broadband standards such as 5G and LTE
|
||||
% - GSMA: defines the funcitonal systems around the eSIM to make it usable in the real-world, i.e. in the context of eSIMs: RSP, LPA, SM-DP+, etc -> later (cite SGP.22)
|
||||
|
||||
The operation and functionality of \gls{sim} and \gls{esim} cards are defined and governed by three major standardization bodies: \gls{etsi}, \gls{3gpp}, and the \gls{gsma}. Each of these organizations contributes distinct specifications that together form the foundation of the \gls{sim} ecosystem.
|
||||
|
||||
The \gls{etsi} defines the \gls{sim} card as a smart card platform. This includes specifications for the physical \gls{uicc} hardware, the structure and semantics of \gls{apdu} commands, and the internal smart card file system. Notably, the ETSI standard TS 131 221 specifies the logical structure of the file system and the behavior of elementary and dedicated files~\cite{etsi-ts-131-221}.
|
||||
|
||||
The \gls{3gpp} focuses on how \gls{sim} cards integrate with mobile networks. This includes the specification of \gls{sim} functionalities required for network access in technologies such as \gls{lte}, \gls{5g}, and legacy systems. These standards ensure interoperability between SIMs and network infrastructure across vendors and operators.
|
||||
|
||||
The \gls{gsma} defines the higher-level functional architecture necessary to operationalize \gls{esim} technology in real-world deployments. This includes specifications such as the \gls{rsp} system, the \gls{lpa}, and the \gls{smdpp}, which together enable the remote provisioning, management, and activation of eSIM profiles. The GSMA's \gls{sgp22} specification is a cornerstone in this area, detailing the technical realization of the consumer remote \gls{sim} provisioning system~\cite{gsma_sgp22_2025}.
|
||||
|
||||
|
||||
|
||||
\paragraph{Transport Protocols}
|
||||
% - ETSI defines two protocols for communication: T=0 and T=1
|
||||
% - T=0: half-duplex asynchronos asynchronous character based transmission protocol
|
||||
% - T=1: half-duplex asynchronous block based transmission protocol, is in several ways more advanced than t=0: better error correction, APDU chaining, better in handling large APDUs etc, but also has more overhead due to block headers, control fields, way more complex in comparison to t=0 (cite TS 102 221)
|
||||
% - to the best of my knowledge t=1 is rarly used in consumer SIMs and eSIMs -> we will focus on t=0
|
||||
|
||||
Communication between the \gls{uicc} and the terminal is governed by transport protocols defined by the \gls{etsi} standard TS 102 221~\cite{etsi-ts-102-221}. Two primary protocols are specified: \textbf{T=0} and \textbf{T=1}.
|
||||
|
||||
T=0 is a half-duplex, asynchronous, character-based transmission protocol. It is relatively simple in design and is widely supported across devices due to its low overhead and ease of implementation. However, it lacks advanced features such as robust error correction and support for transmitting large \glspl{apdu} efficiently.
|
||||
|
||||
In contrast, T=1 is a half-duplex, asynchronous, block-oriented protocol. It introduces several enhancements over T=0, including improved error detection and correction mechanisms, APDU chaining for handling long messages, and more flexible flow control. These improvements come at the cost of increased complexity, as T=1 includes block headers, control fields, and more elaborate state handling. Due to this additional complexity and resource requirements, T=1 is, to the best of current knowledge, rarely employed in consumer-grade \gls{sim} or \gls{esim} cards.
|
||||
|
||||
Given this, the remainder of this work will focus on the T=0 protocol, which remains the dominant transport protocol in commercial \gls{uicc} deployments.
|
||||
|
||||
|
||||
\paragraph{Application/Transportation Protocol Data Unit}
|
||||
% - we differentiate between APDU (Application layer) and TPDUs (transport layer)
|
||||
% - when sending APDUS to the UICC wthe ETSI defines them as C-APDUs (command apdus) and the responses from the UICC as R-APDUs (response apdus)
|
||||
% - on the tansport layer those are C-TPDUs and R-TPDUs respectivly
|
||||
% - the apdus have the following structure (insert table for C-apdus and r-apdus)
|
||||
% - the status word (sw) in the r-apdu indictates a successfull execution or an error
|
||||
% - success are indicated by 9000
|
||||
% - sw with 61XX or 6CXX are used to control the exchange on the transport layer and indicate that the UICC has data to return where XX indicates the amount of bytes that are availble
|
||||
% - other responses indicate errors during the command processing or execution (cite eftlabs list of apdu responses)
|
||||
|
||||
In smart card communication, it is essential to distinguish between the application-layer protocol and the transport-layer protocol. At the application layer, the data units are referred to as \glspl{apdu}, while at the transport layer, they are termed \glspl{tpdu}. According to \gls{etsi} specifications, outgoing commands from the terminal to the \gls{uicc} are defined as \glspl{capdu}, and the responses from the UICC are defined as \glspl{rapdu}~\cite{etsi-ts-102-221}. On the transport layer, these correspond to \gls{ctpdu} and \gls{rtpdu}, respectively.
|
||||
|
||||
A C-APDU consists of mandatory header fields and optional data and length fields. An R-APDU typically includes the response data followed by a two-byte status word (\texttt{SW1} and \texttt{SW2}), which indicates the result of the command execution.
|
||||
|
||||
\begin{table}[h]
|
||||
\centering
|
||||
\caption{Structure of a \gls{capdu}}
|
||||
\begin{tabular}{|l|l|l|}
|
||||
\hline
|
||||
\textbf{Field name} & \textbf{Length} & \textbf{Description} \\
|
||||
\hline \hline
|
||||
$CLA$ & 1 & Instruction Class \\
|
||||
$INS$ & 1 & Instruction Code \ie "SELECT" \\
|
||||
$P1$ & 1 & Parameter 1 \\
|
||||
$P2$ & 1 & Parameter 2 \\
|
||||
$L_c$ & 0, 1 & Encodes length ($N_c$) of command data \\
|
||||
$Data$ & $N_c$ & Command data \\
|
||||
$L_e$ & 0, 1 & Encodes length ($N_e$) of expected response data \\
|
||||
\hline
|
||||
\end{tabular}
|
||||
\end{table}
|
||||
|
||||
\begin{table}[h]
|
||||
\centering
|
||||
\caption{Structure of a \gls{rapdu}}
|
||||
\begin{tabular}{|l|l|l|}
|
||||
\hline
|
||||
\textbf{Field name} & \textbf{Length} & \textbf{Description} \\
|
||||
\hline \hline
|
||||
$Data$ & at most $N_e$ & Response Data \\
|
||||
$SW1$ & 1 & Status Word 1 \\
|
||||
$SW2$ & 1 & Status Word 1 \\
|
||||
\hline
|
||||
\end{tabular}
|
||||
\end{table}
|
||||
|
||||
The status word (SW) in an \gls{rapdu} signifies whether a command was successfully processed or if an error occurred. The value \texttt{9000} is used to indicate successful execution. Other status words serve specific purposes. For instance, \texttt{61XX} or \texttt{6CXX} indicate that additional data is available, where \texttt{XX} specifies the number of bytes remaining. These codes are particularly relevant for controlling \gls{apdu} exchanges at the transport layer. Other status word values denote different error conditions related to command structure, logical access violations, or execution faults~\cite{eftlabs-apdu-status}.
|
||||
|
||||
|
||||
|
||||
\paragraph{Data Encoding}
|
||||
% - when requesting data or storing data on the UICC the command data uses ASN.1 with BER-TLV encoding
|
||||
% - ASN.1 is a language that describes the sequence, the data and the encoding of the data that is used in a communication protocol (cite oss_nokalva)
|
||||
% - it is a mature and widly spread technology especially in the telecommunications field
|
||||
% - asn1 supports multiple different encoding rules among which is also the BER encoding
|
||||
% - it uses a TLV for the encoding of all its information -> tag indicates what kind of data follows, then length to tell the parser how much that to read for this tag, and then the actual data (provide example for BER-TLV ASN1 encoding of some short RSP message)
|
||||
% - the GSMA provides ASN.1 definitions for all of its standardized functions
|
||||
|
||||
\paragraph{Data Encoding}
|
||||
|
||||
When interacting with a \gls{uicc}, either to request or to store data, the command payload is typically structured using \gls{asn1} encoded in the \gls{ber}-\gls{tlv} format. \gls{asn1} is a formal language used to define data structures in a way that is independent of machine-specific encoding. It is a mature and widely adopted technology, particularly within the field of telecommunications, and is standardized by the ITU-T~\cite{oss-asn1}.
|
||||
|
||||
\gls{asn1} supports a variety of encoding rules. One of the most commonly used in the context of smart cards and mobile communications is the \gls{ber}. In \gls{ber}, all data is encoded as a sequence of \gls{tlv} elements. The \emph{Tag} identifies the type of data, the \emph{Length} specifies the number of bytes used for the value, and the \emph{Value} contains the actual data payload.
|
||||
|
||||
For example, consider the following simplified \texttt{STORE DATA} command that encodes an \texttt{EnableProfileRequest} as defined in the GSMA's \texttt{SGP.22} specification. The request uses the \gls{iccid} variant of the \texttt{profileIdentifier} field:
|
||||
|
||||
\begin{verbatim}
|
||||
BF31 10
|
||||
-- [49] SEQUENCE (EnableProfileRequest)
|
||||
5A 0A 89 10 20 30 40 50 60 70 80 90
|
||||
-- ICCID (tag 5A, 10 bytes)
|
||||
01 01 FF
|
||||
-- refreshFlag = TRUE (tag 01, length 1, value FF)
|
||||
\end{verbatim}
|
||||
|
||||
In this example:
|
||||
\begin{itemize}
|
||||
\item \texttt{BF31} is the context-specific tag for \texttt{EnableProfileRequest} (constructed, tag number 49).
|
||||
\item \texttt{5A} represents the \gls{iccid} field as defined in the \gls{gsma} \gls{asn1} specification.
|
||||
\item The ten-byte \gls{iccid} value shown here (\texttt{89 10 20 30 40 50 60 70 80 90}) is an example placeholder.
|
||||
\item The boolean \texttt{refreshFlag} is encoded using tag \texttt{01} and value \texttt{FF}, which represents \texttt{TRUE} in \gls{asn1}.
|
||||
\end{itemize}
|
||||
|
||||
The \gls{gsma} provides \gls{asn1} definitions for all standardized \gls{rsp} functions, including profile management procedures such as enabling or disabling profiles. These encoded messages are typically wrapped in a \texttt{STORE DATA} \gls{apdu} (instruction byte \texttt{E2}) and sent to the \gls{euicc} for execution.
|
||||
|
||||
|
||||
|
||||
\paragraph{File Structure}
|
||||
|
||||
% - the file structure on an UICC is organized as an forest of trees (cite TS 102 221
|
||||
% - Dedicated files (DF) allows for functional grouping of files
|
||||
% - Applicataion DF: special DF that contains all EFs and DFs of an application
|
||||
% - Elementary files (EF) are childs of DF, differntiate between transparent EF, lienar fixed EF, cyclic EF
|
||||
% - Files are identified with their unique File Identifier (FID), Applications with their unique Application Identifier (AID)
|
||||
% - path represents a concatenation of FIDs, starts with MF or DF, FID "7fff" represents current ADF
|
||||
% - Master File represents the root object from which all EF, DF and ADF orginate from
|
||||
% - to select an file or application: SELECT command with FID/AID, path or short FID
|
||||
% - selcting files is stateful i.e to select subsequent files, first select the parent file or application to access files in that application
|
||||
% - Proposed AIDs by the GSMA/GP for Applications: ISD-R ("A0000005591010FFFFFFFF8900000100"), ARA-M ("'A00000015141434C00'")
|
||||
% - actual AID is up to the manufcacturer, especially ISD-R AID is often changed as explained in section (ref section here)
|
||||
|
||||
The file system of a \gls{uicc} is organized as a hierarchical forest of trees, as specified in \cite{etsi102221}. At the top of the hierarchy resides the \gls{mf} (Master File), from which all other files—\glspl{df}, \glspl{ef}, and \glspl{adf}—originate.
|
||||
|
||||
\glspl{df} serve as containers that enable functional grouping of files. A special class of DF, called \glspl{adf}, encapsulates all files (EFs and optionally DFs) related to a specific application. Within these structures, \glspl{ef} act as leaf nodes and contain the actual data. There are three types of EFs: transparent EFs (byte-oriented, raw data), linear fixed EFs (record-based, fixed-length records), and cyclic EFs (circular buffers).
|
||||
|
||||
Each file is uniquely identified by a \gls{fid}, while applications are identified by their \gls{aid}. File paths are defined as a sequence of FIDs, typically starting from the MF or an ADF. The reserved FID \texttt{7FFF} refers to the currently selected ADF.
|
||||
|
||||
To access files, the \texttt{SELECT} command is used. This command supports various addressing modes: by FID, AID, complete path, or short FID. Importantly, file selection is stateful—meaning that parent files or applications must be selected before accessing child files.
|
||||
|
||||
Common AIDs proposed by the \gls{gsma} and \gls{gp} include the \gls{isdr} application (\texttt{A0000005591010FFFFFFFF8900000100}) and the \gls{aram} application (\texttt{A00000015141434C00}). However, the actual AIDs used are implementation-specific and may be customized by the manufacturer. The \gls{isdr} AID in particular is often modified, as discussed in Section~\ref{sec:isd-r-aid}.
|
||||
|
||||
\section{Embedded SIM}
|
||||
\label{sec:esim}
|
||||
|
||||
% - based on eUICC
|
||||
% - before: subscriber identity was bound to physical smart card (integrated during manufacturing) -> eSIM: decouples identiy from SIM -> virtualized and de-coupled from
|
||||
% - USIM, ISIM, other Applications, and associated file system data is now an eSIM profile, underlying chip is eUICC
|
||||
% - profiles can be issued remotly (sm-ds) or can be triggered by an user via the lpa (sm-dp+)
|
||||
|
||||
The concept of the \gls{esim} is based on the \gls{euicc}, which replaces the traditional removable SIM card form factor with a soldered chip that remains permanently embedded within the device.
|
||||
|
||||
Historically, the subscriber identity and related credentials were bound to a physical \gls{uicc} during the manufacturing process. This physical coupling meant that changing network operators or updating credentials required the replacement of the \gls{sim} card itself. The \gls{esim} paradigm disrupts this model by decoupling the subscription identity from the physical card. Instead, subscriber credentials, including applications such as \gls{usim}, \gls{isim}, and their associated file systems, are now encapsulated within a virtual entity referred to as an \textit{eSIM profile}.
|
||||
|
||||
These profiles reside on the underlying \gls{euicc} hardware and can be provisioned, activated, and managed remotely. Profile management is facilitated through standardized components defined by the \gls{gsma}—most notably the \gls{smdpp} and \gls{smds} servers. Profiles can either be delivered in a passive manner through the \gls{smdpp} when triggered by the end user, often via the \gls{lpa}, or actively pushed to the device through the \gls{smds}.
|
||||
|
||||
This architecture introduces a secure, remote provisioning mechanism and significantly enhances user flexibility, while simultaneously introducing new complexity in terms of protocol design, security guarantees, and implementation correctness.
|
||||
|
||||
|
||||
\paragraph{eUICC Components}
|
||||
|
||||
% - to manage and issue newe eSIM profiles the eUICC needs some relevant Applications
|
||||
% - ISD-R, ISD-P, ECASD, (LPAe), ARA-M, LPA Services
|
||||
% - ECASD: secure storage of credentials relevant for the eUICC, i.e. eUICC privat keys and certificat, eSIM CI, EUM Certificat, Manufacturer key set for key/certificat renewal
|
||||
% - ECASD: signatur creation on data provided by the ISD-R, verification of certificates i.e SM-DP+ server certs
|
||||
% - ISD-R: responsible for creation of new ISD-Ps as well as lifecycle management i.e enable, disable and deletion of ISD-Ps
|
||||
% - only one of ECASD and ISD-R can be present on one eUICC
|
||||
% - ISD-P hosts one unique profile, used for profile download and installation, the ISD-P itself can also host applets
|
||||
% - ARA-M: defined by GlobalPlatform, Access Rules that are defined by the Secure Element Issuer i.e Manufacturer are availble via the Access Rule Application Master, Access Rules can be stored in multiple locations on the Secure Element -> ARA-M sources them and provides them
|
||||
|
||||
To manage, store, and control \gls{esim} profiles, the \gls{euicc} hosts several critical applications and system components. These include the \gls{isdr}, \gls{isdp}, \gls{ecasd}, optionally the embedded \gls{lpa}, \gls{aram}, and various \gls{lpa} service interfaces.
|
||||
|
||||
The \gls{ecasd} provides secure storage and cryptographic services. It maintains sensitive credentials such as the \gls{euicc} private key and certificate, the eUICC Identifier (\texttt{EID}), the \gls{euicc} Manufacturer (\gls{eum}) certificate, and the manufacturer key set used for credential updates. It is also responsible for generating digital signatures on data received from the \gls{isdr} and for verifying certificates during the authentication of the \gls{smdpp} or other remote entities.
|
||||
|
||||
The \gls{isdr} acts as the primary control authority on the \gls{euicc}. It manages the creation, activation, deactivation, and deletion of \glspl{isdp}. Only one of either \gls{isdr} or \gls{ecasd} can be present on a single \gls{euicc}, depending on the \gls{euicc}'s implementation mode.
|
||||
|
||||
Each \gls{isdp} hosts exactly one \gls{esim} profile and is responsible for profile download and installation. \glspl{isdp} may additionally host applets specific to the mobile network operator or service provider.
|
||||
|
||||
The \gls{aram}, as specified by \gls{gp}, governs access control for applications on the Secure Element. It aggregates access rules from multiple possible sources on the Secure Element and provides them in a standardized form. These rules are defined by the Secure Element issuer—typically the device manufacturer—and can restrict which device-side applications are permitted to communicate with the \gls{euicc} and its applets.
|
||||
|
||||
Together, these components establish the trust and management architecture necessary for secure and scalable remote SIM provisioning.
|
||||
|
||||
\section{eSIM on SIM}
|
||||
|
||||
\section{Remote SIM Provisioning}
|
||||
|
||||
\paragraph{Local Profile Assistant}
|
||||
|
||||
\paragraph{SM-DP+}
|
||||
8
Chapters/Conclusions.tex
Normal file
8
Chapters/Conclusions.tex
Normal file
@@ -0,0 +1,8 @@
|
||||
% !TeX root = ../Thesis.tex
|
||||
|
||||
%************************************************
|
||||
\chapter{Conclusions}\label{ch:conclusions}
|
||||
%************************************************
|
||||
\glsresetall % Resets all acronyms to not used
|
||||
|
||||
\lipsum[7]
|
||||
8
Chapters/Discussion.tex
Normal file
8
Chapters/Discussion.tex
Normal file
@@ -0,0 +1,8 @@
|
||||
% !TeX root = ../Thesis.tex
|
||||
|
||||
%************************************************
|
||||
\chapter{Discussion}\label{ch:discussion} % $\mathbb{ZNR}$
|
||||
%************************************************
|
||||
\glsresetall % Resets all acronyms to not used
|
||||
|
||||
\lipsum[6]
|
||||
13
Chapters/Evaluation.tex
Normal file
13
Chapters/Evaluation.tex
Normal file
@@ -0,0 +1,13 @@
|
||||
% !TeX root = ../Thesis.tex
|
||||
|
||||
%************************************************
|
||||
\chapter{Evaluation}\label{ch:evaluation}
|
||||
%************************************************
|
||||
\glsresetall % Resets all acronyms to not used
|
||||
|
||||
\section{Design}
|
||||
|
||||
\section{Findings}
|
||||
|
||||
\section{estk Firmware Update Application}
|
||||
\lipsum[5]
|
||||
20
Chapters/Implementation.tex
Normal file
20
Chapters/Implementation.tex
Normal file
@@ -0,0 +1,20 @@
|
||||
% !TeX root = ../Thesis.tex
|
||||
|
||||
%************************************************
|
||||
\chapter{Implementation}\label{ch:implementation}
|
||||
%************************************************
|
||||
\glsresetall % Resets all acronyms to not used
|
||||
|
||||
\section{Tracing}
|
||||
|
||||
\section{LPA}
|
||||
|
||||
\section{Fuzzing}
|
||||
|
||||
\subsection{Data Fuzzing}
|
||||
|
||||
\subsection{APDU Fuzzing}
|
||||
|
||||
\section{CLI}
|
||||
|
||||
\lipsum[4]
|
||||
14
Chapters/Introduction.tex
Normal file
14
Chapters/Introduction.tex
Normal file
@@ -0,0 +1,14 @@
|
||||
% !TeX root = ../Thesis.tex
|
||||
|
||||
%************************************************
|
||||
\chapter{Introduction}\label{ch:introduction}
|
||||
%************************************************
|
||||
\glsresetall % Resets all acronyms to not used
|
||||
|
||||
\section{Motivation}
|
||||
|
||||
\section{Contribution}
|
||||
|
||||
\section{Outline}
|
||||
|
||||
\lipsum[3]
|
||||
126
Chapters/RelatedWork.tex
Normal file
126
Chapters/RelatedWork.tex
Normal file
@@ -0,0 +1,126 @@
|
||||
% !TeX root = ../Thesis.tex
|
||||
|
||||
%*****************************************
|
||||
\chapter{Related Work}\label{ch:relatedwork}
|
||||
%*****************************************
|
||||
\glsresetall % Resets all acronyms to not used
|
||||
|
||||
The ecosystem surrounding \gls{esim} and \gls{euicc} technology is supported by a combination of practical implementations and academic research. As this thesis focuses on differential testing of consumer \gls{esim} cards, it is essential to examine both established software tools that enable interaction with such cards and the existing academic efforts that analyze their security, functionality, and protocol correctness.
|
||||
|
||||
\section{Software Implementations}
|
||||
|
||||
\paragraph{pySim}
|
||||
|
||||
% - python tool for interacting with SIM cards and their derivitives
|
||||
% - developed and maintained by osmocom -> engineer and implement tools all around SIMs i.e simtrace2 which we are also using for the tracing
|
||||
% - provides 5 scripts: shell, read, prog, trace, smdpp
|
||||
% - shell: main part -> provides shell like interface to move around the cards file structure and also execute application specific commands
|
||||
% - similar to shell (legacy version of shell basically): supports a small subset of the commands
|
||||
% - utility to read most used fields of an SIM card
|
||||
% - trace: tracing utility and decoder for SIM card related protocols -> interacts with the simtrace2 to sniff packages between the user device and the card
|
||||
% - smdpp: poc implementation of the SGP.22 smdp+ server
|
||||
% - pysim is a rather complex tool to work with outside of the provided scripts when it comes to scripting -> needs lots of code to archieve little functionality, does not provide a clean programming interface to be used as a library
|
||||
% - does not implement the SGP.22 communication with the card itself only the server side code
|
||||
% - tracing can only be used to record traces
|
||||
|
||||
\texttt{pySim}~\cite{welte_pysim_2024} is a Python-based toolset designed for interacting with \gls{sim} cards and their derivatives. It is developed and actively maintained by the Osmocom project, a community of engineers focused on open-source mobile communication tools. Osmocom is also responsible for related utilities such as \texttt{simtrace2}, a hardware and software solution for tracing \gls{sim} card communication, which is utilized in this thesis for trace collection.
|
||||
|
||||
The \texttt{pySim} suite comprises five primary scripts: \texttt{pySim-shell}, \texttt{pySim-read}, \texttt{pySim-prog}, \texttt{pySim-trace}, and \texttt{pySim-smdpp}. Among these, \texttt{pySim-shell} is the core component, offering an interactive shell interface to navigate the \gls{sim} card file system and issue application-specific commands. It supersedes the legacy \texttt{pySim-read} script, which only supports a limited subset of shell commands and is primarily used to extract commonly accessed data fields from \gls{sim} cards.
|
||||
|
||||
The \texttt{pySim-trace} script provides a tracing utility and protocol decoder for SIM card-related communication. It integrates with \texttt{simtrace2} to intercept and decode communication between a user device and the \gls{sim} card. This functionality is limited to passive recording; it does not support active injection or modification of messages.
|
||||
|
||||
The \texttt{pySim-smdpp} script serves as a proof-of-concept implementation of the SGP.22 \gls{smdpp} server component. Notably, \texttt{pySim} does not implement the full SGP.22 protocol stack on the client side (i.e., communication between the \gls{euicc} and the \gls{smdpp} server); its SGP.22 functionality is restricted to the server role only.
|
||||
|
||||
While \texttt{pySim} provides useful standalone utilities, its usability as a general-purpose library is limited. The internal architecture is not optimized for external scripting, requiring substantial effort to perform even basic tasks programmatically. As such, \texttt{pySim} is best suited for interactive use via its provided command-line tools rather than as a cleanly structured library for automation or integration.
|
||||
|
||||
|
||||
\paragraph{SIMtrace2}
|
||||
|
||||
% - system consisting of software, firmware and hardware
|
||||
% - main purpose: used for tracing the communication between the SIM card and some user equipment i.e phone
|
||||
% - multiple different firmware version for different funcionality: trace, emulate
|
||||
% - trace allows for sniffing the communication, supports t=0 protocol and operates completly passiv
|
||||
% - sends sniffed apdus as udp packages to a socket from which it can be read with tools like wireshark or pySim-trace
|
||||
% - osmocom also offers wireshark disector, which makes it easier and better to read
|
||||
% - emulation offers card emulation for SIM cards, most commonly used for when the SIM card isn't in the device but rather some remote location or a smart card reader
|
||||
% - also used by Simurai for malicous card emulation
|
||||
|
||||
\texttt{SIMtrace2} is a system developed by the osmocom~\cite{osmocom_simtrace_nodate} project that combines hardware, firmware, and software components to enable the monitoring and emulation of communication between a \gls{sim} card and \gls{ue}, such as a mobile phone~\cite{osmocom_simtrace_nodate}.
|
||||
|
||||
The primary use case of \texttt{SIMtrace2} is passive tracing of the communication between a \gls{sim} card and its host device. For this purpose, it supports multiple firmware variants, the most relevant being the \texttt{trace} and \texttt{emulate} firmware. The \texttt{trace} firmware allows passive sniffing of \gls{apdu}-level communication, operating without interfering with the ongoing exchange. It supports the \gls{t0} protocol and transmits the captured data as \gls{udp} packets to a specified socket. These packets can be analyzed using tools such as \texttt{Wireshark}—for which Osmocom provides a dedicated dissector~\cite{welte_wireshark_nodate}—or through \texttt{pySim-trace}~\cite{welte_pysim_2024}.
|
||||
|
||||
The \texttt{emulate} firmware, on the other hand, provides \gls{sim} card emulation capabilities. This mode is used to simulate a \gls{sim} card that is not physically present in the device, such as in scenarios involving remote \gls{sim} access or when using a smart card reader. Notably, this emulation capability has also been employed by projects such as \textit{Simurai} for malicious card emulation and fuzzing purposes~\cite{lisowski_simurai_2024}.
|
||||
|
||||
Overall, \texttt{SIMtrace2} is a versatile tool both for passive analysis and active emulation of \gls{sim} card communication, making it valuable for research, debugging, and security analysis in the domain of mobile telecommunication.
|
||||
|
||||
|
||||
|
||||
\paragraph{lpac}
|
||||
|
||||
% - lpa implementation of the SGP.22 v2.2.2 in c from the estkme group
|
||||
% - full compatiability i.e. profile provisioning, profile interaction, and notification handling
|
||||
% - handles communication with card and smdp+ sever
|
||||
% - is used by many lpa implementations across platforms via wrappers, used by EasyEuicc, OpenEuicc, MiniLPA, and several others
|
||||
% - provides a cli to interact with
|
||||
% - only supports SGP.22 v2.2.2 -> newest version is v3.1 with several new additions for IoT eSIMs and also more information are returned in already existing functions
|
||||
% - established software, usablity as library improved by wrappers, doesn't offer flexibility for extending functionality -> asn decoding/encoding happens manually, no library used
|
||||
|
||||
\texttt{lpac} is a C-based implementation of the \gls{lpa} defined in the \gls{sgp22}, version 2.2.2, developed by the \texttt{estk.me} group~\cite{estkme_lpac_2025}. It provides full support for the required \gls{lpa} functionality, including profile provisioning, profile interaction, and notification handling. The implementation manages both the communication with the \gls{euicc} and the \gls{smdpp} server, thereby serving as a complete \gls{lpa} stack.
|
||||
|
||||
Due to its C-language base, \texttt{lpac} is widely adopted across various platforms through language-specific wrappers. It forms the core of several \gls{lpa} implementations, including \texttt{EasyEuicc}, \texttt{OpenEuicc}, \texttt{MiniLPA}, and others~\cite{icedtangerine_easylpac_2025, petercxy_openeuicc_nodate, esimmoe_minilpa_nodate}. It also exposes a command-line interface, allowing users to interact with the \gls{lpa} directly for debugging or automation purposes.
|
||||
|
||||
However, \texttt{lpac} only supports \gls{sgp22} version 2.2.2, whereas the most recent version (3.1) introduces several enhancements, especially targeted at \gls{iot} \gls{esim} use cases, including additional return values and extended feature support. Furthermore, while the software is considered mature and widely usable, its extensibility remains limited. Key components such as \gls{asn1} decoding and encoding are implemented manually without leveraging standardized libraries.
|
||||
|
||||
\paragraph{SIMTester}
|
||||
|
||||
|
||||
% SIMTester
|
||||
% - java application that provides different tools to check if a specified SIM card is vulnerable against known vulnerabilities
|
||||
% - finds unprotected applications and uses cryptographic signatures and encryptions of plain text
|
||||
% - has own fuzzer implementation: fuzzer checks a combination of applicaation identifiers and
|
||||
% - only checks for SIM specific vulnerabilities -> not against eSIM specific applications etc i.e profile switching and provisioning
|
||||
|
||||
\texttt{SIMTester} is a Java-based application designed to evaluate the security posture of \gls{sim} cards by testing for a variety of known vulnerabilities~\cite{security_research_labs_simtester_2025}. It provides a suite of analysis tools that inspect the card for unprotected applications and analyze the use of cryptographic signatures and encryption mechanisms applied to plaintext communication.
|
||||
|
||||
One of the core components of \texttt{SIMTester} is its integrated fuzzing module. This module systematically tests combinations of \gls{aid} and command structures to detect insecure or unexpected behavior in \gls{sim} applications. This approach enables the detection of vulnerabilities such as unauthorized access to file structures or insecure command handling.
|
||||
|
||||
However, the scope of \texttt{SIMTester} is explicitly limited to physical \gls{sim} cards. It does not support or test \gls{esim}-specific features or functionalities, such as profile provisioning, profile switching, or remote \gls{sim} management as defined in the \gls{sgp22} specification. As such, while useful for legacy systems and certain classes of attacks, its applicability in the context of modern \gls{esim} testing is limited.
|
||||
|
||||
|
||||
\section{Literature}
|
||||
|
||||
% SIMURAI
|
||||
% - focuses on the possiblility of compromised / attacker controlled SIM cards
|
||||
% - implemented a SIM card emulation framework consisting of: swSIM -> open source SIM and swICC -> smart Card framework
|
||||
% - Research goal: find out if malicious SIM cards are a credible attack vector
|
||||
% - they demonstrate their framwork by emulating SIM cards to enable fuzzing against user equipment
|
||||
% - propose 2 different attack scenarios: Rouge Carrier and interposer with physical access
|
||||
% - they evalute each attack scenario and propose possible mitigations
|
||||
% - used their implementation to discover multiple high value memory corruption vulnerabilities inside the
|
||||
% - exploit those vulns by implementing spyware (similar to SIMjacker) that is remotly patched onto the SIM and sends information to the attacker
|
||||
% - show that hostile SIMs can be used to exploit vulnerabilites and urge that hostile SIMs should be considered as serious attack vectors
|
||||
|
||||
% Security Analysis of the Consumer Remote SIM Provisioning Protocol
|
||||
% - implement a formal modal of RSP in ProVerfiy to remotly provision SIM profiles
|
||||
% - found different failure modes, however most of them assume a rather strong attacker -> e.g. TLS private key compromise, etc
|
||||
% - most practical one: no method to verify user intend -> attacker can order/request profile for victim euicc from sm-dp+ -> victim may be able to download attacker ordered profile
|
||||
|
||||
% Transparency of SIM profiles for the consumer remote SIM provisioning protocol
|
||||
% - says that the entire security of the RSP relies on the PKI in which the GSMA signs domains of sm-dp+ server
|
||||
% - argues that RSP could be compromised if only a single sm-dp+ server is breached -> attacker could clone profiles
|
||||
% - propose SPTS (SIM profile transparency protocol) protocol that gives more transparency to the RSP profile provisioning process
|
||||
% - introduces two new actors to the protol which serve as a private index for IMSIs and a transperncy ledger which protocols each action in the RSP protocol for transparency
|
||||
% - using formal security analysis of their protocol with ProVerif and develope a prototype that uses the SPTS
|
||||
|
||||
\texttt{Simurai} is a research framework that investigates the potential threat of compromised or attacker-controlled \gls{sim} cards~\cite{lisowski_simurai_2024}. The authors introduce a \gls{sim} card emulation system comprising two core components: \texttt{swSIM}, an open-source \gls{sim} card emulator, and \texttt{swICC}, a smart card framework. Their primary goal is to evaluate whether malicious \gls{sim} cards represent a credible attack vector against user equipment.
|
||||
|
||||
To support this, they demonstrate how their framework enables fuzz testing by emulating arbitrary \gls{sim} card behaviors. The study proposes two concrete attack scenarios: (1) a rogue carrier scenario, in which a malicious network operator issues hostile \gls{sim} cards, and (2) a physical card interposer attack, where an attacker inserts a interposer between the legitimate \gls{sim} and the phone. For both scenarios, the researchers conduct evaluations and suggest potential mitigations.
|
||||
|
||||
Using their emulation framework, the authors discovered multiple high-impact memory corruption vulnerabilities in baseband implementations. These were exploited via spyware-like payloads reminiscent of the \textit{SIMjacker} attack, remotely installed onto the \gls{sim} card. This spyware exfiltrates information to the attacker without requiring user interaction. Their findings underscore the seriousness of hostile SIMs as an attack vector and argue that such threat models should be incorporated into mobile security considerations.
|
||||
|
||||
\textcite{ahmed_security_2024} present a formal model of the \gls{rsp} protocol based on the \gls{sgp22} specification. The model is developed using \texttt{ProVerif} to verify the security properties of remote profile provisioning. Although many of the identified failure modes require strong attacker capabilities—such as compromise of \gls{tls} private keys—the study highlights a particularly practical issue: the absence of a robust mechanism to verify user intent. An attacker could initiate a profile download to a victim's \gls{euicc} without user consent, provided they have access to the device or provisioning channel, resulting in unauthorized profile installation.
|
||||
|
||||
\textcite{ahmed_transparency_2021} critiques the centralized trust model underlying the \gls{rsp} ecosystem. The study emphasizes that the entire trust infrastructure hinges on the \gls{pki} used by the \gls{gsma} to certify \gls{smdpp} domains. A breach of any single \gls{smdpp} server could allow an attacker to issue cloned or rogue profiles. To address this, the authors propose the \gls{sptp}, a protocol designed to enhance transparency and trust in the provisioning process.
|
||||
|
||||
\gls{sptp} introduces two new entities: a private index service for managing \glspl{imsi}, and a transparency ledger that logs profile provisioning actions. Formal security analysis of the \gls{sptp} protocol using \texttt{ProVerif}, alongside a functional prototype, demonstrates that such an approach can mitigate the identified risks without significant architectural changes to the existing infrastructure.
|
||||
|
||||
199
ClassicThesisConfig.tex
Normal file
199
ClassicThesisConfig.tex
Normal file
@@ -0,0 +1,199 @@
|
||||
% !TeX root = ./Thesis.tex
|
||||
|
||||
% ****************************************************************************************************
|
||||
% ClassicThesisConfig.tex
|
||||
% formerly known as loadpackages.sty, classicthesis-ldpkg.sty, and classicthesis-preamble.sty
|
||||
% Use it at the beginning of your ClassicThesis.tex, or as a LaTeX Preamble
|
||||
% in your ClassicThesis.{tex,lyx} with \input{ClassicThesisConfig}
|
||||
% ****************************************************************************************************
|
||||
% If you like the classicthesis, then I would appreciate a postcard.
|
||||
% My address can be found in the file ClassicThesis.pdf. A collection
|
||||
% of the postcards I received so far is available online at
|
||||
% http://postcards.miede.de
|
||||
% ****************************************************************************************************
|
||||
|
||||
|
||||
% ****************************************************************************************************
|
||||
% 0. Set the encoding of your files. UTF-8 is the only sensible encoding nowadays. If you can't read
|
||||
% äöüßáéçèê∂åëæƒÏ€ then change the encoding setting in your editor, not the line below. If your editor
|
||||
% does not support utf8 use another editor!
|
||||
% ****************************************************************************************************
|
||||
\PassOptionsToPackage{utf8}{inputenc}
|
||||
\usepackage{inputenc}
|
||||
|
||||
\PassOptionsToPackage{T1}{fontenc} % T2A for cyrillics
|
||||
\usepackage{fontenc}
|
||||
|
||||
|
||||
% ****************************************************************************************************
|
||||
% 1. Configure classicthesis for your needs here, e.g., remove "drafting" below
|
||||
% in order to deactivate the time-stamp on the pages
|
||||
% (see ClassicThesis.pdf for more information):
|
||||
% ****************************************************************************************************
|
||||
\PassOptionsToPackage{
|
||||
drafting=false, % print version information on the bottom of the pages
|
||||
tocaligned=false, % the left column of the toc will be aligned (no indentation)
|
||||
dottedtoc=true, % page numbers in ToC flushed right
|
||||
eulerchapternumbers=true, % use AMS Euler for chapter font (otherwise Palatino)
|
||||
linedheaders=false, % chaper headers will have line above and beneath
|
||||
floatperchapter=false, % numbering per chapter for all floats (i.e., Figure 1.1)
|
||||
eulermath=true, % use awesome Euler fonts for mathematical formulae (only with pdfLaTeX)
|
||||
beramono=true, % toggle a nice monospaced font (w/ bold)
|
||||
palatino=true, % deactivate standard font for loading another one, see the last section at the end of this file for suggestions
|
||||
style=classicthesis % classicthesis, arsclassica
|
||||
}{classicthesis}
|
||||
|
||||
|
||||
% ********************************************************************
|
||||
% Setup, finetuning, and useful commands
|
||||
% ********************************************************************
|
||||
\providecommand{\mLyX}{L\kern-.1667em\lower.25em\hbox{Y}\kern-.125emX\@}
|
||||
% ****************************************************************************************************
|
||||
|
||||
|
||||
% ****************************************************************************************************
|
||||
% 3. Loading some handy packages
|
||||
% Some of these might require adjustments
|
||||
% ****************************************************************************************************
|
||||
\PassOptionsToPackage{ngerman,american}{babel} % change this to your language(s), main language last
|
||||
% Spanish languages need extra options in order to work with this template
|
||||
%\PassOptionsToPackage{spanish,es-lcroman}{babel}
|
||||
\usepackage{babel}
|
||||
|
||||
\PassOptionsToPackage{autostyle=true}{csquotes}
|
||||
\usepackage{csquotes}
|
||||
\PassOptionsToPackage{%
|
||||
backend=biber,bibencoding=utf8, % instead of bibtex
|
||||
sorting=nyt, % name, year, title
|
||||
maxbibnames=10, % default: 3, et al.
|
||||
defernumbers=true, % enable so split references (author's publications) have continuous numbers
|
||||
natbib=true, % natbib compatibility mode (\citep and \citet still work)
|
||||
language=auto,
|
||||
style=numeric-comp
|
||||
}{biblatex}
|
||||
\usepackage{biblatex}
|
||||
|
||||
\PassOptionsToPackage{fleqn}{amsmath} % math environments and more by the AMS
|
||||
\usepackage{amsmath}
|
||||
|
||||
% ********************************************************************
|
||||
% Generally useful packages
|
||||
% ********************************************************************
|
||||
\usepackage{graphicx}
|
||||
\usepackage{scrhack} % fix warnings when using KOMA with listings package
|
||||
\usepackage{xspace} % to get the spacing after macros right
|
||||
\PassOptionsToPackage{style=long,nopostdot,acronym,shortcuts,nonumberlist,nolist}{glossaries}
|
||||
\usepackage{glossaries}
|
||||
\makeglossaries
|
||||
|
||||
|
||||
% ****************************************************************************************************
|
||||
% 4. Setup floats: tables, (sub)figures, and captions
|
||||
% ****************************************************************************************************
|
||||
\usepackage{tabularx} % better tables
|
||||
\setlength{\extrarowheight}{3pt} % increase table row height
|
||||
\newcommand{\tableheadline}[1]{\multicolumn{1}{@{}l@{}}{\spacedlowsmallcaps{#1}}}
|
||||
\newcommand{\myfloatalign}{\centering} % to be used with each float for alignment
|
||||
\usepackage{subcaption}
|
||||
\usepackage{caption}
|
||||
% ****************************************************************************************************
|
||||
|
||||
|
||||
% ****************************************************************************************************
|
||||
% 5. Setup code listings
|
||||
% ****************************************************************************************************
|
||||
\usepackage{listings}
|
||||
\lstset{
|
||||
% color scheme follows template
|
||||
commentstyle=\color{CTsemi},
|
||||
keywordstyle={\color{CTtitle}},
|
||||
stringstyle=\color{CTcitation},
|
||||
basicstyle=\ttfamily\lst@ifdisplaystyle\small\fi, % use normal font size in \lstinline
|
||||
emphstyle={\color{CTlink}},
|
||||
tabsize=2,
|
||||
showstringspaces=false,
|
||||
captionpos=b, % caption below listing
|
||||
breaklines=true,
|
||||
frame=tb,
|
||||
numberstyle=\scriptsize,
|
||||
numbers=left,
|
||||
stepnumber=1,
|
||||
numbersep=8pt,
|
||||
}
|
||||
% ****************************************************************************************************
|
||||
|
||||
|
||||
|
||||
|
||||
% ****************************************************************************************************
|
||||
% 6. Last calls before the bar closes
|
||||
% Her Majesty herself
|
||||
% ********************************************************************
|
||||
\usepackage{classicthesis}
|
||||
|
||||
|
||||
% ********************************************************************
|
||||
% Fine-tune hyperreferences (hyperref should be called last)
|
||||
% ********************************************************************
|
||||
\hypersetup{%
|
||||
% -- TemplateKnob
|
||||
%draft, % hyperref's draft mode. For printing, uncomment the next line (to have black links)
|
||||
%colorlinks=false, linktocpage=false, pdfstartpage=3, pdfstartview=FitV, pdfborder={0 0 0},%
|
||||
colorlinks=true,
|
||||
linktocpage=true,
|
||||
breaklinks=true,
|
||||
pageanchor=true,
|
||||
plainpages=false,
|
||||
bookmarksnumbered,
|
||||
bookmarksopen=true,
|
||||
bookmarksopenlevel=1,
|
||||
hypertexnames=true,
|
||||
urlcolor=CTurl,
|
||||
linkcolor=CTlink,
|
||||
citecolor=CTcitation,
|
||||
pdftitle={\myTitle{}},
|
||||
pdfauthor={\myName{}},
|
||||
}
|
||||
|
||||
|
||||
% ********************************************************************
|
||||
% Setup autoreferences (hyperref and babel)
|
||||
% ********************************************************************
|
||||
% There are some issues regarding autorefnames
|
||||
% http://www.tex.ac.uk/cgi-bin/texfaq2html?label=latexwords
|
||||
% you have to redefine the macros for the
|
||||
% language you use, e.g., american, ngerman
|
||||
% (as chosen when loading babel/AtBeginDocument)
|
||||
% ********************************************************************
|
||||
\makeatletter
|
||||
\@ifpackageloaded{babel}
|
||||
{
|
||||
\addto\extrasamerican{
|
||||
\renewcommand*{\figureautorefname}{Figure}
|
||||
\renewcommand*{\tableautorefname}{Table}
|
||||
\renewcommand*{\partautorefname}{Part}
|
||||
\renewcommand*{\chapterautorefname}{Chapter}
|
||||
\renewcommand*{\sectionautorefname}{Section}
|
||||
\renewcommand*{\subsectionautorefname}{Section}
|
||||
\renewcommand*{\subsubsectionautorefname}{Section}
|
||||
}
|
||||
\addto\extrasngerman{
|
||||
\renewcommand*{\paragraphautorefname}{Absatz}
|
||||
\renewcommand*{\subparagraphautorefname}{Unterabsatz}
|
||||
\renewcommand*{\footnoteautorefname}{Fu\"snote}
|
||||
\renewcommand*{\FancyVerbLineautorefname}{Zeile}
|
||||
\renewcommand*{\theoremautorefname}{Theorem}
|
||||
\renewcommand*{\appendixautorefname}{Anhang}
|
||||
\renewcommand*{\equationautorefname}{Gleichung}
|
||||
\renewcommand*{\itemautorefname}{Punkt}
|
||||
}
|
||||
% Fix to getting autorefs for subfigures right (thanks to Belinda Vogt for changing the definition)
|
||||
\providecommand{\subfigureautorefname}{\figureautorefname}
|
||||
}{\relax}
|
||||
\makeatother
|
||||
|
||||
|
||||
% ********************************************************************
|
||||
% Development Stuff
|
||||
% ********************************************************************
|
||||
\listfiles
|
||||
32
FrontBackmatter/Abstract.tex
Normal file
32
FrontBackmatter/Abstract.tex
Normal file
@@ -0,0 +1,32 @@
|
||||
% !TeX root = ../Thesis.tex
|
||||
|
||||
%*******************************************************
|
||||
% Abstract
|
||||
%*******************************************************
|
||||
\begingroup
|
||||
\let\clearpage\relax
|
||||
\let\cleardoublepage\relax
|
||||
\let\cleardoublepage\relax
|
||||
|
||||
\chapterExtra{Abstract}
|
||||
Short summary of the contents in English\dots a great guide by
|
||||
Kent Beck how to write good abstracts can be found here:
|
||||
\begin{center}
|
||||
\url{https://plg.uwaterloo.ca/~migod/research/beckOOPSLA.html}
|
||||
\end{center}
|
||||
|
||||
Steve Easterbrook also has a good article on the same topic:
|
||||
\begin{center}
|
||||
\url{https://www.easterbrook.ca/steve/2010/01/how-to-write-a-scientific-abstract-in-six-easy-steps/}
|
||||
\end{center}
|
||||
|
||||
\vfill
|
||||
|
||||
\begin{otherlanguage}{ngerman}
|
||||
\chapterExtra{Zusammenfassung}
|
||||
Kurze Zusammenfassung des Inhaltes in deutscher Sprache\dots
|
||||
\end{otherlanguage}
|
||||
|
||||
\endgroup
|
||||
|
||||
\vfill
|
||||
26
FrontBackmatter/Acknowledgments.tex
Normal file
26
FrontBackmatter/Acknowledgments.tex
Normal file
@@ -0,0 +1,26 @@
|
||||
% !TeX root = ../Thesis.tex
|
||||
|
||||
%*******************************************************
|
||||
% Acknowledgments
|
||||
%*******************************************************
|
||||
\bigskip
|
||||
|
||||
\begingroup
|
||||
\let\clearpage\relax
|
||||
\let\cleardoublepage\relax
|
||||
\let\cleardoublepage\relax
|
||||
|
||||
\chapterExtra{Acknowledgments}
|
||||
{\slshape
|
||||
I would like to express my deepest gratitude to my parents and my family for supporting me in all the years of my studies and also while writing this thesis.
|
||||
|
||||
\bigskip
|
||||
|
||||
Special thanks for giving helpful advice while writing this thesis goes to Prof. Matthias Hollick and Adrian Loch.
|
||||
|
||||
\bigskip
|
||||
|
||||
Furthermore, I especially thank Sandrine Adéla\"ide and Adrian Loch for proofreading my thesis.
|
||||
}
|
||||
|
||||
\endgroup
|
||||
24
FrontBackmatter/Bibliography.tex
Normal file
24
FrontBackmatter/Bibliography.tex
Normal file
@@ -0,0 +1,24 @@
|
||||
% !TeX root = ../Thesis.tex
|
||||
|
||||
%********************************************************************
|
||||
% Bibliography
|
||||
%*******************************************************
|
||||
% work-around to have small caps also here in the headline
|
||||
% https://tex.stackexchange.com/questions/188126/wrong-header-in-bibliography-classicthesis
|
||||
% Thanks to Enrico Gregorio
|
||||
% \defbibheading{bibintoc}[\bibname]{%
|
||||
% \phantomsection
|
||||
% \manualmark
|
||||
% \markboth{\spacedlowsmallcaps{#1}}{\spacedlowsmallcaps{#1}}%
|
||||
% \addtocontents{toc}{\protect\vspace{\beforebibskip}}%
|
||||
% \addcontentsline{toc}{chapter}{\texorpdfstring{\tocEntry{#1}}{#1}}%
|
||||
% \chapter*{#1}%
|
||||
% }
|
||||
\chapterExtra{Bibliography}
|
||||
|
||||
% Declaration on the use of AI tools, as demanded by FB20.
|
||||
% https://www.informatik.tu-darmstadt.de/media/informatik/fb20_studium/infos_dozenten/20240126_KI_Hilfsmittel.de.pdf
|
||||
\emph{This thesis was written independently and was linguistically revised with the help of ChatGPT and LanguageTool.}
|
||||
|
||||
% Bibliography
|
||||
\printbibliography[heading=none]
|
||||
63
FrontBackmatter/Contents.tex
Normal file
63
FrontBackmatter/Contents.tex
Normal file
@@ -0,0 +1,63 @@
|
||||
% !TeX root = ../Thesis.tex
|
||||
|
||||
%*******************************************************
|
||||
% Table of Contents
|
||||
%*******************************************************
|
||||
\pagestyle{scrheadings}
|
||||
|
||||
\pdfbookmark[0]{\contentsname}{tableofcontents}
|
||||
\setcounter{tocdepth}{2} % <-- 2 includes up to subsections in the ToC
|
||||
\setcounter{secnumdepth}{3} % <-- 3 numbers up to subsubsections
|
||||
\manualmark
|
||||
\markboth{\spacedlowsmallcaps{\contentsname}}{\spacedlowsmallcaps{\contentsname}}
|
||||
\tableofcontents
|
||||
\automark[section]{chapter}
|
||||
\renewcommand{\chaptermark}[1]{\markboth{\spacedlowsmallcaps{#1}}{\spacedlowsmallcaps{#1}}}
|
||||
\renewcommand{\sectionmark}[1]{\markright{\textsc{\thesection}\enspace\spacedlowsmallcaps{#1}}}
|
||||
%*******************************************************
|
||||
% List of Figures and of the Tables
|
||||
%*******************************************************
|
||||
\clearpage
|
||||
% -- TemplateKnob
|
||||
% Uncomment this line if your lists should not have any
|
||||
% headlines with section name and page number
|
||||
% \pagestyle{empty}
|
||||
\begingroup
|
||||
\let\clearpage\relax
|
||||
\let\cleardoublepage\relax
|
||||
%*******************************************************
|
||||
% List of Figures
|
||||
%*******************************************************
|
||||
\phantomsection
|
||||
\addcontentsline{toc}{chapter}{\texorpdfstring{\tocEntry{\listfigurename}}{\listfigurename}}
|
||||
\listoffigures
|
||||
|
||||
\vspace{8ex}
|
||||
|
||||
%*******************************************************
|
||||
% List of Tables
|
||||
%*******************************************************
|
||||
\phantomsection
|
||||
\addcontentsline{toc}{chapter}{\texorpdfstring{\tocEntry{\listtablename}}{\listtablename}}
|
||||
\listoftables
|
||||
|
||||
\vspace{8ex}
|
||||
% \newpage
|
||||
|
||||
%*******************************************************
|
||||
% List of Listings
|
||||
%*******************************************************
|
||||
\phantomsection
|
||||
\addcontentsline{toc}{chapter}{\texorpdfstring{\tocEntry{\lstlistlistingname}}{\lstlistlistingname}}
|
||||
\lstlistoflistings
|
||||
|
||||
\vspace{8ex}
|
||||
|
||||
%*******************************************************
|
||||
% Acronyms
|
||||
%*******************************************************
|
||||
\phantomsection
|
||||
\addcontentsline{toc}{chapter}{\texorpdfstring{\tocEntry{Acronyms}}{Acronyms}}
|
||||
\printglossary[type=\acronymtype]
|
||||
|
||||
\endgroup
|
||||
19
FrontBackmatter/PreviousPublications.tex
Normal file
19
FrontBackmatter/PreviousPublications.tex
Normal file
@@ -0,0 +1,19 @@
|
||||
% !TeX root = ../Thesis.tex
|
||||
|
||||
%*******************************************************
|
||||
\chapterExtra{Previously Published Material}
|
||||
%*******************************************************
|
||||
\label{ch:PreviousPublications}
|
||||
|
||||
This thesis includes material of previously published conference papers and articles. Following the regulations of the \myFaculty at \myUni, I list below the affected parts that include verbatim and rephrased fragments from these publications.
|
||||
|
||||
\sloppy
|
||||
|
||||
\paragraph{\Cref*{ch:introduction}}
|
||||
\begin{itemize}
|
||||
\item \cref{sec:firstsection} revises Section\,1 of all papers \dots
|
||||
\end{itemize}
|
||||
|
||||
\fussy
|
||||
|
||||
\label{ch:PreviousPublicationsEnd}
|
||||
34
FrontBackmatter/Publications.tex
Normal file
34
FrontBackmatter/Publications.tex
Normal file
@@ -0,0 +1,34 @@
|
||||
% !TeX root = ../Thesis.tex
|
||||
|
||||
%*******************************************************
|
||||
% Publications
|
||||
%*******************************************************
|
||||
\chapterExtra{List of Publications}
|
||||
\label{ch:AuthorPublications}
|
||||
|
||||
During the course of writing this thesis, I co-authored several papers and articles that I list below.
|
||||
|
||||
\nocite{*} % print all references
|
||||
|
||||
|
||||
\section*{Journal and Magazine Articles}
|
||||
|
||||
{\small\printbibliography[heading=none,type=article,notkeyword=underreview]}
|
||||
|
||||
|
||||
\section*{Conference and Workshop Papers}
|
||||
|
||||
{\small\printbibliography[heading=none,type=inproceedings,notkeyword=underreview,notkeyword=posterdemo]}
|
||||
|
||||
|
||||
\section*{Posters and Demonstrators}
|
||||
|
||||
{\small\printbibliography[heading=none,type=inproceedings,notkeyword=underreview,keyword=posterdemo]}
|
||||
|
||||
|
||||
\section*{Under Peer Review}
|
||||
|
||||
{\small\printbibliography[heading=none,type=article,keyword=underreview]}
|
||||
|
||||
|
||||
\label{ch:AuthorPublicationsEnd}
|
||||
46
FrontBackmatter/StatementThesis.tex
Normal file
46
FrontBackmatter/StatementThesis.tex
Normal file
@@ -0,0 +1,46 @@
|
||||
% !TeX root = ../Thesis.tex
|
||||
|
||||
%*******************************************************
|
||||
% Declaration
|
||||
%*******************************************************
|
||||
|
||||
% Text aus: https://www.intern.tu-darmstadt.de/media/dezernat_ii/referat_iig/formulare_vorlagen/pm_1/erklaerungen/Erklaerung_zur_Abschlussarbeit_Vorlage.docx
|
||||
% Stand: 3. Juni 2019
|
||||
|
||||
\begingroup
|
||||
|
||||
\chapterExtra{Thesis Statement}
|
||||
\begin{flushright}
|
||||
\emph{pursuant to §\,22 paragraph 7 and §\,23 paragraph 7 of APB TU Darmstadt}
|
||||
\end{flushright}
|
||||
|
||||
I herewith formally declare that I, \myName{}, have written the submitted \myDegree{} independently pursuant to §\,22 paragraph 7 of APB TU Darmstadt. I did not use any outside support except for the quoted literature and other sources mentioned in the paper. I clearly marked and separately listed all of the literature and all of the other sources which I employed when producing this academic work, either literally or in content. This thesis has not been handed in or published before in the same or similar form.
|
||||
I am aware, that in case of an attempt at deception based on plagiarism (§\,38 paragraph 2 APB), the thesis would be graded with 5.0 and counted as one failed examination attempt. The thesis may only be repeated once.
|
||||
In the submitted thesis the written copies and the electronic version for archiving are pursuant to §\,23 paragraph 7 of APB identical in content.
|
||||
|
||||
\vfill
|
||||
|
||||
\let\cleardoublepage\relax
|
||||
\begin{otherlanguage}{ngerman}
|
||||
\chapter*{Erklärung zur Abschlussarbeit}
|
||||
\begin{flushright}
|
||||
\emph{gemäß §\,22 Abs.\,7 und §\,23 Abs.\,7 APB TU Darmstadt}
|
||||
\end{flushright}
|
||||
Hiermit versichere ich, \myName{}, die vorliegende \myDegree{} gemäß §\,22 Abs.\,7 APB der TU Darmstadt ohne Hilfe Dritter und nur mit den angegebenen Quellen und Hilfsmitteln angefertigt zu haben. Alle Stellen, die Quellen entnommen wurden, sind als solche kenntlich gemacht. Diese Arbeit hat in gleicher oder ähnlicher Form noch keiner Prüfungsbehörde vorgelegen.
|
||||
Mir ist bekannt, dass im Falle eines Plagiats (§\,38 Abs.\,2 APB) ein Täuschungsversuch vorliegt, der dazu führt, dass die Arbeit mit 5,0 bewertet und damit ein Prüfungsversuch verbraucht wird. Abschlussarbeiten dürfen nur einmal wiederholt werden.
|
||||
Bei der abgegebenen Thesis stimmen die schriftliche und die zur Archivierung eingereichte elektronische Fassung gemäß §\,23 Abs.\,7 APB überein.
|
||||
\end{otherlanguage}
|
||||
|
||||
\vfill
|
||||
|
||||
\noindent\textit{\myLocation{}, \myTime{}}
|
||||
|
||||
\begin{flushright}
|
||||
\begin{tabular}{m{5cm}}
|
||||
\multicolumn{1}{c}{\includegraphics[width=5cm]{signature.png}} \\
|
||||
\hline
|
||||
\centering\myName{} \\
|
||||
\end{tabular}
|
||||
\end{flushright}
|
||||
|
||||
\endgroup
|
||||
32
FrontBackmatter/StatementThesisPhD.tex
Normal file
32
FrontBackmatter/StatementThesisPhD.tex
Normal file
@@ -0,0 +1,32 @@
|
||||
%!TEX root = ../Thesis.tex
|
||||
|
||||
\begin{otherlanguage}{ngerman}
|
||||
|
||||
%*******************************************************
|
||||
\chapterExtra{Erklärung zur Dissertationsschrift}
|
||||
%*******************************************************
|
||||
|
||||
% Promotionsordnung und mehr des FB 20
|
||||
% https://www.informatik.tu-darmstadt.de/forschung_fb20/wissenschaftliche_karriere/promotion/index.de.jsp
|
||||
|
||||
\begin{flushright}
|
||||
\emph{\small gemäß §\,9 der Allgemeinen Bestimmungen der Promotionsordnung der \\
|
||||
Technischen Universität Darmstadt vom \formatdate{12}{1}{1990} (ABI. 1990, S.\,658) \\
|
||||
in der Fassung der 8.\,Novelle vom \formatdate{1}{3}{2018}}
|
||||
\end{flushright}
|
||||
Hiermit versichere ich, \myName{}, die vorliegende Dissertationsschrift ohne Hilfe Dritter und nur mit den angegebenen Quellen und Hilfsmitteln angefertigt zu haben. Alle Stellen, die Quellen entnommen wurden, sind als solche kenntlich gemacht. Eigenzitate aus vorausgehenden wissenschaftlichen Veröffentlichungen sowie die Urheberschaften der einzelnen Beiträge sind in Anlehnung an die Hinweise des Promotionsausschusses des Fachbereichs Informatik zum Thema \enquote{Kumulative Dissertation und Eigenzitate in Dissertationen} (CR; 01.12.2022) im Kapitel \enquote{\emph{Collaborations and My Contribution}} auf den \cpagerefrange*{ch:Collaborations}{ch:CollaborationsEnd} angegeben. Diese Arbeit hat in gleicher oder ähnlicher Form noch keiner Prüfungsbehörde vorgelegen. In der abgegebenen Dissertationsschrift stimmen die schriftliche und die elektronische Fassung überein.
|
||||
% cannot use \nameref for chapter name, see
|
||||
% https://bitbucket.org/amiede/classicthesis/issues/170/nameref-for-chapter-showing-the-previous
|
||||
|
||||
\bigskip
|
||||
|
||||
\noindent\textit{\myLocation{}, \myTime{}}
|
||||
|
||||
\begin{flushright}
|
||||
\begin{tabular}{m{5cm}}
|
||||
\\ \hline
|
||||
\centering\myName{} \\
|
||||
\end{tabular}
|
||||
\end{flushright}
|
||||
|
||||
\end{otherlanguage}
|
||||
57
FrontBackmatter/Titleback.tex
Normal file
57
FrontBackmatter/Titleback.tex
Normal file
@@ -0,0 +1,57 @@
|
||||
% !TeX root = ../Thesis.tex
|
||||
|
||||
\thispagestyle{empty}
|
||||
|
||||
\ \vfill
|
||||
|
||||
\noindent%
|
||||
\myName{}, \emph{\myTitle{}}, \myDegree, \myUni{}, \myYearPublication{}.
|
||||
|
||||
\bigskip
|
||||
|
||||
\noindent\myThesiscode{} \\
|
||||
Date of submission: \myTime{}
|
||||
|
||||
\bigskip
|
||||
|
||||
\noindent\begin{tabular}{@{}l@{~}l@{}}
|
||||
Advisor: & \myProf{} \\
|
||||
Supervisor: & \mySupervisor{} \\
|
||||
\end{tabular}
|
||||
|
||||
\bigskip
|
||||
|
||||
\noindent%
|
||||
\myDepartment{} \\
|
||||
\myFaculty{} \\
|
||||
\myUni{}
|
||||
|
||||
|
||||
% -- TemplateKnob
|
||||
% \bigskip
|
||||
|
||||
% \noindent%
|
||||
%% Choose the logos based on your desired CC license.
|
||||
% \includegraphics[height=4ex]{logos/creativecommons/cc}
|
||||
% \includegraphics[height=4ex]{logos/creativecommons/by}
|
||||
% \includegraphics[height=4ex]{logos/creativecommons/sa}
|
||||
%% \includegraphics[height=4ex]{logos/creativecommons/nc}
|
||||
%% \includegraphics[height=4ex]{logos/creativecommons/nd}
|
||||
|
||||
% \smallskip
|
||||
|
||||
% \begin{otherlanguage}{ngerman}
|
||||
|
||||
% \noindent%
|
||||
% Veröffentlicht unter \emph{CC BY-SA 4.0 International}
|
||||
% \emph{(Namensnennung -- Weitergabe unter gleichen Bedingungen)} \\
|
||||
% \url{https://creativecommons.org/licenses/by-sa/4.0/deed.de}
|
||||
|
||||
% \end{otherlanguage}
|
||||
|
||||
% \smallskip
|
||||
|
||||
% \noindent%
|
||||
% Licensed under \emph{CC BY-SA 4.0 International}
|
||||
% \emph{(Attribution-ShareAlike)} \\
|
||||
% \url{https://creativecommons.org/licenses/by-sa/4.0/deed.en}
|
||||
49
FrontBackmatter/TitlebackPhD.tex
Normal file
49
FrontBackmatter/TitlebackPhD.tex
Normal file
@@ -0,0 +1,49 @@
|
||||
% !TeX root = ../Thesis.tex
|
||||
|
||||
% Vorgaben zum Titelblatt einer Dissertation: https://www.intern.tu-darmstadt.de/media/dezernat_ii/promotionen_dokumente/Dissertation-Titelblatt.de.pdf
|
||||
|
||||
\thispagestyle{empty}
|
||||
|
||||
\ \vfill
|
||||
|
||||
\noindent%
|
||||
\myName{}, \emph{\myTitle{}}, Dissertation, \myUni{}, \myYearPublication{}.
|
||||
|
||||
\bigskip
|
||||
|
||||
\begin{otherlanguage}{ngerman}
|
||||
|
||||
\noindent%
|
||||
\myDepartmentDE{} \\
|
||||
\myFacultyDE{} \\
|
||||
\myUni{} \\
|
||||
Jahr der Veröffentlichung: \myYearPublication{} \\
|
||||
Tag der mündlichen Prüfung: \myTimePresent{} \\
|
||||
URN: \shorturl{https://nbn-resolving.org/\myURN}{\myURN} \\
|
||||
|
||||
\bigskip
|
||||
|
||||
\noindent%
|
||||
% Choose the logos based on your desired CC license.
|
||||
\includegraphics[height=4ex]{logos/creativecommons/cc}
|
||||
\includegraphics[height=4ex]{logos/creativecommons/by}
|
||||
\includegraphics[height=4ex]{logos/creativecommons/sa}
|
||||
% \includegraphics[height=4ex]{logos/creativecommons/nc}
|
||||
% \includegraphics[height=4ex]{logos/creativecommons/nd}
|
||||
|
||||
|
||||
\smallskip
|
||||
|
||||
\noindent%
|
||||
Veröffentlicht unter \emph{CC BY-SA 4.0 International}
|
||||
\emph{(Namensnennung -- Weitergabe unter gleichen Bedingungen)} \\
|
||||
\url{https://creativecommons.org/licenses/by-sa/4.0/deed.de}
|
||||
|
||||
\end{otherlanguage}
|
||||
|
||||
\smallskip
|
||||
|
||||
\noindent%
|
||||
Licensed under \emph{CC BY-SA 4.0 International}
|
||||
\emph{(Attribution-ShareAlike)} \\
|
||||
\url{https://creativecommons.org/licenses/by-sa/4.0/deed.en}
|
||||
48
FrontBackmatter/Titlepage.tex
Normal file
48
FrontBackmatter/Titlepage.tex
Normal file
@@ -0,0 +1,48 @@
|
||||
% !TeX root = ../Thesis.tex
|
||||
|
||||
%*******************************************************
|
||||
% Titlepage
|
||||
%*******************************************************
|
||||
\pdfbookmark[0]{Cover}{cover}
|
||||
\begin{titlepage}
|
||||
% -- TemplateKnob
|
||||
% if you want the titlepage to be centered, uncomment and
|
||||
% fine-tune the line below (KOMA classes environment)
|
||||
%\pdfbookmark[1]{\myTitle{}}{titlepage}
|
||||
|
||||
\begin{addmargin}[-1cm]{\iftoggle{adrianstyle}{-2cm}{-3cm}}
|
||||
\begin{center}
|
||||
\large
|
||||
|
||||
\includegraphics[width=6cm]{logos/tud-logo-rgb}
|
||||
|
||||
\vfill
|
||||
|
||||
\begingroup
|
||||
\color{CTtitle}\spacedallcaps{\myTitle{}} \\ \bigskip
|
||||
\endgroup
|
||||
|
||||
\vspace{2ex}
|
||||
|
||||
\spacedlowsmallcaps{\myName{}}
|
||||
|
||||
\vfill
|
||||
|
||||
\myDegree{}
|
||||
|
||||
\vspace{2ex}
|
||||
|
||||
\myTime{}
|
||||
|
||||
\vfill
|
||||
|
||||
\myDepartment{} \\
|
||||
\myFaculty{} \\
|
||||
\myUni{}
|
||||
|
||||
\vfill
|
||||
|
||||
\includegraphics[width=5cm]{logos/seemoo-logo-rgb}
|
||||
\end{center}
|
||||
\end{addmargin}
|
||||
\end{titlepage}
|
||||
73
FrontBackmatter/TitlepagePhD.tex
Normal file
73
FrontBackmatter/TitlepagePhD.tex
Normal file
@@ -0,0 +1,73 @@
|
||||
% !TeX root = ../Thesis.tex
|
||||
|
||||
% Vorgaben zum Titelblatt einer Dissertation: https://www.intern.tu-darmstadt.de/media/dezernat_ii/promotionen_dokumente/Dissertation-Titelblatt.de.pdf
|
||||
|
||||
%*******************************************************
|
||||
% Titlepage
|
||||
%*******************************************************
|
||||
\pdfbookmark[0]{Cover}{cover}
|
||||
\begin{titlepage}
|
||||
% -- TemplateKnob
|
||||
% if you want the titlepage to be centered, uncomment and
|
||||
% fine-tune the line below (KOMA classes environment)
|
||||
%\pdfbookmark[1]{\myTitle{}}{titlepage}
|
||||
|
||||
\begin{addmargin}[-1cm]{\iftoggle{adrianstyle}{-2cm}{-3cm}}
|
||||
\begin{center}
|
||||
\begin{otherlanguage}{ngerman}
|
||||
\large
|
||||
|
||||
\includegraphics[width=6cm]{logos/tud-logo-rgb}
|
||||
|
||||
\vfill
|
||||
|
||||
\begingroup
|
||||
\color{CTtitle}\spacedallcaps{\myTitle{}} \\ \bigskip
|
||||
\endgroup
|
||||
|
||||
\vfill
|
||||
|
||||
Am \myFacultyDE{} \\
|
||||
der Technischen Universität Darmstadt \\
|
||||
eingereichte
|
||||
|
||||
% -- TemplateKnob
|
||||
%% Use this for the final version:
|
||||
% Vom \myFacultyDE{} \\
|
||||
% der Technischen Universität Darmstadt \\
|
||||
% genehmigte
|
||||
|
||||
\vspace{2ex}
|
||||
|
||||
\spacedlowsmallcaps{Dissertation}
|
||||
|
||||
\vspace{2ex}
|
||||
|
||||
zur Erlangung des akademischen Grades \\
|
||||
\myDegreePhD{} \\
|
||||
von
|
||||
|
||||
\vspace{2ex}
|
||||
|
||||
\spacedlowsmallcaps{\myName{}}
|
||||
|
||||
\vfill
|
||||
|
||||
\begin{tabular}{r@{~}l}
|
||||
Erstreferent: & \myProf{} \\
|
||||
Korreferent: & \myOtherProf{} \\
|
||||
\end{tabular}
|
||||
|
||||
\vfill
|
||||
|
||||
\myLocation{} \myYearPresent{} \\
|
||||
Hochschulkennziffer \myUniKennziffer{}
|
||||
|
||||
\vfill
|
||||
|
||||
\includegraphics[width=5cm]{logos/seemoo-logo-rgb} \\
|
||||
|
||||
\end{otherlanguage}
|
||||
\end{center}
|
||||
\end{addmargin}
|
||||
\end{titlepage}
|
||||
1
Graphics/logos/creativecommons/README
Normal file
1
Graphics/logos/creativecommons/README
Normal file
@@ -0,0 +1 @@
|
||||
URL: https://creativecommons.org/about/downloads/
|
||||
5902
Graphics/logos/creativecommons/by.eps
Normal file
5902
Graphics/logos/creativecommons/by.eps
Normal file
File diff suppressed because one or more lines are too long
5902
Graphics/logos/creativecommons/cc.eps
Normal file
5902
Graphics/logos/creativecommons/cc.eps
Normal file
File diff suppressed because one or more lines are too long
5902
Graphics/logos/creativecommons/nc.eps
Normal file
5902
Graphics/logos/creativecommons/nc.eps
Normal file
File diff suppressed because one or more lines are too long
5902
Graphics/logos/creativecommons/nd.eps
Normal file
5902
Graphics/logos/creativecommons/nd.eps
Normal file
File diff suppressed because one or more lines are too long
5902
Graphics/logos/creativecommons/sa.eps
Normal file
5902
Graphics/logos/creativecommons/sa.eps
Normal file
File diff suppressed because one or more lines are too long
129
Graphics/logos/seemoo-logo-rgb.pdf
Normal file
129
Graphics/logos/seemoo-logo-rgb.pdf
Normal file
File diff suppressed because one or more lines are too long
BIN
Graphics/logos/seemoo-logo.pdf
Normal file
BIN
Graphics/logos/seemoo-logo.pdf
Normal file
Binary file not shown.
227
Graphics/logos/tud-logo-rgb.pdf
Normal file
227
Graphics/logos/tud-logo-rgb.pdf
Normal file
File diff suppressed because one or more lines are too long
634
Graphics/logos/tud-logo.pdf
Normal file
634
Graphics/logos/tud-logo.pdf
Normal file
File diff suppressed because one or more lines are too long
BIN
Graphics/signature.png
Normal file
BIN
Graphics/signature.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 19 KiB |
7
Hyphenation.tex
Normal file
7
Hyphenation.tex
Normal file
@@ -0,0 +1,7 @@
|
||||
% !TeX root = ./Thesis.tex
|
||||
|
||||
\hyphenation{
|
||||
Si-mu-link
|
||||
OO-WARP-Lab
|
||||
WARP-Lab
|
||||
}
|
||||
31
Macros.tex
Normal file
31
Macros.tex
Normal file
@@ -0,0 +1,31 @@
|
||||
% !TeX root = ./Thesis.tex
|
||||
|
||||
\newcommand{\ie}{i.\,e.}
|
||||
\newcommand{\Ie}{I.\,e.}
|
||||
\newcommand{\eg}{e.\,g.}
|
||||
\newcommand{\Eg}{E.\,g.}
|
||||
|
||||
% for use in unnumbered chapters in the front and back matter that should appear in ToC
|
||||
\newcommand{\chapterExtra}[1]{%
|
||||
\phantomsection%
|
||||
\markboth{\spacedlowsmallcaps{#1}}{\spacedlowsmallcaps{#1}}%
|
||||
\addcontentsline{toc}{chapter}{\texorpdfstring{\tocEntry{#1}}{#1}}%
|
||||
\chapter*{#1}%
|
||||
}
|
||||
|
||||
% When using \part{}, the generated PDF bookmark has a leading whitespace for unknown reasons.
|
||||
% Using hyperref's \texorpdfstring within \part{} does not fix the problem.
|
||||
% The following command provides a workaround:
|
||||
% First, manually add a PDF bookmark (without a leading whitespace).
|
||||
% Then, disable the generation of PDF bookmarks temporarily to prevent
|
||||
% the creation of a PDF bookmark with a leading whitespace.
|
||||
% Then, start the new part and restore the automatic generation of PDF bookmarks.
|
||||
\newcommand{\partExtra}[1]{%
|
||||
\phantomsection%
|
||||
\pdfbookmark[-1]{#1}{#1}%
|
||||
\hypersetup{bookmarksdepth=-2}%
|
||||
\part{#1}%
|
||||
\hypersetup{bookmarksdepth}%
|
||||
}
|
||||
|
||||
\newcommand{\shorturl}[2]{\href{#1}{\nolinkurl{#2}}} % useful for typesetting DOIs and URNs
|
||||
26
Makefile
Normal file
26
Makefile
Normal file
@@ -0,0 +1,26 @@
|
||||
SRC_DIR := .
|
||||
DOCUMENT := $(SRC_DIR)/Thesis
|
||||
# max_repeat=6 is needed to make the reference numbering for author publication work.
|
||||
# -cd will invoke build command within subdirectory SRC_DIR.
|
||||
LATEXMK := latexmk -e '$$max_repeat=6' -pdf -bibtex -synctex=1 -cd
|
||||
|
||||
.PHONY: document sort-acronyms clean
|
||||
all : document
|
||||
default: document
|
||||
|
||||
sort-acronyms:
|
||||
sort $(SRC_DIR)/Acronyms.tex -o $(SRC_DIR)/Acronyms.tex
|
||||
|
||||
document:
|
||||
@echo "Build document"
|
||||
$(LATEXMK) $(DOCUMENT)
|
||||
|
||||
gitinfo2-hooks: gitinfo2_post-xxx.sample
|
||||
git config --local include.path ../.gitconfig
|
||||
|
||||
clean:
|
||||
@ echo "Clean up"
|
||||
$(LATEXMK) -C $(DOCUMENT)
|
||||
rm -f $(SRC_DIR)/pdfa.xmpi
|
||||
rm -f $(SRC_DIR)/$(DOCUMENT)-blx.bib
|
||||
rm -f $(SRC_DIR)/GraphicsCache/*
|
||||
3
Parts/BackMatter.tex
Normal file
3
Parts/BackMatter.tex
Normal file
@@ -0,0 +1,3 @@
|
||||
% !TeX root = ../Thesis.tex
|
||||
|
||||
\pdfbookmark[-1]{Back Matter}{backmatter}
|
||||
3
Parts/FrontMatter.tex
Normal file
3
Parts/FrontMatter.tex
Normal file
@@ -0,0 +1,3 @@
|
||||
% !TeX root = ../Thesis.tex
|
||||
|
||||
\pdfbookmark[-1]{Front Matter}{frontmatter}
|
||||
41
PersonalInfo.tex
Normal file
41
PersonalInfo.tex
Normal file
@@ -0,0 +1,41 @@
|
||||
% !TeX root = ./Thesis.tex
|
||||
% -- TemplateKnob
|
||||
|
||||
% -----------------------------------------------------------------------
|
||||
% >> Personal Information to be filled in by thesis author !!! <<
|
||||
% -----------------------------------------------------------------------
|
||||
\newcommand{\myTitle}{Analysing the security of eSIM on SIM cards by using Differential Testing}
|
||||
\newcommand{\myDegree}{Master's Thesis}
|
||||
\newcommand{\myVersion}{0.1}
|
||||
\newcommand{\myName}{Niklas Bittner}
|
||||
\newcommand{\mySupervisor}{Alexander Heinrich, Marius Muench (University of Birmingham)}
|
||||
\newcommand{\myThesiscode}{SEEMOO-MSC-$0000$} % You will get this from our secretary
|
||||
\newcommand{\myTime}{\formatdate{16}{07}{2025}} % hand-in date of the thesis
|
||||
\newcommand{\myAbstract}{Short summary of the contents} % at the very end, put "clean" abstract here
|
||||
\newcommand{\myYearPublication}{2025} % year of publication (for copyright and footer)
|
||||
|
||||
|
||||
% -----------------------------------------------------------------------
|
||||
% General Information of SEEMOO and the TU Darmstadt.
|
||||
% -----------------------------------------------------------------------
|
||||
\newcommand{\myFaculty}{Department of Computer Science}
|
||||
\newcommand{\myFacultyDE}{Fachbereich Informatik}
|
||||
\newcommand{\myDepartment}{Secure Mobile Networking Lab}
|
||||
\newcommand{\myDepartmentDE}{Fachgebiet Sichere Mobile Netze}
|
||||
\newcommand{\myUni}{\protect{Technische Universität Darmstadt}}
|
||||
\newcommand{\myUniKennziffer}{D17}
|
||||
\newcommand{\myLocation}{Darmstadt}
|
||||
|
||||
|
||||
% -----------------------------------------------------------------------
|
||||
% The following are only required to be filled in for PhD Theses.
|
||||
% -----------------------------------------------------------------------
|
||||
\newcommand{\myURN}{urn:nbn:de:tuda-tuprints-83253}
|
||||
\newcommand{\myDegreePhD}{Doktor-Ingenieur (Dr.-Ing.)}
|
||||
\newcommand{\myBirthDate}{\formatdate{1}{1}{1970}}
|
||||
\newcommand{\myBirthPlace}{Darmstadt, Deutschland}
|
||||
\newcommand{\myNationality}{German}
|
||||
\newcommand{\myProf}{Prof. Dr.-Ing. Matthias Hollick}
|
||||
\newcommand{\myOtherProf}{Put name here}
|
||||
\newcommand{\myYearPresent}{1337} % year of disputation
|
||||
\newcommand{\myTimePresent}{\formatdate{01}{01}{\myYearPresent}} % date of disputation
|
||||
BIN
README-assets/gitlab-zip.png
Normal file
BIN
README-assets/gitlab-zip.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 114 KiB |
BIN
README-assets/overleaf-project.png
Normal file
BIN
README-assets/overleaf-project.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 45 KiB |
123
README.md
Normal file
123
README.md
Normal file
@@ -0,0 +1,123 @@
|
||||
# SEEMOO Thesis Template
|
||||
|
||||
[](https://dev.seemoo.tu-darmstadt.de/templates/seemoo-thesis-template/-/tree/master)
|
||||
[](https://dev.seemoo.tu-darmstadt.de/templates/seemoo-thesis-template/-/jobs/artifacts/master/file/Thesis.pdf?job=build)
|
||||
|
||||
This is a LaTeX template to be used for all theses written at SEEMOO.
|
||||
It's based on the [`classicthesis`](https://ctan.org/pkg/classicthesis)
|
||||
package but includes some specific adjustments for SEEMOO and TU Darmstadt.
|
||||
This README is supposed to get you started quickly, avoid frustration, and
|
||||
let you spend more time for working on your actual project.
|
||||
|
||||
*If you have a bug fix or general improvment, don't keep them to yourself but create a pull request!*
|
||||
|
||||
## Structure
|
||||
|
||||
The source directory is structured as follows:
|
||||
|
||||
* `Appendicies/` -- contains additional appendix chapters (e.g. questionnaires, long proofs)
|
||||
* `Acronyms.tex` -- contains a list of acronyms
|
||||
* `AdditionalPackages.tex` -- to include and configure packages
|
||||
* `AuthorPublications.bib` -- contains auhtor publications for PhD theses
|
||||
* `Bibliography.bib` -- contains all your bibtex references
|
||||
* `Chapters/` -- contains your thesis' main chapters.
|
||||
* `ClassicThesisConfig.tex` -- can be adjusted to your needs
|
||||
* `Graphics/` -- for figures and graphics
|
||||
* `Hyphenation.tex` -- custom rules if LaTeX screws up hyphenation
|
||||
* `Macros.tex` -- custom commands, e.g., symbols or often used expressions.
|
||||
* `PersonalInfo.tex` -- must be adjusted by you.
|
||||
* `Thesis.tex` -- the main file, where you should include additional chapters
|
||||
* `Classicthesis.sty` -- the `classicthesis` style file (don't change).
|
||||
|
||||
Some helpers exist:
|
||||
* `make.bat` and `Makefile` for Windows and UNIX, respectively.
|
||||
* `dockmake.sh to invoke make through a docker latex container.
|
||||
|
||||
## Configuration
|
||||
|
||||
There are several configuration parameters that you need to adjust.
|
||||
We try to litter them with comments of the form `% -- TemplateKnob`
|
||||
so you can search for settings meant to be adjustable.
|
||||
|
||||
### Meta data
|
||||
|
||||
Adjust all the `\my<X>` variables in [`PersonalInfo.tex`](./PersonalInfo.tex),
|
||||
such as your name and title of your thesis.
|
||||
|
||||
### AI Declaration
|
||||
|
||||
Make sure to ajust the AI declaration in `FrontBackmatter/AIDeclaration.tex`.
|
||||
|
||||
### Style
|
||||
|
||||
You can choose between different styles for your thesis.
|
||||
You can enable them by uncommenting the respective `\toggletrue{<X>}`
|
||||
calls in [`Thesis.tex`](./Thesis.tex) Currently, these are:
|
||||
|
||||
* **Less margins.** The `adrianstyle` (called so for historic reasons)
|
||||
will reduce the page margins, effectively increasing the space for
|
||||
text and floats. Don't use margin notes together with this mode.
|
||||
* **Use parts.** The `parts` toggle will add another layer of structure
|
||||
to your thesis. Only use this if your thesis is particulary long or
|
||||
additional structure makes sense.
|
||||
* **PhD thesis.** The `phd` toggle adds additional front and back matter
|
||||
pages to the template that are relevant if you write a PhD thesis.
|
||||
|
||||
### Drafting mode
|
||||
|
||||
To enable a drafting mode (prints date, version number, and git commit hash in footer),
|
||||
set the `drafting` option in [`ClassicThesisConfig.tex`](./ClassicThesisConfig.tex) to `true`.
|
||||
|
||||
To display the git commit hash, you have to install and trigger the
|
||||
[`gitinfo2`](https://ctan.org/pkg/gitinfo2) hooks once via
|
||||
|
||||
```bash
|
||||
make gitinfo2-hooks
|
||||
git checkout master
|
||||
```
|
||||
|
||||
## Build
|
||||
|
||||
You can use your IDE of choice, directly invoke make, or use the docker wrapper
|
||||
|
||||
```bash
|
||||
# Note: <target> is the make target, leave out for 'all'
|
||||
# Build natively via make
|
||||
make $target
|
||||
|
||||
# Call make wrapped in docker container
|
||||
./dockmake.sh $target
|
||||
```
|
||||
|
||||
The output file will be in `Thesis.pdf`
|
||||
|
||||
## Windows
|
||||
|
||||
If you are using Windows, you **must** run `make` once for the Bibliography to compile correctly. Make sure to install `perl` to ensure the commands can execute properly.
|
||||
|
||||
|
||||
## Overleaf / TU Sharelatex
|
||||
|
||||
The recommendations for Overleaf are the same as for the TU Sharelatex. We just use the term "Overleaf" here.
|
||||
|
||||
### Uploading
|
||||
1. Go to our thesis [git repository](https://dev.seemoo.tu-darmstadt.de/templates/seemoo-thesis-template).
|
||||
2. Click the `Code` button on the top right.
|
||||
3. Select `zip`. (see image below)
|
||||
4. Open your Overleaf / TU Sharelatex.
|
||||
5. Click the `New Project` button on the top left.
|
||||
6. Select `Upload Project`.
|
||||
7. Upload the ZIP downloaded from our Git repository.
|
||||
|
||||
GitLab zip Download:
|
||||
<img src="./README-assets/gitlab-zip.png" height=200px>
|
||||
|
||||
Creating a new project:
|
||||
<img src="./README-assets/overleaf-project.png" height=200px>
|
||||
|
||||
### Building
|
||||
You can build the project normally with Overleaf.
|
||||
|
||||
### Acronyms (or something else) does not work
|
||||
In that case, you did something wrong when uploading. For some reason, Overleaf does not like it when your root Tex file is **not** in the root folder. When uploading, make sure that you do not zip a folder which contains your project, but all files.
|
||||
For example, selecting the folder that you want to upload on macOS, right clicking and then uploading it will fail.
|
||||
234
Thesis.tex
Normal file
234
Thesis.tex
Normal file
@@ -0,0 +1,234 @@
|
||||
% **************************************************************************************************************
|
||||
% A Classic Thesis Style
|
||||
% An Homage to The Elements of Typographic Style
|
||||
%
|
||||
% Copyright (C) 2018 André Miede and Ivo Pletikosić
|
||||
%
|
||||
% If you like the style then I would appreciate a postcard. My address
|
||||
% can be found in the file ClassicThesis.pdf. A collection of the
|
||||
% postcards I received so far is available online at
|
||||
% http://postcards.miede.de
|
||||
%
|
||||
% License:
|
||||
% This program is free software; you can redistribute it and/or modify
|
||||
% it under the terms of the GNU General Public License as published by
|
||||
% the Free Software Foundation; either version 2 of the License, or
|
||||
% (at your option) any later version.
|
||||
%
|
||||
% This program is distributed in the hope that it will be useful,
|
||||
% but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
% GNU General Public License for more details.
|
||||
%
|
||||
% You should have received a copy of the GNU General Public License
|
||||
% along with this program; see the file COPYING. If not, write to
|
||||
% the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
% Boston, MA 02111-1307, USA.
|
||||
%
|
||||
% PLEASE SEE ALSO THE AUTHORS' NOTE REGARDING THIS LICENSE
|
||||
% IN THE DOCUMENTATION (ClassicThesis.pdf --> Chapter 1 / Chapter01.tex)
|
||||
% **************************************************************************************************************
|
||||
|
||||
\input{PersonalInfo}
|
||||
|
||||
% Metadata to comply with PDF/A
|
||||
\begin{filecontents*}{\jobname.xmpdata}
|
||||
\Title{\myTitle}
|
||||
\Author{\myName}
|
||||
\Copyright{Copyright \copyright\ \myYearPublication "\myName"}
|
||||
\Subject{\myAbstract} % Make sure to update your abstract in PersonalInfo.tex!
|
||||
\end{filecontents*}
|
||||
|
||||
|
||||
\RequirePackage{silence} % :-\
|
||||
\WarningFilter{scrreprt}{Usage of package `titlesec'}
|
||||
\WarningFilter{titlesec}{Non standard sectioning command detected}
|
||||
|
||||
|
||||
\documentclass[
|
||||
twoside,
|
||||
openright,
|
||||
titlepage,
|
||||
numbers=noenddot,
|
||||
headinclude,
|
||||
footinclude,
|
||||
cleardoublepage=empty,
|
||||
abstract=on,
|
||||
BCOR=5mm,
|
||||
paper=a4,
|
||||
fontsize=11pt
|
||||
]{scrreprt}
|
||||
|
||||
|
||||
% ------------------------------------------------------------------
|
||||
% Toggles to enable large-scale configuration of the template
|
||||
% ------------------------------------------------------------------
|
||||
\usepackage{etoolbox}
|
||||
|
||||
% Toggle true if you want to have a style with smaller margins
|
||||
\newtoggle{adrianstyle}
|
||||
|
||||
% Toggle true to use parts (as in a book; for long theses only!)
|
||||
\newtoggle{parts}
|
||||
|
||||
% Toggle true to write a full-blown PhD thesis (with parts, author references, etc.)
|
||||
\newtoggle{phd}
|
||||
|
||||
|
||||
% -- TemplateKnob
|
||||
%\toggletrue{phd}
|
||||
%\toggletrue{parts}
|
||||
%\toggletrue{adrianstyle}
|
||||
\PassOptionsToPackage{adrianstyle=\iftoggle{adrianstyle}{true}{false}}{classicthesis}
|
||||
\iftoggle{phd}{\toggletrue{parts}}{}
|
||||
|
||||
% ------------------------------------------------------------------
|
||||
% PDF/A for TUbama
|
||||
% ------------------------------------------------------------------
|
||||
\PassOptionsToPackage{dvipsnames}{xcolor}
|
||||
\usepackage{colorprofiles}
|
||||
\usepackage[a-2b, mathxmp]{pdfx}
|
||||
|
||||
|
||||
% ------------------------------------------------------------------
|
||||
% Include configs and other packages
|
||||
% ------------------------------------------------------------------
|
||||
\input{ClassicThesisConfig}
|
||||
\input{AdditionalPackages}
|
||||
|
||||
|
||||
% ------------------------------------------------------------------
|
||||
% Bibliographies
|
||||
% ------------------------------------------------------------------
|
||||
\addbibresource{Bibliography.bib}
|
||||
\addbibresource[label=own]{AuthorPublications.bib}
|
||||
|
||||
% ------- uncomment the following files to enable URL newline/breaks in Bibliography
|
||||
% \usepackage{url}
|
||||
% \usepackage{xurl}
|
||||
% \usepackage{hyperref}
|
||||
% -- its importat that they are after \addbibresource
|
||||
|
||||
% ------------------------------------------------------------------
|
||||
% Hyphenation
|
||||
% ------------------------------------------------------------------
|
||||
\input{Hyphenation}
|
||||
|
||||
|
||||
% ------------------------------------------------------------------
|
||||
% Acronyms
|
||||
% ------------------------------------------------------------------
|
||||
\input{Acronyms}
|
||||
|
||||
|
||||
% ------------------------------------------------------------------
|
||||
% Macros
|
||||
% ------------------------------------------------------------------
|
||||
\input{Macros}
|
||||
|
||||
|
||||
% ------------------------------------------------------------------
|
||||
% GO!GO!GO! MOVE IT!
|
||||
% ------------------------------------------------------------------
|
||||
\begin{document}
|
||||
\frenchspacing
|
||||
\raggedbottom
|
||||
\selectlanguage{american} % american ngerman
|
||||
\pagenumbering{roman}
|
||||
\pagestyle{plain}
|
||||
|
||||
|
||||
% ------------------------------------------------------------------
|
||||
% Frontmatter
|
||||
% ------------------------------------------------------------------
|
||||
\iftoggle{parts}{
|
||||
\include{Parts/FrontMatter}
|
||||
}{}
|
||||
\iftoggle{phd}{
|
||||
\include{FrontBackmatter/TitlepagePhD}
|
||||
\include{FrontBackmatter/TitlebackPhD}
|
||||
\cleardoublepage\include{FrontBackmatter/Dedication}
|
||||
}{
|
||||
\include{FrontBackmatter/Titlepage}
|
||||
\include{FrontBackmatter/Titleback}
|
||||
}
|
||||
|
||||
\cleardoublepage\include{FrontBackmatter/Abstract}
|
||||
\cleardoublepage\include{FrontBackmatter/Acknowledgments}
|
||||
\cleardoublepage\include{FrontBackmatter/Contents}
|
||||
\iftoggle{phd}{
|
||||
\begin{refsection}[own] % use numbering of list of publications
|
||||
\cleardoublepage\include{FrontBackmatter/Publications}
|
||||
\cleardoublepage\include{FrontBackmatter/Collaborations}
|
||||
\end{refsection}
|
||||
}{}
|
||||
|
||||
|
||||
% ------------------------------------------------------------------
|
||||
% Mainmatter
|
||||
% ------------------------------------------------------------------
|
||||
\addtocounter{table}{-1} % otherwise starts counting from 2
|
||||
\cleardoublepage
|
||||
\pagestyle{scrheadings}
|
||||
\pagenumbering{arabic}
|
||||
|
||||
% use \cleardoublepage here to avoid problems with pdfbookmark
|
||||
\cleardoublepage
|
||||
\iftoggle{parts}{
|
||||
\ctparttext{The first chapter of this part gives an introduction and a motivation to this thesis, followed by a presentation of related work found in the area of physical layer security. In the third chapter, we present some definitions and background information to make it easier for the reader to quickly understand the subsequent parts of this thesis.}
|
||||
\partExtra{Introduction}
|
||||
}{}
|
||||
\include{Chapters/Introduction}
|
||||
\include{Chapters/RelatedWork}
|
||||
\iftoggle{parts}{
|
||||
\cleardoublepage
|
||||
\ctparttext{The contribution starts with a design chapter, where we mathematically describe the design of the physical layer security system, as well as the adaptive filter of the attacker. After the design follows the implementation on WARP nodes. Here we give an insight into the challenges of implementing the designed MIMO communication system. The last chapter concentrates on evaluating the performance of our proposed attack in simulation and practice.}
|
||||
\partExtra{Contribution}
|
||||
}{}
|
||||
\include{Chapters/Background}
|
||||
\include{Chapters/Implementation}
|
||||
\include{Chapters/Evaluation}
|
||||
\iftoggle{parts}{
|
||||
\cleardoublepage
|
||||
\ctparttext{After the evaluation, we further discuss the results and give an outlook. In addition, we finish this work with conclusions.}
|
||||
\partExtra{Discussion and Conclusions}
|
||||
}{}
|
||||
\include{Chapters/Discussion}
|
||||
\include{Chapters/Conclusions}
|
||||
|
||||
|
||||
% ------------------------------------------------------------------
|
||||
% Backmatter
|
||||
% ------------------------------------------------------------------
|
||||
\iftoggle{parts}{}{
|
||||
\addtocontents{toc}{\protect\vspace{\beforebibskip}} % add space between main chapters and appendix if we do not use parts
|
||||
}
|
||||
\appendix
|
||||
\cleardoublepage
|
||||
\iftoggle{parts}{
|
||||
\partExtra{Appendix}
|
||||
}{}
|
||||
\include{Appendices/SomeProof}
|
||||
|
||||
|
||||
% ------------------------------------------------------------------
|
||||
% Other Stuff in the Back
|
||||
% ------------------------------------------------------------------
|
||||
\iftoggle{parts}{
|
||||
\include{Parts/BackMatter}
|
||||
}{}
|
||||
\cleardoublepage\include{FrontBackmatter/Bibliography}
|
||||
\include{FrontBackmatter/AIDeclaration}
|
||||
\iftoggle{phd}{
|
||||
% -- TemplateKnob
|
||||
%\cleardoublepage\include{FrontBackmatter/CurriculumVitae} % not required in final submission
|
||||
\cleardoublepage\include{FrontBackmatter/StatementThesisPhD}
|
||||
}{
|
||||
\cleardoublepage\include{FrontBackmatter/StatementThesis}
|
||||
}
|
||||
|
||||
|
||||
% ------------------------------------------------------------------
|
||||
% Game Over: Restore, Restart, or Quit?
|
||||
% ------------------------------------------------------------------
|
||||
\end{document}
|
||||
692
classicthesis.sty
Normal file
692
classicthesis.sty
Normal file
@@ -0,0 +1,692 @@
|
||||
% ********************************************************************
|
||||
% Classicthesis.sty
|
||||
%
|
||||
% Copyright (C) 2018 André Miede and Ivo Pletikosić
|
||||
%
|
||||
% If you like the style then I would appreciate a postcard. My address
|
||||
% can be found in the file ClassicThesis.pdf. A collection of the
|
||||
% postcards I received so far is available online at
|
||||
% http://postcards.miede.de
|
||||
%
|
||||
% License:
|
||||
% This program is free software; you can redistribute it and/or modify
|
||||
% it under the terms of the GNU General Public License as published by
|
||||
% the Free Software Foundation; either version 2 of the License, or
|
||||
% (at your option) any later version.
|
||||
%
|
||||
% This program is distributed in the hope that it will be useful,
|
||||
% but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
% GNU General Public License for more details.
|
||||
%
|
||||
% You should have received a copy of the GNU General Public License
|
||||
% along with this program; see the file COPYING. If not, write to
|
||||
% the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
% Boston, MA 02111-1307, USA.
|
||||
%
|
||||
% ********************************************************************
|
||||
% Important:
|
||||
%
|
||||
% This style can also be used without the thesis template.
|
||||
% It works with LaTeX, PDFLaTeX, XeLaTeX and LuaLaTeX.
|
||||
%
|
||||
% ********************************************************************
|
||||
\NeedsTeXFormat{LaTeX2e}
|
||||
\ProvidesPackage{classicthesis}[2018/06/03 v4.6 Typographic style for a classic-looking thesis]
|
||||
\providecommand{\classicthesis}{classicthesis v4.6}
|
||||
% Removed due to hint by David Carlisle and Ulrike Fischer
|
||||
% \PassOptionsToPackage{latest}{latexrelease} % replacement for fixltx2e,
|
||||
% \RequirePackage{latexrelease} % emulate newer kernel version if older is detected
|
||||
|
||||
\RequirePackage{ifthen}
|
||||
|
||||
% ********************************************************************
|
||||
% Options
|
||||
% ********************************************************************
|
||||
\RequirePackage{kvoptions}
|
||||
\SetupKeyvalOptions{family=ct, prefix=ct@}
|
||||
|
||||
\DeclareBoolOption{drafting} % print version information on all pages
|
||||
|
||||
\DeclareBoolOption{tocaligned} % the left column of the toc will be aligned (no indentation)
|
||||
\DeclareBoolOption{dottedtoc} % page numbers in ToC flushed right
|
||||
\DeclareBoolOption{listsseparated} % OBSOLETE; toggles the vertical space between lof/lot entries of different chapters
|
||||
|
||||
\DeclareBoolOption[true]{parts} % OBSOLETE - automatic check; use part division
|
||||
|
||||
\DeclareBoolOption{nochapters} % OBSOLETE - automatic check; disable all chapter-specific commands
|
||||
\DeclareBoolOption{eulerchapternumbers} % use AMS Euler for chapter font (otherwise Palatino)
|
||||
\DeclareBoolOption{linedheaders} % chaper headers will have line above and beneath
|
||||
\DeclareBoolOption{floatperchapter} % numbering per chapter for all floats (i.e., Figure 1.1)
|
||||
\DeclareBoolOption{manychapters} % additional space in ToC after chapter number (if two digits are needed)
|
||||
|
||||
\DeclareBoolOption{listings} % OBSOLETE - automatic check; load listings package and setup LoL
|
||||
\DeclareBoolOption{subfig} % OBSOLETE - automatic check; setup for preloaded @subfig package
|
||||
|
||||
\DeclareBoolOption{eulermath} % use awesome Euler fonts for mathematical formulae; only with pdflatex
|
||||
\DeclareBoolOption[true]{beramono} % toggle a nice monospaced font (w/ bold) + pre-installed
|
||||
\DeclareBoolOption{minionpro} % OBSOLETE - removed; setup for minion pro font; use minion pro small caps as well
|
||||
\DeclareBoolOption[true]{palatino} % default is Palatino/Paladio/TeX Gyre Pagella font, use this switch to skip selection
|
||||
\DeclareBoolOption[false]{adrianstyle}
|
||||
\DeclareStringOption[classicthesis]{style} % classicthesis or arsclassica
|
||||
\DeclareBoolOption{minionprospacing} % OBSOLETE; use minion pro's textssc for letter spacing
|
||||
\DeclareBoolOption{pdfspacing} % OBSOLETE; use pdftex for letterspacing (via microtype)
|
||||
|
||||
\DeclareBoolOption{a4paper}
|
||||
\DeclareBoolOption{a5paper}
|
||||
\DeclareBoolOption{b5paper}
|
||||
\DeclareBoolOption{letterpaper}
|
||||
\DeclareStringOption[a4]{paper} % paper size defaults to A4
|
||||
\ProcessKeyvalOptions{ct}
|
||||
|
||||
|
||||
%%% seems that KOMA-Script gives preference to old-style paper options, thus first
|
||||
\ifthenelse{\boolean{ct@letterpaper}}{\renewcommand*{\ct@paper}{letter}}{}
|
||||
\ifthenelse{\boolean{ct@a5paper}}{\renewcommand*{\ct@paper}{a5}}{}
|
||||
\ifthenelse{\boolean{ct@b5paper}}{\renewcommand*{\ct@paper}{b5}}{}
|
||||
\ifthenelse{\boolean{ct@a4paper}}{\renewcommand*{\ct@paper}{a4}}{}
|
||||
|
||||
\ifthenelse{\equal{\ct@paper}{letter}\OR\equal{\ct@paper}{a5}\OR\equal{\ct@paper}{b5}\OR\equal{\ct@paper}{a4}}{\relax}%
|
||||
{\PackageWarningNoLine{classicthesis}{Text area setup only provided for paper sizes: letter, a5, b5, a4. You are using paper=\ct@paper}}
|
||||
|
||||
|
||||
% subfig-related stuff
|
||||
\@ifpackageloaded{subfig}%
|
||||
{\setboolean{ct@subfig}{true}%
|
||||
}{\relax}
|
||||
|
||||
\ifthenelse{\boolean{ct@subfig}}%
|
||||
{\PassOptionsToPackage{subfigure}{tocloft}%
|
||||
}{\relax}%
|
||||
|
||||
% listings-related stuff
|
||||
\@ifpackageloaded{listings}%
|
||||
{\setboolean{ct@listings}{true}%
|
||||
}{\relax}
|
||||
|
||||
\ifthenelse{\boolean{ct@listings}}%
|
||||
{\RequirePackage{listings}%
|
||||
}{\relax}
|
||||
|
||||
|
||||
% fine-tuning if we do not use chapters
|
||||
\ifthenelse{\isundefined{\chapter}\OR\boolean{ct@nochapters}}
|
||||
{
|
||||
\PackageWarningNoLine{classicthesis}{Chapter sectioning command not present in this document class. %
|
||||
Deactivating options floatperchapter, linedheaders, manychapters, listsseparated, eulerchapternumbers}%
|
||||
\setboolean{ct@linedheaders}{false}
|
||||
\setboolean{ct@listsseparated}{false}
|
||||
\setboolean{ct@eulerchapternumbers}{false}
|
||||
\setboolean{ct@parts}{false}
|
||||
\setboolean{ct@manychapters}{false}
|
||||
\setboolean{ct@floatperchapter}{false}
|
||||
\setboolean{ct@nochapters}{true}
|
||||
}{\relax}
|
||||
|
||||
% no parts in document class
|
||||
\ifthenelse{\NOT\isundefined{\part}\AND\boolean{ct@parts}}
|
||||
{\setboolean{ct@parts}{true}}{\setboolean{ct@parts}{false}}
|
||||
|
||||
% use arsclassica style
|
||||
\provideboolean{ct@arsclassica}
|
||||
\ifthenelse{\equal{\ct@style}{arsclassica}}%
|
||||
{%\setboolean{ct@eulerchapternumbers}{true}% for arsclassica only eulerchapternumbers
|
||||
\setboolean{ct@arsclassica}{true}}{\setboolean{ct@arsclassica}{false}}
|
||||
|
||||
% ********************************************************************
|
||||
% PDF and XeLaTeX Stuff
|
||||
% ********************************************************************
|
||||
\RequirePackage{ifpdf}
|
||||
\RequirePackage{ifxetex}
|
||||
\RequirePackage{ifluatex}
|
||||
|
||||
% ********************************************************************
|
||||
% Colors
|
||||
% ********************************************************************
|
||||
\PassOptionsToPackage{dvipsnames}{xcolor}
|
||||
\RequirePackage{xcolor} % [dvipsnames]
|
||||
\definecolor{CTsemi}{gray}{0.55} % chapter numbers will be semi transparent .5 .55 .6 .0
|
||||
\definecolor{CTcitation}{rgb}{0,0.5,0} % WebGreen
|
||||
\definecolor{CTurl}{named}{Maroon} % Maroon
|
||||
\definecolor{CTtitle}{named}{Maroon} % Maroon {cmyk}{0, 0.87, 0.68, 0.32}
|
||||
\definecolor{CTlink}{named}{RoyalBlue} % RoyalBlue {cmyk}{1, 0.50, 0, 0}
|
||||
\definecolor{halfgray}{gray}{0.55} % chapter numbers will be semi transparent .5 .55 .6 .0
|
||||
\definecolor{webgreen}{rgb}{0,0.5,0}
|
||||
\definecolor{webbrown}{rgb}{0.6,0,0}
|
||||
|
||||
% ********************************************************************
|
||||
% Font Stuff
|
||||
% ********************************************************************
|
||||
\ifthenelse{\boolean{xetex}\OR\boolean{luatex}}
|
||||
{ % use fontspec and OpenType fonts with utf8 engines
|
||||
\RequirePackage{fontspec}
|
||||
\ifthenelse{\boolean{ct@palatino}}% default
|
||||
{
|
||||
\setmainfont[Ligatures=TeX,Numbers=OldStyle]{TeX Gyre Pagella} % Palatino clone
|
||||
\linespread{1.05} % a bit more for Palatino
|
||||
\RequirePackage{unicode-math}
|
||||
\setmathfont{TeX Gyre Pagella Math}
|
||||
}{\relax} % use class' default font
|
||||
\ifthenelse{\boolean{ct@beramono}}%
|
||||
{\setmonofont[Scale=0.85]{DejaVu Sans Mono}} % like Bera; Scale=MatchLowercase
|
||||
{\setmonofont[Scale=1]{Latin Modern Mono}}
|
||||
% font for the chapter numbers will be defined in the old way below
|
||||
% because there is no OpenType Euler font; this is how it should be done:
|
||||
%\newfontface\chapterNumber[Scale=7,Color=000000]{TeX Gyre Pagella Bold}
|
||||
}
|
||||
{ % use Type 1 fonts with pdflatex
|
||||
\ifthenelse{\boolean{ct@palatino}}% default
|
||||
{
|
||||
% default: Palatino
|
||||
\PassOptionsToPackage{sc}{mathpazo}%
|
||||
\RequirePackage{mathpazo} % Palatino with real small caps and old style figures
|
||||
\linespread{1.05} % a bit more for Palatino
|
||||
}{\relax}
|
||||
|
||||
\ifthenelse{\boolean{ct@beramono}}%
|
||||
{\PassOptionsToPackage{scaled=0.85}{beramono}%
|
||||
\RequirePackage{beramono}%
|
||||
}{%
|
||||
\relax%
|
||||
% put your own suitable typewriter font here
|
||||
%\renewcommand{\ttdefault}{\rmdefault}
|
||||
}
|
||||
|
||||
\ifthenelse{\boolean{ct@eulermath}}%
|
||||
{\PassOptionsToPackage{euler-digits}{eulervm}%
|
||||
\RequirePackage{eulervm}} % Euler math fonts
|
||||
{\relax}
|
||||
}
|
||||
|
||||
\ifthenelse{\boolean{ct@eulerchapternumbers}}% font for the chapter numbers
|
||||
{\DeclareFixedFont{\chapterNumber}{U}{eur}{b}{n}{70}}%
|
||||
{\DeclareFixedFont{\chapterNumber}{T1}{pplj}{m}{n}{70}}%
|
||||
%{\newfont{\chapterNumber}{eurb10 scaled 7000}}%
|
||||
%{\newfont{\chapterNumber}{pplr9d scaled 7000}}
|
||||
% Euler eurb10 / Palatino OSF pplr9d / Palatino SC pplrc9d
|
||||
% Latin Modern cork-lmr10 / Minion MinionPro-Regular-osf-t1
|
||||
% (MinionPro-SemiboldCapt-osf-t1 MinionPro-SemiboldDisp-osf-t1)
|
||||
|
||||
|
||||
|
||||
|
||||
\RequirePackage{microtype} % character protruding and other micro-typography stuff
|
||||
% [expansion=false]
|
||||
|
||||
|
||||
% ********************************************************************
|
||||
% Textblock size
|
||||
%*******************************************************
|
||||
\PassOptionsToPackage{headinclude,footinclude}{typearea} % for classes other than KOMA
|
||||
\RequirePackage{typearea}
|
||||
|
||||
\ifthenelse{\equal{\ct@paper}{letter}}%
|
||||
{% Letter 216mm x 279mm
|
||||
\PackageInfo{classicthesis}{letter paper, Palatino or other}
|
||||
\areaset[current]{356pt}{700pt}% guessing from A4 values
|
||||
\setlength{\marginparwidth}{7em}%
|
||||
\setlength{\marginparsep}{2em}%
|
||||
}{\relax}
|
||||
\ifthenelse{\equal{\ct@paper}{b5}}%
|
||||
{% B5 176mm x 250mm
|
||||
% Thanks to Jos\'e M. Alcaide
|
||||
\PackageInfo{classicthesis}{B5 paper, Palatino or other}%
|
||||
\areaset[current]{311pt}{645pt}%
|
||||
\setlength{\marginparwidth}{6em}%
|
||||
\setlength{\marginparsep}{1.5em}%
|
||||
}{\relax}
|
||||
\ifthenelse{\equal{\ct@paper}{a5}}%
|
||||
{% A5 148mm x 210mm
|
||||
\PackageInfo{classicthesis}{A5 paper, Palatino or other}%
|
||||
\areaset[current]{288pt}{555pt}%
|
||||
\setlength{\marginparwidth}{4em}%
|
||||
\setlength{\marginparsep}{1.25em}%
|
||||
}{\relax}
|
||||
\ifthenelse{\equal{\ct@paper}{a4}}%
|
||||
{% A4 210mm x 297mm
|
||||
\PackageInfo{classicthesis}{A4 paper, Palatino or other}
|
||||
\ifthenelse{\boolean{ct@adrianstyle}}{
|
||||
\areaset[current]{15cm}{750pt} % ~ 336 * factor 2 + 33 head + 42 \the\footskip
|
||||
}{
|
||||
\areaset[current]{336pt}{750pt} % ~ 336 * factor 2 + 33 head + 42 \the\footskip
|
||||
% \areaset{336pt}{761pt} % 686 (factor 2.2) + 33 head + 42 head \the\footskip 10pt
|
||||
}
|
||||
\setlength{\marginparwidth}{7em}%
|
||||
\setlength{\marginparsep}{2em}%
|
||||
}{\relax}
|
||||
|
||||
% Here are some suggestions for the text widths and heights:
|
||||
% Palatino 10pt: 288--312pt | 609--657pt
|
||||
% Palatino 11pt: 312--336pt | 657--705pt
|
||||
% Palatino 12pt: 360--384pt | 768pt
|
||||
% Minion 10pt: 264--288pt | 561--609pt
|
||||
% Minion 11pt: 288--312pt | 609--657pt
|
||||
% Minion 12pt: 336pt | 672pt
|
||||
|
||||
|
||||
% ********************************************************************
|
||||
% Own Stuff
|
||||
% ********************************************************************
|
||||
% Disable single lines at the start of a paragraph (Schusterjungen)
|
||||
\clubpenalty = 10000
|
||||
% Disable single lines at the end of a paragraph (Hurenkinder)
|
||||
\widowpenalty = 10000
|
||||
\displaywidowpenalty = 10000 % formulas
|
||||
|
||||
% Graffiti as in GKP's book "Concrete Mathematics"
|
||||
% thanks to Lorenzo Pantieri and Enrico Gregorio
|
||||
\def\graffito@setup{%
|
||||
% \slshape\footnotesize% this was due to \slhape in above book
|
||||
\itshape\footnotesize\leavevmode\color{Black}%
|
||||
\parindent=0pt \lineskip=0pt \lineskiplimit=0pt %
|
||||
\tolerance=2000 \hyphenpenalty=300 \exhyphenpenalty=300%
|
||||
\doublehyphendemerits=100000%
|
||||
\finalhyphendemerits=\doublehyphendemerits}
|
||||
%\DeclareRobustCommand{\graffito}[1]{\marginpar%
|
||||
% [\graffito@setup\raggedleft\hspace{0pt}{#1}]%
|
||||
% {\graffito@setup\raggedright\hspace{0pt}{#1}}}
|
||||
|
||||
\RequirePackage{mparhack} % get marginpar right
|
||||
|
||||
\let\oldmarginpar\marginpar
|
||||
\renewcommand{\marginpar}[2][]{% always add optional parameter, make it empty by default
|
||||
\if\relax\detokenize{#1}\relax% optional parameter empty, in all normal document calls
|
||||
\oldmarginpar[\graffito@setup\raggedleft\hspace{0pt}{#2}]{\graffito@setup\raggedright\hspace{0pt}#2}%
|
||||
\else%two parameters, let them use their styling
|
||||
\oldmarginpar[{#1}]{#2}%
|
||||
\fi%
|
||||
}
|
||||
|
||||
|
||||
% Enumeration environment with small caps
|
||||
\newenvironment{aenumerate}
|
||||
{\def\theenumi{\textsc{\alph{enumi}}}%
|
||||
\enumerate}
|
||||
{\endenumerate}
|
||||
|
||||
% ********************************************************************
|
||||
% Fancy Stuff
|
||||
% ********************************************************************
|
||||
\RequirePackage{booktabs} % for better rules in tables
|
||||
\RequirePackage{textcase} % for \MakeTextUppercase
|
||||
|
||||
% Provide a hook for font customization, e.g., for arsclassica
|
||||
\newcommand{\ct@altfont}{}% \color{red}\sffamily
|
||||
\newcommand{\ct@caps}{\ct@altfont\scshape} % typesetting smallcaps
|
||||
|
||||
%%% define spacedallcaps and spacedlowsmallcaps
|
||||
%%% engine-dependent letterspacing: microtype for pdflatex, fontspec for xelatex and luatex
|
||||
\ifthenelse{\boolean{pdf}\OR\boolean{luatex}}{ % pdf will soon test true for both pdflatex and luatex; \AND\NOT\boolean{luatex}
|
||||
\PackageInfo{classicthesis}{Using microtype for character spacing.%
|
||||
Make sure your pdflatex is version 1.40 or higher.}%
|
||||
% \microtypesetup{expansion=false}
|
||||
\microtypesetup{protrusion=true,expansion=true}
|
||||
\DeclareRobustCommand{\spacedallcaps}[1]{\textls[160]{\ct@caps\MakeTextUppercase{#1}}}
|
||||
\DeclareRobustCommand{\spacedlowsmallcaps}[1]{\textls[80]{\ct@caps\MakeTextLowercase{#1}}}
|
||||
}{\relax}
|
||||
|
||||
\ifthenelse{\boolean{xetex}}{ % use fontspec features; \OR\boolean{luatex} does not work well
|
||||
\PackageInfo{classicthesis}{Using fontspec for character spacing.}%
|
||||
\microtypesetup{expansion=false}
|
||||
\DeclareRobustCommand{\spacedallcaps}[1]{{\addfontfeature{LetterSpace=18.0}\ct@caps\MakeTextUppercase{#1}}}% WordSpace=1.8
|
||||
\DeclareRobustCommand{\spacedlowsmallcaps}[1]{{\addfontfeatures{LetterSpace=14.0}\ct@caps\MakeTextLowercase{#1}}}% WordSpace=1.8
|
||||
}{\relax}
|
||||
|
||||
% ********************************************************************
|
||||
% headlines
|
||||
% ********************************************************************
|
||||
%\PassOptionsToPackage{automark}{scrpage2}
|
||||
\PassOptionsToPackage{automark}{scrlayer-scrpage}
|
||||
%\RequirePackage{scrpage2} % provides headers and footers (KOMA Script)
|
||||
\RequirePackage{scrlayer-scrpage} % provides headers and footers (KOMA Script)
|
||||
\clearpairofpagestyles
|
||||
%\setheadsepline{0pt}
|
||||
\let\MakeMarkcase\spacedlowsmallcaps
|
||||
\ifthenelse{\boolean{ct@nochapters}}%
|
||||
{\relax}%
|
||||
{\renewcommand{\chaptermark}[1]{\markboth{\spacedlowsmallcaps{#1}}{\spacedlowsmallcaps{#1}}}}
|
||||
\renewcommand{\sectionmark}[1]{\markright{\textsc{\thesection}\enspace\spacedlowsmallcaps{#1}}}
|
||||
\lehead{\mbox{\llap{\small\pagemark\kern2em}\headmark\hfil}}
|
||||
\rohead{\mbox{\hfil{\headmark}\rlap{\small\kern2em\pagemark}}}
|
||||
\ofoot[\small\pagemark]{}% only for plain.scrheadings page style (first page of a chapter)
|
||||
\renewcommand{\headfont}{\small}
|
||||
% \DeclareRobustCommand{\fixBothHeadlines}[2]{} % <--- ToDo
|
||||
% hack to get the content headlines right (thanks, Lorenzo!)
|
||||
\def\toc@heading{%
|
||||
\ifthenelse{\boolean{ct@nochapters}}%
|
||||
{\section*{\contentsname}}%nochapters
|
||||
{\chapter*{\contentsname}}%chapters
|
||||
\@mkboth{\spacedlowsmallcaps{\contentsname}}{\spacedlowsmallcaps{\contentsname}}} %%%IVO: what does this do?
|
||||
|
||||
|
||||
% ********************************************************************
|
||||
% layout of the chapter-, section-, subsection-, subsubsection-,
|
||||
% paragraph and description-headings
|
||||
% ********************************************************************
|
||||
\RequirePackage[newparttoc]{titlesec} % newparttoc to write \part to .toc with \numberline
|
||||
\ifthenelse{\boolean{ct@nochapters}}{\relax}{\titleclass{\chapter}{top}} % thanks to Javier Bezos of titlesec
|
||||
\def\ttl@addcontentsline#1#2{% this is from titlesec.sty
|
||||
\addcontentsline{toc}{#1}{\ifttl@toclabel\ttl@a\fi{#2}}% write titles as a group inside {}
|
||||
\nobreak}
|
||||
% parts
|
||||
\ifthenelse{\boolean{ct@parts}}%
|
||||
{%
|
||||
\newcommand{\ctparttext}[1]{\renewcommand{\ctparttext@keep}{#1}}
|
||||
\def\ctparttext@keep{} % Thanks to Ivo
|
||||
\def\ctparttext@print{\ctparttext@keep \gdef\ctparttext@keep{}}
|
||||
\titleformat{\part}[display]
|
||||
{\normalfont\ct@altfont\centering\large}%
|
||||
{\thispagestyle{empty}\partname~\MakeTextUppercase{\thepart}}{1em}%
|
||||
{\color{CTtitle}\spacedallcaps}[\bigskip\normalfont\normalsize\color{Black}\begin{quote}\ctparttext@print\end{quote}]
|
||||
}{\relax}
|
||||
% chapters
|
||||
\ifthenelse{\boolean{ct@linedheaders}}%
|
||||
{% lines above and below, number right
|
||||
\titleformat{\chapter}[display]%
|
||||
{\relax}{\raggedleft{\color{CTsemi}\chapterNumber\thechapter} \\ }{0pt}%
|
||||
{\titlerule\vspace*{.9\baselineskip}\raggedright\spacedallcaps}[\normalsize\vspace*{.8\baselineskip}\titlerule]%
|
||||
}{% something like Bringhurst
|
||||
\titleformat{\chapter}[display]%
|
||||
{\relax}{\mbox{}\oldmarginpar{\vspace*{-3\baselineskip}\color{CTsemi}\chapterNumber\thechapter}}{0pt}%
|
||||
{\raggedright\spacedallcaps}[\normalsize\vspace*{.8\baselineskip}\titlerule]%
|
||||
}
|
||||
% sections \FloatBarrier
|
||||
\titleformat{\section}
|
||||
{\relax}{\textsc{\MakeTextLowercase{\thesection}}}{1em}{\spacedlowsmallcaps}
|
||||
% subsections
|
||||
\titleformat{\subsection}
|
||||
{\relax}{\textsc{\MakeTextLowercase{\thesubsection}}}{1em}{\normalsize\itshape}
|
||||
% subsubsections
|
||||
\titleformat{\subsubsection}
|
||||
{\relax}{\textsc{\MakeTextLowercase{\thesubsubsection}}}{1em}{\normalsize\itshape}
|
||||
% paragraphs
|
||||
\titleformat{\paragraph}[runin]
|
||||
{\normalfont\normalsize}{\theparagraph}{0pt}{\spacedlowsmallcaps}
|
||||
% descriptionlabels
|
||||
\renewcommand{\descriptionlabel}[1]{\hspace*{\labelsep}\spacedlowsmallcaps{#1}} % spacedlowsmallcaps textit textsc
|
||||
% spacing
|
||||
\ifthenelse{\boolean{ct@nochapters}}%
|
||||
{\relax}%
|
||||
{\titlespacing*{\chapter}{0pt}{1\baselineskip}{1.2\baselineskip}}
|
||||
\titlespacing*{\section}{0pt}{1.25\baselineskip}{1\baselineskip}
|
||||
\titlespacing*{\subsection}{0pt}{1.25\baselineskip}{1\baselineskip}
|
||||
\titlespacing*{\paragraph}{0pt}{1\baselineskip}{1\baselineskip}
|
||||
|
||||
% ********************************************************************
|
||||
% layout of the TOC, LOF and LOT (LOL-workaround see next section)
|
||||
% ********************************************************************
|
||||
\PassOptionsToPackage{titles}{tocloft}
|
||||
\RequirePackage{tocloft}
|
||||
% avoid page numbers being right-aligned in fixed-size box
|
||||
\newlength{\newnumberwidth}
|
||||
\settowidth{\newnumberwidth}{999} % yields overfull hbox warnings for pages > 999
|
||||
\cftsetpnumwidth{\newnumberwidth}
|
||||
|
||||
% have the bib neatly positioned after the rest
|
||||
\newlength{\beforebibskip}
|
||||
\setlength{\beforebibskip}{0em}
|
||||
|
||||
% space for more than nine chapters
|
||||
\newlength{\newchnumberwidth}
|
||||
\settowidth{\newchnumberwidth}{.} % <--- tweak here if more space required
|
||||
\ifthenelse{\boolean{ct@manychapters}}% <--- many chapters option
|
||||
{%
|
||||
\addtolength{\cftchapnumwidth}{\newchnumberwidth}%
|
||||
\addtolength{\cftsecnumwidth}{\newchnumberwidth}
|
||||
\addtolength{\cftsecindent}{\newchnumberwidth}
|
||||
\addtolength{\cftsubsecnumwidth}{\newchnumberwidth}
|
||||
\addtolength{\cftsubsecindent}{2\newchnumberwidth}
|
||||
\addtolength{\cftsubsubsecnumwidth}{\newchnumberwidth}
|
||||
}{\relax}%
|
||||
|
||||
% pagenumbers right after the titles
|
||||
% parts
|
||||
\ifthenelse{\boolean{ct@parts}}%
|
||||
{%
|
||||
\renewcommand{\thepart}{\roman{part}}%
|
||||
\renewcommand{\cftpartpresnum}{\scshape}% \MakeTextLowercase
|
||||
\renewcommand{\cftpartaftersnum}{}%
|
||||
\renewcommand{\cftpartaftersnumb}{\spacedlowsmallcaps}%
|
||||
\setlength{\cftpartnumwidth}{\cftchapnumwidth}
|
||||
\renewcommand{\cftpartfont}{\color{CTtitle}\normalfont}%
|
||||
\cftpagenumbersoff{part}
|
||||
\renewcommand{\cftpartpagefont}{\normalfont}%
|
||||
\ifthenelse{\boolean{ct@dottedtoc}}{\relax}%
|
||||
{%
|
||||
\renewcommand{\cftpartleader}{\hspace{1.5em}}%
|
||||
\renewcommand{\cftpartafterpnum}{\cftparfillskip}%
|
||||
}%
|
||||
\setlength{\cftbeforepartskip}{1em}%
|
||||
\setlength{\cftbeforechapskip}{.1em}%
|
||||
\setlength{\beforebibskip}{1.5\cftbeforepartskip}%
|
||||
}{\relax}
|
||||
% chapters
|
||||
\ifthenelse{\boolean{ct@nochapters}}%
|
||||
{\relax}%
|
||||
{%
|
||||
\renewcommand{\cftchappresnum}{\spacedlowsmallcaps}%
|
||||
\renewcommand{\cftchapaftersnumb}{\spacedlowsmallcaps}%
|
||||
\renewcommand{\cftchapfont}{\normalfont}%
|
||||
\renewcommand{\cftchappagefont}{\normalfont}%
|
||||
\ifthenelse{\boolean{ct@dottedtoc}}{\relax}%
|
||||
{%
|
||||
\renewcommand{\cftchapleader}{\hspace{1.5em}}%
|
||||
\renewcommand{\cftchapafterpnum}{\cftparfillskip}%
|
||||
}
|
||||
%\setlength{\cftbeforechapskip}{.1em}%
|
||||
}
|
||||
% sections
|
||||
\ifthenelse{\boolean{ct@nochapters}}%
|
||||
{%
|
||||
\setlength{\cftbeforesecskip}{.1em}%
|
||||
\setlength{\beforebibskip}{1em}%
|
||||
}%
|
||||
{\relax}
|
||||
\renewcommand{\cftsecpresnum}{\scshape\MakeTextLowercase}%
|
||||
\renewcommand{\cftsecfont}{\normalfont}%
|
||||
\renewcommand{\cftsecpagefont}{\normalfont}%
|
||||
\ifthenelse{\boolean{ct@dottedtoc}}{\relax}%
|
||||
{%
|
||||
\renewcommand{\cftsecleader}{\hspace{1.5em}}%
|
||||
\renewcommand{\cftsecafterpnum}{\cftparfillskip}%
|
||||
}
|
||||
\ifthenelse{\boolean{ct@tocaligned}}{\renewcommand{\cftsecindent}{0em}}{\relax}
|
||||
% subsections
|
||||
\renewcommand{\cftsubsecpresnum}{\scshape\MakeTextLowercase}%
|
||||
\renewcommand{\cftsubsecfont}{\normalfont}%
|
||||
\ifthenelse{\boolean{ct@dottedtoc}}{\relax}%
|
||||
{%
|
||||
\renewcommand{\cftsubsecleader}{\hspace{1.5em}}%
|
||||
\renewcommand{\cftsubsecafterpnum}{\cftparfillskip}%
|
||||
}
|
||||
\ifthenelse{\boolean{ct@tocaligned}}{\renewcommand{\cftsubsecindent}{0em}}{\relax}
|
||||
% subsubsections
|
||||
\renewcommand{\cftsubsubsecpresnum}{\scshape\MakeTextLowercase}%
|
||||
\renewcommand{\cftsubsubsecfont}{\normalfont}%
|
||||
\ifthenelse{\boolean{ct@dottedtoc}}{\relax}%
|
||||
{%
|
||||
\renewcommand{\cftsubsubsecleader}{\hspace{1.5em}}%
|
||||
\renewcommand{\cftsubsubsecafterpnum}{\cftparfillskip}%
|
||||
}
|
||||
\ifthenelse{\boolean{ct@tocaligned}}{\renewcommand{\cftsubsubsecindent}{0em}}{\relax}
|
||||
% figures
|
||||
\renewcommand{\cftfigpresnum}{\scshape\MakeTextLowercase}%
|
||||
\renewcommand{\cftfigfont}{\normalfont}%
|
||||
\ifthenelse{\boolean{ct@dottedtoc}}{\relax}%
|
||||
{%
|
||||
\renewcommand{\cftfigleader}{\hspace{1.5em}}%
|
||||
\renewcommand{\cftfigafterpnum}{\cftparfillskip}%
|
||||
}
|
||||
\renewcommand{\cftfigpresnum}{\figurename~}%Fig.~}
|
||||
\newlength{\figurelabelwidth}
|
||||
\settowidth{\figurelabelwidth}{\cftfigpresnum~999}
|
||||
\addtolength{\figurelabelwidth}{2.5em}
|
||||
\cftsetindents{figure}{0em}{\figurelabelwidth}
|
||||
% tables
|
||||
\renewcommand{\cfttabpresnum}{\scshape\MakeTextLowercase}%
|
||||
\renewcommand{\cfttabfont}{\normalfont}%
|
||||
\ifthenelse{\boolean{ct@dottedtoc}}{\relax}%
|
||||
{%
|
||||
\renewcommand{\cfttableader}{\hspace{1.5em}}%
|
||||
\renewcommand{\cfttabafterpnum}{\cftparfillskip}%
|
||||
}
|
||||
\renewcommand{\cfttabpresnum}{\tablename~}%Tab.~}
|
||||
\newlength{\tablelabelwidth}
|
||||
\settowidth{\tablelabelwidth}{\cfttabpresnum~999}
|
||||
\addtolength{\tablelabelwidth}{2.5em}
|
||||
%\cftsetindents{table}{0em}{\tablelabelwidth}
|
||||
\cftsetindents{table}{0em}{\figurelabelwidth}
|
||||
% listings
|
||||
\ifthenelse{\boolean{ct@listings}}%
|
||||
{%
|
||||
\newlistof{listings}{lol}{\lstlistlistingname}%
|
||||
\renewcommand{\cftlistingspresnum}{\scshape\MakeTextLowercase}%
|
||||
\renewcommand{\cftlistingsfont}{\normalfont}%
|
||||
\renewcommand{\cftlistingspresnum}{\lstlistingname~}%
|
||||
\renewcommand{\cftlistingspagefont}{\normalfont}%
|
||||
\ifthenelse{\boolean{ct@dottedtoc}}{\relax}%
|
||||
{%
|
||||
\renewcommand{\cftlistingsleader}{\hspace{1.5em}}%
|
||||
\renewcommand{\cftlistingsafterpnum}{\cftparfillskip}%
|
||||
}
|
||||
\newlength{\listingslabelwidth}%
|
||||
\settowidth{\listingslabelwidth}{\cftlistingspresnum~999}%
|
||||
\addtolength{\listingslabelwidth}{2.5em}%
|
||||
%\cftsetindents{listings}{0em}{\listingslabelwidth}%
|
||||
\cftsetindents{listings}{0em}{\figurelabelwidth}%
|
||||
\let\l@lstlisting\l@listings%
|
||||
\let\lstlistoflistings\listoflistings%
|
||||
}{\relax}%
|
||||
|
||||
% dirty work-around to get the spacing after the toc/lot/lof-titles right
|
||||
\ifthenelse{\boolean{ct@parts}}%
|
||||
{%
|
||||
\AtBeginDocument{\addtocontents{toc}{\protect\vspace{-\cftbeforepartskip}}}
|
||||
}{%
|
||||
\ifthenelse{\boolean{ct@nochapters}}%
|
||||
{\relax}%
|
||||
{\AtBeginDocument{\addtocontents{toc}{\protect\vspace{-\cftbeforechapskip}}}}
|
||||
}
|
||||
|
||||
\newcommand{\tocEntry}[1]{\protect\numberline {}{#1}}%
|
||||
|
||||
%% remove the vertical space between lof/lot entries of different chapters
|
||||
\ifthenelse{\boolean{ct@listsseparated}}{%
|
||||
\PackageWarningNoLine{classicthesis}{Option "listsseparated" deprecated as of version 2.9.}%
|
||||
}{\relax}
|
||||
% \ifthenelse{\boolean{ct@listsseparated}}{%
|
||||
% \AtBeginDocument{%
|
||||
% \addtocontents{lof}{\protect\vspace{-\cftbeforechapskip}}%
|
||||
% \addtocontents{lot}{\protect\vspace{-\cftbeforechapskip}}%
|
||||
% \ifthenelse{\boolean{ct@listings}}%
|
||||
% {%
|
||||
% \addtocontents{lol}{\protect\vspace{-\cftbeforechapskip}}%
|
||||
% }{\relax}%
|
||||
% }%
|
||||
% }{%
|
||||
|
||||
\DeclareRobustCommand*{\deactivateaddvspace}{\let\addvspace\@gobble}%
|
||||
\AtBeginDocument{%
|
||||
\addtocontents{lof}{\deactivateaddvspace}%
|
||||
\addtocontents{lot}{\deactivateaddvspace}%
|
||||
\ifthenelse{\boolean{ct@listings}}%
|
||||
{%
|
||||
\addtocontents{lol}{\deactivateaddvspace}%
|
||||
}{\relax}%
|
||||
}%
|
||||
% }
|
||||
|
||||
% ********************************************************************
|
||||
% Footnotes setup
|
||||
% ********************************************************************
|
||||
\ifdefined\deffootnote
|
||||
% KOMA-command, footnotemark not superscripted at the bottom
|
||||
\deffootnote{0em}{0em}{\thefootnotemark\hspace*{.5em}}%
|
||||
\message{Using KOMA-command "deffootnote" for footnote setup}%
|
||||
\else
|
||||
\PassOptionsToPackage{marginal}{footmisc}% marginal flushmargin
|
||||
\RequirePackage{footmisc}%
|
||||
% \setlength{\footnotemargin}{-.5em}%
|
||||
\PackageWarningNoLine{classicthesis}{Using package "footmisc" with option %
|
||||
"marginal" for footnote setup (not 100\% the same as with KOMA)}%
|
||||
\fi
|
||||
|
||||
% ********************************************************************
|
||||
% Drafting Stuff
|
||||
% ********************************************************************
|
||||
\RequirePackage{scrtime} % time access
|
||||
\newcommand{\finalVersionString}{\relax}
|
||||
\providecommand{\myVersion}{$\!\!$} % w/o classicthesis-config.tex
|
||||
\ifthenelse{\boolean{ct@drafting}}{%
|
||||
% \RequirePackage{draftwatermark}%
|
||||
% \SetWatermarkLightness{0.9}
|
||||
% \SetWatermarkScale{.5}
|
||||
% \SetWatermarkText{\today\ at \thistime}
|
||||
\PassOptionsToPackage{draft}{prelim2e}
|
||||
\RequirePackage{prelim2e}
|
||||
\renewcommand{\PrelimWords}{\relax}
|
||||
\renewcommand{\PrelimText}{\footnotesize[\,\today\ at \thistime\ -- \myVersion{}\,]}
|
||||
}{\renewcommand{\finalVersionString}{\emph{Final Version} as of \today\ (\myVersion{}).}}
|
||||
|
||||
% ********************************************************************
|
||||
% Captions
|
||||
% ********************************************************************
|
||||
% \PassOptionsToPackage{font=small}{caption} % ,format=hang ,labelformat=smallcaps
|
||||
\RequirePackage{caption}
|
||||
\captionsetup{font=small}
|
||||
% Thanks to cgnieder and Claus Lahiri
|
||||
% http://tex.stackexchange.com/questions/69349/spacedlowsmallcaps-in-caption-label
|
||||
% [REMOVED DUE TO OTHER PROBLEMS, SEE ISSUE #82]
|
||||
%\DeclareCaptionLabelFormat{smallcaps}{\bothIfFirst{#1}{~}\MakeTextLowercase{\textsc{#2}}}
|
||||
|
||||
% ********************************************************************
|
||||
% Caption numbering now w/o chapter number
|
||||
% ********************************************************************
|
||||
\ifthenelse{\boolean{ct@floatperchapter}}{%
|
||||
\ifthenelse{\boolean{ct@listings}}{%
|
||||
\lstset{numberbychapter=true}}{\relax}% numberbychapter works in listings>=1.4
|
||||
}{%
|
||||
\ifthenelse{\boolean{ct@listings}}{%
|
||||
\lstset{numberbychapter=false}}{\relax}%
|
||||
|
||||
\ifthenelse{\boolean{ct@nochapters}}%
|
||||
{\relax}{%
|
||||
\@removefromreset{table}{chapter} % requires remreset package
|
||||
}%
|
||||
\renewcommand{\thetable}{\arabic{table}}%
|
||||
\ifthenelse{\boolean{ct@nochapters}}%
|
||||
{\relax}{%
|
||||
\@removefromreset{figure}{chapter} % requires remreset package
|
||||
}%
|
||||
\renewcommand{\thefigure}{\arabic{figure}}%
|
||||
\ifthenelse{\boolean{ct@nochapters}}%
|
||||
{\relax}{%
|
||||
\@removefromreset{equation}{chapter} % requires remreset package
|
||||
}%
|
||||
\renewcommand{\theequation}{\arabic{equation}}%
|
||||
}
|
||||
|
||||
% ********************************************************************
|
||||
% arsclassica integration (experimental, dirty hack currently)
|
||||
% ********************************************************************
|
||||
\ifct@arsclassica
|
||||
\RequirePackage{classicthesis-arsclassica}
|
||||
\fi
|
||||
|
||||
|
||||
% ********************************************************************
|
||||
% hyperreferences, pdf outline
|
||||
% ********************************************************************
|
||||
\PassOptionsToPackage{hyperfootnotes=false}{hyperref}
|
||||
\RequirePackage{hyperref}
|
||||
\pdfstringdefDisableCommands{\let\thepart=\relax} % no part numbers (i, ii, iii) in PDF outline IVO
|
||||
%\pdfstringdefDisableCommands{\renewcommand{\thepart}{\Roman{part}}} %%%IVO bring back Part numbers in PDF outline
|
||||
\hypersetup{colorlinks=true,linktocpage=true,breaklinks=true,urlcolor=CTurl,linkcolor=CTlink,citecolor=CTcitation}
|
||||
|
||||
|
||||
% ********************************************************************
|
||||
% Backward-compatibility
|
||||
% ********************************************************************
|
||||
\let\myChapter\chapter
|
||||
\let\myPart\part
|
||||
\let\graffito\marginpar
|
||||
18
latexmkrc
Normal file
18
latexmkrc
Normal file
@@ -0,0 +1,18 @@
|
||||
add_cus_dep('glo', 'gls', 0, 'run_makeglossaries');
|
||||
add_cus_dep('acn', 'acr', 0, 'run_makeglossaries');
|
||||
|
||||
sub run_makeglossaries {
|
||||
if ( $silent ) {
|
||||
system "makeglossaries -q $_[0]";
|
||||
} else {
|
||||
system "makeglossaries $_[0]";
|
||||
};
|
||||
}
|
||||
|
||||
push @generated_exts, 'glo', 'gls', 'glg';
|
||||
push @generated_exts, 'acn', 'acr', 'alg';
|
||||
$clean_ext .= ' %R.ist %R.xdy';
|
||||
|
||||
push @generated_exts, 'lol';
|
||||
|
||||
push @generated_exts, 'run.xml', 'xmpdata';
|
||||
22
make.bat
Normal file
22
make.bat
Normal file
@@ -0,0 +1,22 @@
|
||||
@ECHO OFF
|
||||
SETLOCAL
|
||||
SET DOCUMENT=Thesis
|
||||
SET LATEXMK=latexmk -e '$$max_repeat=6' -pdf -bibtex -synctex=1 -cd
|
||||
|
||||
IF [%1] == [] GOTO default
|
||||
IF [%1] == [document] GOTO document
|
||||
IF [%1] == [clean] GOTO clean
|
||||
GOTO :EOF
|
||||
|
||||
:default
|
||||
:document
|
||||
ECHO build document
|
||||
%LATEXMK% %DOCUMENT%
|
||||
GOTO :EOF
|
||||
|
||||
:clean
|
||||
ECHO clean up
|
||||
%LATEXMK% -C %DOCUMENT%
|
||||
DEL /F pdfa.xmpi 2>nul
|
||||
DEL /F %DOCUMENT%-blx.bib 2>nul
|
||||
GOTO :EOF
|
||||
Reference in New Issue
Block a user