Reko Testat Nr. 2
Rechnernetze und Kommunikationssysteme
Rechnernetze und Kommunikationssysteme
-
- 1 / 33
-
Cartes-fiches
Nennen Sie die Schutzziele von IT Sicherheit.
Geben Sie zu jedem Ziel 1-3 Beispiele
- Authentizität
- Integrität
- Vertraulichkeit
- Verfügbarkeit
- Verbindlichkeit
Authentizität:
User / Passwort, Login am Rechner, Digitale Signaur von Mail
Vertraulichkeit
Verschlüsselung
Verfügbarkeit
High Availabillity, Tier-Level, Monitoring
Integrität
Prüfsummen, Hashfunktion MD5, Fehlerkorrekturen
Verbindlichkeit
Protokollierung, Audits
Beschreiben Sie die Schutzziele der IT-Sicherheit
Authentizität:
Echtheit und Glaubwürdigkeit des Objektes oder Person, anhand eindeutiger Identität überprüfbar
Integrität:
Daten können nicht ohne erlaubnis und unbemerkt manipuliert werden
Vertraulichkeit
Keine unautorisierte Informationsgewinnung möglich
Verbindlichkeit
Zuordnung von Aktionen ist eindeutig nachweisbar und kann nicht nachträglich abgestritten werden
Verfügbarkeit
Daten sind zu allen Zeitpunkten verfügbar, wenn sie benötigt werden
Was versteht man unter Authorisierung? Was versteht man unter Autorisierung? Geben Sie jeweils zwei praktische Beispiel für jeden Begriff an, wo diese im Einsatz sind.
Authorisierung:
"Wer bin ich" - Username + Passwort erforderlich
Autorisierung:
"Was darf ich" - Welche Rechte habe ich für eine Anwendung, Datei-System, Datenbank etc.
bsp:
Authorisierung --> Login am PC, Online für Facebook etc. - Beser zwei-faktor-authentifizierung z.b. bei Online Banking
Autorisierung -> Lese Rechte in einer Datenbank, Schreib und Ausführrechte bei einem PC
Wozu werden Verzeichnisdienste üblicherweise eingesetzt?
Verzeichnisdienste in der Regel dazu verwendet, Benutzerdaten zentral zu sammeln und Applikationen zur Verfügung zu stellen. Gegenüber einer dezentralen Speicherung z. B. mit einem eigenen Dienst für jedes Programm hat die zentrale Verwaltung den Vorteil, dass Benutzer und Rechte an zentraler Stelle nur einmal geändert werden müssen.
Beschreiben Sie die Inhalte und Aufgaben von LDAP?
Name des Protokolls und des Verzeichnisdienstes (Anwendung)
Hierarische "Datenbank"
Enthält Personen, Objekte, Konfigurationen etc..
OpenSource-Implementierung
Ermöglicht Authentifizierung und teilweise Autorisierung
Beschreiben Sie die Inhalte und Aufgaben von AD?
Hierarchische Datenbank
Enthält Personen, Computer, Konfiguration, etc.
"spricht" LDAP
Quasi Standard bei Windows-Anwendungen
ermöglicht Authentifizierung und Autorisierung
Wozu werden digitale Zertifikate üblicherweise eingesetzt?
bestätigt Vertraulichkeit, Authentizität und Integrität.
Z.B. bei Emails mit PGP
Nennen Sie zwei unterschiedliche Beispiele wo diese zum Einsatz kommen. (Digitale Zertifikate)
Bei persönlichen Zertifikaten werden Digitale Zertifikate für verschlüsselte Emails verwenden, z.b. PGP.
Zertifikate von Uni etc. werden dafür genutzt um die Identität eines Nutzer zu prüfen (ohne Zertifikat könnten wir z.B. nicht in Eduram Wlan)
Wie kommen Sie zu einem digitalen Zertifikat?
Persönlich ausgestelltes Zertifikat
Nutzer stellt sich ein eigenes Zertifikat aus • Zertifikat wird direkt an Empfänger weitergegeben
Zertifizierungsstelle
Zertifikat wird von einer vertrauenswürdigen Stelle ausgestellt
• CA prüft die Identität des Nutzers
• die digitale Signatur der CA findet sich im Nutzerzertifikat wieder
• hierarchische Verteilung von CAs
Wie wird eine Nachricht allgemein verschlüsselt?
Eine Nachricht im Klartext wird mit einem Verschlüsselungsverfahren zum "Geheimtext" z.B. mit C-Verschlüsseung oder mit einem bestimmten Key. Empfänger kann dann mit entsprechenden Key oder bestimmten Entschlüsselungsverfahren den Text wieder lesen.
Beschreiben Sie den Unterschied zwischen einem symmetrischen Schlüssel und einem asymmetrischen Schlüssel.
Beim symmetrischen Schlüssel sind die Schlüssel für Ver- bzw. Entschlüsselung gleich. Vorteil schnell. Nachteil, Schlüssel muss bei beiden Seiten vorhanden sein (Sender + Empfänger). Einsatz als 3DES bei Chipkarten. DES (Data Encryption Standard).
Beim assymemetrischen Schlüssel wird ein schlüsselpaar erzeugt. (Öffentlicher Schlüssel und privater Schlüssel). Nachricht wird mit öffentlichem Schlüssel des Empfänger verschlüsselt und mit dem privaten Schlüssel des Empfängers entschlüsselt. Beispiel AES (Advanced Encryption Standard). Standard-Schlüssel für viele Anwendungen, z.b. WPA2 (Wlan), SSH, IPsec
Wie werden die Schlüssel zwischen Sender und Empfänger ausgetauscht?
Austausch der Schlüssel über persönlichen Kontakt
In welchen Fällen wendent man welches Schlüssel Verfahren an?
Bei Verschlüsselung von Emails ist es besser mit asymmetrischen Schlüsseln zu arbeiten, da man den öffentlichen Key zur Verschlüssung nutz (beim Senden) der Empfänger aber mit seinem eigenen privaten Schlüssel entschlüsseln kann, man braucht dann nicht für jeden Kommunikaitonspartner einen identischen Schlüssel. Dafür ist das Verfahren langsamer.
Bei Schnellen einsatzgebieten dann symmetrische Schlüssel
Ablauf der Identitäsprüfung
Kunde stellt Antrag bei RA --> Ra prüft Identität von Kunde und leitet Antrag weiter --> CA erzeugt Zertifikat --> ZertifiizierungsSchlüssel erhält Kunde und eintrag im Verzeichnisdienst
Nennen und beschreiben Sie mind. zwei Verfahren für einen symmetrischen und asymmetrischen Schlüssel.
Symmetrische:
Stromverschlüsselung:
Verschlüsselung von einzelnen Zeichen nacheinander - Beliebige Mengen an Zeichen verschlüsselbar
Blockverschlüsselung:
Verschlüsselung von ganzen Zeichenblöcken auf ein Mal - Genügend große Anzahl an Zeichen vorausgesetzt
_________________________________________________________________________________________
Asymmetrisch:
mit öffentlichen Key und privatem Key (verschlüsselung öffentlicher Key + entschlüsseln nur mit prviaten key)
Welche Schlüssellänge gilt jeweils noch als sicher?
Symmetrisch:
3DES (min. 112 Bit) bzw. AES (min. 128 Bit)
Asymmetrisch:
RSA (min. 1536 Bit für bestehende und min. 2048 Bit für zukünftige Systeme) bzw. ECDSA (min. 192 Bit für bestehende und min. 224 Bit für zukünftige Systeme
Sie können Threads von Tasks unterscheiden
Threads sind Prozesse innerhalb "normaler" Prozesse (TASKS). Mehrere Threads innerhalb eines Prozesses (Task) möglich. Ausführung -> Nebenläufig -> Quasi Parallel
Welche Probleme können bei Threads auftreten.
Zugriff auf gemeinsame Daten/Objekte kann zur Inkonsistenzen führen. Deadlock kann enstehen, wenn ein Thread ewig auf einen anderen warten muss, oder ein Thread erst starten kann wenn der andere fertig ist etc.
Wie unterscheiden sich konkurrierende und kooperierende Threads voneinander?
Konkurrierende Threads
Threads greifen auf dieselben Ressourcen zu -> Sync des Zugriffs erforderlich zur Vermeidung inkonsistenter Daten
Kooperierende Threads:
Abfolge der Thread-Ausführung entscheidend
- Erzeuger-Verbraucher-Beziehung zwischen Threads
- Verbraucher-Thread nur dann erfolgreich, wenn Aufgabe von Erzeuger-Thread vollständig.
Beschreiben sie einen praktischen Fall für eine Race Condition
Welche Lösungsmöglichkeiten gibt es hierfür?
Race Condition z.B. bei einer Bankbuchung wo zwei Threads auf gleiche Ressource zugreifen müssen. Ergebnis hängt davon ab, wie die Verteilung der CPU-Zeit auf Threads ist. Wenn CPU die Berechnung von Thread 2 zur erst berechnet obwohl erst TH1, dann geht die Buchung verloren.
Lösung z.B. zweiter Thread darf erst nach einer Meldung von Thread 1 starten, oder die Daten werden solange geblockt bis Thread 1 die Datei wieder entblockt.
Nennen Sie die Klassen, Methoden, um Threads in Java zu implementieren
Klasse Thread (ableitung erforderlich) oder Schnittstelle Runnable (implementierung erforderlich).
Klasse Thread:
1. public class XXX extends Threads {... } | Klasse erstellen
2. public void run () | Methode run wird überschreiben
3. Thread meinthread = new XXX(); thread.start() | Thread Objekt erzeugen, und dann .start()
Implementierung:
1. public class XXX implements Runnable {...}
2. public void run ()
3 Thread meintrehad = new Thread(new XXX()); thread.start();
Nennen die unterschiedliche Zustände, welche ein Thread annehmen kann.
Running, Waiting, Blocked, Timded Waiting
wait(), join(), notify(), lock() etc.
Beschreiben Sie was ein Deadlocks ist und wie dieser auftreten kann.
"Verklemmung" | Problemeatik bei der Synchronisierung von Threads, wenn ein Thread auf den anderen warten muss und der andere auf den anderen wartet und einfach nichts mehr geht...
T1 hat Ressource A reserviert und wartet auf Ressource B
T2 hat Ressource B reserviert und wartet auf Ressource A
wait() und notify() in richtiger REIHENFOLGE, somit kann man Deadlocks vermeiden.
Beschreiben Sie was Starving ist und wie dies auftreten kann.
Unzureichender, unfairer Anteil an Rechenleistung für mindestens einen Thread. Anderer Thread "verhungert". Mögliche Ursachen: Fehlerhafte Vergabe von Prioriäten. Thread 1 macht einfache Addition und CPU kiregt er 90%, Thread 2 mus komplizierte Algorithmen durchlaufen und schwierige multiplikationen berechnen, kriegt aber nur 10% CPU...
Prioritäten richtig setzen !!!
Wo und wozu wird die Serialisierungen bzw. Deserialisierung eingesetzt.
Serialisierung bedeutet die Umwandlung des Zustands eines Objekts in eine Folge von Bytes. Deserialisierung ist der umgekehrte Vorgang, bei dem aus einer Byte-Folge wieder ein programmierbares Objekt erzeugt wird. Dabei wird der ursprüngliche Zustand des Objekts wiederhergestellt.
Eingesetzt in:
Persistente Objektspeicherung • Netzwerkkommunikation
bsp: JAVA RMI: Transport von Objekten: parameter und ergebnisse
Sie können ein Anwendungsbeispiel in Java beschreiben. Welche Möglichkeiten haben Sie in Java diese zu implementieren. (Serialliserung )
Alternative A: Implementierung der Schnittstelle Serializable
class MyClass implements Serializable | Schnittstelle Serialiable hat keine Methoden
Keine weitere Implementierung erforderlich • Automatische Serialisierungdurch Laufzeitsystem
Alternative B: Superklasse ist serialisierbar • Rekursive Serialisierung der enthaltenen Objekte
Wozu dient die Transienz und wann wird diese eingesetzt? Beschreiben Sie ein praktisches Beispiel Java.
Transienz
Kennzeichnung der nicht zu serialisierenden Instanzvariablen mit transient
Voraussetzung: Wert nach Deserialisierung unnötig oder wiederherstellbar
Vorteile •
Bandbreitenreduktion, Speicherplatzreduktion, schnellere Deserialisierung • Umgehen nicht serialisierbarer Objekte: Sonst NotSerializableException für gesamtes Objekt
Beschreiben Sie, was ein Sockets ist und wo dieser eingesetzt werden.
Socket (Engl. für „Steckdose“) ist Endpunkt einer Verbindung, zwei Sockets definieren eine Verbindung. Wird genutzt für Verbindung zwischen Client und Server.
Welche unterschiedlichen Socket-Typen kennen Sie? Beschreiben Sie, wann Sie einen verbindungsorientierten oder verbindungslosen Socket verwenden.
Verbindungsorientierte Kommunikation (TCP) + Verbindslose Kommunikation (UDP)
TCP ->
TCP stellt sicher, dass der Client die Daten korrekt erhalten hat, und dass sie in der richtigen Reihenfolge ankommen. Dabei geht jedoch einiges an Bandbreite verloren, wodurch die Übertragung verlangsamt wird.
Besonders das erneute Senden von fehlerhaft erhaltenen oder verlorengegangenen Paketen schränkt die Bandbreite ein; da bei Videosequenzen kleinere Fehler in den Daten normalerweise nur in wenigen fehlerhaften Bildern resultieren ist es besser, die Daten fehlerhaft, dafür aber rechtzeitig zu erhalten.
Einsatz bei kritschen Daten (wo keine Fehler passieren dürfen).
UDP ->
verbindungsloses Protokoll. D.h. es wird keine Verbindung aufgebaut und der Empfänger sendet keine Bestätigung über dem Empfang der Daten. Der Vorteil von UDP liegt in einer schnellen Übertragung mit geringem Verwaltungsaufwand. UDP wird vor allem bei einfachen Anfrage/Antwort-Protokollen und bei Anwendungen mit eigenen Fehlerkorrekturmechanismen verwendet
In der Regel wird UDP für Anwendungen und Dienste verwendet, die mit Paketverlusten umgehen können oder sich selber um das Verbindungsmanagement kümmern. Typisch sind DNS-Anfragen, VPN-Verbindungen, Audio- und Video-Streaming
Beschreiben Sie den unterschiedlichen Ablauf für die unterschiedlichen Socket-Typen
Worin unterscheiden sich diese?
TCP
Socket-Erstellung (Server und Client) -> Verbindungsaufbau Server und Client -> Dann kommunikation, datenaustasuch -> aufräumen
UDP
Socket-Erstellung (Server und Client) -> direkt Kommunikation (kein Verbindungsaufbau), Datenaustausch FERTIG
Nennen Sie unterschiedliche typische Probleme von SocketVerbindungen.
ServerSocket exisiert nicht (Server läuft nicht)
ServerSocket.accept() blockiert Aufruf --> Server nicht bereit oder accept() vergessen
ServerSocket(port) -> Port ist bereits gebunden.
socket.getinputstream ja && socket.getoutputstream nein (oder umgekehrt). Aufruf blockiert manchmal. (nur ein Stream wird benötigt)
socket.getinputstream ja && socket.getoutputstream: ja. Aufruf blockiert mancmal (falsche reihenfolge)
Implementieren Sie den Ablauf für einen Client-Server-Socket in PseudoCode (Client und Server)
Pseudo-Code
* [Server-Thread]
* server = new socketserver(4711)
* client = server.waitForClient()
* ...
* [Client-Thread]
* client = new socket("localhost",4711)
* a = console.readInt()
* client.writeInt(a)
* b=console.readInt()
* client.writeInt(b)
* [Server-Thread]
* a = server.readInt();
* b = server.readInt();
* c = a + b;
* server.writeInt(c);
* [Client-Thread]
* c = client.readInt();
* print "Ergebnis: " + c