📄 digitalsignatures.tex
字号:
% $Id: digitalsignatures.tex 1205 2005-07-04 13:58:13Z koy $
% ...........................................................................
% D I G I T A L E S I G N A T U R E N
% ...........................................................................
\newpage
% --------------------------------------------------------------------------
\section{Hashfunktionen und Digitale Signaturen}
\hypertarget{Chapter_Hashes-and-Digital-Signatures}{}
\index{Signatur!digitale}
(Schneider J. / Esslinger B. / Koy H., Juni 2002,
Update: Feb. 2003, Juni 2005)
\vspace{12pt}
Ziel der digitalen Signatur ist es, folgende zwei Punkte zu gew"ahrleisten:
\begin{itemize}
\item Benutzerauthentizit"at:\index{Authentizit""at!Benutzer-} \\
Es kann "uberpr"uft werden, ob eine Nachricht tats"achlich
von einer bestimmten Person stammt.
\item Nachrichtenintegrit"at:\index{Nachrichtenintegrit""at} \\
Es kann "uberpr"uft werden, ob die Nachricht (unterwegs)
ver"andert wurde.
\end{itemize}
Zum Einsatz kommt wieder eine asymmetrische Technik (siehe
Verschl"usselungsverfahren).
Ein Teilnehmer, der eine digitale Signatur f"ur ein Dokument erzeugen will,
muss ein Schl"usselpaar besitzen. Er benutzt seinen geheimen Schl"ussel,
um Signaturen zu erzeugen, und der Empf"anger benutzt den "offentlichen
Schl"ussel des Absenders, um die Richtigkeit der Signatur zu "uberpr"ufen.
Es darf wiederum nicht m"oglich sein, aus dem "offentlichen den geheimen
Schl"ussel abzuleiten\footnote{%
Mit CrypTool\index{CrypTool} k"onnen Sie ebenfalls digitale Signaturen
erzeugen und pr"ufen: \\
in den Untermen"us des Hauptmen"upunktes
{\bf Digitale Signaturen / PKI} oder \\
per
{\bf Einzelverfahren \textbackslash{} RSA-Kryptosystem \textbackslash{}
Signaturdemo (Signaturerzeugung)}.
}.
Im Detail sieht ein \index{Signaturverfahren} {\em Signaturverfahren}
folgenderma"sen aus: \\
Der Absender berechnet aus seiner Nachricht und seinem geheimen Schl"ussel
die digitale Signatur der Nachricht. Im Vergleich zur handschriftlichen
Unterschrift hat die digitale Signatur den Vorteil, dass die
Unterschrift auch vom unterschriebenen Dokument abh"angt. Die Unterschriften
ein und desselben Teilnehmers sind verschieden, sofern die unterzeichneten
Dokumente nicht vollkommen "ubereinstimmen. Selbst das Einf"ugen eines
Leerzeichens in den Text w"urde zu einer anderen Signatur f"uhren. Eine
Verletzung der Nachrichtenintegrit"at wird also vom Empf"anger der
Nachricht erkannt, da in diesem Falle die Signatur nicht mehr zum Dokument
passt und sich bei der "Uberpr"ufung als unkorrekt erweist.
Das Dokument wird samt Signatur an den Empf"anger verschickt. Dieser kann
mit Hilfe des "offentlichen Schl"ussels des Absenders, des Dokuments und
der Signatur feststellen, ob die Signatur korrekt ist.
Da eine Signatur circa so lange ist wie der unmittelbar zu signierende
Datenstrom, hat das gerade beschriebene Verfahren in der Praxis jedoch einen
entscheidenden Nachteil: Die Signatur ist ungef"ahr genauso lang wie das
eigentliche Dokument. Um den Datenverkehr nicht unn"otig anwachsen zu
lassen und aus Performance-Gr"unden\index{Performance} wendet -- man vor
dem Signieren -- auf das Dokument eine kryptographische
Hashfunktion\footnote{%
Hashfunktionen\index{Hashfunktion} sind in CrypTool\index{CrypTool}
an mehreren Stellen implementiert.\\
In den Men"us {\bf Einzelverfahren \textbackslash{} Hashverfahren} bzw.
{\bf Analyse \textbackslash{} Hashverfahren}
haben Sie die M"oglichkeit
% hier die items nicht einr"ucken!
\begin{list}{\textbullet}{\leftmargin10pt\addtolength{\itemsep}{-1.0\baselineskip}}
%\begin{itemize}\addtolength{\itemsep}{-1.0\baselineskip}
\item 6 Hashfunktionen auf den Inhalt des aktiven Fensters anzuwenden, \\
\item f"ur eine Datei den Hashwert zu berechnen, \\
\item in der Hash-Demo die Auswirkung von Text"anderungen auf den
Hashwert zu testen,\\
\item aus einem Passwort gem"a"s dem PKCS\#5-Standard\index{PKCS\#5}
einen Schl"ussel zu berechnen, \\
\item aus einem Text und einem geheimen Schl"ussel HMACs zu berechnen, und\\
\item aufgrund von gezielt gesuchten Hashwertkollisionen\index{Kollision}
einen Angriff auf digitale Signaturen zu simulieren.
\end{list}
} an. Deren Output wird dann signiert.
% --------------------------------------------------------------------------
\vskip + 15pt
\subsection{Hashfunktionen}
\hypertarget{Hash-functions-ht}{}
\index{Hashfunktion}
Eine {\em Hashfunktion}\footnote{%
Hashverfahren berechnen eine komprimierte Repr"asentation
elektronischer Daten (Message).
Die Verarbeitung dieser Message durch das Hashverfahren ergibt als Output
einen sogenannten Message Digest. Message Digests sind typischerweise
zwischen 128 und 512 Bit lang -- abh"angig vom Algorithmus.
Sichere Hashverfahren werden typischerweise mit anderen kryptographischen
Algorithmen kombiniert, wie z.B. Digitale-Signatur-Algorithmen,
Keyed-Hash Message Authentication Codes, oder bei der Erzeugung von
Zufallszahlen (Bits) benutzt.
}
bildet eine Nachricht beliebiger L"ange auf eine Zeichenfolge mit
konstanter Gr"o"se, den \index{Hashwert}
Hashwert, ab.
% --------------------------------------------------------------------------
\vskip + 15pt
\subsubsection{Anforderungen an Hashfunktionen}
Kryptographisch sichere Hashfunktionen erfullen folgende Anforderungen:
\begin{itemize}
\item Standhaftigkeit gegen 1st-Pre-Image-Attacks:
\index{Pre-Image-Attack!1st} \\
Es sollte praktisch unm"oglich sein, zu einer gegebenen Zahl eine
Nachricht zu finden, die genau diese Zahl als Hashwert hat. \\
Gegeben (fix): Hashwert H', \\
Gesucht: Nachricht m, so dass gilt: H(m) = H'.
\item Standhaftigkeit gegen 2nd-Pre-Image-Attacks:
\index{Pre-Image-Attack!2nd} \\
Es sollte praktisch unm"oglich sein, zu einer gegebenen Nachricht
eine zweite Nachricht zu finden, die genau denselben Hashwert hat. \\
Gegeben (fix): Nachricht m1 [und damit der Hashwert H1 = H(m1)], \\
Gesucht: Nachricht m2, so dass gilt: H(m2) = H1.
\item Standhaftigkeit gegen Kollisionsangriffe:
\index{Kollisionsangriff} \\
Es sollte es praktisch unm"oglich sein, zwei (beliebige) Nachrichten
mit demselben Hashwert (welcher ist egal) zu finden. \\
Gesucht: 2 Nachrichten m1 und m2, so dass gilt: H(m1) = H(m2).
\end{itemize}
% --------------------------------------------------------------------------
\vskip + 15pt
\subsubsection{Aktuelle Angriffe gegen Hashfunktionen wie SHA-1}
\label{collision-attacks-against-sha-1}
Bisher konnte die Existenz von perfekt sicheren kryptographischen
Hashfunktionen nicht formal bewiesen werden.
"Uber mehrere Jahre gab es keine neuen Attacken gegen Hashverfahren,
und allgemein wurde den Kandidaten, die in der Praxis bislang keine
Schw"achen in ihrer Struktur gezeigt hatten
(zum Beispiel \index{SHA-1} SHA-1\footnote{%
SHA-1 \index{SHA-1} ist eine in den Standards FIPS 180-1 (durch die
US-Beh"orde NIST), ANSI X9.30 Part 2 und
\cite{FIPS186} spezifizierte 160-Bit Hashfunktion.\\
SHA bedeutet ``Secure Hash Algorithm'' und wird h"aufig benutzt, z.B.
mit DSA, RSA oder ECDSA.\\
Der aktuelle Standard \cite{FIPS180-2} definiert vier sichere Hashverfahren
-- SHA-1, SHA-256, SHA-384 und SHA-512.
F"ur diese Hashalgorithmen sind in der Testsuite FIPS 140-2 auch
Validierungstests definiert.
Die Ausgabel"ange der SHA-Algorithmen wurde vergr"o"sert aufgrund der
M"oglichkeit von Geburtstagsangriffen:
\index{Angriff!Geburtstagsangriff} \index{Kollision}
diese machen -- grob gesprochen -- den n-Bit AES und ein 2n-bit
Hashverfahren "aquivalent: \\
- 128-bit AES -- SHA-256 \\
- 192-bit AES -- SHA-384 \\
- 256-bit AES -- SHA-512.
Mit CrypTool\index{CrypTool} k"onnen Sie den Geburtstagsangriff
\index{Angriff!Geburtstagsangriff} auf digitale Signaturen
nachvollziehen: \\
"uber das Men"u {\bf Analyse \textbackslash{} Hashverfahren
\textbackslash{} Angriff auf den Hashwert der digitalen Signatur}.
}
oder \index{RIPEMD-160} RIPEMD-160\footnote{%
RIPEMD-160, RIPEMD-128 und die optionale Erweiterung RIPEMD-256 haben
Object Identifier, definiert von der ISO-identifizierten Organisation
TeleTrusT, sowohl f"ur Hashverfahren als auch in Kombination mit RSA.
RIPEMD-160 ist Teil des internationalen ISO/IEC-Standards
ISO/IEC 10118-3:1998 f"ur dedizierte Hashfunktionen, zusammen mit
RIPEMD-128 and SHA-1.
Weitere Details: \\
http://www.esat.kuleuven.ac.be/\~{}bosselae/ripemd160.html \\
http://www.ietf.org/rfc/rfc2857.txt (``The Use of HMAC-RIPEMD-160-96
within ESP and AH'').
}%
) vertraut.
Auf der Crypto 2004 (August 2004)\footnote{%
\href{http://www.iacr.org/conferences/crypto2004/}
{\texttt{http://www.iacr.org/conferences/crypto2004/}} }
wurde dieses Sicherheitsgef"uhl jedoch stark in Zweifel gezogen:
Chinesische Wissenschaftler ver"offentlichten
Kollisionsangriffe gegen MD4, SHA-0 und Teile von SHA-1, die
weltweit zu einer starken Besch"aftigung mit neuen Hash-Angriffen
f"uhrte.
Die Ver"offentlichung von Details zu den Resultaten der
chinesischen Kryptologen wurde bisher nur angek"undet: Nach ihren
Angaben kann man
Kollisionen von SHA-1 mit einem Arbeitsaufwand von $2^{69}$ finden.
Damit w"are gezeigt, dass SHA-1 kryptographische Schw"achen besitzt,
da die Konstruktion von SHA-1 an sich einen Mindestarbeitsaufwand
f"ur die Kollisionssuche von etwa $2^{80}$ gew"ahrleisten sollte.
Der Wert $2^{69}$ ist dabei eine auf theoretischen Hochrechnungen
beruhende Vorhersage.
Die Sicherheit bereits erstellter Signaturen wird durch den geschilderten
Kollisionsangriff aber nicht gef"ahrdet.
% be_2005_UPDATEN_if-hash-attacks-make-progress
Nach dem aktuellen Kenntnisstand ist keine Panik angesagt, aber f"ur
digitale Signaturen sollten zumindest in Zukunft l"angere Hashwerte und/oder
andere Verfahren benutzt werden.
Das NIST hat schon vor Bekanntwerden der neuen Ergebnisse angek"undigt,
SHA-1 in den n"achsten Jahren auslaufen zu lassen. Es ist daher zu
empfehlen, f"ur neue Produkte zur Erstellung von Sig"-naturen SHA-1 nicht
mehr zu verwenden.
Weitere Informationen zu diesem Thema finden sich z.B. in dem Artikel
\glqq Hash mich -- Konsequenzen der erfolgreichen Angriffe auf SHA-1\grqq\
von Reinhard Wobst und J"urgen Schmidt\footnote{%
\href{http://www.heise.de/security/artikel/56555}
{\texttt{http://www.heise.de/security/artikel/56555}}. \\
Weitere Quellen sind z.B.: \\
\href{http://www.bsi.bund.de/esig/basics/techbas/krypto/index.htm}
{\texttt{http://www.bsi.bund.de/esig/basics/techbas/krypto/index.htm}} \\
\href{http://csrc.nist.gov/CryptoToolkit/tkhash.html}
{\texttt{http://csrc.nist.gov/CryptoToolkit/tkhash.html}}.
}
von Heise Security.
% --------------------------------------------------------------------------
\vskip + 15pt
\subsubsection{Signieren mit Hilfe von Hashfunktionen}
Das Signatur-Verfahren mit Hashfunktion (ohne den oben genannten Nachteil)
sieht folgenderma"sen aus:\\ Anstatt das eigentliche Dokument zu signieren,
berechnet der Absender nun zuerst den Hashwert der Nachricht und signiert
diesen. Der Empf"anger bildet ebenfalls den Hashwert der Nachricht (der
benutzte Algorithmus muss bekannt sein). Er "uberpr"uft dann, ob die
mitgeschickte Signatur eine korrekte Signatur des Hashwertes ist. Ist dies der
Fall, so wurde die Signatur korrekt verifiziert. Die Authentizit"at der
Nachricht ist damit gegeben, da wir angenommen hatten, dass aus der Kenntnis
des "offentlichen Schl"ussels nicht der geheime Schl"ussel abgeleitet werden
kann. Dieser geheime Schl"ussel w"are jedoch notwendig, um Nachrichten in einem
fremden Namen zu signieren.
Einige digitale Signaturverfahren basieren auf asymmetrischer
Verschl"usselung, das bekannteste Beispiel dieser Gattung ist RSA. F"ur die
RSA-Signatur verwendet man die gleiche mathematische Operation wie zum
Entschl"usseln, nur wird sie auf den Hash-Wert des zu unterschreibenden
Dokuments angewendet.
Andere Systeme der digitalen Signatur wurden, wie DSA (Digital Signature
Algorithm), ausschlie"slich zu diesem Zweck entwickelt, und stehen in
keiner direkten Verbindung zu einem entsprechenden
Verschl"usselungsverfahren.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -