Кіріспе
Бір рет қолданылатын пароль жүйесі
S/KEY – Unix сияқты операциялық жүйелерге, әсіресе ұзақ мерзімді парольді теруге болмайтын, қарапайым терминалдардан немесе сенімсіз қоғамдық компьютерлерден аутентификация үшін әзірленген бір рет қолданылатын пароль жүйесі. Пайдаланушының нақты паролі офлайн құрылғыда қысқа символдар жинағымен және кемитін санаумен біріктіріліп, бір рет қолданылатын пароль құрайды. Әр пароль бір рет ғана қолданылатындықтан, олар пароль ұрлаушылар үшін ешқандай пайдалы емес. Символдардың қысқа жинағы санаушы нөлге жеткенше өзгермейтіндіктен, пайдаланушы бір рет қолданылатын парольдердің тізімін жасап алып жүре алады. Сонымен қатар, пайдаланушы парольді, символдарды және қажетті санау мәнін жергілікті калькуляторға ұсынып, одан кейін желі арқылы ашық түрде берілуге болатын тиісті бір рет қолданылатын парольді шығара алады. Соңғы нұсқасы көбірек таралған және іс жүзінде сұрақ-жауап аутентификациясына тең. S/KEY Linux (қосылатын аутентификация модульдері арқылы), OpenBSD, NetBSD және FreeBSD жүйелерінде қолдау көрсетіледі, ал оны басқа жүйелерде де қолдануға мүмкіндік беру үшін ашық бастапқы кодты жүзеге асыру қолданылуы мүмкін. OpenSSH сондай-ақ S/KEY-ді қолдайды, себебі OpenSSH 1.2.2 нұсқасы 1999 жылдың 1 желтоқсанында жарық көрді. Көбінесе қолданылатын бір нұсқасы OPIE деп аталады. S/KEY – Telcordia Technologies компаниясының сауда белгісі, бұрын Bell Communications Research (Bellcore) деп белгілі болған. S/KEY кейде авторы Лесли Лэмпорттың атымен аталған Лэмпорттың схемасы деп те айтылады. Оны 1980 жылдардың соңында Нил Халлер, Фил Карн және Джон Уолден Bellcore компаниясында әзірледі. Ашық кілттік криптографияның негізгі патенттерінің мерзімі өткеннен кейін және SSH және басқа криптографиялық протоколдарды қолдайтын ноутбуктердің кеңінен таралуымен, олар парольді ғана емес, бүкіл сессияны қорғай алады, S/KEY қолданыстан шығып барады. Салыстырмалы түрде екі факторлы аутентификацияны іске асыратын схемалар қолданылуы артып келеді.
S/KEY is a one time password system developed for authentication to Unix like operating systems, especially from dumb terminals or untrusted public computers on which one does not want to type a long term password. A user's real password is combined in an offline device with a short set of characters and a decrementing counter to form a single use password. Because each password is only used once, they are useless to password sniffers. Because the short set of characters does not change until the counter reaches zero, it is possible to prepare a list of single use passwords, in order, that can be carried by the user. Alternatively, the user can present the password, characters, and desired counter value to a local calculator to generate the appropriate one time password that can then be transmitted over the network in the clear. The latter form is more common and practically amounts to challenge–response authentication. S/KEY is supported in Linux (via pluggable authentication modules), OpenBSD, NetBSD, and FreeBSD, and a generic open source implementation can be used to enable its use on other systems. OpenSSH also implements S/KEY since version OpenSSH 1.2.2 was released on December 1, 1999. One common implementation is called OPIE. S/KEY is a trademark of Telcordia Technologies, formerly known as Bell Communications Research (Bellcore). S/KEY is also sometimes referred to as Lamport's scheme, after its author, Leslie Lamport. It was developed by Neil Haller, Phil Karn and John Walden at Bellcore in the late 1980s. With the expiration of the basic patents on
public key cryptography and the widespread use of laptop computers running SSH and
other cryptographic protocols that can secure an entire session, not just the password, S/KEY is falling
into disuse. Schemes that implement two factor authentication, by comparison, are growing in use.
Аутентификация
Пароль жасалғаннан кейін, пайдаланушыда n пароль жазылған қағаз болады. Егер n өте үлкен болса, барлық n парольді сақтау немесе H(W) арқылы берілген парольді есептеу тиімсіз болады. Парольдерді қажетті ретпен, тек хэш есептеулерін және бірнеше парольдерді сақтап, тиімді есептеуге болатын әдістер бар. Ең жақсысы, бірақ тәжірибеде сирек кездесетіні, пайдаланушы кішкентай, портативті, қауіпсіз, желіге қосылмаған, құпия сөзді, тұзды және хэштің қажетті қайталану санын пайдаланып, кез келген қажетті парольді қайта жасай алатын есептеу құрылғысын алып жүруі мүмкін. Соңғы екеуі аутентификацияны сұраған сервермен ыңғайлы түрде беріледі. Қалай болғанда да, бірінші пароль серверде сақталған парольмен бірдей болады. Бұл бірінші пароль аутентификация үшін қолданылмайды (пайдаланушы осы парольді қағазда сызып тастауы керек), оның орнына екіншісі қолданылады: Пайдаланушы серверге тізімдегі екінші парольді береді және оны сызып тастайды. Сервер енгізілген парольді пайдаланып H есептеуге тырысады. Егер H бірінші парольді (серверде сақталған парольді) шығарса, аутентификация сәтті болады. Сервер оны ағымдағы сілтеме ретінде сақтайды. Келесі аутентификациялар үшін пайдаланушы i-ді ұсынады. (Басылған тізімдегі соңғы пароль, n, сервердің бастапқы жасаған паролі, H(W), мұнда W – бастапқы құпия сөз). Сервер H(i) есептейді және нәтижені серверде сілтеме ретінде сақталған i-1-мен салыстырады.
The user provides the server with the second password on the list and scratches that password. The server attempts to compute H , where is the password supplied. If H produces the first password (the one the server has stored), then the authentication is successful. The server will then store as the current reference. For subsequent authentications, the user will provide i. (The last password on the printed list, n, is the first password generated by the server, H(W), where W is the initial secret). The server will compute H(i) and will compare the result to i−1, which is stored as reference on the server.
Қауіпсіздік
S/KEY қауіпсіздігі криптографиялық хэш-функцияларды кері қайтарудың қиындығына негізделген. Егер шабуылшы сәтті аутентификация үшін қолданылған парольді қол жеткізсе. Егер бұл i болса, бұл пароль келесі аутентификация үшін пайдасыз, себебі әрбір пароль бір рет қана қолданылуы мүмкін. Шабуылшы үшін i-1 табу қызығушылық тудырар еді, өйткені бұл пароль келесі аутентификация үшін қолданылатын пароль болар еді. Алайда, бұл i-1 мәнін өндірген хэш-функцияны i арқылы кері қайтаруды талап етеді (H(i-1) = i), бұл қазіргі криптографиялық хэш-функцияларымен өте қиын. Дегенмен, S/KEY жеке өзі қолданылса, ортадағы адам шабуылына осал. Ол сондай-ақ белгілі бір жарыс жағдайларына да ұшырайды, мысалы, шабуылшының бағдарламалық жасақтамасы желіде парольдегі алғашқы N-1 таңбаны (мұнда N – парольдің ұзындығы) анықтап, серверге жеке TCP сессиясын орнатып, N-ші орындағы барлық мүмкін таңбаларды тез арада сынап көреді, сәтті нәтижеге қол жеткізгенше. Мұндай осалдықтарды ssh, SSL, SPKM немесе басқа шифрланған тасымалдау қабатын пайдалану арқылы болдырмауға болады. S/KEY-нің әрбір итерациясы тұз немесе санауды қамтымайтындықтан, бастапқы парольді бұзбай тікелей соқтығысуларды табу мүмкін. Бұл 264 күрделілігіне ие, оны алдын ала есептеп шығаруға болады. Соқтығысулардың әсерін азайту үшін, әсіресе ұзақ тізбектер үшін, мәндер тізбектерін сақтау арқылы жадты үнемдеуге болады. S/KEY дерекқорына кіре алатын адам 264 күрделілігімен оларды параллель түрде бұзуға қабілетті. Олар бастапқы парольді білмесе де, әрбір пайдаланушы үшін жарамды деректемелерді таба алады. Бұл тұз қосылмаған күшті, бірегей парольдердің 64 биттік хэштерін сақтауға ұқсас. S/KEY протоколы циклға түсуі мүмкін. Егер S/KEY тізбегінде цикл пайда болса, шабуылшы пайдаланушының кілтін бастапқы мәнді анықтамай және жарамды пайдаланушыны ескертпей пайдалана алады. Патологиялық жағдайда бұл өзіне-өзі хэштейтін OTP болар еді.
Пайдалану мүмкіндігі
Ішкі түрде S/KEY 64 биттік сандарды қолданады. Адамдарға қолдануға ыңғайлы болу үшін, әрбір сан жарияланған 2048 сөздіктен алынған, әрқайсысы бірден төрт символға дейін болатын, қысқа алты сөзбен байланыстырылады. Мысалы, бір 64 биттік сан "ROY HURT SKI FAIL GRIM KNEE" дегенге сәйкес келеді.