• Keine Ergebnisse gefunden

Sicherheit: Fragen und L¨ osungsans¨ atze – ¨ Ubung 5

N/A
N/A
Protected

Academic year: 2022

Aktie "Sicherheit: Fragen und L¨ osungsans¨ atze – ¨ Ubung 5"

Copied!
2
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Prof. Dr. Jan J¨urjens, Thomas Ruhroth Lehrstuhl 14 Software Engineering

Fakult¨at ur Informatik

SFL 11.12.2012

Sicherheit: Fragen und L¨ osungsans¨ atze – ¨ Ubung 5

Hinweis: Wenn der Text l¨anger als vorgegeben ist, wird der Rest ignoriert.

Abgabe: Ausnahmsweise dieses eine Mal als Email an mich.

(Adresse unter http://www-jj.cs.tu-dortmund.de/staff/ruhroth). Abgabe sp¨ates- tens am 21. Dezember.

AUFGABE 1 (One Way Hash) (45 Min, 5p):

• Implementieren Sie folgende einfache Hash-Funktion als einfache Javaoperationpublic String hash(String in):

Es sei folgende Hash-Funktion gegeben: F¨ur einen Text wird die Anzahl der einzelnen Buchstaben (Groß/Kleinschreibung wird ignoriert) bestimmt und als Ziffernfolge aller Buchstabenzahlen ohne f¨uhrende Nullen im Dezi- malsystem ausgegeben. Z.B. f¨uhrt der Text “Implementieren Sie folgende einfache Hash-Funktion:” zu Hashwert “20119312501226210122100000”.

• Ist die implementierte Hash-Funktion eine One-Way-Hash-Funktion? Wenn ja, be- gr¨unden Sie Ihre Antwort (Max. 50 Worte). Wenn Nein, Implementieren Sie die Umkehrfunktion.

• Ist die Hash-Funktion kollisionsfrei bzw. schwach kollisionsfrei? Betrachten Sie als Dom¨ane alle m¨oglichen Strings, alle deutschen Texte und die Menge aller Shakes- peare Sonette (Max. 100 Worte).

AUFGABE 2 (Kryptographie mit Java: Implementierung einer Hashfunktion) (45 Min, 5p):

Betrachten Sie die (einfache und f¨ur die Praxis ungeeignete!) Hashfunktion h, die einen String auf seinen Anfangs- und Endbuchstaben abbildet, z. B.:

h(Alice) =Ae, h(Bob) =Bb, h(Hallo!) =H!usw.

Implementieren Sie diese Hashfunktion h nun im Rahmen der Java Cryptography Archi- tecture und stellen Sie sie mittels eines Providers zur Verwendung bereit. Nehmen Sie dazu die Java- Schnittstellen-Dokumentation zu Hilfe (http://download.oracle.com/

javase/6/docs/api/) und gehen Sie wie folgt vor:

1. Das Service Provider Interface f¨ur Hashfunktionen ist MessageDigestSpi. Es han- delt sich dabei um eine abstrakte Klasse, deren abstrakte Methoden Sie in einer abgeleiteten Klasse implementieren m¨ussen.

Sicherheit: Fragen und L¨osungsans¨atze – ¨Ubung 5 1

(2)

Prof. Dr. Jan J¨urjens, Thomas Ruhroth Lehrstuhl 14 Software Engineering

Fakult¨at ur Informatik

SFL 11.12.2012

(a) Erstellen Sie eine als final deklarierte und von MessageDigestSpi abgeleitete KlasseSimpleHash.

(b) Die Klasse SimpleHash soll ein internes Byte-Array unterhalten, in dem die Byte-Darstellung des Strings gespeichert wird, dessen Hashwert berechnet wer- den soll. Implementieren Sie dazu die folgenden in MessageDigestSpi abstrakten Methoden:

• void engineReset(): l¨oscht den Inhalt des internen Byte-Arrays.

• void engineUpdate(byte input): h¨angt input an das interne Byte-Array an.

• void engineUpdate(byte[] input, int offset, int len): h¨angt den Teil von input an das interne Byte-Array an, der bei offset beginnt und eine L¨ange von len hat.

• byte[] engineDigest(): berechnet den Hashwert des internen Byte-Arrays und gibt ihn in Form eines Byte-Arrays zur¨uck.

2. Implementieren Sie den als final deklarierten Provider SimpleHashProvider. Ori- entieren Sie sich an der folgenden Anleitung (How to Implement a Provider in the JavaTM Cryptography Architecture): http://download.oracle.com/javase/

6/docs/technotes/guides/security/crypto/HowToImplAProvider.html#Step3

3. Implementieren Sie schließlich wie folgt eine Testklasse SimpleHashProviderTest:

(a) Zuerst muss der SimpleHashProvider mit der addProvider-Methode aus der Klassejava.security.Securitydynamisch registriert werden.

(b) Geben Sie nun den Namen (getName()), die Version (getVersion()) sowie die Beschreibung (getInfo()) des Providers aus.

(c) Erzeugen Sie dann mit der getInstance-Methode der engine classMessageDigest ein Objekt, das Ihre Hashfunktion ausf¨uhren kann. Lassen Sie dieses Objekt mit der getAlgorithm-Methode den Algorithmus ausgeben, den es verwendet.

(d) Verifizieren Sie wie folgt, ob Sie die Hashfunktion korrekt implementiert haben:

i. Lesen Sie mit der Methode update(byte[] input) den String foo ein, berech- nen Sie mit digest() seinen Hashwert und geben Sie diesen Hashwert aus.

ii. H¨angen Sie mittels update(byte[] input) den String bar an den bereits ge- speicherten String an, berechnen Sie den Hashwert und geben Sie ihn aus.

iii. L¨oschen Sie mit der Methode reset() den gespeicherten String. Lesen Sie dann mit der Methode update(byte[] input, int offset, int len) von dem String hello world die Positionen 2-8 ein, berechnen Sie den Hashwert und geben Sie ihn aus.

Hinweis: Um einen String in ein Byte-Array umzuwandeln, benutzen Sie die getBytes- Methode. F¨ur die R¨uck-Umwandlung benutzen Sie den entsprechenden String-Konstruktor:

String str1 = "foo"; // ein String,...

byte[] ba = str1.getBytes(); // ...die Umwandlung in ein Byte-Array...

String str2 = new String(ba); // ...und die R¨uck-Umwandlung in einen String

Sicherheit: Fragen und L¨osungsans¨atze – ¨Ubung 5 2

Referenzen

ÄHNLICHE DOKUMENTE

All voltage values, except differential voltage, are with respect to the zero reference level (ground) of the supply voltages where the zero reference level is the midpoint between V

Mit ihrer Hilfe können technische und biologische Syste- me beschrieben und von einem übergeordneten Gesichtspunkt aus verglichen werden: Computer neh- men über ihre

Voltage Terlllinal Module BaCkboard Sp.cial Voltoges. 800rd Buss Pin

Algorithmen f¨ ur die Verschl¨ usselung k¨ onnen nach dem Schema “algorithm/mode/- padding” ausgew¨ ahlt werden, geben Sie die Bedeutung und Zweck f¨ ur die einzelnen

F¨ ur einen Text wird die Anzahl der einzelnen Buchstaben (Groß/Kleinschreibung wird ignoriert) bestimmt und als Ziffernfolge aller Buchstabenzahlen ohne f¨ uhrende Nullen

Zum vereinbarten Zeitpunkt bekommt Alice eine Nachricht von Bob, dass er Aufgrund eines Datenverlustes nicht in der Lage w¨ are, seine Identit¨ at mithilfe des vereinbarten

Die Common Criteria enthalten im Abschnitt General Model (Seite 39 und 40) mit den Abbildungen Figure 2 – Security concepts and relationships und Figure 3 – Evaluation concepts

Ein ACE enth¨ alt jeweils die Information, ob einem Benutzer oder einer Benut- zergruppe eine bestimmte Zugriffsart erlaubt (allow) oder verweigert (deny) werden soll.