From 31ff60ef5972dff06e05ff340d38c4f52f9c9aaf Mon Sep 17 00:00:00 2001 From: wieerwill Date: Tue, 11 Jan 2022 10:44:19 +0100 Subject: [PATCH] Sicherheitsprotokolle der Transportschicht --- .../NetworkSecurity-SSL-record-protocol.png | Bin 0 -> 10361 bytes ...Security-ssh-transport-protocol-packet.png | Bin 0 -> 15378 bytes ...workSecurity-ssl-protocol-architecture.png | Bin 0 -> 13498 bytes Network Security.md | 515 +++++++++++++++++- 4 files changed, 512 insertions(+), 3 deletions(-) create mode 100644 Assets/NetworkSecurity-SSL-record-protocol.png create mode 100644 Assets/NetworkSecurity-ssh-transport-protocol-packet.png create mode 100644 Assets/NetworkSecurity-ssl-protocol-architecture.png diff --git a/Assets/NetworkSecurity-SSL-record-protocol.png b/Assets/NetworkSecurity-SSL-record-protocol.png new file mode 100644 index 0000000000000000000000000000000000000000..662cccdf8099fbe8797f3616873c1342f2f69fe9 GIT binary patch literal 10361 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

)bzDsJRJO&=rG60 zAhQpT|4(Mm&PGcMcdGnH<*N@uOv>)f6JbCa>93@}E1j;ijveZ2>ogWZ0>c)8sd z5A;+}?@|CK|BIR*^jMUYg$vb?0`Vz1xBF4$_GKgBF%5{Rcf&KMpVES&Og+OvubfL- z31g@<_k&48H(S@i0&GA16TD1`veT*l3vv3mx4+Nu*GaKUr|$Ym#asaZ3Hp2&ph%U0 zenL0Eq*I`OxDuxAk`f-|p!T*}f5t0P0U$z>#xYl8=`7ypXGbHF7uFL!zeTus4aLVW;FuXbcBEM9Xt&uW`S3Y#Fw_e?G5P&-S6(OL4i=6)x&? z$;SHwVL+^}LJLrLR8XW)mZU>0K!uUHveV-46n`lbokfBkS0w_LWz#sVxuoy!M|XH_ zrcm)L*(7&AZF3v$>>LW1p8oaKej$YaaJ=SofA6~n(svONp{DmuutB``Gk zfU%M>*T4H+!s+}(wUve2QwS%4NEV*lkW+&uVST!y&r@z5$=xhI?F13T81*Nwyx4yP zqi=K_;}9-$HaCc%Il+hTQ#aHLQ~Ek~lyiH=`o#SfNf_i4M^4zUSiv&~OPm?g>3Ec? zjsNj}>e|f znzIXFz!0Piy0qSio19fEtgF`(fLJoPYZhi~ZWm4BD$?I^xdal)sQe$aG&DGPb3I}b z>>S)uP?N%+{tK@qQpF`Di^MjuRYrPYu#VQWDh}O6CuUnfQc+M)8u6J0cdbLS!u}Mi z%A!Dl#E2PkJy-Gm>pPuba^Wb2>R>XcNXI4x$lcP$4chUGM^pM6y+6vvqj+S}udg8a zkL<##u0n-whI8-GoE6?G=?@39t&}gd#USgoB(ewVcfEN*&3@w@c+q*&(BG`iiHpC1vl?%X`2Tw{wLDG$nxTc(oVHWj= zh~0|)%Vh&}cBC?RW@d)NXtdi=9NLhezL`)oVEhCvY5VfHq6Y1nXyToy!}>MiiMm4#BmU*SWf)WbuRF zza!(liVkxxiA@t?4k$sx#la~9BLF_}!{l((0No7|#0^?jj~)NgNd?Ggo0U0PaCGft z1Wy{gd@%c>UZR;w;4ekjt)~0Ea&{O15DD7A+o(4UkDbz9)(U{r#3w;kci!i=FHte^rYrU4FEy@ zPblBd7-&P(=3?%~K#l9ct$a+2@Z!i(; zI?sW-4helKr7{FL-3Pzzx z%J^)y3>j?_`ZPlYF1QF6Mcm&gX6C+$=B&p-BKa*idtLiQ{is`x*_@4bgN0~l98rWp z`*|~T_BTEpjIr_n4%a8!n7HGR_@`bd<-qFa5*|HJ!Tj(N9F_)54d;mk{B!NB;r|=CC;xnJpgu%_u1%K<2j_jl z*Z!6ItXfvWs<>C6JtRH*`~RzT{$;9v4WLLqtZtr~xcRN%-9bQ3N=dRx+&Jie08a8% AJ^%m! literal 0 HcmV?d00001 diff --git a/Assets/NetworkSecurity-ssh-transport-protocol-packet.png b/Assets/NetworkSecurity-ssh-transport-protocol-packet.png new file mode 100644 index 0000000000000000000000000000000000000000..e929338634427fe9f3f7eefe265f94ad3781d34d GIT binary patch literal 15378 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 RgQsU9Di75k6e&Ip`d=8cX{i7J literal 0 HcmV?d00001 diff --git a/Assets/NetworkSecurity-ssl-protocol-architecture.png b/Assets/NetworkSecurity-ssl-protocol-architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..96723bb6dbaf916f82768ea351dd1e76dcba59d8 GIT binary patch literal 13498 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 U_iKH8VEZs7jt+p^$kSf;mGpvEf>$1|1#Qi zNx|go$5Fx~khOZk4z&hq`_ij~kVoc!S6!Y(v6t`BGM>l^aVo*mkfo|plE+vMJ3qZj zN5>S{yN61jNZu*3&Du|Vks)b0io8E7<>GzD^h?y~etq}TUa1rOQUH&EqfzsPBv66r zpWOvU2p;JMtup=ydRzU{!;AB_H;vB@wJCa^R}Jfa5#;rPT`HN+d~ws7$7@5K)CWBJ zml*i3YnIA8oLFDNa|GartsdRy_p1rHI?_%alV0!b^|NCMc*cxrV*-vF7jcK!o7zdv z{IGoJzmz!k)saIzaEXwJBsT9}Y6V5bir<9;^`2O*aEDNn{nLy1SX1BdHM$6qb?wpG zyVU)eX85>=vPY*`%N?gd5|1Gx-C?eUg@yK2;J2%>q@OghQEwO|+JN+82Q)tkw-vK9a)T7{ z9J#;*)ruFbMc3Ej4DrwlL{;(9I5$eoV(;4|K8r8|e-lDI5aPP@gTS9& zxaKf{fxmVV1ih{XJnAbY-rxCRqK)al69j^lE|p0YhsObUMH(bx^9rE%(hZeLfP*57bp8#!khM4x8-3ICcM55J2MFf&E`6CM%~|c?k?}p8dtu4Nc~avUJjYuJdV&_E+WG4SwPdiAaECdF=wt`u5|A zG{9Kd(v+jcH!0~Nc-Jv(_QwX5j@ssbt^q{3RmT4ju6UEWcfvD=*}40uR+f+p02G;N z5i<~klRnd`X4_M_0+eCPnId-g#=t0$)B48iWjD@tgp4%3cGIZDDHSuLHOmW59KE&#W8YKHk`zsPAm00 zgVYZ~Gh}J=`@kyKxt!81U-Q{W!|???=r;`=pNBa=kZIpOtF%K8e6HT>Qe$3fYv~fwiR#!|%_Aadh0J6W^D7 zz$3N6e6ebp`go~c2IIC4Ti=*yiU#__6ALB)DR~v-Od}JLxvUnfO4!yIj(yWf%vr-hJ~jJY-_(5DHxzf?^YE+ z&8J0G#~dJC_%^f_3tY`?Ch$(c)wI)0zfPgTo5YuH@yCNMJGmg1rc8#HC_j>i&Sy%f zRveLTV#l=6{5l`siy;{$DA9f<(M;{S*`Y#KYm%4?-^(*(JYFY`a$mi10}-Afr=6uH zftPZCZOo&g?Neawi0|ctT8Y%vPDj>Ui^K=Z-3SZ>47=5}=0`Ys`{DIxTGp#06 zWO{50iybfS&c&<%^CjpPyE5lcL$fyfU&SW2m@9bkfZBB?o_|hDj&$=;vBB? z)>=o>_W$5cFPoIv&Hs~o+O@R7kdFsJ8@nps+L(VX8;va7l^F|u_{;A{`jPcbisl0rrE?}Vn{O*nzkJsv#6_@{5K{QpD+{#WP10HAu8`Rm{Z z&!ZIoFfA<=fPx|EMRtD?yE7R{^@sRh{EIKzjGPfj8GMD+GtG~HFCRfv6g3n| | | +| | | ServerHello | +| | | [ServerCertificate] | +| | | [CertificateRequest] | +| | | [ServerKeyExchange] | +| | <--- | ServerHelloDone | +| [ClientCertificate] | | +| ClientKeyExchange | | +| [CertificateVerify] | | +| ChangeCipherSpec | | +| Finished | ---> | +| | | ChangeCipherSpec | +| | <--- | Finished | + +[...] kennzeichnet optionale Nachrichten + +## SSL Handshake Protokoll: Abgekürzter Handshake +| Client | | Server | +| ---------------------- | ---- | ---------------------- | +| ClientHello(SessionID) | ---> | +| | | ServerHello(SessionID) | +| | | ChangeCipherSpec | +| | <--- | Finished | +| ChangeCipherSpec | | +| Finished | ---> | + +- Die Nachricht "Finished" enthält eine MAC, die entweder auf MD5 oder SHA basiert und das Master-Secret enthält, das zuvor zwischen Client und Server festgelegt wurde. +- Wenn der Server die Sitzung nicht fortsetzen kann / beschließt, sie nicht fortzusetzen, antwortet er mit den Nachrichten des vollständigen Handshake + +## SSL-Handshake-Protokoll: Kryptografische Aspekte +- SSL unterstützt drei Methoden zur Erstellung von Sitzungsschlüsseln: + - RSA: ein Pre-Master-Geheimnis wird vom Client zufällig generiert und mit dem öffentlichen Schlüssel des Servers verschlüsselt an den Server gesendet + - Diffie-Hellman: Es wird ein Standard-Diffie-Hellman-Austausch durchgeführt, und das ermittelte gemeinsame Geheimnis wird als Pre-Master-Secret verwendet. + - Fortezza: eine unveröffentlichte, von der NSA entwickelte Sicherheitstechnologie, die eine Schlüsselhinterlegung unterstützt und in diesem Kurs nicht behandelt wird +- Da SSL in erster Linie für die Sicherung des HTTP-Verkehrs entwickelt wurde, ist das ,,Standardanwendungsszenario'' ein Client, der auf einen authentischen Webserver zugreifen möchte: + - In diesem Fall sendet der Webserver sein Zertifikat mit dem öffentlichen Schlüssel nach der ServerHello-Nachricht + - Das Server-Zertifikat kann die öffentlichen DH-Werte des Servers enthalten oder der Server kann sie in der optionalen ServerKeyExchange-Nachricht senden + - Der Client verwendet das Zertifikat des Servers / die empfangenen DH-Werte / seine Fortezza-Karte, um einen RSA- / DH- / Fortezza-basierten Schlüsselaustausch durchzuführen. +- Das Pre-Master-Secret und die Zufallszahlen, die der Client und der Server in ihren Hallo-Nachrichten angeben, werden verwendet, um das Master-Secret der Länge 48 Byte zu generieren. +- Berechnung des Master-Geheimnisses: + - Master-Geheimnis = + MD5(vor-Master-Geheimnis + SHA('A' + vor-Master-Geheimnis + ClientHello.random + ServerHello.random)) + + MD5(Vor-Hauptgeheimnis + SHA('BB' + Vor-Hauptgeheimnis + ClientHello.random + ServerHello.random)) + + MD5(pre-master-secret + SHA('CCC' + pre-master-secret + ClientHello.random + ServerHello.random)) +- Die Verwendung von MD5 und SHA zur Generierung des Master-Geheimnisses wird als sicher angesehen, selbst wenn eine der kryptografischen Hash-Funktionen ,,defekt'' ist. +- Um die Sitzungsschlüssel aus dem Master-Secret zu berechnen, wird in einem ersten Schritt eine ausreichende Menge an Schlüsselmaterial aus dem Master-Secret und den Zufallszahlen von Client und Server erzeugt: + - key_block = + MD5(master-secret + SHA('A' + master-secret + ClientHello.random + ServerHello.random)) + + MD5(master-secret + SHA('BB' + master-secret + ClientHello.random + ServerHello.random)) + + [...] +- Anschließend wird das Material des Sitzungsschlüssels fortlaufend aus dem key_block entnommen: + - client_write_MAC_secret = key_block[1, CipherSpec.hash_size] + - server_write_MAC_secret = key_block[i 1 , i 1 + CipherSpec.hash_size - 1] + - client_write_key = key_block[i 2 , i 2 + CipherSpec.key_material - 1] + - server_write_key = key_block[i 3 , i 3 + CipherSpec.key_material - 1] + - client_write_IV = key_block[i 4 , i 4 + CipherSpec.IV_size - 1] + - server_write_IV = key_block[i 5 , i 5 + CipherSpec.IV_size - 1] +- Authentifizierung von und mit dem Pre-Master-Secret: + - SSL unterstützt Schlüsselerstellung ohne Authentifizierung (anonym), in diesem Fall können Man-in-the-Middle-Angriffe nicht abgewehrt werden + - Bei Verwendung des RSA-basierten Schlüsselaustauschs: + - Der Client verschlüsselt das Pre-Master-Secret mit dem öffentlichen Schlüssel des Servers, der durch eine Zertifikatskette überprüft werden kann. + - Der Client weiß, dass nur der Server das Pre-Master-Secret entschlüsseln kann. Wenn der Server also die fertige Nachricht mit dem Master-Secret sendet, kann der Client die Server-Authentizität ableiten. + - Der Server kann aus dem empfangenen Pre-Master-Secret keine Client-Authentizität ableiten. + - Wenn Client-Authentizität erforderlich ist, sendet der Client zusätzlich sein Zertifikat und eine CertificateVerify-Nachricht, die eine Signatur über einen Hash (MD5 oder SHA) des Master-Geheimnisses und aller vor der CertificateVerify-Nachricht ausgetauschten Handshake-Nachrichten enthält + - Beim DH-Key-Austausch wird die Authentizität aus den DH-Werten abgeleitet, die im Zertifikat des Servers (und des Clients) enthalten und signiert sind + +## SSL Handshake Protokoll: Eine Sicherheitslücke +- 1998 entdeckte D. Bleichenbacher eine Schwachstelle im Verschlüsselungsstandard PKCS #1 (v.1.5), der im SSL-Handshake-Verfahren verwendet wird +- Wenn der Client das Pre-Master-Secret mit dem öffentlichen Schlüssel des Servers verschlüsselt, verwendet er PKCS #1, um es vor der Verschlüsselung zu formatieren: + - EM = 0x02 | PS | 0x00 | M + - wobei PS eine Auffüllzeichenfolge von mindestens 8 pseudozufällig erzeugten Nicht-Null-Oktetts und M die zu verschlüsselnde Nachricht (= Pre-Master-Secret) bezeichnet + - (PS wird verwendet, um eine Zufallskomponente hinzuzufügen und M auf die Modulusgröße des verwendeten Schlüssels aufzufüllen) + - Dann wird EM verschlüsselt: $C = E(+K_{Server}, EM)$ + - Nachdem der Server C entschlüsselt hat, prüft er, ob das erste Oktett gleich 0x ist und ob es ein 0x00-Oktett gibt; wenn diese Prüfung fehlschlägt, antwortet er mit einer Fehlermeldung + - Diese Fehlermeldung kann von einem Angreifer genutzt werden, um einen ,,Orakel-Angriff'' zu starten. +- Ein Orakel-Angriff gegen das SSL-Handshake-Protokoll [BKS98a]: + - Betrachten wir einen Angreifer (Eve), der einen SSL-Handshake-Dialog belauscht hat und das Pre-Master-Secret (und damit alle anderen abgeleiteten Geheimnisse), das zwischen Alice (Client) und Bob (Server) ausgetauscht wurde, wiederherstellen möchte + - Eve hat die verschlüsselte Nachricht C, die das Pre-Master-Secret enthält, erfolgreich abgehört und möchte nun den Klartext wiederherstellen + - Eve generiert eine Reihe zusammenhängender Chiffretexte $C_1 , C_2 , ...$: + - $C_i = C\times R_i^e\ mod\ n$, wobei $(e, n)$ der öffentliche Schlüssel von Bob ist + - Die $R_i$ werden adaptiv ausgewählt, abhängig von älteren ,,guten'' $R_i$, die von Bob verarbeitet wurden, ohne Fehlermeldungen zu erzeugen (was anzeigt, dass sie zu einer gültigen PKCS-1-Nachricht entschlüsselt wurden) + - Die $C_i$ werden an Bob übermittelt, und es werden entsprechend neue $C_i$ erzeugt + - Aus dem ,,guten'' $R_i$ leitet Eve bestimmte Bits der entsprechenden Nachricht $M_i= C_i^d = M\times R_i\ mod\ n$ ab, basierend auf der PKCS #1 Verschlüsselungsmethode + - Aus den abgeleiteten Bits von $M\times R_i\ mod\ n$ für hinreichend viele $R_i$ kann Eve die Größe des Intervalls reduzieren, das die unbekannte Nachricht M enthalten muss + - Im Wesentlichen halbiert jeder ,,gute'' Chiffretext das betreffende Intervall, so dass Eve mit genügend ,,guten'' Chiffretexten in der Lage ist, M + - Mit PKCS #1 Version 1.5 (wie ursprünglich in SSL V.3.0 verwendet) wird ungefähr einer von $2^{16}$ bis $2^{18}$ zufällig ausgewählten Chiffretexten ,,gut'' sein. + - Typischerweise beträgt die Gesamtzahl der erforderlichen Chiffretexte bei einem $1024$-Bit-Modul etwa $2^{20}$, und dies ist auch die Anzahl der Abfragen an Bob + - Nach der Durchführung von etwa 1 Million gefälschter SSL-Handshake-Dialoge (die alle entweder von Bob oder Eve unterbrochen werden) ist Eve also in der Lage, das Pre-Master-Secret und alle abgeleiteten Schlüssel einer zuvor eingerichteten SSL-Sitzung zwischen Alice und Bob wiederherzustellen. Subtile Protokollinteraktionen (hier: SSL und PKCS #1) können zum Versagen eines Sicherheitsprotokolls führen, selbst wenn der grundlegende kryptographische Algorithmus (hier: RSA) selbst nicht gebrochen ist! +- Gegenmassnahmen: + - Regelmäßiger Wechsel der öffentlichen Schlüsselpaare ($\Rightarrow$-Overhead) + - Verringerung der Wahrscheinlichkeit, ,,gute'' Chiffriertexte zu erhalten, indem das Format der entschlüsselten Chiffriertexte gründlich überprüft und dem Client ein identisches Verhalten (Fehlermeldung, Zeitverhalten usw.) gezeigt wird + - Der Kunde muss den Klartext kennen, bevor er antwortet, ob die Nachricht erfolgreich entschlüsselt werden konnte. + - Hinzufügen einer Struktur zum Klartext, z. B. durch Hinzufügen eines Hashwerts zum Klartext: + - Achtung: Es ist eine gewisse Vorsicht geboten, um Anfälligkeiten für eine andere Klasse von Angriffen zu vermeiden [Cop96a]. + - Änderung des Verschlüsselungsprotokolls für öffentliche Schlüssel, d.h. Überarbeitung von PKCS #1: + - PKCS #1 Version 2.1 bereitet den Klartext vor der Verschlüsselung mit einer Methode vor, die als optimales asymmetrisches Verschlüsselungs-Padding (OAEP) bezeichnet wird, um die PKCS #1 Entschlüsselungsprozedur ,,plaintext aware'' zu machen, was bedeutet, dass es nicht möglich ist, einen gültigen Chiffretext zu konstruieren, ohne den entsprechenden Klartext zu kennen + +## SSL-Chiffre-Suiten +- Kein Schutz (Standard-Suite): + - CipherSuite SSL_NULL_WITH_NULL_NULL = { 0x00,0x00 } +- Der Server stellt einen für die Verschlüsselung geeigneten RSA-Schlüssel bereit: + - SSL_RSA_WITH_NULL_MD5 = { 0x00,0x01 } + - SSL_RSA_WITH_NULL_SHA = { 0x00,0x02 } + - SSL_RSA_EXPORT_WITH_RC4_40_MD5 = { 0x00,0x03 } + - SSL_RSA_WITH_RC4_128_MD5 = { 0x00,0x04 } + - SSL_RSA_WITH_RC4_128_SHA = { 0x00,0x05 } + - SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5 = { 0x00,0x06 } + - SSL_RSA_WITH_IDEA_CBC_SHA = { 0x00,0x07 } + - SSL_RSA_EXPORT_WITH_DES40_CBC_SHA = { 0x00,0x08 } + - SSL_RSA_WITH_DES_CBC_SHA = { 0x00,0x09 } + - SSL_RSA_WITH_3DES_EDE_CBC_SHA = { 0x00,0x0A } +- Cipher-Suites mit authentifiziertem DH-Schlüssel-Austausch + - SSL_DH_DSS_EXPORT_WITH_DES40_CBC_SHA = { 0x00,0x0B } + - SSL_DH_DSS_WITH_DES_CBC_SHA = { 0x00,0x0C } + - SSL_DH_DSS_WITH_3DES_EDE_CBC_SHA = { 0x00,0x0D } + - SSL_DH_RSA_EXPORT_WITH_DES40_CBC_SHA = { 0x00,0x0E } + - SSL_DH_RSA_WITH_DES_CBC_SHA = { 0x00,0x0F } + - SSL_DH_RSA_WITH_3DES_EDE_CBC_SHA = { 0x00,0x10 } + - SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA = { 0x00,0x11 } + - SSL_DHE_DSS_WITH_DES_CBC_SHA = { 0x00,0x12 } + - SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA = { 0x00,0x13 } + - SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA = { 0x00,0x14 } + - SSL_DHE_RSA_WITH_DES_CBC_SHA = { 0x00,0x15 } + - SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA = { 0x00,0x16 } + +(DH steht für Suites, bei denen die öffentlichen DH-Werte in einem von einer CA signierten Zertifikat enthalten sind, DHE für Suites, bei denen sie mit einem öffentlichen Schlüssel signiert sind, der von einer CA zertifiziert ist) + +- Von der Verwendung der folgenden Chiffriersuiten ohne jegliche Authentifizierung der Entität wird dringend abgeraten, da sie anfällig für Man-in-the-Middle-Angriffe sind: + - SSL_DH_anon_EXPORT_WITH_RC4_40_MD5 = { 0x00,0x17 } + - SSL_DH_anon_WITH_RC4_128_MD5 = { 0x00,0x18 } + - SSL_DH_anon_EXPORT_WITH_DES40_CBC_SHA = { 0x00,0x19 } + - SSL_DH_anon_WITH_DES_CBC_SHA = { 0x00,0x1A } + - SSL_DH_anon_WITH_3DES_EDE_CBC_SHA = { 0x00,0x1B } +- Die letzte Cipher Suite ist für den Fortezza-Token: + - SSL_FORTEZZA_DMS_WITH_NULL_SHA = { 0x00,0x1C } + - SSL_FORTEZZA_DMS_WITH_FORTEZZA_CBC_SHA = { 0x00,0x1D } + +(Diese Cipher-Suites müssen natürlich nicht auswendig gelernt werden und werden hier nur aufgeführt, um die Flexibilität des SSL-Protokolls zu verdeutlichen) + +## Das Transport Layer Security-Protokoll +- 1996 gründete die IETF eine Arbeitsgruppe zur Definition eines Transport Layer Security (TLS) Protokolls: + - Offiziell wurde angekündigt, die Protokolle SSL, SSH und PCT als Input zu nehmen. + - Der im Dezember 1996 veröffentlichte Entwurf der TLS V.1.0-Spezifikation war jedoch im Wesentlichen identisch mit der SSL V.3.0-Spezifikation +- Eigentlich war es von Anfang an die Absicht der Arbeitsgruppe, TLS auf SSL V.3.0 mit den folgenden Änderungen aufzubauen: + - Die HMAC-Konstruktion zur Berechnung kryptographischer Hash-Werte sollte anstelle von Hashing im Präfix- und Suffix-Modus übernommen werden. + - Die auf Fortezza basierenden Chiffrier-Suiten von SSL sollten entfernt werden, da sie eine unveröffentlichte Technologie enthalten + - Ein auf dem DSS (Digital Signature Standard) basierender Dialog zur Authentifizierung und zum Schlüsselaustausch sollte aufgenommen werden. + - Das TLS-Record-Protokoll und das Handshake-Protokoll sollten getrennt und in separaten Dokumenten klarer spezifiziert werden, was bisher nicht geschehen ist. +- Um die Exportfähigkeit von TLS-konformen Produkten zu erreichen, wurde in einigen Chiffriersuiten die Verwendung von Schlüsseln mit einer auf 40 Bit reduzierten Entropie vorgeschrieben. + - Von der Verwendung dieser Cipher-Suites wird dringend abgeraten, da sie praktisch keinen Schutz der Vertraulichkeit von Daten bieten. +- Ab TLS 1.2 (RFC 5246): + - Schlüsselaustausch-Algorithmen: + - DH oder ECDH Austausch ohne oder mit DSS / RSA / ECDSA Signaturen + - DH-Austausch mit zertifizierten öffentlichen DH-Parametern + - RSA-basierter Schlüsselaustausch + - keine + - Verschlüsselungsalgorithmen: AES / 3DES in CBC / CCM /GCM, RC4, null + - Hash-Algorithmen: MD5, SHA-1, SHA-256, SHA-384, SHA-512, null + - Premaster Secret: Keine MD5/SHA-1 Kombination, sondern nur SHA-256! +- Was die Protokollfunktionen betrifft, ist TLS im Wesentlichen dasselbe wie SSL +- Sicherheit: + - In SSL 3.0 und TLS 1.0 ist der Initialisierungsvektor eines im CBC-Modus verschlüsselten Datensatzes der letzte Block des vorherigen Datensatzes + - Wenn ein Angreifer den Inhalt des vorherigen Datensatzes kontrolliert, kann er einen adaptiven Klartextangriff durchführen, um den Inhalt des nächsten Datensatzes herauszufinden. + - Durchführbar für Webverkehr, d. h. Erzeugen von Verkehr mit JavaScript und Beobachten von außen, führt zum sogenannten BEAST-Angriff (Browser Exploit Against SSL/TLS) [RD10]. + - Auch für VPN-Verkehr machbar + - Abgeschwächt durch TLS 1.1, wo explizite IVs verwendet werden + - 2009 wurde eine sogenannte TLS-Neuverhandlungsschwachstelle identifiziert + - Angreifer können sie nutzen, um einer legitimen Sitzung durch einen Man-in-the-Middle-Angriff Daten voranzustellen (Details in [Zo11]) + - Die Auswirkungen hängen stark von dem verwendeten Anwendungsprotokoll ab + - Bei HTTPS führt dies zu mehreren Ausnutzungsmöglichkeiten, z. B, + - Angreifer injeziert: `GET /ebanking/transfer?what=LotsOfMoney&to=eve HTTP/1.1 X-Ignore: ` + - Alice sendet: `GET /ebanking/start.html HTTP/1.1` + - Die Anfrage wird in eine valide HTTP Anfrage umgewandelt: `GET /ebanking/transfer?what=LotsOfMoney&to=eve HTTP/1.1 X-Ignore: GET /ebanking/start.html HTTP/1.1` + - Abgeschwächt durch Identifizierung neu ausgehandelter Sitzungen mit einer anderen ID [RRDO10] + +## Das Datagram Transport Layer Security Protokoll +- TLS bietet sichere Kommunikation über ein zuverlässiges Transportprotokoll +- DTLS ist so angepasst, dass es über unzuverlässige Transportprotokolle wie z.B. UDP funktioniert +- Wird zum Schutz verwendet: + - Sprach- und Videodaten in Echtzeit, insbesondere Voice-over-IP + - Getunnelte TCP-Daten (da TCP über TCP eine schlechte Idee für die Leistung ist) +- DTLS basiert derzeit auf TLS 1.2, enthält jedoch einige Änderungen: + - Bietet + - Nachrichtenwiederholungen, um verlorenen Handshake-Paketen entgegenzuwirken + - Eigener Fragmentierungsmechanismus, um große Handshake-Pakete zu ermöglichen + - Hinzufügen von Sequenznummern, um neu geordnete Datenpakete zu ermöglichen (und Verbot von Stromchiffren, z. B. RC4) + - Fügt einen Mechanismus hinzu, um zu erkennen, dass ein Client die ,,Verbindung'' mit denselben Ports neu gestartet hat (z. B. nach einem Anwendungsabsturz) + - Fügt einen Wiedergabeschutz durch ein gleitendes Fenster hinzu (wie bei IPsec) + - Fügt eine Cookie-basierte DoS-Abwehr hinzu (wie bei IKEv2) + +## Das Secure Shell-Protokoll +- Secure Shell (SSH) Version 1 wurde ursprünglich von Tatu Ylönen an der Universität Helsinki in Finnland entwickelt. +- Da der Autor auch eine kostenlose Implementierung mit Quellcode zur Verfügung stellte, fand das Protokoll weite Verbreitung im Internet +- Später wurde die Entwicklung von SSH durch den Autor kommerzialisiert. +- Nichtsdestotrotz sind immer noch kostenlose Versionen verfügbar, wobei die am weitesten verbreitete Version OpenSSH ist +- 1997 wurde eine Spezifikation der Version 2.0 von SSH bei der IETF eingereicht und seitdem in einer Reihe von Internet-Entwürfen verfeinert +- SSH wurde ursprünglich entwickelt, um einen sicheren Ersatz für die Unix r-Tools (rlogin, rsh, rcp und rdist) zu bieten, und stellt somit ein Protokoll der Anwendungs- oder Sitzungsschicht dar. +- Da SSH jedoch auch ein allgemeines Sicherheitsprotokoll der Transportschicht enthält und Tunneling-Fähigkeiten bietet, wird es in diesem Kapitel als Sicherheitsprotokoll der Transportschicht behandelt + +## SSH Version 2 +- SSH Version 2 ist in mehreren separaten Dokumenten spezifiziert, z.B.: + - SSH Protocol Assigned Numbers [LL06] + - SSH-Protokollarchitektur [YL06a] + - SSH-Authentifizierungsprotokoll [YL06b] + - SSH-Transportschichtprotokoll [YL06c] + - SSH-Verbindungsprotokoll [YL06d] +- SSH-Architektur: + - SSH verfolgt einen Client-Server-Ansatz + - Jeder SSH-Server hat mindestens einen Host-Schlüssel + - SSH Version 2 bietet zwei verschiedene Vertrauensmodelle: + - Jeder Client hat eine lokale Datenbank, die jeden Hostnamen mit dem entsprechenden öffentlichen Hostschlüssel verknüpft + - Die Zuordnung von Hostname zu öffentlichem Schlüssel wird von einer Zertifizierungsstelle zertifiziert, und jeder Client kennt den öffentlichen Schlüssel der Zertifizierungsstelle + - Das Protokoll ermöglicht die vollständige Aushandlung von Algorithmen und Formaten für Verschlüsselung, Integrität, Schlüsselaustausch, Komprimierung und öffentliche Schlüssel + +## SSH-Transportprotokoll +- SSH verwendet ein zuverlässiges Transportprotokoll (normalerweise TCP). +- Es bietet die folgenden Dienste: + - Verschlüsselung von Benutzerdaten + - Authentifizierung der Datenherkunft (Integrität) + - Server-Authentifizierung (nur Host-Authentifizierung) + - Komprimierung der Benutzerdaten vor der Verschlüsselung +- Unterstützte Algorithmen: + - Verschlüsselung: + - AES, 3DES, Blowfish, Twofish, Serpent, IDEA und CAST in CBC + - AES in GCM [IS09] + - Arcfour (,,vermutlich'' kompatibel mit dem ,,unveröffentlichten'' RC4) + - keine (nicht empfohlen) + - Integrität: + - HMAC mit MD5, SHA-1, SHA-256 oder SHA-512 + - keine (nicht empfohlen) + - Schlüsselaustausch: + - Diffie-Hellman mit SHA-1 und zwei vordefinierten Gruppen + - ECDH mit mehreren vordefinierten NIST-Gruppen [SG09] (obligatorisch drei Kurven über ℤp) + - Öffentlicher Schlüssel: RSA, DSS, ECC (in mehreren Varianten [SG09]) + - Komprimierung: keine, zlib (siehe RFCs 1950, 1951) + +## SSH-Transportprotokoll Paketformat +![](Assets/NetworkSecurity-ssh-transport-protocol-packet.png) +- Das Paketformat ist nicht 32-Bit-wortorientiert +- Felder des Pakets: + - Paketlänge: die Länge des Pakets selbst, ohne dieses Längenfeld und den MAC + - Padding length: Länge des Padding-Feldes, muss zwischen vier und 255 liegen + - Payload: die eigentliche Nutzlast des Pakets, wenn Komprimierung ausgehandelt wurde, wird dieses Feld komprimiert + - Padding: dieses Feld besteht aus zufällig ausgewählten Oktetten, um die Nutzlast auf ein ganzzahliges Vielfaches von 8 oder der Blockgröße des Verschlüsselungsalgorithmus aufzufüllen, je nachdem, welcher Wert größer ist + - MAC: Wurde die Nachrichtenauthentifizierung ausgehandelt, enthält dieses Feld den MAC des gesamten Pakets ohne das MAC-Feld selbst; soll das Paket verschlüsselt werden, wird der MAC vor der Verschlüsselung wie folgt berechnet + - MAC = HMAC(shared_secret, seq_number || unencrypted_packet), wobei seq_number eine 32-Bit-Sequenznummer für jedes Paket bezeichnet +- Verschlüsselung: wenn Verschlüsselung ausgehandelt wird, wird das gesamte Paket ohne MAC nach der MAC-Berechnung verschlüsselt + +## SSH-Aushandlung, Schlüsselaustausch und Server-Authentifizierung +- Algorithmus-Aushandlung: + - Jede Entität sendet ein Paket (bezeichnet als kexinit ) mit einer Spezifikation der von ihr unterstützten Methoden in der Reihenfolge ihrer Präferenz + - Beide Entitäten iterieren über die Liste des Clients und wählen den ersten Algorithmus, der auch vom Server unterstützt wird + - Diese Methode wird verwendet, um Folgendes auszuhandeln: Server-Host-Schlüssel-Algorithmus (~ Server-Authentifizierung) sowie Verschlüsselungs-, MAC- und Kompressionsalgorithmus + - Zusätzlich kann jede Entität ein Schlüsselaustauschpaket entsprechend einer Vermutung über den bevorzugten Schlüsselaustauschalgorithmus der anderen Entität anhängen + - Ist eine Vermutung richtig, wird das entsprechende Schlüsselaustauschpaket als erstes Schlüsselaustauschpaket der anderen Entität akzeptiert + - Falsche Vermutungen werden ignoriert und neue Schlüsselaustauschpakete werden nach Aushandlung des Algorithmus gesendet +- Für den Schlüsselaustausch definiert [YL06c] nur eine Methode: + - Diffie-Hellman mit SHA-1 und zwei vordefinierten Gruppen (1024 und 2048 Bit) + - Z.B. $p = 2^{1024} -2^{960} - 1 + (2^{64}\times \lfloor 2894 \times \pi + 129093\rfloor); g = 2$ +- Wenn der Schlüsselaustausch mit der vordefinierten DH-Gruppe durchgeführt wird: + - Der Client wählt eine Zufallszahl $x$, berechnet $e=g^x\ mod\ p$ und sendet $e$ an den Server + - Der Server wählt eine Zufallszahl $y$, errechnet $f=g^y\ mod\ p$ + - Nach dem Empfang von $e$ berechnet der Server ferner $K=e^y\ mod\ p$ und einen Hash-Wert $h = Hash(version_C, version_S, kexinit_C, kexinit_S, +K_S, e, f, K)$, wobei version und kexinit die Versionsinformationen des Clients und des Servers sowie die anfänglichen Algorithmus-Aushandlungsmeldungen bezeichnen + - Der Server signiert h mit seinem privaten Host-Schlüssel - KS und sendet dem Client eine Nachricht mit $(+K_S, f, s)$. + - Beim Empfang prüft der Client den Host-Schlüssel $+K_S$, berechnet $K=f^x\ mod\ p$ sowie den Hash-Wert $h$ und prüft dann die Signatur $s$ über $h$ +- Nach diesen Prüfungen kann der Client sicher sein, dass er tatsächlich ein geheimes K mit dem Host ausgehandelt hat, der $-K_S$ kennt. +- Der Server-Host kann jedoch keine Rückschlüsse auf die Authentizität des Clients ziehen; zu diesem Zweck wird das SSH-Authentifizierungsprotokoll verwendet + +## SSH-Sitzungsschlüssel-Ableitung +- Die Methode des Schlüsselaustauschs ermöglicht es, ein gemeinsames Geheimnis K und den Hash-Wert h zu ermitteln, die zur Ableitung der SSH-Sitzungsschlüssel verwendet werden: + - Der Hashwert h des anfänglichen Schlüsselaustauschs wird auch als session_id verwendet + - $IV_{Client2Server}$ = Hash(K, h, ,,A'', session_id) // Initialisierungsvektor + - $IV_{Server2Client}$ = Hash(K, h, ,,B'', session_id) // Initialisierungsvektor + - $EK_{Client2Server}$ = Hash(K, h, ,,C'', session_id) // Verschlüsselungsschlüssel + - $EK_{Server2Client}$ = Hash(K, h, ,,D'', session_id) // Chiffrierschlüssel + - $IK_{Client2Server}$ = Hash(K, h, ,,E'', session_id) // Integritätsschlüssel + - $IK_{Server2Client}$ = Hash(K, h, ,,F'', session_id) // Integritätsschlüssel +- Die Schlüsseldaten werden am Anfang der Hash-Ausgabe entnommen +- Wenn mehr Schlüsselbits benötigt werden als von der Hash-Funktion erzeugt werden: + - K1 = Hash(K, h, x, session_id) // x = ,,A'', ,,B'', usw. + - K2 = Hash(K, h, K1) + - K2 = Hash(K, h, K1, K2) + - XK = K1 || K2 || ... + +## SSH-Authentifizierungsprotokoll +- Das SSH-Authentifizierungsprotokoll dient zur Überprüfung der Identität des Clients und ist für die Ausführung über das SSH-Transportprotokoll vorgesehen +- Das Protokoll unterstützt standardmäßig die folgenden Authentifizierungsmethoden: + - Öffentlicher Schlüssel: Der Benutzer erzeugt und sendet eine Signatur mit einem öffentlichen Schlüssel pro Benutzer an den Server + - $Client\rightarrow Server: E(-K_{Benutzer}, (session\_id, 50, Name_{Benutzer}, Service, ,,publickey'', True, PublicKeyAlgorithmName, +K_{Benutzer}))$ + - Kennwort: Übertragung eines Kennworts pro Benutzer in der verschlüsselten SSH-Sitzung (das Kennwort wird dem Server im Klartext präsentiert, aber mit Verschlüsselung des SSH-Transportprotokolls übertragen) + - Host-basiert: analog zum öffentlichen Schlüssel, aber mit einem öffentlichen Schlüssel pro Host + - Keine: wird verwendet, um den Server nach unterstützten Methoden zu fragen und wenn keine Authentifizierung erforderlich ist (der Server antwortet direkt mit einer Erfolgsmeldung) +- Wenn die Authentifizierungsnachricht des Clients erfolgreich geprüft wurde, antwortet der Server mit einer ssh_msg_userauth_success-Nachricht + +## SSH-Verbindungsprotokoll +- Das SSH-Verbindungsprotokoll läuft auf dem SSH-Transportprotokoll und bietet folgende Dienste: + - Interaktive Anmeldesitzungen + - Fernausführung von Befehlen + - Weitergeleitete TCP/IP-Verbindungen + - Weitergeleitete X11-Verbindungen +- Für jeden der oben genannten Dienste werden ein oder mehrere ,,Kanäle'' eingerichtet, und alle Kanäle werden in eine einzige verschlüsselte und integritätsgeschützte SSH-Transportprotokollverbindung gemultiplext: + - Beide Seiten können die Eröffnung eines Kanals beantragen, und die Kanäle werden durch Nummern beim Sender und beim Empfänger gekennzeichnet. + - Kanäle sind typisiert, z. B. ,,session'', ,,x11'', ,,forwarded-tcpip'', ,,direct-tcpip'' ... + - Kanäle werden durch einen Fenstermechanismus kontrolliert, und es dürfen keine Daten über einen Kanal gesendet werden, bevor ,,window space'' verfügbar ist +- Öffnen eines Kanals: + - Beide Seiten können die Nachricht ssh_msg_channel_open senden, die mit dem Nachrichtencode 90 und den folgenden Parametern signalisiert wird: + - Kanaltyp: ist vom Datentyp String, z.B. ,,session'', ,,x11'', etc. + - Absenderkanal: ist ein lokaler Bezeichner vom Typ uint32 und wird vom Anforderer dieses Kanals gewählt + - initial window size: ist vom Typ uint32 und gibt an, wie viele Bytes an den Initiator gesendet werden dürfen, bevor das Fenster vergrößert werden muss + - maximale Paketgröße: ist vom Typ uint32 und legt die maximale Paketgröße fest, die der Initiator für diesen Kanal zu akzeptieren bereit ist + - weitere Parameter, die vom Typ des Kanals abhängen, können folgen + - Wenn der Empfänger dieser Nachricht die Kanalanfrage nicht annehmen will, antwortet er mit der Nachricht ssh_msg_channel_open_failure (Code 92): + - Empfängerkanal: die vom Absender in der Öffnungsanfrage angegebene ID + - reason code: ist vom Typ uint32 und gibt den Grund für die Ablehnung an + - additional textual information: ist vom Typ string + - language tag: ist vom Typ string und entspricht dem RFC 1766 + - Wenn der Empfänger dieser Nachricht die Kanalanfrage annehmen will, antwortet er mit der Nachricht ssh_msg_channel_open_confirmation (Code 91) und den folgenden Parametern + - Empfänger-Kanal: die vom Absender in der Öffnungsanforderung angegebene ID + - Absenderkanal: die dem Kanal vom Antwortenden gegebene Kennung + - initial window size: ist vom Typ uint32 und gibt an, wie viele Bytes an den Responder gesendet werden können, bevor das Fenster vergrößert werden muss + - maximum packet size: ist vom Typ uint32 und legt die maximale Paketgröße fest, die der Responder für diesen Kanal zu akzeptieren bereit ist + - weitere Parameter, die vom Kanaltyp abhängen, können folgen +- Sobald ein Kanal geöffnet ist, sind die folgenden Aktionen möglich: + - Datenübertragung (allerdings sollte die empfangende Seite wissen, ,,was mit den Daten zu tun ist'', was eine weitere vorherige Aushandlung erfordern kann) + - Kanaltypspezifische Anfragen + - Schließung des Kanals +- Für die Datenübertragung sind die folgenden Nachrichten definiert: + - ssh_msg_channel_data: mit den beiden Parametern Empfängerkanal, Daten + - ssh_msg_channel_extended_data: erlaubt die zusätzliche Angabe eines Datentypcodes und ist nützlich, um Fehler zu signalisieren, z.B. bei interaktiven Shells + - ssh_msg_channel_window_adjust: erlaubt es, das Flusskontrollfenster des Empfängerkanals um die angegebene Anzahl von Bytes zu erweitern +- Schließen von Kanälen: + - Wenn eine Peer-Entität keine Daten mehr an einen Kanal senden will, sollte sie dies der anderen Seite mit der Nachricht ssh_msg_channel_eof signalisieren + - Wenn eine der beiden Seiten einen Kanal beenden möchte, sendet sie die Nachricht ssh_msg_channel_close mit dem Parameter recipient channel + - Beim Empfang der Nachricht ssh_msg_channel_close muss eine Peer-Entität mit einer ähnlichen Nachricht antworten, es sei denn, sie hat bereits die Schließung dieses Kanals beantragt. + - Sowohl nach dem Empfang als auch nach dem Senden der Nachricht ssh_msg_channel_close für einen bestimmten Kanal kann die ID dieses Kanals wiederverwendet werden. +- Kanaltypspezifische Anfragen erlauben es, bestimmte Eigenschaften eines Kanals anzufordern, z. B. dass die empfangende Seite weiß, wie sie die über diesen Kanal gesendeten Daten verarbeiten soll, und werden mit signalisiert: + - ssh_msg_channel_request: mit den Parametern recipient channel, request type (string), want reply (bool) und weiteren anfragespezifischen Parametern + - ssh_msg_channel_success: mit dem Parameter recipient channel + - ssh_msg_channel_failure: mit dem Parameter recipient channel +- Beispiel 1 - Anfordern einer interaktiven Sitzung und Starten einer Shell darin: + - Zunächst wird ein Kanal vom Typ ,,session'' geöffnet + - Ein Pseudo-Terminal wird angefordert, indem eine ssh_msg_channel_request-Nachricht gesendet wird, wobei der Anforderungstyp auf ,,pty-req'' gesetzt wird + - Falls erforderlich, können Umgebungsvariablen gesetzt werden, indem ssh_msg_channel_request-Nachrichten mit dem Anforderungstyp ,,env'' gesendet werden. + - Dann wird der Start eines Shell-Prozesses über eine ssh_msg_channel_request-Nachricht mit dem Request-Typ ,,shell'' gefordert (dies führt normalerweise zum Start der Standard-Shell für den Benutzer, wie sie in /etc/passwd definiert ist) + - Anfordern einer interaktiven Sitzung und Starten einer Shell darin: + | SSH Client | | SSH Server | + | -------------------------------------------------------------------------- | ---- | ---------------------------------------------------- | + | ssh_msg_channel_open (,,session'', 20, 2048, 512) | ---> | + | | <--- | ssh_msg_channel_open_confirmation(20, 31, 1024, 256) | + | ssh_msg_channel_request (31, ,,pty-req'', false, ...) | ---> | + | ssh_msg_channel_request (31, ,,env'', false, ,,home'', ,,/home/username'') | ---> | + | ssh_msg_channel_request (31, ,,shell'', true, ...) | ---> | + | | <--- | ssh_msg_channel_success(20) | + + [Nutzdatenaustausch findet ab jetzt statt...] + +## SSH-Verbindungsprotokoll II +- Beispiel 2 - Anforderung der X11-Weiterleitung: + - Zuerst wird ein Kanal des Typs ,,session'' geöffnet + - Die X11-Weiterleitung wird durch Senden einer ssh_msg_channel_request-Nachricht mit dem Anforderungstyp ,,x11-req'' angefordert + - Wenn später eine Anwendung auf dem Server gestartet wird, die auf das Terminal des Client-Rechners zugreifen muss (der X11-Server, der auf dem Client-Rechner läuft), wird ein neuer Kanal über ssh_msg_channel_open geöffnet, wobei der Kanaltyp auf ,,x11'' und die IP-Adresse und Portnummer des Absenders als zusätzliche Parameter gesetzt werden +- Beispiel 3 - Einrichtung einer TCP/IP-Portweiterleitung: + - Eine Partei muss die Portweiterleitung von ihrem eigenen Ende in die andere Richtung nicht explizit anfordern. Wenn sie jedoch Verbindungen zu einem Port auf der anderen Seite an ihre eigene Seite weiterleiten lassen möchte, muss sie dies explizit über eine ssh_msg_global_request-Nachricht mit den Parametern ,,tcpip-forward'', want-reply, zu bindende Adresse (,,0.0.0.0'' für jede Quelladresse) und zu bindende Portnummer anfordern (diese Anforderung wird normalerweise vom Client gesendet) + - Wenn eine Verbindung zu einem Port kommt, für den eine Weiterleitung angefordert wurde, wird ein neuer Kanal über ssh_msg_channel_open mit dem Typ ,,forwarded-tcpip'' und den Adressen des Ports, der verbunden wurde, sowie des ursprünglichen Quellports als Parameter geöffnet (diese Nachricht wird normalerweise vom Server gesendet) + - Wenn eine Verbindung zu einem (Client-)Port kommt, der lokal als weitergeleitet eingestellt ist, wird ein neuer Kanal angefordert, wobei der Typ auf ,,direct-tcpip'' gesetzt wird und die folgenden Adressinformationen in zusätzlichen Parametern angegeben werden: + - host to connect, port to connect: Adresse, mit der der Empfänger diesen Kanal verbinden soll + - Absender-IP-Adresse, Absender-Port: Quelladresse der Verbindung + +## Schlussfolgerung +- Sowohl SSL, TLS als auch SSH eignen sich für die Sicherung der Internet-Kommunikation in der (oberen) Transportschicht: + - Alle drei Sicherheitsprotokolle arbeiten mit einem zuverlässigen Transportdienst, z. B. TCP, und benötigen diesen. + - Es gibt eine datagrammorientierte Variante von TLS, genannt DTLS + - Obwohl SSH in / oberhalb der Transportschicht arbeitet, ist die Server-Authentifizierung hostbasiert und nicht anwendungsbasiert. + - Sicherheitsprotokolle der Transportschicht bieten echten End-to-End-Schutz für Benutzerdaten, die zwischen Anwendungsprozessen ausgetauscht werden. + - Außerdem können sie mit der Paketfilterung der heutigen Firewalls zusammenarbeiten. + - Die Protokoll-Header-Felder von Protokollen der unteren Schicht können jedoch nicht auf diese Weise geschützt werden, so dass sie keine Gegenmaßnahmen für Bedrohungen der Netzinfrastruktur selbst bieten. + # Sicherheitsaspekte der mobilen Kommunikation # Sicherheit von drahtlosen lokalen Netzen # Sicherheit von GSM- und UMTS-Netzen @@ -3975,4 +4468,20 @@ Zusätzliche Designziele zu IKEv1 - [Tran06] T.H. Tran: _Proactive Multicast-Based IPSEC Discovery Protocol and Multicast Extension._ Military Communications Conference, 2006. - [FBJW08] R. Figueiredo, P. O. Boykin, P. St. Juste, D. Wolinsky: _Social VPNs: Integrating Overlay and Social Networks for Seamless P2P Networking’._ IEEE WETICE/COPS, 2008. - [RSS10] M. Rossberg, T. Strufe, G. Schaefer: _Distributed Automatic Configuration of Complex IPsec-Infrastructures._ Journal of Network and Systems Management, Volume 18, Issue 3, 2010. -- [RSSM09] M. Rossberg, W. Steudel, G.Schaefer, M. Martius: _Eine Software-Architektur zur Konstruktion flexibler IPsec-Infrastrukturen._ BSI 11. Deutscher IT-Sicherheitskongress, 2009. \ No newline at end of file +- [RSSM09] M. Rossberg, W. Steudel, G.Schaefer, M. Martius: _Eine Software-Architektur zur Konstruktion flexibler IPsec-Infrastrukturen._ BSI 11. Deutscher IT-Sicherheitskongress, 2009. +- [BKS98a] D. Bleichenbacher, B. Kaliski, J. Staddon. _Recent Results on PKCS #1: RSA Encryption Standard._ RSA Laboratories' Bulletin 7, 1998 +- [Cop96a] D. Coppersmith, M. K. Franklin, J. Patarin, M. K. Reiter. _Low Exponent RSA with Related Messages._ In Advance in Cryptology -- Eurocrypt'96, U. Maurer, Ed., vol. 1070 of Lectures Notes in Computer Science, Springer-Verlag, 1996 +- [FKK96a] A. O. Freier, P. Karlton, P. C. Kocher. _The SSL Protocol Version 3.0._ Netscape Communications Corporation, 1996 +- [DA99] T. Dierks, C. Allen. _The TLS Protocol Version 1.0._ RFC 2246, 1999 +- [DR08] T. Dierks, E. Rescorla. _The Transport Layer Security (TLS) Protocol Version 1.2._ RFC 5246, 2008 +- [RD10] J. Rizzo, T. Duong, Practical Padding Oracle Attacks, 4th USENIX conference on Offensive technologies (WOOT), 2010 +- [RRDO10] E. Rescorla, M. Ray, S. Dispensa, N. Oskov. _Transport Layer Security (TLS) Renegotiation Indication Extension_ , RFC 5746. 2010 +- [Zo11] T. Zoller. _TLS & SSLv3 renegotiation vulnerability._ Technical report, G-SEC. 2011 +- [RM12] E. Rescorla, N. Modadugu. _Datagram Transport Layer Security Version 1.2._ RFC 6347, 2012 +- [LL06] S. Lehtinen, C. Lonvick. _The Secure Shell (SSH) Protocol Assigned Numbers._ RFC 4250, 2006 +- [YL06a] T. Ylonen, C. Lonvick. _The Secure Shell (SSH) Protocol Architecture._ RFC 4251, 2006 +- [YL06b] T. Ylonen, C. Lonvick. _The Secure Shell (SSH) Authentication Protocol._ RFC 4252, 2006 + -[YL06c] T. Ylonen, C. Lonvick. _The Secure Shell (SSH) Transport Layer Protocol_ , RFC 4253, 2006 + -[YL06d] T. Ylonen, C. Lonvick. _The Secure Shell (SSH) Connection Protocol._ RFC 4254, 2006 + -[SG09] D. Stebila, J. Green. _Elliptic Curve Algorithm Integration in the Secure Shell Transport Layer_ , RFC 5656. 2009 + -[IS09] K. Igoe, J. Solinas. _AES Galois Counter Mode for the Secure Shell Transport Layer Protocol._ RFC 5647. 2009 \ No newline at end of file