\section{SIM Cards}

\subsection{Smart Card Basics}

\begin{frame}{Terminology}
\begin{description}
	\item[SIM] Subscriber Identity Module
	\item[USIM] Universal Subscriber Identity Mdoule
	\item[UICC] Universal Integrated Chip Card
	\item[MS] GSM Mobile Station (phone, modem)
	\item[UE] UMTS User Equipment
	\item[ME] GSM Mobile Equipment (MS + SIM)
	\item[OTA] Over The Air
	\item[SAT] SIM Application Toolkit
	\item[CAT] Card (UICC) Application Toolkit
	\item[USAT] USIM Application Toolkit
	\item[TAR] Toolkit Application Reference
\end{description}
\end{frame}

\begin{frame}{Relevant Specification Bodies}
\begin{itemize}
	\item ISO (ISO 7816) smart cards
	\item ETSI (Eurpoean Telecomms Standardisation Institute)
	\begin{itemize}
		\item Classic GSM SIM
		\item UICC card as basis for various telecom ID purposes
		\item Card Application Toolkit (CAT)
	\end{itemize}
	\item 3GPP (3rd Generation Partnership Project)
	\begin{itemize}
		\item USIM Application
		\item USIM Application Toolkit (USAT)
		\item API based applet interworking
	\end{itemize}
	\item Global Platform
	\begin{itemize}
		\item Overall spec for SIM/USIM with Java
	\end{itemize}
	\item Sun Microsystems (now Oracle)
	\begin{itemize}
		\item Java Card Virtual Machine
		\item Java Card Runtime Environment
	\end{itemize}
\end{itemize}
\end{frame}

\begin{frame}{The Subscriber Identity Module (SIM)}
\begin{itemize}
	\item Basic idea was to store cryptographic identity of subscriber inside smart card
	\item User can thus migrate identity from one device to another
	\item User can furthermore use different SIM in same device (e.g. local prepaid SIM while travelling)
	\item Original SIM card design mostly ISO 7816-4 filesystem and single command to execute A3/A8 algorithm inside card
	\begin{itemize}
		\item This could even be done in logic, no processor required
	\end{itemize}
\end{itemize}
\end{frame}

\begin{frame}{The modern SIM}
The modern SIM is an entirely different beast
\begin{itemize}
	\item Cryptographic processor smart card
	\begin{itemize}
		\item Symmetric cryptography such as DES, 3DES, AES
		\item Public key cryptography such as RSA, ECC
	\end{itemize}
	\item Java Card including a small Java VM and Java RE
	\item Multiple application support
	\item Ability to download applications (Applets) into card
\end{itemize}
\end{frame}

\begin{frame}{Smart Card Basics}
\begin{itemize}
	\item microprocessor with RAM, Flash and Operating System
	\item Interface: Electrical + Logical Protocol (ISO7816-3, ISO7816-4)
	\item File System based representation of information
	\item Protocol describes remote operations on the file system
	\item Few non-filesystem related commands for e.g.  authentication
\end{itemize}
\end{frame}

\begin{frame}{Smart Card Filesystem}
\begin{itemize}
\item Hierarchical file system like on PC
\begin{description}[MF]
	\item[MF] (master file): root directory
	\item[DF] (dedicated file): subdirectory
	\item[EF] (entry file): actual file
	\begin{itemize}
		\item transparent or record oriented
		\item record linear fixed/variable or record cyclic
	\end{itemize}
\end{description}
\item File names don't exist on card. 16bit FID (File ID) or 8bit SFID used instead
\end{itemize}
\end{frame}

\begin{frame}{Smart Card Filesystem Hierarchy}
\begin{figure}[h]
	\centering
	\includegraphics[width=110mm]{sim-mf-df_gsm.png}
\end{figure}
\end{frame}


\begin{frame}{Smart Card Filesystem Permissions}
\begin{itemize}
	\item similar to 'permission bits' on Linux or other PC OS
	\item each file can define separate read/write permissions
	\item some cards are permanently read-only
	\item other files can be written to after regular PIN verification
	\item yet another set of files e.g. needs one of the ADM PINs
\end{itemize}
\end{frame}


%\begin{frame}{Smart Card Logical Channels}
%\begin{itemize}
%	\item Initially Smart Cards had only one interface (UART)
%	\item This means that only one application on the host side can interact with it, as there's sharde state
%	\item logical channels introduce a concept where this connection is virtualized, and multiple separate states (including with different access privileges) can exist in parallel
%\end{itemize}
%\end{frame}

\begin{frame}{SIM Card APDU Commands}
Classic SIM card commands include the following
\begin{itemize}
	\item SELECT (change directory / open file)
	\item READ BINARY, UPDATE BINARY (read/write transparent EF)
	\item READ RECORD, UPDATE RECORD (read/write record EF)
	\item ENABLE CHV, DISABLE CHV, CHANGE CHV (enable, disable or change PIN)
	\item VERIFY CHV, UNBLOCK CHV (verify or unblock PIN)
	\item RUN GSM ALGORITHM (A3/A8 authentication)
\end{itemize}
\end{frame}

\begin{frame}{Smart Card Filesystem}
Typical operations of the phone include
\begin{itemize}
	\item navigating inside filesystem by SELECT on DF/EF
	\item authenticating the user PIN
	\item reading/updating files
	\begin{itemize}
		\item reading IMSI
		\item old-school SMS and contact storage
		\item storing session keys (Kc/KcGPRS, ...)
		\item storing last cell on power-off
	\end{itemize}
\end{itemize}
\end{frame}

\begin{frame}{Smart Card PINs}
The level of access to the filesystem and other card features is
determined by authentication using a shared secret, called 'PIN'.
\begin{itemize}
	\item Regular PIN for normal use of the card by the end user
	\item PUK for resetting the pin after too many retries
	\item ADM1..n PIN for access by the operator only
\end{itemize}
\end{frame}

\begin{frame}{Multi-Application Smart Cards}
\begin{itemize}
	\item Classic SIM cards are single application, accessing the
		GSM related files works by entering the known DF.GSM
	 	directory with its well-known FID
	\item Later the idea of multi-application smart cards entered
		the market
	\item A multi-application smart card contains an EF.DIR in the
		MF
	\item EF.DIR contains records with the AIDs of all applications
		on the card.
	\item AID prefix is well-known to the application, AID suffix is
		manufacturer specific.  Applications use prefix-match
	\item application specific directory can be entered by SELECT on
		the AID
\end{itemize}
\end{frame}

\begin{frame}{USIM Application Dedicated File (ADF.USIM)}
\begin{figure}[h]
	\centering
	\includegraphics[width=110mm]{usim-dir-structure.png}
\end{figure}
\end{frame}


\subsection{From SIM to UICC and USIM}

\begin{frame}{Evolution of the SIM}
\begin{itemize}
	\item Classic GSM SIM cards
	\begin{itemize}
		\item initial GSM / ETSI TS 11.11 for classic GSM SIM, based on ISO 7816-2/3/4
		\item small changes for GPRS support by introducing a few new optional files
		\item Class byte 0xA0 used in GSM SIM
	\end{itemize}
	\item USIM cards
	\begin{itemize}
		\item Completely new approach based on ETSI UICC spec, multi-application capable
		\item Selection of ADF.USIM by AID
		\item Many new files
		\item backwards compatibility achieved by placing DF.GSM
			in MF and linking (think of symlink/hardlink) of
			relevant files
		\item Authentication for GSM and UMTS can be completely
			different (algorithm, secret key used, ...)
	\end{itemize}
	\item Additional application profiles exist for GSM-R, TETRA and
		other ETSI related communications systems.
\end{itemize}
\end{frame}

\begin{frame}{Evolution of Specifications}
\begin{itemize}
	\item Classic SIM: ETSI TS 11.11 / 3GPP TS 51.011
	\item UICC Card: 3GPP TS 31.101, 31.900, ETSI TS 102 221, 102 222
	\item USIM application: 3GPP TS 31.102
	\item ISIM application for IMS (VoIP for LTE): 3GPP TS 31.103
\end{itemize}
\end{frame}

\begin{frame}{ISIM Application Dedicated File (ADF.ISIM)}
\begin{figure}[h]
	\centering
	\includegraphics[width=110mm]{isim-dir-struct.png}
\end{figure}
\end{frame}

\subsection{SIM Application Toolkit (SAT)}

\begin{frame}{SIM Application Toolkit (SAT)}
\begin{itemize}
	\item Ability for card to run applications that have UI on the phone
	\begin{itemize}
		\item Display menu items on-screen
		\item Get user input from keypad/touch-screen
	\end{itemize}
	\item Original Version Described in TS 11.14 and 11.11
\end{itemize}
\end{frame}

\begin{frame}{SAT -- Proactive SIM}
The {\em Proactive SIM} features
\begin{itemize}
	\item Sending a short message
	\item Setting up a voice call
	\item Playback of a tone in earpiece
	\item Providing location information from ME to SIM
	\item Have ME execute timers on behalf of SIM
	\item Sending DTMF to network
	\item Running an AT command received from SIM, sending result back to SIM
	\item Ask ME to launch browser to SIM-provided URL
\end{itemize}
\end{frame}

\begin{frame}{SAT -- Call and SMS Control}
\begin{itemize}
	\item ME passes MO call setup attempts to SIM for approval
	\item SIM can then
	\begin{itemize}
		\item approve or decline the MO call
		\item modify the call details such as phone number
		\item replace the call with USSD message
	\end{itemize}
	\item ME passes USSD requests similar to Call Control
	\item Similar mechanism exists for all MO SMS
\end{itemize}
\end{frame}

\begin{frame}{SAT -- Provide local information}
The SIM can inquire the ME about
\begin{itemize}
	\item MCC / MNC / LAC / Cell ID
	\item IMEI of ME
	\item Network Measurement Results
	\item BCCH channel list
	\item Date, Time, Timezone
	\item ME language setting
	\item Timing Advance
\end{itemize}
\end{frame}

\begin{frame}{SAT -- Event download}
The SIM is notified by ME about certain events such as
\begin{itemize}
	\item Call Connected / Disconnected
	\item Location Status (Location Area change)
	\item User activity (keyboard input)
	\item Idle screen available
	\item Browser termination
\end{itemize}
\end{frame}

\begin{frame}{SAT - Data download}
\begin{itemize}
	\item Enables Operator to exchange arbitrary data with the SIM
	\item Could be RFM (Remote File Management)
	\begin{itemize}
		\item Read or modify phone book entries
		\item Even change the IMSI of the SIM (!)
	\end{itemize}
	\item In case of Java Card, can be download of card applets
	\begin{itemize}
		\item Applets are stored permanently on SIM
		\item Can later use SAT procedures to interact with ME
		\item TS 03.19 specifies Java API to access SAT from Java RE
	\end{itemize}
\end{itemize}
\end{frame}

\begin{frame}{SAT - Data download}
SAT Data Download can happen via
\begin{itemize}
	\item via SMS or Cell Broadcast
	\begin{itemize}
		\item Uses TS 03.40 TP-PID {\em SIM DATA Download}
		\item ME forwards such SMS to the SIM in {\tt ENVELOPE} APDU
		\item Response from SIM is sent back as MO-SMS or DELIVERY REPORT
	\end{itemize}
	\item via BIP (Bearer Independent Protocol)
	\begin{itemize}
		\item Dedicated CSD call between network and SIM
		\item GPRS session between network and SIM
	\end{itemize}
\end{itemize}
\end{frame}

\begin{frame}{SAT - Data download}{Data download security}
\begin{itemize}
	\item GSM TS 03.48 specifies secure messaging for data download
	\item Includes replay protection
	\item Supports DES and 3DES
	\item SMS chaining for long commands / large data
\end{itemize}
\end{frame}

\subsection{SIM threat model}
\begin{frame}{SIM card abuse by hostile operator}
\begin{itemize}
	\item Even if the phone might be considered trusted, the SIM card is owned and controlled by the operator
	\item Using SAT features, the operator can control many aspects of the phone
	\item Examples
	\begin{itemize}
		\item Remotely reading address book / stored SMS
		\item Monitor user behavior (browser termination, idle screen, ...)
		\item Ask phone to establish packet data session
	\end{itemize}
\end{itemize}
\end{frame}

\begin{frame}{SIM card re-programming by attacker}
\begin{itemize}
	\item If the SIM is not properly secured (auth + encryption keys, ...) a third party attacker can send SAT envelope SMS to the card and install resident Java applets
	\item The attacker can then
	\begin{itemize}
		\item Obtain detailed location information and send it via SMS
		\item Intercept/log outgoing calls
		\item Sending copies of incoming + outgoing SMS elsewhere
	\end{itemize}
	\item Even using SIM card channel to exploit baseband stack is feasible
\end{itemize}
\end{frame}

\begin{frame}{SIM card proxy / MITM by attacker}
As soon as an attacker has temporary physical access to a phone, he can
\begin{itemize}
	\item Insert a proxy-SIM between real SIM and phone
	\item Do everything a Java applet could do, but even with a securely configured SIM as he does not modify the existing SIM
	\item Sniff current Kc and send it out e.g. via SMS or even UDP/TCP packets over GPRS
	\item ... by only using standard interfaces that are common among all phones (as opposed to baseband software hacking which is very model-specific)
\end{itemize}
Most users would never notice this as they rarely check their SIM slot
\end{frame}

%%%%%%
\subsection{SIM attacks countermeasures}

\begin{frame}{Defending against SIM based attacks}
\begin{itemize}
	\item SIM cards are Operator issued, Ki is on the SIM
	\begin{itemize}
		\item SIM card can thus not be replaced, but original SIM must be used
	\end{itemize}
	\item Configure telephone to not store contacts or SMS on SIM
	\item Communication between SIM and ME is not encrypted/authenticated
	\item Solution: Proxy SIM between SIM and ME to break STK / OTA
	\begin{itemize}
		\item Filter all STK/OTA/Proactive commands like ENVELOPE
		\item Indicate lack of STK support to ME (EF.Phase)
	\end{itemize}
\end{itemize}
\end{frame}

\begin{frame}{Proxy SIM with firewall}
\begin{itemize}
	\item There are no known commercial products that implement STK/OTA filtering
	\item But there are a number of shim SIM cards that are plugged between SIM and SIM slot
	\item Most of them are used for SIM unlocking modern phones
	\item Some vendors produce freely (re)programmable proxy SIMs:
\end{itemize}
\begin{figure}[h]
\subfigure{\includegraphics[width=40mm]{bladox-turbosim.jpg}}
\subfigure{\includegraphics[width=25mm]{rebelsim2.jpg}}
	   \caption{Bladox TurboSIM (AVR) and RebelSIM II (8051)}
	   %\caption{Bladox Turbo SIM (AVR)}}
\end{figure}
\end{frame}
