Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Кіріспе
Күшпен бұзу шабуылынан қорғау үшін криптографиялық кілтіні тексеруге қажетті уақытты ұзарту
Increasing the time needed to test a cryptographic key to protect against brute force attack
Криптографияда кілтті созу әдістері әдетте пароль немесе құпия сөз сияқты әлсіз кілті күшпен бұзу шабуылына қарсы қорғанысын арттыру үшін қолданылады. Бұл үшін әрбір мүмкін кілті тексеруге жұмсалатын ресурстарды (уақыт және, мүмкін, жад) ұлғайту қажет. Адамдар жасаған парольдер немесе құпия сөздер көбінесе парольді бұзуға мүмкіндік беретіндей қысқа немесе болжамды болады, ал кілтті созу мұндай шабуылдарды бір парольді сынап көрудің қарапайым қадамын қиындату арқылы күрделендіруге бағытталған. Кілтті созу кілттің ұзындығы шектелген нақты қолданыстарда да қауіпсіздікті жақсартады, күшпен бұзу шабуылшысының көзқарасынан кілттің ұзындығын ұзарту арқылы. Кілтті созудың бірнеше тәсілі бар. Бір тәсіл – криптографиялық хэш-функцияны немесе блок шифрін циклмен бірнеше рет қолдану. Мысалы, кілт шифр үшін қолданылатын қолданыстарда шифрдің кілт кестесі белгілі бір уақыт ішінде орындалуы үшін өзгертілуі мүмкін. Тағы бір тәсіл – үлкен жад көлемін қажет ететін криптографиялық хэш-функцияларды пайдалану. Бұл жад ресурстарымен шектелген шабуылшылардың шабуылдарын тоқтатуға тиімді болуы мүмкін.
In cryptography, key stretching techniques are used to make a possibly weak key, typically a password or passphrase, more secure against a brute force attack by increasing the resources (time and possibly space) it takes to test each possible key. Passwords or passphrases created by humans are often short or predictable enough to allow password cracking, and key stretching is intended to make such attacks more difficult by complicating a basic step of trying a single password candidate. Key stretching also improves security in some real world applications where the key length has been constrained, by mimicking a longer key length from the perspective of a brute force attacker. There are several ways to perform key stretching. One way is to apply a cryptographic hash function or a block cipher repeatedly in a loop. For example, in applications where the key is used for a cipher, the key schedule in the cipher may be modified so that it takes a specific length of time to perform. Another way is to use cryptographic hash functions that have large memory requirements – these can be effective in frustrating attacks by memory bound adversaries.
Тарих
Алғашқы қасақана баяу парольге негізделген кілт шығару функциясы "CRYPT" 1978 жылы Роберт Моррис Unix парольдерін шифрлау үшін сипаттады. Ол 25 итерация санын, 12 бит тұзды және DES-тің бір түрін қосалқы функция ретінде қолданды. (Стандартты DES аппараттық құралдарын пайдаланып шабуылдар жасауды қиын ету үшін нақты DES-тен аулақ болды.) Парольдер ASCII кодировкасында ең көп сегіз таңбаға дейін шектелген. CRYPT(3) өз заманы үшін үлкен жетістік болғанымен, қазір ол жеткіліксіз деп саналады. PDP 11 дәуірі үшін есептелген итерация саны тым төмен, 12 бит тұз ыңғайсыздық тудырады, бірақ алдын ала есептелген сөздіктерді пайдаланып жасалатын шабуылдарды тоқтата алмайды, ал сегіз таңбалық шектеу күшті парольдік фразаларды қолдануға мүмкіндік бермейді. PBKDF2 сияқты қазіргі заманғы парольге негізделген кілт шығару функциялары SHA 2 сияқты криптографиялық хэш, ұзын тұз (мысалы, 64 бит) және жоғары итерация санын қолданады. АҚШ Ұлттық Стандарттар және Технология Институты (NIST) кемінде 10 000 итерацияны ұсынады. "Өте маңызды кілттер үшін немесе өте қуатты жүйелер үшін, немесе пайдаланушы сезетін жылдамдық маңызды емес жүйелер үшін 10 000 000 итерация саны орынды болуы мүмкін."
The first deliberately slow password based key derivation function "CRYPT" was described in 1978 by Robert Morris for encrypting Unix passwords. It used an iteration count of 25, a 12 bit salt and a variant of DES as the sub function. (DES proper was avoided in an attempt to frustrate attacks using standard DES hardware.) Passwords were limited to a maximum of eight ASCII characters. While it was a great advancement for its time, CRYPT(3) is now considered inadequate. The iteration count, designed for the PDP 11 era, is too low, 12 bits of salt is an inconvenience but does not stop precomputed dictionary attacks, and the eight character limit prevents the use of stronger passphrases. Modern password based key derivation functions, such as PBKDF2, use a cryptographic hash, such as SHA 2, a longer salt (e. g. 64 bits) and a high iteration count. The U. S. National Institute of Standards and Technology (NIST) recommends a minimum iteration count of 10,000. "For especially critical keys, or for very powerful systems or systems where user perceived performance is not critical, an iteration count of 10,000,000 may be appropriate.”
2009 жылы кілтті тестілеу жылдамдығын арттыру үшін арнайы, жоғары параллельді аппаратты пайдалануды шектеу мақсатымен жадты көп пайдаланатын кілт күшейту алгоритмі scrypt енгізілді. 2013 жылы графикалық процессорлар мен арнайы аппараттық құралдардың шабуылдарына қарсы тұра алатын жақсартылған кілт созу стандартын таңдау үшін парольді хэштеу бойынша бәйге ұйымдастырылды. Жеңімпаз – Argon2, 2015 жылдың 1 шілдесінде жарияланды.
In 2009, a memory intensive key strengthening algorithm, scrypt, was introduced with the intention of limiting the use of custom, highly parallel hardware to speed up key testing. In 2013, a Password Hashing Competition was held to select an improved key stretching standard that would resist attacks from graphics processors and special purpose hardware. The winner, Argon2, was selected on July 1, 2015.