Remote Smart Card Reader

Allow a host computer to use the smartphone’s NFC hardware as contact-less smartcard reader. On the host computer a special smart card driver, vpcd, must be installed. The app establishes a connection to vpcd over the network when a contact-less card is detected.

\input{$wd/bilder/tikzstyles.tex}
    \node (pcsc) [klein, aktivbox, inner xsep=.75cm, align=center] {PC/SC\\Framework};
\node (sca) [aktivbox, klein, left=.75cm of pcsc, align=center] {Smart Card\\Application};
\node (vpcd) [box, at=(pcsc.east), kleiner] {\texttt{vpcd}};
\node (phone) [right=2cm of vpcd] {\includegraphics[width=3cm]{$wd/bilder/smartphone.pdf}};
\node (app) [at=(phone.center)] {\includegraphics[width=2.8cm, height=4.9cm]{$wd/bilder/remote-reader.png}};
\node (card) [right=0cm of phone, rotate=45] {\includegraphics[width=2cm]{$wd/bilder/smartcard.pdf}};

\begin{pgfonlayer}{background}
    \node (box) [box, fit=(pcsc) (sca) (vpcd), inner ysep=1.5em] {};
    \node [at=(box.north west)] {\includegraphics[width=1cm]{$wd/bilder/computer-tango.pdf}};
    \path[linie]
    (sca) edge (pcsc)
    (vpcd) edge node {\includegraphics[width=1.5cm]{$wd/bilder/simplecloud.pdf}} (app)
    ;
    \draw [rfid] (phone.center) -- (card.center) ;
\end{pgfonlayer}

Remote Smart Card Reader used to access a contact-less card

The Remote Smart Card Reader has the following dependencies:

  • NFC hardware built into the smartphone
  • Android 4.4 “KitKat” or CyanogenMod 11 (or newer)
  • permissions for a data connection (communication with vpcd) and for using NFC (communication to the card); scanning the configuration via QR code requires permission to access the camera
  • vpcd installed on the host computer

For remotely accessing a traditional smart card reader on one computer from an other computer, the Virtual Smart Card in relay mode can be used:

\input{$wd/bilder/tikzstyles.tex}
    \node (pcsc) [klein, aktivbox, inner xsep=.75cm, align=center] {PC/SC\\Framework};
\node (sca) [aktivbox, klein, left=.75cm of pcsc, align=center] {Smart Card\\Application};
\node (vpcd) [box, at=(pcsc.east), kleiner] {\texttt{vpcd}};
    \node (pcsc2) [klein, aktivbox, inner xsep=.75cm, align=center, below=2.5cm of vpcd] {PC/SC\\Framework};
\node (vicc) [aktivbox, left=1cm of pcsc2, kleiner] {\texttt{vicc -t relay}};
\node (reader) [right=1cm of pcsc2] {\includegraphics[width=2cm]{$wd/bilder/my_cardreader.pdf}};
\node (card) [at=(reader.east), rotate=45] {\includegraphics[width=2cm]{$wd/bilder/smartcard.pdf}};

\begin{pgfonlayer}{background}
    \node (box) [box, fit=(pcsc) (sca) (vpcd), inner ysep=1.5em] {};
    \node (box2) [box, fit=(vicc) (pcsc2), inner ysep=1.5em] {};
    \node [at=(box.north west)] {\includegraphics[width=1cm]{$wd/bilder/computer-tango.pdf}};
    \node [at=(box2.north west)] {\includegraphics[width=1cm]{$wd/bilder/computer-tango.pdf}};
    \path[linie]
    (sca) edge (pcsc)
    (vpcd) edge [out=south, in=north] node {\includegraphics[width=1.5cm]{$wd/bilder/simplecloud.pdf}} (vicc)
    (vicc) edge (pcsc2)
    (pcsc2) edge [usb] (reader.center)
    ;
\end{pgfonlayer}

Virtual Smart Card used in relay mode to remotely access a card

Note

This software can actually be used in a relay attack allowing full access to the card. We discussed the impact especially on the Relay attack against the German ID card, but it generally concerns all contact-less smart cards.

Download and Install

The Remote Smart Card Reader is available on F-Droid [2].

Remote Smart Card Reader on F-Droid

To manually compile the app you need to fetch the sources:

git clone https://github.com/frankmorgner/vsmartcard.git

We use Android Studio [1] to build and deploy the application. Use File ‣ Open to select vsmartcard/remote-reader. Attach your smartphone and choose Run ‣ Run ‘app’.

On the host system, where the smart card at the phone’s NFC interface is relayed to, vpcd needs to be installed. It can be installed on Windows and Unix. On the host computer, vpcd-config prints a QR code to configure the Remote Smart Card Reader. Scan the configuration with the bar code scanner of your choice.

Question

Do you have questions, suggestions or contributions? Feedback of any kind is more than welcome! Please use our project trackers.