Verschlüsselung in Webapplikationen (MD5)

Pass­wör­ter gehö­ren nicht in die Hän­de von Drit­ten, auch nicht in die von Admi­nis­tra­to­ren. Daher wur­den für die Spei­che­rung von Pass­wör­tern soge­nann­te Fall­tür­me­cha­nis­men (trap­door mecha­nisms) entwickelt:

Es ist zwar mög­lich, ein Pass­wort zu ver­schlüs­seln, nicht jedoch es wie­der zu entschlüsseln.

Der Ver­schlüs­se­lungs­al­go­rith­mus funk­tio­niert also genau wie eine Fall­tür nur in eine Rich­tung. Das mag auf den ers­ten Blick sinn­los erschei­nen, ist aber eigent­lich sehr pfif­fig. Neh­men wir als Bei­spiel den weit ver­brei­te­ten MD5-Algo­rith­mus. Mit die­sem sichert fast jede Web­an­wen­dung in PHP ihre Pass­wör­ter ab. Dabei wird aus

123456=> MD5-Ver­schlüs­se­ler => e10adc3949ba59abbe56e057f20f883e

Die­se lan­ge Zei­chen­ket­te sieht der Admin. Er weiß aber des­we­gen das Pass­wort im Klar­text noch nicht, da der Weg

e10adc3949ba59abbe56e057f20f883e => MD5-Ent­schlüs­se­ler (Gibt es nicht) => Passwort

prin­zip­be­dingt ver­sperrt ist. Die dabei ent­ste­hen­de, lan­ge Zei­chen­ket­te wird „Hash“ genannt.

Wenn man sich nun an einer Web­an­wen­dung (Mood­le, Joom­la, egroup­ware …) anmel­det, macht die Web­an­wen­dung folgendes: 

Benut­zer gibt Pass­wort im Klar­text ein => MD5-Ver­schlüss­ler => Hash1

Die­ser Hash1 wird nun mit dem Hash – nen­nen wir ihn Hash2 – ver­gli­chen, der in der Daten­bank für den User gespei­chert ist (er könn­te etwa bei der Regis­trie­rung erzeugt wor­den sein).

Stim­men bei­den Hash­es über­ein, hat der User das kor­rek­te Pass­wort ein­ge­ge­ben, weil der Ver­schlüs­se­lungs­me­cha­nis­mus ja immer gleich ist. Stim­men die Hash­es nicht über­ein, muss der Benut­zer ein fal­sches Pass­wort ein­ge­ge­ben haben.

Soweit so gut. Das ist auch die Erklä­rung dafür, dass einen – so man sein Pass­wort ver­ges­sen hat – stets ein neu­es Pass­wort zuge­wie­sen wird, denn der Admin kann das alte Pass­wort ja nicht wis­sen, son­dern ledig­lich ein neu­es setzen.

Eigent­lich hört sich das Gan­ze recht sicher an – ist es bloß nicht, denn es gibt Angrif­fe gegen die­ses Ver­fah­ren, die aber alle­samt vor­aus­set­zen, dass der Angrei­fer an den Hash kommt.

Wei­ter­le­sen

Evaluationssystem: Vereinfachung der Usability

Alle Umfra­ge­teil­neh­mer erhal­ten von uns einen zufäl­li­gen Benut­zer­na­men und ein zufäl­li­ges Pass­wort. Es wäre ja sehr hübsch, wenn man gleich nach dem Anmel­den direkt zu Umfra­ge gelang­te. Das gelingt durch einen klei­nen Trick:

Zunächst wird eine ein­fach zu mer­ken­de Sub­do­main ange­legt, etwa

http://umfrage.schuldomain.tld

Unter­halb die­ser Sub­do­main spielt man eine Datei „index.html“ mit fol­gen­dem Inhalt ein:

<html>
<head>
<meta http-equiv=„refresh“ content=„0; URL=<link>“>
</head>
<body>
Kli­cken Sie <a href=“<link>“>here</a> wenn Sie nicht auto­ma­tisch zur Umfra­ge wei­ter­ge­lei­tet werden…
Click <a href=“<link>“>here</a> if you are not redi­rec­ted automatically…
</body>
</html>

Den Inhalt von <link> erhält man, wenn man im Kurs, in dem sich die Umfra­ge befin­det, mit der Maus auf den Link zur Umfra­ge geht und dort mit der rech­ten Maus­tas­te „Link-Adres­se kopie­ren“ wählt.

link_feedbackDanach befin­det sich der Link in der Zwi­schen­ab­la­ge und kann mit <STRG+V> in die Datei ein­ge­fügt werden.

Jetzt gibt der Benut­zer ein­fach unse­re Domain in sei­nen Brow­ser ein, mel­det sich mit den Zugangs­da­ten an und lan­det dann direkt in der Umfra­ge – vor­aus­ge­setzt es ist kein Kurs­schlüs­sel gesetzt.

Wenn man die­sen setzt – und das ist mehr als sinn­voll – muss man die­sen den Umfra­ge­teil­neh­men­den zusam­men mit der Zufalls-ID mitteilen.

Mit die­sem Ver­fah­ren gab es bei 150 Teil­neh­men­den nur in zwei Fäl­len Pro­ble­me beim Ein­log­gen (Tipp­feh­ler bei der Ein­ga­be der Zugangsdaten).

Evaluationssystem: Konfiguration des Feedbackmoduls

Eigent­lich wäre die Geschich­te kei­nen eige­nen Blog­bei­trag wert gewe­sen. Ich emp­feh­le aus eini­gen recht­li­chen Grün­den fol­gen­de Ein­stel­lun­gen für das Feedbackmodul:

Anonym aus­fül­len => anonym

Die zuvor müh­sam gene­rier­ten Zufalls-IDs sind schon anonym. Den­noch bleibt eine Gefahr erhal­ten, die man im Daten­schutz als Ver­ket­tung bezeich­net. Es ist schlicht nicht not­wen­dig eine bestimm­te Zufalls-ID mit einer bestimm­ten Daten­rei­he zu ver­ket­ten, d.h. z.B. genau zu wis­sen, wie „xzf56ez“ jetzt das Feed­back beant­wor­tet hat. Das wäre ein kla­rer Ver­stoß gegen das Gebot der Daten­spar­sam­keit. In die­sem Modus ver­ket­tet das Feed­back­mo­dul  stets den Anwen­der „anony­mer Benut­zer“ mit der Datenreihe.

Beach­ten Sie:

Der Erfolg und die Qua­li­tät Ihrer Umfra­g­er­geb­nis­se hän­gen mas­siv vom vor­her trans­pa­rent dar­ge­stell­ten und ver­mit­tel­ten Grad der Anony­mi­sie­rung ab. Die­se simp­le Ein­stel­lung bie­tet in der Hin­sicht viel mehr Sicher­heit für den Teilnehmenden.

Wei­ter­le­sen

Evaluationssystem: Kopplung des LDAP mit Moodle

Vor­aus­ge­setzt wird, dass Mood­le auf dem glei­chen Ser­ver wir der ein­ge­rich­te­te und mit Daten befüll­te slapd läuft. Sche­ma­tisch ist die­se Anlei­tung ganz all­ge­mein ver­wend­bar, um Mood­le ein einen openLDAP-Ser­ver zu kop­peln. Die „Bul­ku­pload­leu­te“ brau­chen die­se Anlei­tung nicht…

Zunächst ein­mal müs­sen wir sicher­stel­len, dass die Authen­ti­fi­zierng über openLDAP über­haupt in Mood­le akti­viert ist. Dazu kli­cken Sie im Administrationsmenu

Web­site-Admi­nis­tra­ti­on => Nutzer/innen => Authen­ti­fi­zie­rung => Übersicht

auf das geschlos­se­ne Auge bei „LDAP-Ser­ver“, so es denn noch geschlos­sen ist. Durch das Akti­vie­ren der LDAP-Aurhen­ti­fi­zie­rung blei­ben übri­gens alle übri­gen Authen­ti­fi­zie­rungs­me­tho­den funk­ti­ons­fä­hig. Jetzt erscheint im Menu

Web­site-Admi­nis­tra­ti­on => Authentifizierung

ein neu­er Ein­trag mit dem Namen „LDAP-Ser­ver“, den es anzu­kli­cken gilt. Es folgt eine umfang­rei­che Kon­fi­gu­ra­ti­ons­sei­te. Ich hang­le mich mich jetzt nur durch die Fel­der hin­durch, die geän­dert oder mit Daten befüllt wer­den müs­sen. Alle ande­ren Fel­der blei­ben jung­fräu­lich. Es wer­den fol­gen­de Anga­ben aus dem vor­he­ri­gen Schritt benötigt:

  • Wert der Varia­blen $orga­ni­sa­ti­on (eva­lua­ti­on)
  • Wert der Varia­blen $domain (schul­do­main)
  • Wert der Varia­blen $tld (tld)

Ich nen­ne zunächst das Kon­fi­gu­ra­ti­ons­feld gefolgt von einem Pfeil (=>), hin­ter dem der ein­zu­tra­gen­de Inhalt steht.

Wei­ter­le­sen

Evaluationssystem: Generierung der Zufalls-IDs

Vie­le Wege füh­ren nach Rom. Ich stel­le einen ein­fa­chen vor (Bul­ku­pload) und einen kom­ple­xe­ren (LDAP). Bei LDAP set­ze ich etwas mehr Kennt­nis­se auf der Kon­so­le voraus.

Bei bei­den Wegen muss man auf jeden Fall die Seri­en­brief­funk­ti­on einer Text­ver­ar­bei­tung beherr­schen, um die IDs dann in indi­vi­dua­li­sier­ter Form an die Umfra­ge­be­tei­lig­ten aus­ge­ben zu kön­nen. Natür­lich wird  auch gleich die Fan­ta­sie­email­adres­se deak­ti­viert (email­stop).

Die eigent­li­che Zufalls­rou­ti­ne sieht so aus:

func­tion getrandstr($length) {
$new­pass = „“;
$laenge=$length;
$string=„abcdefghikmnopqrstuvwxyz23456789“;
mt_srand((double)microtime()*1000000);
for ($i=1; $i <= $laen­ge; $i++) {
$new­pass .= substr($string, mt_rand(0,strlen($string)-1), 1);
}
return $new­pass;
}

Aus dem Zei­chen­vor­rat wur­de alle Zei­chen ent­fernt, die sich ver­wech­seln las­sen, etwa „1“ und „l“ (klei­nes L und die Zahl Eins) oder „0“ und „O“ (Null und Buch­sta­be O), damit es spä­ter nicht zu Tipp­feh­lern kommt.

Ich habe das Script für mich inzwi­schen so wei­ter­ent­wi­ckelt, dass es nicht nur die IDs selbst, son­dern auch noch via fpdf die Brie­fe für die Umfra­ge­be­tei­lig­ten als hüb­sches PDF erstellt – ein Klick, alles zum Drucken/Verteilen fer­tig. Da erfah­rungs­ge­mäß jede Schu­le ihr indi­vi­du­el­les Lay­out wünscht, erscheint mir der Weg über die Seri­en­brief­funk­ti­on für die All­ge­mein­heit der gang­bars­te zu sein.

Wir nut­zen für die Umfra­gen übri­gens ein sepa­ra­tes „Müll­mood­le“, des­sen Daten­bank uns nicht viel bedeu­tet und ger­ne „ver­saut“ wer­den darf. Neben­bei ent­fällt gleich das Risi­ko, dass Drit­te unge­wollt Zugriff auf die Ergeb­nis­se erhal­ten. Das Rech­te­sys­tem von Mood­le wird näm­lich ger­ne ein­mal unüberschaubar…

Wei­ter­le­sen

1 19 20 21 22 23 24