]> git.sur5r.net Git - bacula/docs/blob - docs/manuals/de/old/concepts/dataencryption.tex
Add more print info to send
[bacula/docs] / docs / manuals / de / old / concepts / dataencryption.tex
1
2 \chapter{Daten-Verschl\"{u}sselung}
3 \label{DataEncryption}
4 \index[general]{Daten-Versch\"{u}sselung}
5 \index[general]{Versch\"{u}sselung!Daten-}
6
7 Bacula erm\"{o}glicht Ihnen die Backup-Daten Clientseitig zu verschl\"{u}sseln
8 und zu signieren, bevor sie zum Storage-Dienst gesendet werden. W\"{a}hrend
9 der Wiederherstellung werden die Signaturen \"{u}berpr\"{u}ft und Abweichungen
10 gemeldet. Director- und Storage-Dienst haben dabei zu keinem Zeitpunkt Zugriff
11 auf unverschl\"{u}sselte Daten.
12
13 Dabei gibt es zwei sehr wichtige Punkte zu beachten:
14 \begin{itemize}
15 \item zum einen gilt es bei der Wiederherstellung zu bedenken,
16   dass es f\"{u}r den Director-Dienst m\"{o}glich ist neue Schl\"{u}ssel
17   oder eine andere Konfigurations-Datei auf dem Client zu erstellen.
18   Dadurch kann die Verschl\"{u}sselung abgeschaltet oder mit ungewollten
19   Schl\"{u}sseln durchgef\"{u}hrt werden. Damit das nicht unbeabsichtigt
20   passieren kann, sollten Sie nie den Speicherortder Schl\"{u}ssel, noch
21   die Schl\"{u}ssel selbst \"{a}ndern. Falls solche \"{A}nderungen jemals
22   notwendig sind, sollten Sie sicherstellen, dass niemals aus versehen
23   die alte Konfiguration wiederhergestellt wird. Im schlimmsten Fall
24   sind Sie sp\"{a}ter nicht mehr in der Lage sich mit dem Client-Dienst
25   zu verbinden.
26 \item Die Verschl\"{u}sselung wird nicht bei den Metadaten, wie
27   Verzeichnisname, Rechte und Eigent\"{u}mer der Dateien durchgef\"{u}hrt.
28   Ebensowenig werden erweiterte Datei-Attribute verschl\"{u}sselt.
29   Mac OS X \elink{resource forks}{http://en.wikipedia.org/wiki/Resource_fork}
30   werden allerdings verschl\"{u}sselt.
31 \end{itemize}
32
33 Die Verschl\"{u}sselung und Signierung wird mittels RSA privaten Schl\"{u}ssel
34 in Verbindung mit selbstsignierten X509 \"{o}ffentlichen Zertifikate durchgef\"{u}hrt.
35 Dieses Verfahren ist auch als \elink{PKI}{http://de.wikipedia.org/wiki/Public-Key-Infrastruktur}
36 (Public-Key-Infrastruktur) bekannt.
37
38 Jeder Client-Dienst sollte sein eigenes einzigartiges privates/\"{o}ffentliches
39 Schl\"{u}ssel-paar besitzen. Zus\"{a}tzlich, zu diesem Schl\"{u}ssel-Paar,
40 k\"{o}nnen beliebig viele "`Master Keys"' angegeben werden. Das sind
41 Schl\"{u}ssel-Paare die zum entschl\"{u}sseln benutzt werden k\"{o}nnen,
42 falls der Schl\"{u}ssel des Client-Dienstes verloren geht. Nur die \"{o}ffentlichen
43 Schl\"{u}ssel der Master-Keys sollten auf dem Client zur Verf\"{u}gung stehen
44 und {\bf niemals} die privaten.
45
46 Die Master-Keys sollten zudem an einem sicheren Ort aufbewart werden,
47 zum Beispiel in einem feuerfesten Stahlschrank oder einem Bankdepot.
48 Diese Schl\"{u}ssel sollten nie auf den Systemen auf denen der Director-
49 und der Storage-Dienst l\"{a}uft aufbewart werden. Ansonsten ist es eventuell
50 unautorisierten Benutzer m\"{o}glich auf die verschl\"{u}sselten Daten zuzugreifen.
51
52 Obwohl weniger kritisch, sind es auch die Client-Schl\"{u}ssel Wert,
53 an einem sicheren Ort gespeichert zu werden.
54
55 WARNUNG: Wenn Sie jemals die zur Entschl\"{u}sselung ben\"{o}tigten
56 Schl\"{u}ssel verlieren, k\"{o}nnen Sie keine Daten mehr aus Ihrem Backups
57 wiederherstellen! Heben Sie {\bf IMMER} eine Kopie der Schl\"{u}ssel
58 an einem sicheren Ort au{\ss}erhalb Ihres Standortes auf.
59
60 Der wesentliche Ablauf eines jeden Backup-Jobs mit Verschl\"{u}sselung ist:
61 \begin{enumerate}
62 \item Der Client-Dienst generiert einen Session-Schl\"{u}ssel.
63 \item Der Client-Dienst verschl\"{u}sselt diesen Session-Schl\"{u}ssel mittels PKI
64   f\"{u}r alle \"{o}ffentlichen Schl\"{u}ssel die konfiguriert sind
65   (Client- und Master-Schl\"{u}ssel).
66 \item Der Client-Dienst benutzt den Session-Schl\"{u}ssel zum symetrischen
67   Verschl\"{u}sseln der Daten.
68 \end{enumerate}
69
70
71 \section{Bacula mit Unterst\"{u}tzung f\"{u}r Verschl\"{u}sselung kompilieren}
72 \index[general]{Bacula mit Unterst\"{u}tzung f\"{u}r Verschl\"{u}sselung kompilieren}
73
74 Um die Unterst\"{u}tzung der Daten-Verschl\"{u}sselung aktivieren zu k\"{o}nnen,
75 m\"{u}ssen die OpenSSL Header und Bibliotheken installiert sein. Bei der Konfiguration
76 des Bacula-Quelltextes muss folgende Option angegeben werden:
77
78 \begin{verbatim}
79    ./configure --with-openssl ...
80 \end{verbatim}
81
82 \section{Technische Einzelheiten der Verschl\"{u}sselung}
83 \index[general]{Technische Einzelheiten der Verschl\"{u}sselung}
84
85 Diese Verschl"`{u}sselung benutzt 128-Bit AES-CBC mit RSA verschl\"{u}sselten
86 symetrischen Session-Schl\"{u}sseln. Diese RSA-Schl\"{u}sseln werden vom
87 Benutzer erstellt. Wenn Sie OpenSSL in Version 0.9.8 (oder gr\"{o}{\ss}er)
88 benutzen, wird f\"{u}r die Signierung der Datei-Hashes SHA-256 verwendet,
89 ansonsten SHA-1.
90
91 Eine Konfigurations-M\"{o}glichkeit des End-Benutzers f\"{u}r den Algorithmus
92 ist momentan nicht vorgesehen, nur die oben genannten werden verwendet.
93 Allerdings unterst\"{u}tzen die auf die Volumes geschriebenen Daten auch
94 frei w\"{a}hlbare symetrische, asymetrische und Digest Algorithmen.
95 Es sind also noch viele M\"{o}glichkeiten zur Erweiterung
96 der Verschl\"{u}sselung vorhanden.
97
98 Director-seitig wird unterst\"{u}tzt:
99
100 \begin{alltt}
101 Symmetrische Verschl\"{u}sselung:
102     - 128, 192 und 256-bit AES-CBC
103     - Blowfish-CBC
104
105 Asymmetrische Verschl\"{u}sselung (zum verschl\"{u}sseln der symmetrischen Session-Keys):
106     - RSA
107
108 Digest Algorithmen:
109     - MD5
110     - SHA1
111     - SHA256
112     - SHA512
113 \end{alltt}
114
115 Die verschiedenen Algorithmen werden durch eine wiederverwendbare
116 OpenSSL-Schnittstelle bereitgestellt. Dadurch ist es jederzeit
117 M\"{o}glich neue Verschl\"{u}sselungs-Methoden zu implementieren.
118 Das Volume-Format ist DER-verschl\"{u}sseltes ASN.1, entwickelt nach
119 der "'Cryptographic Message Syntax"` des RFC 3852. Leider war die
120 direkte Verwendung von CMS nicht m\"{o}glich, da zu dem Zeitpunkt der
121 Entwicklung kein freier DER-Decoder/Encoder f\"{u}r Datenstr\"{o}me zur
122 Verf\"{u}gung stand.
123
124 \section{Entschl\"{u}sselung mit einem Master Key}
125 \index[general]{Entschl\"{u}sselung mit einem Master Key}
126
127 Bevorzugter Weise sollten Sie immer eine unverschl\"{u }sselte Kopie
128 der Client-Schl\"{u}ssel an einem sicheren Ort aufbewahren.
129 Falls sie trotzdem verloren gehen, k\"{o}nnen Sie die gesicherten Daten
130 noch mittels der Master-Keys entsch\"{u}sseln.
131
132 Dazu m\"{u}ssen folgende Voraussetzungen erf\"{u}llt sein:
133 \begin{itemize}
134 \item  verketten Sie den privaten und \"{o}ffentlichen Master-Schl\"{u}ssel
135   in einer einzelnen Schl\"{u}ssel-Paar-Datei, zum Beispiel mit:
136    [user@host]\$ cat master.key master.cert \gt master.keypair
137
138 \item Setzen Sie den Eintrag "'PKI Keypair"` in der Client-Konfiguration auf
139    die eben erzeugte Datei:
140
141 \begin{verbatim}
142    PKI Keypair = master.keypair
143 \end{verbatim}
144
145 \item Starten Sie die Wiederherstellung, und das Master-Key-Paar
146    wird zum entschl\"{u}sseln der Daten verwendet.
147 \end{itemize}
148
149
150 \section{Erstellung privater/\"{o}ffentlicher Schl\"{u}ssel}
151 \index[general]{Erstellung privater/\"{o}ffentlicher Schl\"{u}ssel}
152
153 Mit den folgenden Kommandos generieren Sie ein Master-Key-Paar:
154
155 \footnotesize
156 \begin{verbatim}
157   openssl genrsa -out master.key 2048
158   openssl req -new -key master.key -x509 -out master.cert
159 \end{verbatim}
160 \normalsize
161
162 Die folgenden Kommandos erstellen das Schl\"{u}ssel-Paar f\"{u}r
163 den Client-Dienst:
164
165 \footnotesize
166 \begin{verbatim}
167   openssl genrsa -out fd-example.key 2048
168   openssl req -new -key fd-example.key -x509 -out fd-example.cert
169   cat fd-example.key fd-example.cert >fd-example.pem
170 \end{verbatim}
171 \normalsize
172
173 Bez\"{u}glich der verwendeten Datei-Erweiterung f\"{u}r die Schl\"{u}ssel
174 gibt es eine Menge Verwirrung. Zum Beispiel kann eine .pem-Datei folgendes
175 enthalten: private Schl\"{u}ssel (RSA und DSA), \"{o}ffentliche Schl\"{u}ssel
176 (RSA und DSA) und Zertifikate (x509). Das ist das von OpenSSLstandardm\"{a}{\ss}ig
177 verwendete Format. Es speichert die Daten im Base64 codiertem DER-Format,
178 das von ASCII-Header umgeben wird. So kann es als Text-Datei zwischen verschiedenen
179 Computer \"{u}bertragen werden. Eine .pem-Datei kann eine beliebige Anzahl von
180 entweder privaten und/oder \"{o}ffentlichen Schl\"{u}sseln enthalten.
181 In der Bacula-Konfiguration wird diese Datei-Erweiterung nur f\"{u}r
182 Dateien verwendet die jeweils einen privaten und einen \"{o}ffentlichen
183 Schl\"{u}ssel enthalten. Zudem wird, wie oben zu sehen, f\"{u}r
184 Dateien die nur einen einzigen \"{o}ffentlichen Schl\"{u}ssel enthalten
185 die Erweiterung .cert verwendet (als Verweis auf die x509 Zertifikats-Kodierung).
186
187 \section{Beispiel-Konfiguration mit Verschl\"{u}sselung}
188 \index[general]{Beispiel!Client-Konfiguration mit Verschl\"{u}sselung}
189
190 {\bf bacula-fd.conf}
191 \footnotesize
192 \begin{alltt}
193 FileDaemon {
194    Name = example-fd
195    FDport = 9102
196    WorkingDirectory = /var/bacula/working
197    Pid Directory = /var/run
198    Maximum Concurrent Jobs = 20
199  
200    PKI Signatures = Yes            # aktiviert die Daten-Signierung
201    PKI Encryption = Yes            # aktiviert die Daten-Verschl\"{u}sselung
202    PKI Keypair = "/etc/bacula/fd-example.pem"    # private und \"{o}ffentliche Schl\"{u}ssel
203    PKI Master Key = "/etc/bacula/master.cert"    # NUR der \"{o}ffentliche Schl\"{u}ssel
204 }
205 \end{alltt}
206 \normalsize