$Ringlet: netsec/txt/pam-otp-sso-plan.txt,v 1.4 2004/01/13 07:51:20 roam Exp $ I. Pluggable Authentication Modules (PAM) 1. Що е то - обща идея - трябва ли всички пароли да се държат в system password file? - един файл, описващ модулите, през които всеки service минава за автентикация, а после и за други неща. 2. Начин на работа (сървър - библиотеки - conversation) - клиентът се представя с username; - сървърът се представя на PAM libs с името на услугата си; - сървърът започва PAM сесия с username на клиента; - PAM libs минават през модулите - сървърът дава credentials, като при нужда използва conversation функциите, за да поиска още информация от клиента; - PAM libs решават дали да спрат по средата (sufficient или failure); - PAM libs попълват struct passwd за използване от сървъра. 3. Реализации - Sun/Solaris; - Linux-PAM; - OpenPAM. 4. Предимства и недостатъци от гледна точка на usability - con: още едно нещо, което сървърите трябва да поддържат; - con: още не е съвсем стандартизирано като API; - con: не много добра поддръжка на template user accounts; - pro: само едно нещо, което сървърите трябва да поддържат; - pro: централизирана конфигурация с една стъпка; - pro: конфигурация на auth на много машини с централна user account db; - pro: лесно добавяне на нови auth methods без прекомпилиране или дори прелинкване на приложенията - компилираш новия PAM модул, слагаш го в конфигурационния файл et voila; - pro: всякакви странни възможности (pam_checkmail, pam_alreadyloggedin); - pro: връзване на authentication с account mgmt. 5. Предимства и недостатъци от гледна точка на security - con: паролите все пак се предават в clear text; - pro: всичко, което улеснява работата на sysadmin-а, е добро; - pro: pam_cracklib и подобни; - pro: централизиран logging. II. One-time passwords (OTP: S/Key и OPIE) 1. Що е то - обща идея - преодоляване на sniffers и keyloggers. 2. Начин на работа - от сигурна конзола: въвеждаш passphrase за инициализация на последователността; - през несигурна среда: auth request за определен потребител; - OTP libs намират последователността и текущата позиция; - OTP libs изчисляват и изпращат въпросването (challenge); - от сигурна конзола: въвеждаш passphrase и изчисляваш отговора; - през несигурна среда: предаваш отговора в cleartext; - OTP libs изчисляват отговора и сравняват. 3. Реализации - logdaemon: кофти, rebuild на всички системни програми, които искат автентикация... какво правят другите OS's? - S/Key: добра последователност от идеи, криптографски силни hash алгоритми; - OPIE: развитие на S/Key с MD5 вместо MD4, много portable, много лесно за използване. 4. Реализации в програми - local support, PAM 5. Предимства и недостатъци от гледна точка на usability - con: досадно е всеки път да си въвеждаш паролата :) но може да си напишеш keychain; - con: не може да се разпредели между повече машини; 6. Предимства и недостатъци от гледна точка на security - con: не може да се разпредели между повече машини, изобщо не се връзва с идеологията за single sign-on; - pro: никаква възможност за replay attacks; - pro: в новите реализации (OPIE) е достатъчно криптографски силно, така че няма никаква опасност и от brute-force атаки. 7. OTP calculators - Unix-like OS's: в самото OPIE идват opiepasswd(1) и opiekey(1); - Windows: WinKey, - Java: много са, III. Single Sign-on: Kerberos 1. Що е то и защо е нужно - обща идея - single sign-on - ами.. удобство си е :) - mutual authentication - понякога наистина е важно да знаеш с кого говориш :) 2. Кратък преразказ на A Dialogue in Four Scenes - 3. По-подробно описание: domain controller, tickets, expiration, TGT, etc 4. Реализации - krb4, krb5, MIT Kerberos 5. Разлики между Kerberos 4 и Kerberos 5 - много! - случайни стойности на всяка крачка за дори по-малко predictability; - forwardable, proxiable, renewable tickets; - ASN.1 за message encoding; - authorization data; 5. Предимства и недостатъци от гледна точка на usability - con: изисква специална поддръжка от всяко приложение; не може да се "мине тънко" примерно с PAM; - pro: single sign-on, baby! - pro: industry standard, interoperable implementations - pro: може да бъде използвано и remotely - pro: има и cross-realm auth! (но виж по-долу за krb4) 6. Предимства и недостатъци от гледна точка на security - con: krb4: кажи-речи никъде не се използват случайно-генерирани данни - con: krb4: проблем с използването на 3DES в CBC-mode: cross-realm auth gone to hell. - krb5 няма лоши страни, поне не и засега известни :) 7. Разни - поддръжка на Kerberos се прави най-лесно с GSSAPI (RFC 2078) - напоследък се появяват все повече гласове и идеи за Kerberos auth дори и на web applications, както Windows поддържа NTLM auth между IIS и MSIE, а напоследък и между IIS и Mozilla. Още информация: - - -