ToDo: Kontrolle
ToDo: Update Aktuelle Methoden

FAQ - Hamster und Authentifikation

  1. Einführung in die Grundlagen der Authentifikation

    1. Kryptografische Algorithmen

      MD2    RFC 1319
      MD4    RFC 1320
      MD5    RFC 1321
      SHA1   RFC 3174
      

      Grundlage sind die RFC 1320 und 1321. Sie definierten ein MD4 und MD5 welche als Ausgabe einen MD4 bzw. MD5 als Digest liefern.

      MD4 besitzt inzwischen nur noch historischen Wert. Im Jahre 2001 wurde auch SHA1 in RFC 3174 standardisiert. SHA1 liefert ebenfalls einen Digest. SHA1 liefert ebenfalls einen Digest, der im Gegensatz zu MD5 mit wesentlich weniger Konstanten auskommt und deshalb theoretisch sicherer ist als MD5. Gegen SHA1 ist bisher auch, im Gegensatz zu MD5, kein theoretischer Angriff bekannt.. SHA1 liefert einen 160-Bit-Digest (20 Byte), MD5 hingegen nur einen 128-Bit-Digest (16 Byte). Der Angriff gegen MD5 ist ausschließlich theoretischer Natur, da es nicht ausreichend Rechenzeitkapazität gibt ihn zu brechen. Setzt man die Lebensdauer von MD5 in ein Verhältnis zur Lebensdauer von Passwörtern, ist MD5 auch in den nächsten Jahrzehnten sicher. Bei SHA1 muss man bezüglich der Sicherheit ebenfalls bedenken, dass er in allen Aspekten noch nicht so gut untersucht ist wie MD5. Meiner Einschätzung nach ist der Unterschied zwischen MD5 und SHA1 bezüglich Sicherheit eher paranoid und eine Glaubensfrage. Ein weiterer Aspekt bezüglich der Sicherheit dieser Verfahren ist die praktische Implementation der Hash Algorithmen. Um die Hash-Algorithmen auch für kurze Textfetzen, wie zum Beispiel Passwörter, unangreifbar zu machen, wird der jeweilige Hash-Algorithmus im HMAC-Verfahren doppelt auf das Passwort angewendet. Die Formel hierfür lautet:

      ipad = String gefüllt mit dem Byte 0x36 entsprechend der Länge des Hash
      opad = String gefüllt mit dem Byte 0x5C entsprechend der Länge des Hash
      K    = Das zu sichernde Passwort
      H    = Hash-Funktion, zum Beispiel MD5 oder SHA1
      
      Hash = H(K XOR opad, H(K XOR ipad, text))
      

      Weiterhin ist entscheidend, ob nur der Server den Client oder auch der Client den Servern authentifiziert, um einen "man in the middle”-Angriff zu vermeiden. Das CRAM-Verfahren authentifiziert nur den Client, nicht aber den Server. Erst das DIGEST-Verfahren(z.B. DIGEST-MD5) ermöglicht auch eine Authentifizierung des Servers.

    2. Login-Verfahren

      Um das Login sicherer zu gestalten, wurden im Laufe der Zeit unterschiedliche Methoden für die einzelnen Protokolle entwickelt:

      IMAP4-Auth       RFC 2060
      POP-Auth         RFC 1734
      POP-SASL-AUTH    RFC 2449
      APOP             RFC 1939
      HTTP-Auth        RFC 2069
      SMTP-Auth        RFC 2554
      SMTP after POP3  (nicht standardisiert)
      

      Diese Protokolle nutzen unterschiedliche Methoden für das sichere Login, aber teilweise die selben Hash-Funktionen und Key-Verwaltungsverfahren.

      HMAC   RFC 2104
      CRAM   RFC 2195
      SESS   RFC 2617
      SASL   RFC 2222
      

      Zum Beispiel verwendet APOP den MD5-Digest (nicht verwechseln mit dem SASL-Verfahren MD5-DIGEST). Zu Beginn wurden das unverschlüsselte "LOGIN"-Verfahren und mehr oder minder sichere Verfahren wie KERBEROS, S/Key und GSSAPI verwendet. Für POP und IMAP wurde dann erstmalig das für beide Protokolle gemeinsame HMAC-Verfahren eingeführt, welches von CRAM verwendet wird. CRAM definiert selber nur CRAM-MD5, da zu diesem Zeitpunkt SHA1 noch nicht als RFC standardisiert war. Für HTTP wurde parallel ein weiterentwickeltes Verfahren namens MD5-SESS eingeführt, was ebenfalls für andere Hash-Funktionen wie SHA1 vorbereitet war, ohne sie selbst zu definieren.

      Um dem Wildwuchs der einzelnen Verfahren und Hash-Methoden einen vernünftigen Rahmen zu geben und das vom jeweiligen Server angebotene Verfahren automatisch auswählen zu können wurde dann mit SASL ein Auswahlverfahren für Login-Mechanismen eingeführt. Dieser RFC definierte sofort die SASL-Mechanismen für S/Key, KERBEROS und GSSAPI und übernahm LOGIN und CRAM-MD5 von IMAP/POP. Beim LOGIN-Mechanismus handelt es sich um ein primitives, unverschlüsseltes Verfahren, welches nur im Notfall verwendet werden sollte. In SMTP wurde SASL mit RFC 2554 übernommen. In RFC 2449 wurde SASL endgültig für POP3 definiert und in den CAPA-Befehl verlagert. Bis zu diesem Zeitpunkt wurde die Authentifikation bei POP3, wie bei IMAP, im AUTH-Befehl platziert. Es wird heute noch von vielen POP3-Servern die Authentifikation ohne SASL-Mechanismus angeboten. Inzwischen wurden weitere SASL-Mechanismen standardisiert, welche für alle Protokolle gültig sind. Das sind:^
      PLAIN und EXTERNAL RFC 2595 TLS/SSL unverschlüsselt, da SSL an sich schon sicher ist
      SECURID RFC 2808 für RSA-Chipkarten-Anwendungen. SECURID ermöglicht auch andere HASH-Funktionen als z.B. SHA1
      DIGEST-MD5 und MD5-SESS RFC 2831 übernimmt die Digest-Methoden von HTTP und macht HTTP konform zu SASL. DIGEST ermöglicht auch andere HASH-Funktionen als MD5, z.B. SHA1. Dieses Verfahren ermöglicht auch den Server zu authentifizieren
      OTP-MD5 RFC 2444 für "One Time Passwords". OTP ermöglicht auch andere HASH-Funktionen als MD5 z.B. SHA1
      ANONYMOUS RFC 2245 für anonymes Login
      ISO/IEC 9798-3 RFC 3163 für die Benutzung von Zertifikaten als Ausweis fürs Login. Basiert auf der PKI-Infrastruktur

      Dazu kommen dann die schon bekannten Mechanismen
      KERBEROS RFC 2222 Für homogene Umgebungen. basierend auf Ticketserver
      S/Key RFC 2222 Für auf einander folgende abhängige Keys. Das Verfahren ist nur schwer handhabbar bei öffentlichen Servern und eher gut für Intranetze
      LOGIN RFC 2222 Klartext-LOGIN
      GSS-API RFC 2222 Für Anwender-Applikationen in Verbindung mit Kerberos
      CRAM-MD5 RFC 2195 Weit verbreitetes praktisch sicheres Verfahren. CRAM ist auch mit SHA1 als Hash-Algorithmus möglich. Methodischer Nachfolger ist DIGEST-SHA1

    3. Andere Authentitifizierungsverfahren

      Eine Ausnahme bei den Authentifizierungsverfahren ist das "SMTP after POP3"-Verfahren. Bei diesem Verfahren wird ein dem eigentlichen SMTP-Login vorhergehender erfolgreicher POP3-Zugriff zur Authentifikation verwendet. Es ist im eigentlichen Sinne kein selbstständiges Authentifizierungsverfahren, sondern die Mitverwendung des Authentifizierungsverfahren eines anderen Protokolls. Dieses Verfahren besitzt erhebliche Sicherheitsmängel und sollte nach Möglichkeit nicht mehr verwendet werden.

  2. Authentifikationsverfahren für die lokalen Server des Hamsters

    Folgende Authentifikationsverfahren sind an allen lokalen Servern des Hamsters möglich:

    LOGIN, CRAM-MD5, DIGEST-MD5, CRAM-SHA1, PLAIN

    Der Mechanismus LOGIN ist unsicher und sollte nach Möglichkeit nicht verwendet werden. Er lässt sich im Setup-Menü aller lokalen Server abschalten. Der Mechanismus PLAIN kann nur zusammen mit dem SSL-Verfahren verwendet werden. Für den lokalen POP3-Server kann auch POP3-Auth ohne SASL-Mechanismus und das APOP-Verfahren zur Authentifikation verwendet werden. Für den lokalen SMTP-Server kann als Authentifikationsverfahren auch das "SMTP after POP3"-Verfahren verwendet werden. Eine gemeinsame Nutzung dieses Verfahrens mit SMTP-Auth ist technisch bedingt nicht möglich.

    Allgemein ist aber von der Verwendung des "SMTP after POP3"-Verfahrens aus Sicherheitsgründen abzuraten.

  3. Authentifikationsverfahren für die externen Server.

    Für die Authentifikation des Hamsters bei den Servern der Provider können folgende Verfahren verwendet werden:

    LOGIN, CRAM-MD5, DIGEST-MD5, CRAM-SHA1, PLAIN

    Der Mechanismus LOGIN ist unsicher und sollte nach Möglichkeit nicht verwendet werden. Um die Verwendung dieses unsicheren Verfahren zu vermeiden, lässt sich im Setup-Menü der externen Server bei der Passworteingabe ein sicheres Authentifizierungsverfahren, wie zum Beispiel CRAM-MD5, erzwingen. Der Mechanismus PLAIN kann nur zusammen mit dem SSL-Verfahren verwendet werden. Das "SMTP after POP3"-Verfahren kann mittels eines Scriptes nach folgenden Beispiel realisiert werden:

    HamFetchMail( <server> )
    HamWaitIdle
    HamSendMail( <server> )
    

    Allgemein ist aber von der Verwendung des "SMTP after POP3"-Verfahrens aus Sicherheitsgründen abzuraten.

    Für Verbindungen zu POP3-Servern kann das APOP-Verfahren verwendet werden. Um die Verwendung eines bestimmten Login-Verfahrens zu erzwingen kann dem Passwort der Name des jeweiligen Verfahrens, gefolgt von einem Doppelpunkt, vorangestellt werden. Zulässige Präfixe sind:
    PASS: Klartext-Passwort
    APOP: POP3-APOP Verfahren
    LOGIN: LOGIN-Verfahren (Klartext)
    PLAIN: SSL-PLAIN-Verfahren (Klartext innerhalb eines SSL-Tunnels)
    AUTH: Auth-Verfahren für SMTP oder POP3 erzwingen
    SASL: SASL-Auth-Verfahren für SMTP oder POP3 erzwingen
    CRAM-MD5: CRAM-MD5-Verfahren
    DIGEST-MD5: DIGEST-MD5-Verfahren
    CRAM-SHA1: CRAM-SHA1-Verfahren

    Achtung: Die Präfixe müssen groß geschrieben werden!