<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.varhoo.cz/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="cs">
		<id>http://wiki.varhoo.cz/index.php?action=history&amp;feed=atom&amp;title=Kerberos</id>
		<title>Kerberos - Historie editací</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.varhoo.cz/index.php?action=history&amp;feed=atom&amp;title=Kerberos"/>
		<link rel="alternate" type="text/html" href="http://wiki.varhoo.cz/index.php?title=Kerberos&amp;action=history"/>
		<updated>2026-07-23T06:07:58Z</updated>
		<subtitle>Historie editací této stránky</subtitle>
		<generator>MediaWiki 1.19.20+dfsg-0+deb7u3</generator>

	<entry>
		<id>http://wiki.varhoo.cz/index.php?title=Kerberos&amp;diff=929&amp;oldid=prev</id>
		<title>Pajinek: Založena nová stránka: Většina textu je převzata z http://www.fi.muni.cz/~kas/p090/referaty/2004-podzim/st/kerberos_pam_xcaha.html   ==Historie== V roce 1983 vzniká v MIT (Messachusetts Insti…</title>
		<link rel="alternate" type="text/html" href="http://wiki.varhoo.cz/index.php?title=Kerberos&amp;diff=929&amp;oldid=prev"/>
				<updated>2011-06-21T16:59:06Z</updated>
		
		<summary type="html">&lt;p&gt;Založena nová stránka: Většina textu je převzata z http://www.fi.muni.cz/~kas/p090/referaty/2004-podzim/st/kerberos_pam_xcaha.html   ==Historie== V roce 1983 vzniká v MIT (Messachusetts Insti…&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nová stránka&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Většina textu je převzata z http://www.fi.muni.cz/~kas/p090/referaty/2004-podzim/st/kerberos_pam_xcaha.html &lt;br /&gt;
&lt;br /&gt;
==Historie==&lt;br /&gt;
V roce 1983 vzniká v MIT (Messachusetts Institute of Technology) projekt Athena (prostředí pro distribuované výpočty). V rámci tohoto projektu bylo třeba vytvořit distribuovaný autentizační systém (pro AAA - authentication, autorization, accounting) zvaný Kerberos, jehož první veřejná verze byla dostupná už v roce 1987 pod názvem Kerberos v4.&lt;br /&gt;
První zkušenosti s tímto systémem odhalily však některé nedostatky, a systém se dočkal redefinice jako Kerberos v5 v roce 1993 v podobě RFC 1510.&lt;br /&gt;
První kompletní referenční implementace vychází v MIT v roce 1996.&lt;br /&gt;
&lt;br /&gt;
Ve spojených státech však v té době platí silné omezující podmínky pro export kryptografických protokolů mimo území USA. Proto vzniká v roce 1997 zcela volně šiřitelná evropská implementace Heimdal.&lt;br /&gt;
Heimdal (aktualní verze 0.6.3) se však snaží zachovávat kompatibilitu jak s Kerberem v4 tak s Kerberem v5.&lt;br /&gt;
&lt;br /&gt;
(Z dalších volně šiřitelných implementací Kerbera 5 ještě zmiňme shishi ve verzi 0.0.18) &lt;br /&gt;
&lt;br /&gt;
==Základní vlastnosti==&lt;br /&gt;
&lt;br /&gt;
Kerberos je od počátku navržen tak, aby autentizace neprobíhala zasíláním hesel, ale pomocí lístku, které pak mohou putovat i přes nezabezpečenou síť. Autentizace je založena na důvěryhodné třetí straně (KDC, Key Distribution Center).&lt;br /&gt;
&lt;br /&gt;
Kerberos v4 využívá(l) symetrické kryptografie (DES) Zatímco Kerberos v5 je založen na kryptografii s veřejným klíčem (PKC, public key cryptogtaphy) - konkrétněji pak na Denning-Soccoove modifikaci Needham-Schroederova tří-stranného autentifikačního protokolu.&lt;br /&gt;
&lt;br /&gt;
==Princip==&lt;br /&gt;
Kerberos používá dva typy důvěryhodných stran (ze kterých se skládá KDC):&lt;br /&gt;
&lt;br /&gt;
# Autentifikační server (AS, Authentication server)&lt;br /&gt;
# Server poskytující lístky (TGS, Ticket-Granting Server)&lt;br /&gt;
&lt;br /&gt;
Každý uživatel sdílí tajný klíč s AS. Tento tajný klíč není nikdy posílán po síti. Místo něj se ale posílají tzv. lístky. AS slouží k autentizaci uživatele. Komunikace s AS probíhá obvykle jednou za sezení.&lt;br /&gt;
&lt;br /&gt;
Uživatel obdrží od AS TGS ticket pro komunikaci s TGS, u něhož žádá o server ticket pro každou službu kterou využívá v rámci jednoho sezení. Komunikace se serverem (službou) pak probíhá pomocí server ticket, jehož součástí je i symetrický klíč pro zabezpečenou komunikaci client-server.&lt;br /&gt;
&lt;br /&gt;
 +---------------+     +--------------+  &lt;br /&gt;
 | Kerberos      |     | Ticket       |  &lt;br /&gt;
 | Authentication|     | Granting     |  &lt;br /&gt;
 | Server  (AS)  |    /| Server (TGS) |        &lt;br /&gt;
 +---------------+   / +--------------+&lt;br /&gt;
       |            /                   (1) request TGT ticket       &lt;br /&gt;
       |(1)        /(2)                 (2) request server ticket&lt;br /&gt;
       |          /                     (3) request service      &lt;br /&gt;
 +---------------+ (3) +--------------+  &lt;br /&gt;
 |   Client      |-----|Server/service|       &lt;br /&gt;
 +---------------+     +--------------+&lt;br /&gt;
&lt;br /&gt;
Princip komunikace: &lt;br /&gt;
(1) client:&lt;br /&gt;
* Klient se autentifikuje u AS = požádá o TGT lístek.&lt;br /&gt;
* Klient tedy pošle AS svůj Client.name.&lt;br /&gt;
(1) AS:&lt;br /&gt;
* AS vyhledá klienta v databázi sdílených klíčů a podle nalezeného klíče vytvoří (hash sdíleného klíče) tajný klíč key_C-AS.&lt;br /&gt;
* Zároveň vygeneruje dočasný klíč tmpkey_C-TGS pro komunikaci Client-TGS, a tento klíč zašifruje pomocí key_C-AS.&lt;br /&gt;
* Dále vytvoří TGT lístek: (Client.name, TGS.name, Client.address, tmpkey_C-TGS), který pak zašifruje pomocí tajného klíče TGS key_AS-TGS.&lt;br /&gt;
* Zašifrované Ekey_C-AS(tmpkey_C-TGS) a Ekey_AS-TGS(Client.name,TGS.name,Client.address,tmpkey_C-TGS) pak pošle klientovi&lt;br /&gt;
(1) client:&lt;br /&gt;
* Klient si dokáže vytvořit key_C-AS ze znalosti sdíleného klíče s AS (=autorizace klienta) a rozšifrovat dočasný klíč tmpkey_C-TGS pro komunikaci s TGS.&lt;br /&gt;
(1)&lt;br /&gt;
* Komunikace Client-AS probíhá jen jednou za sezení. Uživatel tak např. zadává heslo jen jednou, i když využívá několik různých služeb. Vlastní už totiž TGT ticket, díky kterému mu TGS vydává lístky pro jednotlivé servery/služby.&lt;br /&gt;
(2) client:&lt;br /&gt;
* Chce-li nyní klient použít server, požádá TGS o lístek:&lt;br /&gt;
* vytvoří tzv. authenticator= (Client.name, Client.address, timestamp1) a zašifruje jej pro TGS pomocí tmpkey_C-TGS. Zašifrovaný authenticator pošle spolu s TGT lístkem a názvem požadované služby TGS.&lt;br /&gt;
(2) TGS:&lt;br /&gt;
* TGS dokáže pomocí svého klíče rozšifrovat TGT lístek, tím získá klíč tmpkey_C-TGS, kterým zase rozšifruje authenticator a ověří platnost všech položek (timestamp1, Client.address, ...).&lt;br /&gt;
* Vytvoří dočasný klíč tmpkey_C-S pro komunikaci Client-Server.&lt;br /&gt;
* Vytvoří server-ticket který obsahuje (Client.name,Server.name, Client.address, ticket.lifetime, timestamp,tmpkey_C-S), a zašifruje tento lístek pomocí klíče key_TGS-S sdíleného spolu se serverem.&lt;br /&gt;
* Klientovi pak pošle takto zašifrovaný lístek a klíčem tmpkey_C-TGS zašifrovaný tmpkey_C-S.&lt;br /&gt;
(2) client:&lt;br /&gt;
* Klient si rozšifruje dočasný klíč tmpkey_C-S pro komunikaci se serverem.&lt;br /&gt;
* Zároveň obdržel lístek pro použití serveru (služby).&lt;br /&gt;
(3) client:&lt;br /&gt;
* Klient nyní vytvoří nový authenticator obsahující (Client.name,Client.address,timestamp2) zašifrovaný pomocí klíče tmpkey_C-S. A pošle jej spolu se server-ticket serveru.&lt;br /&gt;
(3) server:&lt;br /&gt;
* Dešifruje lístek a authenticator, a ověří platnost všech položek. pošle zpět klientovi zašifrovaný timestamp2+1.&lt;br /&gt;
(3)&lt;br /&gt;
* I další komunikace Client-Server probíhá šifrovaně pomocí tmpkey_C-S.&lt;br /&gt;
&lt;br /&gt;
==Konfigurace==&lt;br /&gt;
Popsaná konfigurace je pro verzi z MIT na Red Hat Linux 9 Aktualní verze krb5-1.3.5 je možné stáhnout z http://web.mit.edu/kerberos/dist/index.html.&lt;br /&gt;
Konfigurace KDC&lt;br /&gt;
Je doporučeno zprovoznit DNS a časovou synchronizaci (ntp).&lt;br /&gt;
Nainstalovat balíčky krb5-libs,krb5-server,krb5-workstation (pro GUI konfiguraci pak např. gnome-kerberos).&lt;br /&gt;
Upravit soubor /etc/krb5.conf, např.:&lt;br /&gt;
&lt;br /&gt;
     [logging]&lt;br /&gt;
      default = FILE:/var/log/krb5libs.log&lt;br /&gt;
      kdc = FILE:/var/log/krb5kdc.log&lt;br /&gt;
      admin_server = FILE:/var/log/kadmind.log&lt;br /&gt;
     [libdefaults]&lt;br /&gt;
      ticket_lifetime = 24000&lt;br /&gt;
      default_realm = FI.MUNI.CZ&lt;br /&gt;
      dns_lookup_realm = false&lt;br /&gt;
      dns_lookup_kdc = false&lt;br /&gt;
     [realms]&lt;br /&gt;
      FI.MUNI.CZ = {&lt;br /&gt;
        kdc = agaue-alpha.fi.muni.cz:88&lt;br /&gt;
	admin_server = agaue-alpha.fi.muni.cz:749&lt;br /&gt;
	default_domain = fi.muni.cz&lt;br /&gt;
      }&lt;br /&gt;
     [domain_realm]&lt;br /&gt;
      .fi.muni.cz = FI.MUNI.CZ&lt;br /&gt;
      fi.muni.cz = FI.MUNI.CZ&lt;br /&gt;
     [kdc]&lt;br /&gt;
      profile = /var/kerberos/krb5kdc/kdc.conf&lt;br /&gt;
     [appdefaults]&lt;br /&gt;
      pam = {&lt;br /&gt;
       debug = false&lt;br /&gt;
       ticket_lifetime = 36000&lt;br /&gt;
       renew_lifetime = 36000&lt;br /&gt;
       forwardable = true&lt;br /&gt;
       krb4_convert = false&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
Upravit soubor /var/kerberos/krb5kdc/kdc.conf, např:&lt;br /&gt;
&lt;br /&gt;
   [kdcdefaults]&lt;br /&gt;
    acl_file = /var/kerberos/krb5kdc/kadm5.acl&lt;br /&gt;
    dict_file = /usr/share/dict/words&lt;br /&gt;
    admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab&lt;br /&gt;
    v4_mode = nopreauth&lt;br /&gt;
   [realms]&lt;br /&gt;
    FI.MUNI.CZ = {&lt;br /&gt;
      master_key_type = des-cbc-crc&lt;br /&gt;
      supported_enctypes = arcfour-hmac:normal arcfour-hmac:norealm arcfour-hmac:onlyrealm des3-hmac-sha1:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal des-cbc-crc:v4 des-cbc-crc:afs3&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
Vytvořit databázi pomocí kdb5_util:&lt;br /&gt;
/usr/kerberos/sbin/kdb5_util create -s&lt;br /&gt;
příkaz create vytváří databázi klíčů pro Kerberos realm. Parametr -s vytvoří soubor, ve kterém bude uložen hlavní klíč serveru. Pokud žádný soubor neuvedeme, bude se náš Kerberos server (krb5kdc) při každém spuštění na tento klíč ptát.&lt;br /&gt;
Upravíme soubor /var/kerberos/krb5kdc/kadm5.acl:&lt;br /&gt;
tento soubor používá kadmind pro zjištění kteří uživatelé (principals) mají přístup k databázi a s jakou úrovní.&lt;br /&gt;
&lt;br /&gt;
*/admin@FI.MUNI.CZ *&lt;br /&gt;
&lt;br /&gt;
Utilita kadmin komunikuje s kadmin serverem po síti, a k autentifikaci používá Kerbera, proto pokud chceme vytvářet prvního uživatele, musíme jej vytvořit pomocí kadmin.local:&lt;br /&gt;
/usr/kerberos/sbin/kadmin.local -q &amp;quot;addprinc username/admin&amp;quot;&lt;br /&gt;
Kerbera spustíme příkazy:&lt;br /&gt;
&lt;br /&gt;
   /sbin/service krb5kdc start&lt;br /&gt;
   /sbin/service kadmin  start&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
Uživatele nyní můžeme přidávat příkazem addprinc u kadmin.&lt;br /&gt;
Pro získání lístku slouží kinit, pro jejich vypsání klist, a zrušení kdestroy.&lt;br /&gt;
Konfigurace klienta&lt;br /&gt;
Opět je doporučena synchronizace času.&lt;br /&gt;
Nainstalované balíčky krb5-libs a krb5-workstation.&lt;br /&gt;
Upravit soubor /etc/krb5.conf (obvykle může být stejný jako u KDC).&lt;br /&gt;
&lt;br /&gt;
addprinc -randkey host/agaue-alpha.lab.fi.muni.cz&lt;br /&gt;
&lt;br /&gt;
ktadd -k /etc/krb5.keytab host/agaue-alpha.fi.muni.cz&lt;/div&gt;</summary>
		<author><name>Pajinek</name></author>	</entry>

	</feed>