573378d21c86bae31bc50fb6e97b1cb525ab5fde
[ach-master.git] / src / practical_settings / kerberos.tex
1 This section discusses various implementations of the Kerberos 5 authentication protocol
2 on Unix and Unix-like systems as well as on Microsoft Windows. 
3
4 \subsection{Overview}
5 \label{subsection:kerberos_overview}
6
7 Kerberos provides mutual authentication of two communicating parties, e.g. a user using a network service. The authentication process is mediated by a trusted third party, the Kerberos key distribution centre (KDC). Kerberos implements secure single-sign-on across a large number of network protocols and operating systems. Optionally, Kerberos can be used to create encrypted communications channels between the user and service.
8
9 No overview over Kerberos terminology and functions will be provided, for a discussion refer to \url{http://web.mit.edu/kerberos/papers.html}. Common criticism of Kerberos 
10
11 % describe realm, login, ticket exchanges here? would be quite lengthy and necessarily incomplete, so currently left out
12
13 The Kerberos protocol over time has been extended with a variety of extensions and Kerberos implementations provide additional services in addition to the aforementioned KDC. All discussed implementations provide support for trust relations between multiple realms, an administrative network service (kerberos-adm, kadmind) as well as a password changing service (kpasswd). Sometimes, alternative database backends for ticket storage, X.509 and SmartCard authentication are provided. Of those, only administrative and password changing services will be discussed.
14
15 Only the Kerberos 5 protocol and implementation will be discussed. Kerberos 4 is obsolete, insecure and its use is strongly discouraged.
16
17 \subsubsection{Relations to other Protocols}
18 \label{subsubsection:kerberos_relation_to_other_protocols}
19
20 \paragraph{DNS considerations}
21 Kerberos relies on a trustworthy DNS infrastructure. The identity of a service is tied to its DNS name, similarly the realm a client belongs to as well as the KDC, kpasswd and kerberos-adm servers may be specified in DNS TXT and SRV records. Spoofed DNS entries will cause denial-of-service situations and might endanger the security of a Kerberos realm.
22 % "might endanger" according to the following source:
23 % http://web.mit.edu/kerberos/krb5-latest/doc/admin/realm_config.html
24 % unfortunately no further details beyond the suspicion of vulnerability are provided
25 % mentions possible redirection to a compromised realm in setups with trust relations: http://www.ietf.org/proceedings/48/I-D/cat-krb-dns-locate-02.txt
26
27 Therefore it is strongly recommended to use DNSSEC. \todo{link to DNSSEC section as soon as there is one} If that is not possible, at least ensure that all servers and clients in a realm use a trustworthy DNS server contacted via secure network links.
28
29 \paragraph{NTP considerations}
30 Tickets in Kerberos are created with a limited, strictly enforced lifetime. This limits an attacker's window of opportunity for various attacks such as the decryption of tickets in sniffed network traffic or the use of tickets read from a client computer's memory.
31
32 It is therefore necessary that all clients and servers agree on the current time. It is recommended to use NTP on a trustworthy server via secure network links. \todo{link to NTP section as soon as there is one}
33
34 \subsection{Implementations}
35 \label{subsection:kerberos_implementations}
36
37 \paragraph{Cryptographic Algorithms in Kerberos Implementations}
38
39 \begin{table}[h]
40         \centering
41         \small
42         \begin{tabular}{l|llll}
43                 \toprule
44                 ID & Algorithm & MIT & Heimdal & GNU Shishi & MS ActiveDirectory \\
45                 \mitrule
46                 1 & des-cbc-crc             & yes            & yes & yes & yes \\
47                 2 & des-cbc-md4             & yes            & yes & yes & no  \\
48                 3 & des-cbc-md5             & yes            & yes & yes & yes \\
49                 6 & des3-cbc-none           & no             & yes & yes & no  \\
50                 7 & des3-cbc-sha1           & no             & yes & no  & no  \\
51                 16 & des3-cbc-sha1-kd\footnote{In MIT krb5 and Heimdal aliased to des3-hmac-sha1 and des3-cbc-sha1, colliding with the official string for enctype 7 which is referred to as old-des3-cbc-sha1 or similar.} & yes            & yes & yes & no  \\
52                 17 & aes128-cts-hmac-sha1-96 & yes            & yes & yes & yes, since Win Vista, Win Server 2008 \\
53                 18 & aes256-cts-hmac-sha1-96 & yes            & yes & yes & yes, since Win 7, Win Server 2008R2 \\
54                 23 & rc4-hmac                & yes            & yes & yes & yes \\
55                 24 & rc4-hmac-exp            & yes            & no  & yes & yes \\
56                 25 & camellia128-cts-cmac    & yes, since 1.9 & no  & no  & no  \\
57                 26 & camellia256-cts-cmac    & yes, since 1.9 & no  & no  & no  \\
58                 \bottomrule
59         \end{tabular}
60         \caption{Commonly supported Kerberos encryption types by implementation}
61         \label{tab:Kerberos_enctypes}
62 \end{table}
63 % AES enctypes: http://tools.ietf.org/html/rfc3962
64 % Camellia enctypes: http://tools.ietf.org/html/rfc6803
65 % enctype numbers list: http://tools.ietf.org/html/rfc3961#section-8
66 % recommended settings: http://tools.ietf.org/html/rfc4120#section-8.2
67 % MIT krb5 1.9: http://web.mit.edu/kerberos/krb5-1.9/
68 % Java enctype support: http://docs.oracle.com/javase/7/docs/technotes/guides/security/jgss/jgss-features.html
69 % Shishi enctype support: http://www.gnu.org/software/shishi/manual/shishi.html#Cryptographic-Overview
70 % enctype alias collision in MIT krb5: see src/lib/crypto/krb/etypes.c line 84 and src/include/krb5/krb5.hin line 438 compared to RFC3961
71 % in Heimdal, HEIM_WEAK_CRYPTO and DES3_OLD_ENCTYPE disable some DES and old 3DES algorithms at build time (lib/krb5/crypto-algs.c in source)
72
73 \subsubsection{MIT krb5}
74
75 \subsubsection{Heimdal Kerberos 5}
76 \todo{research and write Heimdal Kerberos section}
77
78 \subsubsection{GNU Shishi}
79 \todo{research and write GNU Shishi section}
80
81 \subsubsection{Microsoft ActiveDirectory}
82 \todo{research and write MS AD section}
83
84 % encryption type setting for a user account: http://blogs.msdn.com/b/openspecification/archive/2011/05/31/windows-configurations-for-kerberos-supported-encryption-type.aspx
85 % hunting down DES: http://blogs.technet.com/b/askds/archive/2010/10/19/hunting-down-des-in-order-to-securely-deploy-kerberos.aspx
86 % supported subset of encryption types, extension documentation: http://msdn.microsoft.com/en-us/library/cc233855.aspx
87