diff --git a/ccid/doc/README.txt b/ccid/doc/README.txt index ce64179..1b43b5f 100644 --- a/ccid/doc/README.txt +++ b/ccid/doc/README.txt @@ -69,6 +69,89 @@ The USB CCID Emulator is implemented using GadgetFS_. Some fragments of the sour code are based on the GadgetFS example and on the source code of the OpenSC tools. +.. tikz:: Software stack of the USB CCID Emulator running on the OpenMoko Neo FreeRunner + :libs: arrows, calc, fit, patterns, plotmarks, shapes.geometric, shapes.misc, shapes.symbols, shapes.arrows, shapes.callouts, shapes.multipart, shapes.gates.logic.US, shapes.gates.logic.IEC, er, automata, backgrounds, chains, topaths, trees, petri, mindmap, matrix, calendar, folding, fadings, through, positioning, scopes, decorations.fractals, decorations.shapes, decorations.text, decorations.pathmorphing, decorations.pathreplacing, decorations.footprints, decorations.markings, shadows + + \definecolor{hublue}{cmyk}{1.00, 0.60, 0.00, 0.20} + \definecolor{hured}{cmyk}{0.00, 0.90, 0.80, 0.40} + \definecolor{hugreen}{cmyk}{0.90, 0.10, 0.80, 0.40} + \definecolor{husand}{cmyk}{0.00, 0.05, 0.50, 0.20} + \definecolor{huslategreen}{cmyk}{0.00, 0.00, 0.10, 0.20} + \definecolor{huslateblue}{cmyk}{0.10, 0.00, 0.00, 0.20} + \tikzstyle{klein}=[font={\small}] + \tikzstyle{kleiner}=[font={\footnotesize}] + \tikzstyle{box}=[line width=2pt, draw=huslateblue, rounded corners, inner + sep=.2cm, shadeslate, drop shadow={opacity=.15}, shadow scale=1.05] + \tikzstyle{aktivbox}=[box, darkshadeslate] + \tikzstyle{nichtrundelinie}=[line width=2pt, draw=hublue, kleiner, color=hublue] + \tikzstyle{linie}=[nichtrundelinie, line cap=round] + \tikzstyle{pfeil}=[linie, -stealth'] + \tikzstyle{doppelpfeil}=[linie, stealth'-stealth'] + \tikzstyle{usb}=[line width=2pt, line cap=round, draw=black, decorate, + decoration=coil, kleiner] + \tikzstyle{rfid}=[decorate, decoration={expanding waves, angle=30, segment + length=6}, nichtrundelinie] + \tikzstyle{shadeslate}=[shade, top color=huslateblue!2, bottom color=huslateblue!10] + \tikzstyle{darkshadeslate}=[shade, top color=huslateblue!20, bottom + color=huslateblue!50] + \tikzstyle{internet}=[cloud, cloud ignores aspect, minimum height=1.5cm, kleiner, + line width=2pt, draw=huslateblue, inner sep=.2cm, darkshadeslate, + drop shadow={opacity=.15}, shadow scale=1.05] + + \pgfdeclarelayer{foreground} + \pgfsetlayers{background,main,foreground} + [klein] + \tikzstyle{schicht}=[text width=5cm, align=right] + \tikzstyle{fade down}=[path fading=south, color=huslateblue] + + \node (kernel) + [box, shape=rectangle split, rectangle split parts=3, kleiner] + {Linux Kernel + \nodepart{second} + \footnotesize S3C24xx Controller Driver + \nodepart{third} + \footnotesize GadgetFS + }; + + \node (ccid) + [aktivbox, shape=rectangle split, rectangle split parts=2, below=of kernel] + {CCID Emulator + \nodepart{second} + \texttt{usb}\qquad\texttt{ccid} + }; + \draw [box] ($(ccid.text split)-(.05cm,0)$) -- ($(ccid.south)-(.05cm,0)$); + + \node (opensc) [box, below=of ccid, kleiner] {\texttt{libnpa} or OpenSC}; + + \node (controller) [klein, right=0of kernel.two east, schicht] + {Driver for USB Controller}; + \node (gadget) [klein, right=0of kernel.three east, schicht] + {Gadget Driver}; + \node (upper) [klein, right=0of kernel.three east, schicht, yshift=-1.75cm] + {Upper Layers}; + + \tikzstyle{rechts}=[to path={-- ++(1,0) |- (\tikztotarget)}] + \tikzstyle{links}=[to path={-- ++(-1,0) |- (\tikztotarget)}] + \begin{pgfonlayer}{background} + \path + (ccid.two west) edge [links, linie] (kernel.three west) + (ccid.two east) edge [rechts, linie] (opensc.east) + ; + + \path [color=black!30] + (controller.north east) edge +(-9,0) + (gadget.north east) edge +(-9,0) + (upper.north east) edge +(-9,0) + ; + \end{pgfonlayer} + + \node [kleiner, anchor=east, text width=3cm] + at ($($(ccid.two west)+(-3,0)$)!.5!(kernel.three west)$) + {\color{hublue} + \texttt{/dev/gadget/ep1-bulk}\\ + \texttt{/dev/gadget/ep2-bulk}\\ + \texttt{/dev/gadget/ep3-bulk}\\}; + .. include:: download.txt diff --git a/ccid/doc/README.txt.in b/ccid/doc/README.txt.in index f640533..e1d2232 100644 --- a/ccid/doc/README.txt.in +++ b/ccid/doc/README.txt.in @@ -69,6 +69,89 @@ The @PACKAGE_NAME@ is implemented using GadgetFS_. Some fragments of the source code are based on the GadgetFS example and on the source code of the OpenSC tools. +.. tikz:: Software stack of the @PACKAGE_NAME@ running on the OpenMoko Neo FreeRunner + :libs: arrows, calc, fit, patterns, plotmarks, shapes.geometric, shapes.misc, shapes.symbols, shapes.arrows, shapes.callouts, shapes.multipart, shapes.gates.logic.US, shapes.gates.logic.IEC, er, automata, backgrounds, chains, topaths, trees, petri, mindmap, matrix, calendar, folding, fadings, through, positioning, scopes, decorations.fractals, decorations.shapes, decorations.text, decorations.pathmorphing, decorations.pathreplacing, decorations.footprints, decorations.markings, shadows + + \definecolor{hublue}{cmyk}{1.00, 0.60, 0.00, 0.20} + \definecolor{hured}{cmyk}{0.00, 0.90, 0.80, 0.40} + \definecolor{hugreen}{cmyk}{0.90, 0.10, 0.80, 0.40} + \definecolor{husand}{cmyk}{0.00, 0.05, 0.50, 0.20} + \definecolor{huslategreen}{cmyk}{0.00, 0.00, 0.10, 0.20} + \definecolor{huslateblue}{cmyk}{0.10, 0.00, 0.00, 0.20} + \tikzstyle{klein}=[font={\small}] + \tikzstyle{kleiner}=[font={\footnotesize}] + \tikzstyle{box}=[line width=2pt, draw=huslateblue, rounded corners, inner + sep=.2cm, shadeslate, drop shadow={opacity=.15}, shadow scale=1.05] + \tikzstyle{aktivbox}=[box, darkshadeslate] + \tikzstyle{nichtrundelinie}=[line width=2pt, draw=hublue, kleiner, color=hublue] + \tikzstyle{linie}=[nichtrundelinie, line cap=round] + \tikzstyle{pfeil}=[linie, -stealth'] + \tikzstyle{doppelpfeil}=[linie, stealth'-stealth'] + \tikzstyle{usb}=[line width=2pt, line cap=round, draw=black, decorate, + decoration=coil, kleiner] + \tikzstyle{rfid}=[decorate, decoration={expanding waves, angle=30, segment + length=6}, nichtrundelinie] + \tikzstyle{shadeslate}=[shade, top color=huslateblue!2, bottom color=huslateblue!10] + \tikzstyle{darkshadeslate}=[shade, top color=huslateblue!20, bottom + color=huslateblue!50] + \tikzstyle{internet}=[cloud, cloud ignores aspect, minimum height=1.5cm, kleiner, + line width=2pt, draw=huslateblue, inner sep=.2cm, darkshadeslate, + drop shadow={opacity=.15}, shadow scale=1.05] + + \pgfdeclarelayer{foreground} + \pgfsetlayers{background,main,foreground} + [klein] + \tikzstyle{schicht}=[text width=5cm, align=right] + \tikzstyle{fade down}=[path fading=south, color=huslateblue] + + \node (kernel) + [box, shape=rectangle split, rectangle split parts=3, kleiner] + {Linux Kernel + \nodepart{second} + \footnotesize S3C24xx Controller Driver + \nodepart{third} + \footnotesize GadgetFS + }; + + \node (ccid) + [aktivbox, shape=rectangle split, rectangle split parts=2, below=of kernel] + {CCID Emulator + \nodepart{second} + \texttt{usb}\qquad\texttt{ccid} + }; + \draw [box] ($(ccid.text split)-(.05cm,0)$) -- ($(ccid.south)-(.05cm,0)$); + + \node (opensc) [box, below=of ccid, kleiner] {\texttt{libnpa} or OpenSC}; + + \node (controller) [klein, right=0of kernel.two east, schicht] + {Driver for USB Controller}; + \node (gadget) [klein, right=0of kernel.three east, schicht] + {Gadget Driver}; + \node (upper) [klein, right=0of kernel.three east, schicht, yshift=-1.75cm] + {Upper Layers}; + + \tikzstyle{rechts}=[to path={-- ++(1,0) |- (\tikztotarget)}] + \tikzstyle{links}=[to path={-- ++(-1,0) |- (\tikztotarget)}] + \begin{pgfonlayer}{background} + \path + (ccid.two west) edge [links, linie] (kernel.three west) + (ccid.two east) edge [rechts, linie] (opensc.east) + ; + + \path [color=black!30] + (controller.north east) edge +(-9,0) + (gadget.north east) edge +(-9,0) + (upper.north east) edge +(-9,0) + ; + \end{pgfonlayer} + + \node [kleiner, anchor=east, text width=3cm] + at ($($(ccid.two west)+(-3,0)$)!.5!(kernel.three west)$) + {\color{hublue} + \texttt{/dev/gadget/ep1-bulk}\\ + \texttt{/dev/gadget/ep2-bulk}\\ + \texttt{/dev/gadget/ep3-bulk}\\}; + .. include:: download.txt diff --git a/doc/_static/nfc-emulator-arch.jpeg b/doc/_static/nfc-emulator-arch.jpeg deleted file mode 100644 index 4d88f84..0000000 Binary files a/doc/_static/nfc-emulator-arch.jpeg and /dev/null differ diff --git a/doc/_static/nfc-emulator.jpeg b/doc/_static/nfc-emulator.jpeg deleted file mode 100644 index 6db01f4..0000000 Binary files a/doc/_static/nfc-emulator.jpeg and /dev/null differ diff --git a/doc/_static/usb-emulator-arch.jpeg b/doc/_static/usb-emulator-arch.jpeg deleted file mode 100644 index b264b30..0000000 Binary files a/doc/_static/usb-emulator-arch.jpeg and /dev/null differ diff --git a/doc/_static/usb-emulator.jpeg b/doc/_static/usb-emulator.jpeg deleted file mode 100644 index 9c3110c..0000000 Binary files a/doc/_static/usb-emulator.jpeg and /dev/null differ diff --git a/doc/_static/vsmartcard.jpeg b/doc/_static/vsmartcard.jpeg deleted file mode 100644 index fff2e08..0000000 Binary files a/doc/_static/vsmartcard.jpeg and /dev/null differ diff --git a/doc/bilder/Firewall.pdf b/doc/bilder/Firewall.pdf new file mode 100644 index 0000000..6446432 Binary files /dev/null and b/doc/bilder/Firewall.pdf differ diff --git a/doc/bilder/computer-tango.pdf b/doc/bilder/computer-tango.pdf new file mode 100644 index 0000000..fc72f3a Binary files /dev/null and b/doc/bilder/computer-tango.pdf differ diff --git a/doc/bilder/display.pdf b/doc/bilder/display.pdf new file mode 100644 index 0000000..85e198c Binary files /dev/null and b/doc/bilder/display.pdf differ diff --git a/doc/bilder/ivak_kiosk-terminal.pdf b/doc/bilder/ivak_kiosk-terminal.pdf new file mode 100644 index 0000000..e051276 Binary files /dev/null and b/doc/bilder/ivak_kiosk-terminal.pdf differ diff --git a/doc/bilder/keyboard.pdf b/doc/bilder/keyboard.pdf new file mode 100644 index 0000000..b77e0d3 Binary files /dev/null and b/doc/bilder/keyboard.pdf differ diff --git a/doc/bilder/moko/basisleser_plain_klein.png b/doc/bilder/moko/basisleser_plain_klein.png new file mode 100644 index 0000000..4d5a6b0 Binary files /dev/null and b/doc/bilder/moko/basisleser_plain_klein.png differ diff --git a/doc/bilder/moko/moko_reader.png b/doc/bilder/moko/moko_reader.png new file mode 100644 index 0000000..f71f4ca Binary files /dev/null and b/doc/bilder/moko/moko_reader.png differ diff --git a/doc/bilder/my_cardreader.pdf b/doc/bilder/my_cardreader.pdf new file mode 100644 index 0000000..db69b13 Binary files /dev/null and b/doc/bilder/my_cardreader.pdf differ diff --git a/doc/bilder/nPA_VS.png b/doc/bilder/nPA_VS.png new file mode 100644 index 0000000..52a410b Binary files /dev/null and b/doc/bilder/nPA_VS.png differ diff --git a/doc/bilder/network-wireless.pdf b/doc/bilder/network-wireless.pdf new file mode 100644 index 0000000..ef160c6 Binary files /dev/null and b/doc/bilder/network-wireless.pdf differ diff --git a/doc/bilder/phone-fic-neo-freerunner.pdf b/doc/bilder/phone-fic-neo-freerunner.pdf new file mode 100644 index 0000000..250f50e Binary files /dev/null and b/doc/bilder/phone-fic-neo-freerunner.pdf differ diff --git a/doc/bilder/touchatag.png b/doc/bilder/touchatag.png new file mode 100644 index 0000000..f73d634 Binary files /dev/null and b/doc/bilder/touchatag.png differ diff --git a/doc/conf.py b/doc/conf.py index db2e2d5..709869d 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -35,7 +35,7 @@ needs_sphinx = '1.1' # Add any Sphinx extension module names here, as strings. They can be extensions # coming with Sphinx (named 'sphinx.ext.*') or your custom ones. -extensions = ["breathe", "sphinxcontrib.doxylink", "sphinx.ext.autosummary", "sphinxcontrib.programoutput", "sphinx.ext.inheritance_diagram"] +extensions = ["breathe", "sphinxcontrib.doxylink", "sphinx.ext.autosummary", "sphinxcontrib.programoutput", "sphinx.ext.inheritance_diagram", "sphinxcontrib.tikz", 'sphinxcontrib.bibtex'] # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] diff --git a/doc/index.txt b/doc/index.txt index 9507768..6c71802 100644 --- a/doc/index.txt +++ b/doc/index.txt @@ -2,17 +2,70 @@ .. |vsmartcard| replace:: Virtual Smart Card Architecture +################################################################################ Welcome to the |vsmartcard| documentation! -========================================================== +################################################################################ Welcome to the |vsmartcard|. |vsmartcard| is an umbrella project for various projects concerned with the emulation of different types of smart card readers or smart cards themselves. -.. image:: _static/vsmartcard.jpeg - :alt: |vsmartcard| connects different aspects of smart card handling - :scale: 50% - :align: center +.. tikz:: |vsmartcard| connects different aspects of smart card handling + :libs: arrows, calc, fit, patterns, plotmarks, shapes.geometric, shapes.misc, shapes.symbols, shapes.arrows, shapes.callouts, shapes.multipart, shapes.gates.logic.US, shapes.gates.logic.IEC, er, automata, backgrounds, chains, topaths, trees, petri, mindmap, matrix, calendar, folding, fadings, through, positioning, scopes, decorations.fractals, decorations.shapes, decorations.text, decorations.pathmorphing, decorations.pathreplacing, decorations.footprints, decorations.markings, shadows + + \definecolor{hublue}{cmyk}{1.00, 0.60, 0.00, 0.20} + \definecolor{hured}{cmyk}{0.00, 0.90, 0.80, 0.40} + \definecolor{hugreen}{cmyk}{0.90, 0.10, 0.80, 0.40} + \definecolor{husand}{cmyk}{0.00, 0.05, 0.50, 0.20} + \definecolor{huslategreen}{cmyk}{0.00, 0.00, 0.10, 0.20} + \definecolor{huslateblue}{cmyk}{0.10, 0.00, 0.00, 0.20} + \tikzstyle{klein}=[font={\small}] + \tikzstyle{kleiner}=[font={\footnotesize}] + \tikzstyle{box}=[line width=2pt, draw=huslateblue, rounded corners, inner + sep=.2cm, shadeslate, drop shadow={opacity=.15}, shadow scale=1.05] + \tikzstyle{aktivbox}=[box, darkshadeslate] + \tikzstyle{nichtrundelinie}=[line width=2pt, draw=hublue, kleiner, color=hublue] + \tikzstyle{linie}=[nichtrundelinie, line cap=round] + \tikzstyle{pfeil}=[linie, -stealth'] + \tikzstyle{doppelpfeil}=[linie, stealth'-stealth'] + \tikzstyle{usb}=[line width=2pt, line cap=round, draw=black, decorate, + decoration=coil, kleiner] + \tikzstyle{rfid}=[decorate, decoration={expanding waves, angle=30, segment + length=6}, nichtrundelinie] + \tikzstyle{shadeslate}=[shade, top color=huslateblue!2, bottom color=huslateblue!10] + \tikzstyle{darkshadeslate}=[shade, top color=huslateblue!20, bottom + color=huslateblue!50] + \tikzstyle{internet}=[cloud, cloud ignores aspect, minimum height=1.5cm, kleiner, + line width=2pt, draw=huslateblue, inner sep=.2cm, darkshadeslate, + drop shadow={opacity=.15}, shadow scale=1.05] + + \pgfdeclarelayer{foreground} + \pgfsetlayers{background,main,foreground} + \tikzstyle{bla}=[box, klein, rounded rectangle, inner sep=.3cm] + + \node (a) {}; + + \node[bla, above left=.5cm of a] + (usb) {USB Terminal}; + + \node[bla, below left=.5cm of a] + (nfc) {NFC Terminal}; + + \node[bla, rounded rectangle left arc=concave, above right=.5cm of a] + (sc) {Real Smart Card}; + + \node[bla, rounded rectangle left arc=concave, below right=.5cm of a] + (vsc) {Virtual Smart Card}; + + \begin{pgfonlayer}{background} + \path[line width=.8cm,color=hublue!20] + (a.mid) edge [out=180, in=0] (usb.center) + edge [out=180, in=0] (nfc.center) + edge [out=0, in=180] (sc.center) + edge [out=0, in=180] (vsc.center) + ; + \end{pgfonlayer} + Currently the following projects are part of |vsmartcard|: @@ -41,24 +94,373 @@ Example Use Cases Mobile Phone with Virtual Smartcard connected via NFC ***************************************************** -.. image:: _static/nfc-emulator.jpeg - :alt: Overview - :width: 320px +.. tikz:: Emulating a smart card for checking an untrusted device + :stringsubst: + :libs: arrows, calc, fit, patterns, plotmarks, shapes.geometric, shapes.misc, shapes.symbols, shapes.arrows, shapes.callouts, shapes.multipart, shapes.gates.logic.US, shapes.gates.logic.IEC, er, automata, backgrounds, chains, topaths, trees, petri, mindmap, matrix, calendar, folding, fadings, through, positioning, scopes, decorations.fractals, decorations.shapes, decorations.text, decorations.pathmorphing, decorations.pathreplacing, decorations.footprints, decorations.markings, shadows -.. image:: _static/nfc-emulator-arch.jpeg - :alt: Architecture - :width: 320px + \definecolor{hublue}{cmyk}{1.00, 0.60, 0.00, 0.20} + \definecolor{hured}{cmyk}{0.00, 0.90, 0.80, 0.40} + \definecolor{hugreen}{cmyk}{0.90, 0.10, 0.80, 0.40} + \definecolor{husand}{cmyk}{0.00, 0.05, 0.50, 0.20} + \definecolor{huslategreen}{cmyk}{0.00, 0.00, 0.10, 0.20} + \definecolor{huslateblue}{cmyk}{0.10, 0.00, 0.00, 0.20} + \tikzstyle{klein}=[font={\small}] + \tikzstyle{kleiner}=[font={\footnotesize}] + \tikzstyle{box}=[line width=2pt, draw=huslateblue, rounded corners, inner + sep=.2cm, shadeslate, drop shadow={opacity=.15}, shadow scale=1.05] + \tikzstyle{aktivbox}=[box, darkshadeslate] + \tikzstyle{nichtrundelinie}=[line width=2pt, draw=hublue, kleiner, color=hublue] + \tikzstyle{linie}=[nichtrundelinie, line cap=round] + \tikzstyle{pfeil}=[linie, -stealth'] + \tikzstyle{doppelpfeil}=[linie, stealth'-stealth'] + \tikzstyle{usb}=[line width=2pt, line cap=round, draw=black, decorate, + decoration=coil, kleiner] + \tikzstyle{rfid}=[decorate, decoration={expanding waves, angle=30, segment + length=6}, nichtrundelinie] + \tikzstyle{shadeslate}=[shade, top color=huslateblue!2, bottom color=huslateblue!10] + \tikzstyle{darkshadeslate}=[shade, top color=huslateblue!20, bottom + color=huslateblue!50] + \tikzstyle{internet}=[cloud, cloud ignores aspect, minimum height=1.5cm, kleiner, + line width=2pt, draw=huslateblue, inner sep=.2cm, darkshadeslate, + drop shadow={opacity=.15}, shadow scale=1.05] -Mobile Phone with Virtual Smartcard connected via USB -***************************************************** + \pgfdeclarelayer{foreground} + \pgfsetlayers{background,main,foreground} + [klein] + \tikzstyle{bla}=[kleiner, text width=.45\textwidth] -.. image:: _static/usb-emulator.jpeg - :alt: Overview - :width: 320px + \node (antenna) + {\includegraphics[width=1cm]{%(wd)s/bilder/network-wireless.pdf}}; + \node (antennatext) [right=0of antenna, bla] + {Smartphone emulates nPA via NFC}; + \node (display) [below=.25of antenna] + {\includegraphics[width=1cm]{%(wd)s/bilder/display.pdf}}; + \node (displaytext) [right=0of display, bla] + {Display service provider, purpose of transaction, security context, + requested permissions}; + \node (firewall) [below=.25of display] + {\includegraphics[width=1cm]{%(wd)s/bilder/Firewall.pdf}}; + \node (firewalltext) [right=0of firewall, bla] + {Verification of terminal authentication and sanitiy checks}; + + \node (features) [fit=(display) (antenna) (firewall)] {}; + + \node (moko) [left=0of features.west] {\includegraphics[height=4cm]{%(wd)s/bilder/phone-fic-neo-freerunner.pdf}}; + + \node (pc) [left=1.5of moko] + {\includegraphics[width=2cm]{%(wd)s/bilder/ivak_kiosk-terminal.pdf}}; + + \begin{pgfonlayer}{background} + + \node (mokobox) + [box, + fit=(moko) (antennatext) (displaytext) (firewalltext) + (features)] {}; + + \draw [rfid] + (pc) -- (moko) ; + + \end{pgfonlayer} + + +.. tikz:: Implementation of the nPA emulator + :stringsubst: + :libs: arrows, calc, fit, patterns, plotmarks, shapes.geometric, shapes.misc, shapes.symbols, shapes.arrows, shapes.callouts, shapes.multipart, shapes.gates.logic.US, shapes.gates.logic.IEC, er, automata, backgrounds, chains, topaths, trees, petri, mindmap, matrix, calendar, folding, fadings, through, positioning, scopes, decorations.fractals, decorations.shapes, decorations.text, decorations.pathmorphing, decorations.pathreplacing, decorations.footprints, decorations.markings, shadows + + \definecolor{hublue}{cmyk}{1.00, 0.60, 0.00, 0.20} + \definecolor{hured}{cmyk}{0.00, 0.90, 0.80, 0.40} + \definecolor{hugreen}{cmyk}{0.90, 0.10, 0.80, 0.40} + \definecolor{husand}{cmyk}{0.00, 0.05, 0.50, 0.20} + \definecolor{huslategreen}{cmyk}{0.00, 0.00, 0.10, 0.20} + \definecolor{huslateblue}{cmyk}{0.10, 0.00, 0.00, 0.20} + \tikzstyle{klein}=[font={\small}] + \tikzstyle{kleiner}=[font={\footnotesize}] + \tikzstyle{box}=[line width=2pt, draw=huslateblue, rounded corners, inner + sep=.2cm, shadeslate, drop shadow={opacity=.15}, shadow scale=1.05] + \tikzstyle{aktivbox}=[box, darkshadeslate] + \tikzstyle{nichtrundelinie}=[line width=2pt, draw=hublue, kleiner, color=hublue] + \tikzstyle{linie}=[nichtrundelinie, line cap=round] + \tikzstyle{pfeil}=[linie, -stealth'] + \tikzstyle{doppelpfeil}=[linie, stealth'-stealth'] + \tikzstyle{usb}=[line width=2pt, line cap=round, draw=black, decorate, + decoration=coil, kleiner] + \tikzstyle{rfid}=[decorate, decoration={expanding waves, angle=30, segment + length=6}, nichtrundelinie] + \tikzstyle{shadeslate}=[shade, top color=huslateblue!2, bottom color=huslateblue!10] + \tikzstyle{darkshadeslate}=[shade, top color=huslateblue!20, bottom + color=huslateblue!50] + \tikzstyle{internet}=[cloud, cloud ignores aspect, minimum height=1.5cm, kleiner, + line width=2pt, draw=huslateblue, inner sep=.2cm, darkshadeslate, + drop shadow={opacity=.15}, shadow scale=1.05] + + \pgfdeclarelayer{foreground} + \pgfsetlayers{background,main,foreground} + [klein] + \tikzstyle{bla}=[shape=rectangle split, rectangle split parts=2, + every text node part/.style={align=center, klein}, text width=7cm, + every second node part/.style={kleiner}, inner sep=0pt] + + \tikzstyle{keks}=[to path={-- ++(.1,0) |- (\tikztotarget)}] + + \node (touchatag) + {\includegraphics[keepaspectratio, height=2cm, + width=2cm]{%(wd)s/bilder/touchatag.png}}; + \node (touchatagbeschreibung) [below=0cm of touchatag, kleiner] + {touchatag}; + + \node (pcsc-relay) [right=of touchatag] + {\texttt{pcsc-relay}}; + \node (pcsc-relaybeschreibung) [below=0cm of pcsc-relay, kleiner] + {NFC emulator + }; + + \node (vicc) [right=of pcsc-relay] + {\texttt{vicc -t nPA}}; + \node (viccbeschreibung) [below=0cm of vicc, kleiner] + {nPA emulator}; + + \node (group) [fit=(touchatag) (pcsc-relay) (vicc) (touchatagbeschreibung) + (pcsc-relaybeschreibung) (viccbeschreibung)] {}; + \node (funktionenchat) [below=0cm of group, bla] + { + PACE + \nodepart{second} + \begin{itemize} + \item Display context (eID/eSign) + \item Display requested permissions + \end{itemize} + }; + \node (funktionenpace) [below=.5 of funktionenchat, bla] + { + Terminal Authentication + \nodepart{second} + \begin{itemize} + \item Verify authenticy of terminal + \item Check freshness of cv certificate + \item With certificate database + \begin{itemize} + \item Identification of service provider + \item Display purpose of transaction + \end{itemize} + \end{itemize} + }; + + \begin{pgfonlayer}{background} + \node (box) [fit=(touchatag) (pcsc-relay) (vicc) (touchatagbeschreibung) + (pcsc-relaybeschreibung) (viccbeschreibung) (funktionenchat) + (funktionenpace), box, inner sep=.5cm] {}; + \node (boxbild) at (box.north west) + {\includegraphics[keepaspectratio, height=1.5cm, + width=1.5cm]{%(wd)s/bilder/moko/moko_reader.png}}; + \node [right=0cm of boxbild.east, yshift=.3cm] + {Openmoko Neo FreeRunner}; + \end{pgfonlayer} + + \node (a) [left=1.5of box] + {\includegraphics[keepaspectratio, height=4cm, + width=4cm]{%(wd)s/bilder/ivak_kiosk-terminal.pdf}}; + \node (e) [below=0cm of a, text width=2.5cm, align=center] + {(Public) Terminal}; + + + \begin{pgfonlayer}{background} + \path + (touchatag) edge [doppelpfeil] (pcsc-relay) + (pcsc-relay) edge [doppelpfeil] (vicc) + (vicc.east) edge [keks, pfeil] (funktionenchat.text east) + (vicc.east) edge [keks, pfeil] (funktionenpace.text east) + (a) edge [decorate, decoration={expanding waves, angle=20, segment + length=6}, nichtrundelinie] (touchatag.south west); + \end{pgfonlayer} + + +Mobile Smart Card Reader +************************ + +.. tikz:: Portable smart card reader with trusted user interface + :stringsubst: + :libs: arrows, calc, fit, patterns, plotmarks, shapes.geometric, shapes.misc, shapes.symbols, shapes.arrows, shapes.callouts, shapes.multipart, shapes.gates.logic.US, shapes.gates.logic.IEC, er, automata, backgrounds, chains, topaths, trees, petri, mindmap, matrix, calendar, folding, fadings, through, positioning, scopes, decorations.fractals, decorations.shapes, decorations.text, decorations.pathmorphing, decorations.pathreplacing, decorations.footprints, decorations.markings, shadows + + \definecolor{hublue}{cmyk}{1.00, 0.60, 0.00, 0.20} + \definecolor{hured}{cmyk}{0.00, 0.90, 0.80, 0.40} + \definecolor{hugreen}{cmyk}{0.90, 0.10, 0.80, 0.40} + \definecolor{husand}{cmyk}{0.00, 0.05, 0.50, 0.20} + \definecolor{huslategreen}{cmyk}{0.00, 0.00, 0.10, 0.20} + \definecolor{huslateblue}{cmyk}{0.10, 0.00, 0.00, 0.20} + \tikzstyle{klein}=[font={\small}] + \tikzstyle{kleiner}=[font={\footnotesize}] + \tikzstyle{box}=[line width=2pt, draw=huslateblue, rounded corners, inner + sep=.2cm, shadeslate, drop shadow={opacity=.15}, shadow scale=1.05] + \tikzstyle{aktivbox}=[box, darkshadeslate] + \tikzstyle{nichtrundelinie}=[line width=2pt, draw=hublue, kleiner, color=hublue] + \tikzstyle{linie}=[nichtrundelinie, line cap=round] + \tikzstyle{pfeil}=[linie, -stealth'] + \tikzstyle{doppelpfeil}=[linie, stealth'-stealth'] + \tikzstyle{usb}=[line width=2pt, line cap=round, draw=black, decorate, + decoration=coil, kleiner] + \tikzstyle{rfid}=[decorate, decoration={expanding waves, angle=30, segment + length=6}, nichtrundelinie] + \tikzstyle{shadeslate}=[shade, top color=huslateblue!2, bottom color=huslateblue!10] + \tikzstyle{darkshadeslate}=[shade, top color=huslateblue!20, bottom + color=huslateblue!50] + \tikzstyle{internet}=[cloud, cloud ignores aspect, minimum height=1.5cm, kleiner, + line width=2pt, draw=huslateblue, inner sep=.2cm, darkshadeslate, + drop shadow={opacity=.15}, shadow scale=1.05] + + \pgfdeclarelayer{foreground} + \pgfsetlayers{background,main,foreground} + [klein] + \tikzstyle{bla}=[kleiner, text width=.45\textwidth] + + \node (reader) + {\includegraphics[width=1cm]{%(wd)s/bilder/my_cardreader.pdf}}; + \node (readertext) [right=0of reader, bla] + {Smartphone provides smart card reader via USB}; + \node (display) [below=0of reader] + {\includegraphics[width=1cm]{%(wd)s/bilder/display.pdf}}; + \node (displaytext) [right=0of display, bla] + {Secure display of service provider and purpose of transaction}; + \node (keyboard) [below=0of display] + {\includegraphics[width=1cm]{%(wd)s/bilder/keyboard.pdf}}; + \node (keyboardtext) [right=0of keyboard, bla] + {Secure PIN Entry}; + \node (firewall) [below=0of keyboard] + {\includegraphics[width=1cm]{%(wd)s/bilder/Firewall.pdf}}; + \node (firewalltext) [right=0of firewall, bla] + {Verification of terminal authentication and sanitiy checks}; + + \node (features) [fit=(display) (keyboard) (reader) (firewall)] {}; + + \node (moko) [left=0of features.west] {\includegraphics[height=4cm]{%(wd)s/bilder/phone-fic-neo-freerunner.pdf}}; + + \node (epa) [left=1.5of moko, yshift=-2cm] + {\includegraphics[width=3cm]{%(wd)s/bilder/nPA_VS.png}}; + \node (pc) [left=1.5of moko, yshift=1.5cm] + {\includegraphics[width=3cm]{%(wd)s/bilder/computer-tango.pdf}}; + + \begin{pgfonlayer}{background} + + \node (mokobox) + [box, + fit=(moko) (readertext) (displaytext) (keyboardtext) (firewalltext) + (features)] {}; + + \draw [usb] + (moko) -- (pc.center) ; + \draw [decorate, decoration={expanding waves, angle=20, segment length=6}, nichtrundelinie] + (moko) -- (epa) ; + + \end{pgfonlayer} + +.. tikz:: Implementation of a mobile smart card reader + :stringsubst: + :libs: arrows, calc, fit, patterns, plotmarks, shapes.geometric, shapes.misc, shapes.symbols, shapes.arrows, shapes.callouts, shapes.multipart, shapes.gates.logic.US, shapes.gates.logic.IEC, er, automata, backgrounds, chains, topaths, trees, petri, mindmap, matrix, calendar, folding, fadings, through, positioning, scopes, decorations.fractals, decorations.shapes, decorations.text, decorations.pathmorphing, decorations.pathreplacing, decorations.footprints, decorations.markings, shadows + + \definecolor{hublue}{cmyk}{1.00, 0.60, 0.00, 0.20} + \definecolor{hured}{cmyk}{0.00, 0.90, 0.80, 0.40} + \definecolor{hugreen}{cmyk}{0.90, 0.10, 0.80, 0.40} + \definecolor{husand}{cmyk}{0.00, 0.05, 0.50, 0.20} + \definecolor{huslategreen}{cmyk}{0.00, 0.00, 0.10, 0.20} + \definecolor{huslateblue}{cmyk}{0.10, 0.00, 0.00, 0.20} + \tikzstyle{klein}=[font={\small}] + \tikzstyle{kleiner}=[font={\footnotesize}] + \tikzstyle{box}=[line width=2pt, draw=huslateblue, rounded corners, inner + sep=.2cm, shadeslate, drop shadow={opacity=.15}, shadow scale=1.05] + \tikzstyle{aktivbox}=[box, darkshadeslate] + \tikzstyle{nichtrundelinie}=[line width=2pt, draw=hublue, kleiner, color=hublue] + \tikzstyle{linie}=[nichtrundelinie, line cap=round] + \tikzstyle{pfeil}=[linie, -stealth'] + \tikzstyle{doppelpfeil}=[linie, stealth'-stealth'] + \tikzstyle{usb}=[line width=2pt, line cap=round, draw=black, decorate, + decoration=coil, kleiner] + \tikzstyle{rfid}=[decorate, decoration={expanding waves, angle=30, segment + length=6}, nichtrundelinie] + \tikzstyle{shadeslate}=[shade, top color=huslateblue!2, bottom color=huslateblue!10] + \tikzstyle{darkshadeslate}=[shade, top color=huslateblue!20, bottom + color=huslateblue!50] + \tikzstyle{internet}=[cloud, cloud ignores aspect, minimum height=1.5cm, kleiner, + line width=2pt, draw=huslateblue, inner sep=.2cm, darkshadeslate, + drop shadow={opacity=.15}, shadow scale=1.05] + + \pgfdeclarelayer{foreground} + \pgfsetlayers{background,main,foreground} + [klein] + \tikzstyle{keks}=[to path={-- ++(.1,0) |- (\tikztotarget)}] + + \tikzstyle{bla}=[shape=rectangle split, rectangle split parts=2, + every text node part/.style={align=center, klein}, text width=7cm, + every second node part/.style={kleiner}, inner sep=0pt] + + \node (ccid-emulator) + {\texttt{ccid-emulator}}; + + \node (basis) [below=3of ccid-emulator] + {\includegraphics[keepaspectratio, height=2cm, + width=2cm]{%(wd)s/bilder/moko/basisleser_plain_klein.png}}; + \node (basisbeschreibung) [below=0cm of basis, kleiner, text width=2cm] + {Reiner SCT RFID basis}; + + \node (npa) [left=1.5of basis] + {\includegraphics[keepaspectratio, height=3cm, + width=3cm]{%(wd)s/bilder/nPA_VS.png}}; + \node (npabeschreibung) [below=0cm of npa, kleiner] + {German identity card}; + + \node (funktionenchat) [right=.6cm of ccid-emulator.east, anchor=text west, bla] + { + PACE + \nodepart{second} + \begin{itemize} + + \item Display CHAT + \begin{itemize} + \item Display context (eID/eSign) + \item Display requested permissions + \end{itemize} + + \item Display certificate description + \begin{itemize} + \item Identification of service provider + \item Display purpose of transaction + \end{itemize} + + \item Secure PIN entry + \end{itemize} + }; + \node (funktionenpace) [below=.5 of funktionenchat, bla] + { + Terminal Authentication + \nodepart{second} + \begin{itemize} + \item Verify authenticy of terminal + \item Check freshness of cv certificate + \end{itemize} + }; + + \begin{pgfonlayer}{background} + \node (box) [fit=(ccid-emulator) (basis) (basisbeschreibung) + (funktionenchat) (funktionenpace), box, inner sep=.5cm] {}; + \node (boxbild) at (box.north west) + {\includegraphics[keepaspectratio, height=1.5cm, + width=1.5cm]{%(wd)s/bilder/moko/moko_reader.png}}; + \node [right=0cm of boxbild.east, yshift=.3cm] + {Openmoko Neo FreeRunner}; + \end{pgfonlayer} + + \node (a) [above=1of npa] + {\includegraphics[keepaspectratio, height=3cm, + width=3cm]{%(wd)s/bilder/computer-tango.pdf}}; + + + \begin{pgfonlayer}{background} + \path + (ccid-emulator) edge [doppelpfeil] (basis) + (basis) edge [rfid] (npa) + (a.center) edge [usb] (ccid-emulator) + (ccid-emulator.east) edge [pfeil, keks] (funktionenchat.text west) + (ccid-emulator.east) edge [pfeil, keks] (funktionenpace.text west); + \end{pgfonlayer} -.. image:: _static/usb-emulator-arch.jpeg - :alt: Architecture - :width: 320px ======== @@ -71,3 +473,10 @@ You can download the latest release of the |vsmartcard| `here Alternatively, you can clone our git repository:: git clone git://vsmartcard.git.sourceforge.net/gitroot/vsmartcard/vsmartcard + + +References +---------- + +.. bibliography:: references.bib + :all: diff --git a/doc/references.bib b/doc/references.bib new file mode 100644 index 0000000..691e2b6 --- /dev/null +++ b/doc/references.bib @@ -0,0 +1,66 @@ +@INPROCEEDINGS{MoOe10, + author = {Frank Morgner and Dominik Oepen}, + title = {"Die gesamte Technik ist sicher". Besitz und Wissen: Relay-Angriffe auf den neuen Personalausweis}, + booktitle = {27th Chaos Communication Congress}, + organization = {Chaos Computer Club}, + year = {2010}, + pages = {26--31}, + month = {12}, + url = {http://media.ccc.de/browse/congress/2010/27c3-4297-de-die_gesamte_technik_ist_sicher.html}, +} + +@INPROCEEDINGS{MuMO11, + author = {Wolf Müller and Frank Morgner and Dominik Oepen}, + title = {Mobiles Szenario für den neuen Personalausweis}, + event = {21. SIT-SmartCard Workshop}, + isbn = {978-3-8396-0215-7}, + eventdate = {2011-02-02/2011-02-03}, + booktitle = {Tagungsband zum 21. SIT-SmartCard Workshop}, + organization = {{Fraunhofer-Institut für sichere Informationstechnologie}}, + publisher = {Fraunhofer Verlag}, + editor = {Ulrich Waldmann}, + address = {Stuttgart}, + year = {2011}, + pages = {179--188}, + url = {http://sar.informatik.hu-berlin.de/research/publications/SAR-PR-2011-01/SAR-PR-2011-01.pdf} +} + +@MASTERSTHESIS{Oepen2010, + author = {Dominik Oepen}, + title = { Authentisierung im mobilen Web: Zur Usability eID-basierter Authentisierung auf einem NFC Handy}, + school = {Humboldt-Universität zu Berlin}, + year = {2010}, + address = {Berlin}, + type = {Diplomarbeit}, + url = {http://sar.informatik.hu-berlin.de/research/publications/#SAR-PR-2010-11} +} + +@INPROCEEDINGS{mobisec2012, + year={2012}, + isbn={978-3-642-33391-0}, + booktitle={Security and Privacy in Mobile Information and Communication Systems}, + volume={107}, + series={Lecture Notes of the Institute for Computer Sciences, Social Informatics and Telecommunications Engineering}, + editor={Schmidt, Andreas. and Russello, Giovanni and Krontiris, Ioannis and Lian, Shiguo}, + doi={10.1007/978-3-642-33392-7_3}, + title={Mobile Smart Card Reader Using NFC-Enabled Smartphones}, + publisher={Springer Berlin Heidelberg}, + author={Morgner, Frank and Oepen, Dominik and Müller, Wolf and Redlich, Jens-Peter}, + pages={24-37}, + url = {http://sar.informatik.hu-berlin.de/research/publications/SAR-PR-2012-07/SAR-PR-2012-07_.pdf}, +} + +@MASTERSTHESIS{morgner2012, + author = {Frank Morgner}, + title = { Mobiler Chipkartenleser für den neuen Personalausweis: Sicherheitsanalyse und Erweiterung des "Systems nPA"}, + school = {Humboldt-Universität zu Berlin}, + year = {2012}, + type = {Diplomarbeit}, +} + +@UNPUBLISHED{linuxtag, + author = {Dominik Oepen and Frank Morgner}, + title = { FOSS im Umfeld des neuen Personalausweis}, + note = {LinuxTag 2011}, + year = {2011}, +} diff --git a/npa/doc/README.txt b/npa/doc/README.txt index b6a475e..9e5c801 100644 --- a/npa/doc/README.txt +++ b/npa/doc/README.txt @@ -35,6 +35,58 @@ implements and initializes Secure Messaging wrappers of OpenSC to allow a transparent SM usage in OpenSC. This allows nPA Smart Card Library to be fully compatible with OpenSC. +.. tikz:: Architecture of the nPA Smart Card Library + :libs: arrows, calc, fit, patterns, plotmarks, shapes.geometric, shapes.misc, shapes.symbols, shapes.arrows, shapes.callouts, shapes.multipart, shapes.gates.logic.US, shapes.gates.logic.IEC, er, automata, backgrounds, chains, topaths, trees, petri, mindmap, matrix, calendar, folding, fadings, through, positioning, scopes, decorations.fractals, decorations.shapes, decorations.text, decorations.pathmorphing, decorations.pathreplacing, decorations.footprints, decorations.markings, shadows + + + \definecolor{hublue}{cmyk}{1.00, 0.60, 0.00, 0.20} + \definecolor{hured}{cmyk}{0.00, 0.90, 0.80, 0.40} + \definecolor{hugreen}{cmyk}{0.90, 0.10, 0.80, 0.40} + \definecolor{husand}{cmyk}{0.00, 0.05, 0.50, 0.20} + \definecolor{huslategreen}{cmyk}{0.00, 0.00, 0.10, 0.20} + \definecolor{huslateblue}{cmyk}{0.10, 0.00, 0.00, 0.20} + \tikzstyle{kleiner}=[font={\footnotesize}] + \tikzstyle{klein}=[font={\small}] + \tikzstyle{box}=[line width=2pt, draw=huslateblue, rounded corners, inner + sep=.2cm, shadeslate, drop shadow={opacity=.15}, shadow scale=1.05] + \tikzstyle{aktivbox}=[box, darkshadeslate] + \tikzstyle{nichtrundelinie}=[line width=2pt, draw=hublue, kleiner, color=hublue] + \tikzstyle{linie}=[nichtrundelinie, line cap=round] + \tikzstyle{pfeil}=[linie, -stealth'] + \tikzstyle{doppelpfeil}=[linie, stealth'-stealth'] + \tikzstyle{usb}=[line width=2pt, line cap=round, draw=black, decorate, + decoration=coil, kleiner] + \tikzstyle{rfid}=[decorate, decoration={expanding waves, angle=30, segment + length=6}, nichtrundelinie] + \tikzstyle{shadeslate}=[shade, top color=huslateblue!2, bottom color=huslateblue!10] + \tikzstyle{darkshadeslate}=[shade, top color=huslateblue!20, bottom + color=huslateblue!50] + \tikzstyle{internet}=[cloud, cloud ignores aspect, minimum height=1.5cm, kleiner, + line width=2pt, draw=huslateblue, inner sep=.2cm, darkshadeslate, + drop shadow={opacity=.15}, shadow scale=1.05] + + \pgfdeclarelayer{foreground} + \pgfsetlayers{background,main,foreground} + [klein] + \node (npa-tool) [aktivbox] {\texttt{npa-tool}}; + \node (libnpa) [box, below=of npa-tool] {\texttt{libnpa}}; + \node (opensc) + [klein, box, shape=rectangle split, rectangle split parts=2, right=of libnpa, + kleiner, yshift=-1cm] + {OpenSC (\texttt{libopensc}) + \nodepart{second} + \footnotesize PC/SC\qquad CT-API + }; + \draw [box] ($(opensc.text split)-(.05cm,0)$) -- ($(opensc.south)-(.05cm,0)$); + \node (openpace) [klein, box, left=of libnpa, yshift=-1cm] {OpenPACE}; + + \begin{pgfonlayer}{background} + \path[linie] + (npa-tool) edge (libnpa) + (libnpa) edge (opensc) + (libnpa) edge (openpace); + \end{pgfonlayer} + .. include:: download.txt diff --git a/npa/doc/README.txt.in b/npa/doc/README.txt.in index db553d4..9cc27f6 100644 --- a/npa/doc/README.txt.in +++ b/npa/doc/README.txt.in @@ -35,6 +35,58 @@ implements and initializes Secure Messaging wrappers of OpenSC to allow a transparent SM usage in OpenSC. This allows @PACKAGE_NAME@ to be fully compatible with OpenSC. +.. tikz:: Architecture of the @PACKAGE_NAME@ + :libs: arrows, calc, fit, patterns, plotmarks, shapes.geometric, shapes.misc, shapes.symbols, shapes.arrows, shapes.callouts, shapes.multipart, shapes.gates.logic.US, shapes.gates.logic.IEC, er, automata, backgrounds, chains, topaths, trees, petri, mindmap, matrix, calendar, folding, fadings, through, positioning, scopes, decorations.fractals, decorations.shapes, decorations.text, decorations.pathmorphing, decorations.pathreplacing, decorations.footprints, decorations.markings, shadows + + + \definecolor{hublue}{cmyk}{1.00, 0.60, 0.00, 0.20} + \definecolor{hured}{cmyk}{0.00, 0.90, 0.80, 0.40} + \definecolor{hugreen}{cmyk}{0.90, 0.10, 0.80, 0.40} + \definecolor{husand}{cmyk}{0.00, 0.05, 0.50, 0.20} + \definecolor{huslategreen}{cmyk}{0.00, 0.00, 0.10, 0.20} + \definecolor{huslateblue}{cmyk}{0.10, 0.00, 0.00, 0.20} + \tikzstyle{kleiner}=[font={\footnotesize}] + \tikzstyle{klein}=[font={\small}] + \tikzstyle{box}=[line width=2pt, draw=huslateblue, rounded corners, inner + sep=.2cm, shadeslate, drop shadow={opacity=.15}, shadow scale=1.05] + \tikzstyle{aktivbox}=[box, darkshadeslate] + \tikzstyle{nichtrundelinie}=[line width=2pt, draw=hublue, kleiner, color=hublue] + \tikzstyle{linie}=[nichtrundelinie, line cap=round] + \tikzstyle{pfeil}=[linie, -stealth'] + \tikzstyle{doppelpfeil}=[linie, stealth'-stealth'] + \tikzstyle{usb}=[line width=2pt, line cap=round, draw=black, decorate, + decoration=coil, kleiner] + \tikzstyle{rfid}=[decorate, decoration={expanding waves, angle=30, segment + length=6}, nichtrundelinie] + \tikzstyle{shadeslate}=[shade, top color=huslateblue!2, bottom color=huslateblue!10] + \tikzstyle{darkshadeslate}=[shade, top color=huslateblue!20, bottom + color=huslateblue!50] + \tikzstyle{internet}=[cloud, cloud ignores aspect, minimum height=1.5cm, kleiner, + line width=2pt, draw=huslateblue, inner sep=.2cm, darkshadeslate, + drop shadow={opacity=.15}, shadow scale=1.05] + + \pgfdeclarelayer{foreground} + \pgfsetlayers{background,main,foreground} + [klein] + \node (npa-tool) [aktivbox] {\texttt{npa-tool}}; + \node (libnpa) [box, below=of npa-tool] {\texttt{libnpa}}; + \node (opensc) + [klein, box, shape=rectangle split, rectangle split parts=2, right=of libnpa, + kleiner, yshift=-1cm] + {OpenSC (\texttt{libopensc}) + \nodepart{second} + \footnotesize PC/SC\qquad CT-API + }; + \draw [box] ($(opensc.text split)-(.05cm,0)$) -- ($(opensc.south)-(.05cm,0)$); + \node (openpace) [klein, box, left=of libnpa, yshift=-1cm] {OpenPACE}; + + \begin{pgfonlayer}{background} + \path[linie] + (npa-tool) edge (libnpa) + (libnpa) edge (opensc) + (libnpa) edge (openpace); + \end{pgfonlayer} + .. include:: download.txt