Meist ist durch guet Prävention und Vorsorge ein Angriff vermeidbar. Dazu zähl zum Beispiel...
- ein eigener Meeting-Server
- eigene Moodle-Instanz
- externe Mail-Server und Adressen
- etc.
So kann ein Angriff nicht die ganze Infrastruktur lahmlegen (zum Beispiel beim Einsatz von Microsoft 365 mit Teams, Office und Outlook).
Safety
Kontrolle über bekannte Risiken - zum Beispiel durch Vorsorge, Prävention und Schutzmaßnahmen.
Security
Sicherheit vor (gezielten) Störungen von außen - also Angriffen.
Eselbrücke
Sicherheitsdienst (Türsteher) nennt sich Security, nicht Safety.- Authentizität
- Integrität
- nicht-Abstreitbarkeit
- Verbindlichkeit
- Verfügbarkeit
- Privatsphäre
- Vertraulichkeit
Vertraulichkeit, Integrität & Authentizität
Informationen bleiben im vorhergesehenen
Kreis, sind unverändert
und stammen von angegebenen Absender
.
Authentifizierung
Nachweis der Identität
(Shared Secret, Biometrie, ...).
nicht-Abstreitbarkeit
"Ich habe das nicht bestellt!"
Nachweis möglich, somit abstreiten unmöglich.
Verfügbarkeit
Vorhergesagte Nutzung durch vorhergesehene Nutzer ist möglich.
Privatsphäre
Grundrecht auf informationelle Selbstbestimmung (DSGVO
, etc.), technisch hilft Anonymisierung.
...
Ist die Wissenschaft von der Verschlüsselung und Entschlüsselung von Informationen.
graph LR
A[Kryptologie] --> B["Steganographie <br> (verstecken)"]
A --> C[Kryptographie <br> verschlüsseln]
A --> D[Kryptanalyse <br> entschlüsseln]
Technische Stenanographie ist zum Beispiel die Manipulation von Bild-, Audio- und Videodateien sowie Verstecken weiterer Dateien.
Beispielsweise wird das diederwertigsten Farb-Bit als Daten-Bit verwendet.
Verschlüsselung von Informationen.
Zum Beispiel Caesa oder ROT13 - z.B.Verschiebung des Alphabets um einen bestimmten Wert. Kryptanalyse mit Mono-, Bi oder Trigrammen sowie Brute-Force möglich.
# Verschiebung um 3
ABCDEFGHIJKLMNOPQRSTUVWXYZ
XYZABCDEFGHIJKLMNOPQRSTUVW
# mit Caesar
Gdv lvw hlq Ehlvslho.
Das ist ein Beispiel.
Allgemein kann auch ein String-Key angewendet werden, um diesen Wert wird dann das Alphabet verschoben.
key = "ZEBRA"
ABCDEFGHIJKLMNOPQRSTUVWXYZ
ZEBRACDFGHIJKLMNOPQSTUVWXY
Generell einfach zu entschlüsseln, da Bi- oder Trigramme verschieder verteilt sind (z.B. ll -> yy
).
Verbeserungen
Man kann ähnliche Zeichen (z.B. u
und v
) zusammenfassen sowie Satz- und Sonderzeichen ignorieren.
Am Beispie der Vigenère-Verschlüsselung.
# verschlüsseln von text mit key
text = "Das ist ein Geheimtext"
key = "THI NGO LST ADTKEYTHIN"
^ D & T
# Feld mit Alphabet
v
ABCDEFGHIJKLMNOPQRSTUVWXY
ZABCDEFGHIJKLMNOPQRSTUVWX
YZABCDEFGHIJKLMNOPQRSTUVW
XYZABCDEFGHIJKLMNOPQRSTUV
WXYZABCDEFGHIJKLMNOPQRSTU
VWXYZABCDEFGHIJKLMNOPQRST
UVWXYZABCDEFGHIJKLMNOPQRS
>TUVWXYZABCDEFGHIJKLMNOPQR
STUVWXYZABCDEFGHIJKLMNOPQ
^ (bei D von oben)
...
# ergibt als ersen Buchstaben
>W
Entscheidend ist die Key-Länge, bei len(key) = 1
ist es Caesar, bei len(key) < len(text)
sind es mehrere Caesar-Verschlüsselungen udn bei len(key) = len(text)
ist es ein One-Time-Pad.
Stromchiffren
Weiterentwicklung der polyalphabetischen Kryptographie.
...RC4 (S.94)
...Electronic Code Book Mode (S.98)
...Cipher Block Chaining Mode (S.100)
...Cipher Feedback Mode (S.102)
Data Encryption Standard
DES (USA, 1977) ist ein symmetrisches Blockchiffre mit 64 Bit Blockgröße (davon 56 Bit Schlüssel und 8 Bit Parität).
noch nicht geprüft
graph TD
A[64bit Klartext] --> B[Eingangspermutation]
B --> C[L-Block 32bit]
B --> D[R-Block 32bit]
D --> E[Expansion 48bit]
E --> F[XOR]
Q[64bit Schlüssel] --> R[Schlüssel-Permutation]
R --> S[C-Block 28bit]
R --> T[D-Block 28bit]
T --> U[Schlüsselauswahl 48bit]
S --> U
U --> F
F --> G[S1, S2, S3, ..., Sn]
G --> H[Permutation 32bit]
H --> I[XOR]
C --> I
I --> D
I --> J[Ausgangspermutation 64bit]
J --> K[Chiffretext 64bit]
3DES
3DES ist eine Erweiterung von DES.
International Data Encryption Algorithm
IDEA ist eine symmetrische Blockchiffre mit 128bit-Schlüssel und 64bit-Blöcken, jeweils 8 Runden.
Advanced Encryption Standard
AES wurde 2000 "in Dienst gestellt" und ist eine symmetrische Blockchiffre mit 128bit-Blockgröße verschiedenen Schlüssellängen (128, 160, 192, 224, 256bit).
sicherer Schlüsselaustausch
Die grundlegende Idee bei Diffie-Hellman ist, dass zwei Kommunikationspartner einen gemeinsamen Schlüssel aushandeln, ohne dass dieser übertragen wird. Client
und Server
wählen jeweils
- eine Primzahl
p
und - eine Primitivwurzel
g
modulop
.
Nun chiffriert der Client
den Geheimtext mit seinem eigenen Schlüssel S
(den er für sich behält). Das Chiffrat Chiff(Text,S)
sendet er dann an den Server
. Dieser verschlüsselt erneut mit seinem eigenen Schlüssel E
(den er ebenfalls geheim hält), was das Doppelchiffrat Chiff(Chiff(Text,S),E)
ergibt. Dieses sendet er an den Client
zurück. Dieser entschlüsselt nun mit seinem Schlüssel S
und erhält Dechiff(Chiff(Chiff(Text,S),E),S)
= Chiff(Text,E)
, welches er wieder an den Server
sendet. Dieser entschlüsselt mit seinem Schlüssel E
und erhält Dechiff(Chiff(Text,E),E)
= Text
.
binäre Exponentiation
Die binäre Exponentiation (x
mit einer natürlichen Zahl n
zu potenzieren. Idee ist 1
mache "quadrieren und multiplizieren" und aus 0
mache "quadrieren" - wobei das erste x
gestrichen wird und durch x
ersetz wird, da Binärdarstellung immer mit 1
beginnt.
Beispiel:
Diffie-Hellman
- Geheime Zufallszahlen
$a$ und$b$ werden gewählt. -
Client
wählt Zufallszahl$a, 1 \leq a \leq p-1$ und berechnet$A = g^a \mod p$ . -
Server
wählt Zufallszahl$b, 1 \leq b \leq p-1$ und berechnet$B = g^b \mod p$ . - Gegenseitiges Zusenden von
$A$ und$B$ . -
Client
berechnet$K = B^a \mod p$ . -
Server
berechnet$K = A^b \mod p$ . - Beide haben nun den gleichen Schlüssel
$K$ , da-
$K = B^a \mod p = (g^b \mod p)^a \mod p = g^{ba} \mod p$ und -
$K = A^b \mod p = (g^a \mod p)^b \mod p = g^{ab} \mod p$ .
-
-
$K$ ist der gemeinsame Schlüssel.
Zum Beispiel RSA (Rivest, Shamir, Adleman, 1977) oder ElGamal (1985).
RSA
Beim RSA-Verfahren wird wie folgt vorgegangen.
- Wähle zwei zufällige Primzahlen
$p$ und$q$ . - Der Public-Key setzt sich auch dem Zahlenpaar
$(e,N)$ zusammen. - Der Private-Key setzt sich aus dem Zahlenpaar
$(d,N)$ zusammen.
Grundidee ist, dass es sehr aufwendig ist, große Zahlen in ihre Primfaktoren zu zerlegen. Als Beispiel für einen Public Key wählt man
-
$p = 11$ und$q = 13$ . -
$N = p \cdot q = 11 \cdot 13 = 143$ . -
$\varphi(N) = (p-1) \cdot (q-1) = 10 \cdot 12 = 120$ . - Nun wird
$e = 23$ gewählt. - Der Public Key ist
$(e,N) = (23,143)$ .
Beim Private Key wird ähnlich vorgegangen.
-
$p=11$ und$q=13$ plus$N=143$ und$e=23$ . - Nun wird
$d$ wiefolgt berechnet:-
$e \cdot d + k \ cdot \varphi(N) = 1$ . -
$23 \cdot d + k \cdot 120 = 1$ . -
$23 \cdot 47 + (-9) \cdot 120 = 1$ . -
$d = 47$ .
-
- Der Private Key ist
$(d,N) = (47,143)$ .
Verschlüsselt wird nun mit dem Chiffrat
-
$K = 7$ als Beispiel -
$e=23$ und$N=143$ . -
$C = K^e \mod N = 7^{23} \mod 143 = 2$ .
Und entschlüsselt wird ebenso mit dem Chiffrat
-
$C = 2$ als Beispiel von oben. -
$d=47$ und$N=143$ . -
$K = C^d \mod N = 2^{47} \mod 143 = 7$ .
Elliptic Curve
Vorteile
Bei der assymetrischen Kryptographie ist der Schlüsselaustausch sicher, da der Private Key nicht übertragen werden muss.
Nachteile
Sehr rechenintensiv und längere Schlüssel nötig als bei der symmetrischen Kryptographie (bei gleicher Sicherheit).
Das Problem bei symmetrischer Kryptographie ist der Schlüsselaustausch - bei dem Gegenstück die aufwendige Berechnung.
Lösungsidee
- Erzeuge zufälligen, symmetrischen Sitzungsschlüssel
$S$ . - Verschlüssele Nachricht
$M$ mit$S$ symmetrisch, also$C_M = enc_{sym}(M,S)$ . - Verschlüssele
$S$ asymmetrisch an Public-Key$K_pub$ des Empfängers, also$C_S = enc_{asym}(S,K_pub)$ . - Sende
$(C_M,C_S)$ an Empfänger, der dann-
$S = dec_{asym}(C_S,K_priv)$ und -
$M = dec_{sym}(C_M,S)$ berechnet.
-
Ziel ist das Nachweisen von Veränderungen an Daten.
Hashfunktion
Die Idee der Hash-Funktion ist es, eine Menge SHA
, SHA256
, SHA512
oder MD5
.
- Nachricht
N
=Hello World
H = MD5(N)
=b10a8db164e0754105b7a99be72e3fe5
- Sende
N
undH
- Angreifer manipuliert
N
zuN'
=Hallo Welt
udn berechnet neuen HashH'
=5c372a32c9ae748a4c040ebadc51a829
- Leitet
N'
undH'
weiter - Wie kann der Empfänger nun feststellen, dass
N
manipuliert wurde?
Signatur
Die Idee der Signatur ist es, eine Nachricht N
mit einem Private-Key K_priv
zu signieren und mit dem Public-Key K_pub
zu verifizieren.
- Sender
- Nachricht
N
,Hash H=hash(N)
- Signatur
S=enc(N,K_priv)
- Nachricht
- senden von
N
undS
- Empfänger
hash(N)
dec(S,K_pub)
- Nachricht unverändert, wenn
hash(N) = dec(S,K_pub)
Denn $K_{pub} muss zu K_{priv} passen, den nur der Sender kennt!
Ziel ist das Nachweisen der Identität eines Kommunikationspartners - mit Zertifikaten vertrauenswürdiger Herausgeber (Root-CA
) oder Signatur.
SSL/TLS
Authentifiziert den Server und ggf auch die Clients, stellt Integrität der Datenübertragung und vertrauliche Kommunikation sicher - Grundidee ist
- Generierung zufälliger symmetrischer Schlüssel
- AUstausch mit asymmetrischer Verschlüsselung
- Kommunikation mit symmetrischer Verschlüsselung
Angegriffen werden kann unter anderem die Datenübertragung (belauschen, unterdrücken oder manipulieren) sowie die Verfügbarkeit eines Systems - auch Reconnaisanve (Datensammlung) ist relevant.
Ziel ist es Informationen zu sammeln, um an Daten zu kommen - einen Einstieg zu finden.
Erreichbarkeit
Mit ping
kann die Erreichbarkeit von Systemen getestet werden, oder portscan
um offene Ports zu finden.
Netzinfrastruktur
Mit traceroute
kann die Netzinfrastruktur ermittelt werden, also über welche Server die Datenpakete laufen.
Dienste
Die angebotenen Dienste können mit portscan
analysiert werden, um Schwachstellen zu finden.
Versionen
Verwendete Versionen können mittels Connect Scan
oder Version Scan
ermittelt werden.
Betriebssystem
Durch Fingerprints
kann das verwendete Betriebssystem ermittelt werden.
Handshake
Ein Verfahren zum Aufbau verlustfreier Datenübertragung zwischen 2
Instanzen ist der 3-Way-Handshake
.
sequenceDiagram
participant HostA
participant HostB
Note over HostA, HostB: SYN (Synchronize)
HostA->>HostB: SYN
Note over HostB: SYN received
HostB->>HostA: SYN, ACK
Note over HostA: SYN-ACK received
HostA->>HostB: ACK
Note over HostB: Connection established
Auch möglich ist ein 4-Way-Handshake
mit FIN
(Finish).
sequenceDiagram
participant HostA
participant HostB
Note over HostA, HostB: FIN (Finish)
HostA->>HostB: FIN
Note over HostB: FIN received
HostB->>HostA: ACK
Note over HostA: ACK received
HostB->>HostA: FIN
Note over HostA: FIN received
HostA->>HostB: ACK
Note over HostB: ACK received
SYN-Scan
Mit nmap
kann ein SYN-Scan
durchgeführt werden, um offene Ports zu finden.
Nun weiß der Angreifer, dass der Port offen und erreichtbar ist.
Diagramm
sequenceDiagram
participant Attacker
participant Host
Note over Attacker, Host: SYN-Scan
Attacker->>Host: SYN
Note over Host: SYN received
Host->>Attacker: SYN, ACK
Note over Attacker: SYN-ACK received
Attacker->>Host: RST
Note over Host: RST received
Der Host sendet ein RST
, falls der Port geschlossen ist. Falls keine Antwort kommt, ist der Port gefiltert.
root@user:~# nmap ip.of.fb -sS
Starting Nmap 7.93 ( https://nmap.org ) at 2023-04-11 18:09 CEST
Nmap scan report for 192.0.2.1
Host is up (0.0045s latency).
Not shown: 995 closed tcp ports (reset)
PORT STATE SERVICE VERSION
53/tcp open domain NLnet Labs NSD
80/tcp open http FRITZ!Box http config
443/tcp open ssl/http FRITZ!Box http config
5060/tcp open sip AVM FRITZ!OS SIP
8181/tcp open intermapper?
TRACEROUTE (using port 110/tcp)
HOP RTT ADDRESS
1 1.07 ms Surface-Pro-8 (172.23.124.2)
2 22.39 ms 192.168.178.1
AC Address: 1C:ED:6F:xx:xx:xx (AVM Audiovisuelles Marketing und Computersysteme GmbH)
Device type: general purpose
Running: Linux 3.X|4.X
OS CPE: cpe:/o:linux:linux_kernel:3
cpe:/o:linux:linux_kernel:4
OS details: Linux 3.2 - 4.9
Network Distance: 1 hop
Service Info: Devices: broadband router, VoIP adapter
Tarnen & Täuschen
ne bye