Кіріспе
Криптографиялық жүйелерге шабуылдың түрі. Криптографиялық жүйелердің қауіпсіздігі кейбір құпия деректерге байланысты, олар уәкілетті тұлғаларға белгілі, бірақ басқаларға белгісіз және болжау мүмкін емес. Осы болжау мүмкін еместігіне қол жеткізу үшін, әдетте, белгілі бір кездейсоқтық қолданылады. Қазіргі заманғы криптографиялық протоколдар көбінесе жиі кездейсоқ шамаларды жасауды талап етеді. Осы процестегі әлсіздіктерді бұзу немесе пайдалану арқылы жасалатын криптографиялық шабуылдар кездейсоқ сандар генераторына жасалған шабуылдар деп аталады. Қауіпсіздік үшін жоғары сапалы кездейсоқ сандарды генерациялау (RNG) процесі дерлік әрқашан қажет, ал сапаның жетіспеуі, әдетте, шабуылға ұшырау мүмкіндігін тудырады, сондықтан криптографиялық жүйелерде қауіпсіздіктің болмауына, тіпті толық құлауға әкеледі. RNG процесі шабуылшылар үшін әсіресе тартымды, өйткені ол әдетте бір-бірлеп оқшауланған аппараттық немесе бағдарламалық компонентті табуға оңай. Егер шабуылшы олар болжай алатын тәсілмен жасалған псевдо-кездейсоқ биттерді алмастыра алса, қауіпсіздік толығымен бұзылады, бірақ әдетте биттердің жоғары деңгейдегі кез келген тестінен анықталмайды. Бұған қоса, мұндай шабуылдар құрылымға бір рет қана кіруді қажет етеді. Мысалы, кілттерді ұрлап, электрондық пошта арқылы жіберетін компьютерлік вирустың керісінше, деректерді қайта жіберудің қажеті жоқ.
The security of cryptographic systems depends on some secret data that is known to authorized persons but unknown and unpredictable to others. To achieve this unpredictability, some randomization is typically employed. Modern cryptographic protocols often require frequent generation of random quantities. Cryptographic attacks that subvert or exploit weaknesses in this process are known as random number generator attacks. A high quality random number generation (RNG) process is almost always required for security, and lack of quality generally provides attack vulnerabilities and so leads to lack of security, even to complete compromise, in cryptographic systems. The RNG process is particularly attractive to attackers because it is typically a single isolated hardware or software component easy to locate. If the attacker can substitute pseudo random bits generated in a way they can predict, security is totally compromised, yet generally undetectable by any upstream test of the bits. Furthermore, such attacks require only a single access to the system that is being compromised. No data need be sent back in contrast to, say, a computer virus that steals keys and then e mails them to some drop point.
Кездейсоқ сандарды шығару
Адамдар көбінесе кездейсоқ шамаларды жасауда нашар нәтижелер көрсетеді. Сиқыршылар, кәсіби құмар ойыншылар және алаяқтар адамдардың мінез-құлқының болжамдылығына тіреледі. Екінші дүниежүзілік соғыста неміс кодшыларына әрбір «Энигма» машинасының хабарламасы үшін бастапқы ротор параметрін құруға үш әріпті кездейсоқ түрде таңдау нұсқауы берілді. Бірақ, кейбіреулері өздерінің немесе сүйіктілерінің әріптері сияқты болжамды мәндерді таңдады, бұл одақтастарға осы шифрлау жүйелерін бұзуға үлкен көмек тигізді. Тағы бір мысал – компьютер пайдаланушыларының парольдерді таңдауының көбінесе болжамды жолдары (парольді бұзу туралы қараңыз). Дегенмен, аралас стратегиялық ойындарда ойнау кезінде кездейсоқтық жасау үшін адам ойыншылығының энтропиясын қолдануды Ран Халприн мен Мони Наор зерттеді.
Бағдарламалық РНГ
Криптожүйенің басқа компоненттері сияқты, бағдарламалық қамтамасыз етудегі кездейсоқ сандар генераторы да белгілі бір шабуылдарға қарсы тұру үшін жобалануы керек. Кездейсоқ сандар генераторына (РНГ) мүмкін болатын шабуылдардың кейбіреулері: Тікелей криптоаналитикалық шабуыл – шабуылшы кездейсоқ биттер ағынының бір бөлігін алғанда және оны РНГ шығысын нағыз кездейсоқ ағыннан ажырату үшін пайдалана алады. Кіріске негізделген шабуылдар РНГ-ге кіретін деректерді өңдеу арқылы оған шабуыл жасайды, мысалы, жүйедегі қолданыстағы энтропияны "тазартып", оны белгілі бір күйге келтіреді. Күйдің бұзылуын кеңейту шабуылдары – РНГ-нің ішкі құпия күйі белгілі бір уақытта белгілі болған жағдайда, болашақ шығыстарды болжау немесе бұрынғы шығыстарды қалпына келтіру үшін қолданылады. Бұл генератор іске қосылғанда және энтропиясы аз немесе мүлдем болмағанда (әсіресе компьютер жаңа ғана қосылғанда және өте стандартты операциялар тізбесін орындағанда) болуы мүмкін, сондықтан шабуылшы күйдің бастапқы болжамын алуға мүмкіндік алады.
Direct cryptanalytic attack when an attacker obtained part of the stream of random bits and can use this to distinguish the RNG output from a truly random stream. Input based attacks modify the input to the RNG to attack it, for example by "flushing" existing entropy out of the system and put it into a known state. State compromise extension attacks when the internal secret state of the RNG is known at some time, use this to predict future output or to recover previous outputs. This can happen when a generator starts up and has little or no entropy (especially if the computer has just been booted and followed a very standard sequence of operations), so an attacker may be able to obtain an initial guess at the state.
Жабдықтық РНГ
Жабдықтық кездейсоқ сандар генераторларына бірнеше шабуыл жасау мүмкін, оның ішінде компьютерден радиожиілік сәулеленуін ұстауға тырысу (мысалы, қатты дискінің қозғалтқыш шуынан үзіліс уақытын алу) немесе бақыланатын сигналдарды күдіксіз кездейсоқ көзге жіберуге тырысу (мысалы, лава шамдарының жарығын өшіру немесе дыбыс картасына күшті, белгілі сигнал беру).
RNG бұрмалау
Бұрмаланған кездейсоқ сандар криптографиялық тұрғыдан қамталған псевдокездейсоқ сан генераторын пайдаланып, шабуылшыға белгілі, бірақ бағдарламалық құралда жасырылған тұқымдық мән арқылы жасалуы мүмкін. Тұқымның салыстырмалы түрде қысқа, мысалы, 24-40 биттік бөлігі нағыз кездейсоқ болуы мүмкін, бұл айқын қайталауды болдырмайды, бірақ шабуылшының "кездейсоқ" түрде жасалған кілтті қалпына келтіруіне тосқауыл қоймауға жеткіліксіз. Кездейсоқ сандар әдетте қолданудан бұрын бірнеше аппараттық және бағдарламалық қабаттардан өтеді. Биттер перифериялық құрылғыда жасалып, тізбекті кабель арқылы жіберілуі, операциялық жүйедегі қосымша құрал арқылы жиналуы және жүйелік шақыру арқылы алынуы мүмкін. Бұрмаланған биттерді осы процестің кез келген нүктесінде ауыстыруға болады, оларды анықтау ықтималдығы төмен. Бірнеше миллиметрлік интегралдық схемаға бұрмаланған биттерді өндіруге арналған аппараттық тізбек құрастырылуы мүмкін. Ең күрделі аппараттық кездейсоқ сан генераторы кездейсоқтықтың бастапқы көзі цифрланған жерден жоғарырақ, мысалы, шығыс драйверінің чипіне немесе тіпті RNG-ні компьютерге қосатын кабельге орналастыру арқылы бұрмалануы мүмкін. Бұрмалау чипі құрылғы алғаш қосылғаннан кейін және қабылдау сынақтарынан өткеннен кейін жұмыстың басталуын шектеу үшін сағатты қамтуы мүмкін, немесе ол қосу/өшіруді басқару үшін радио қабылдағышын қамтуы мүмкін. Оны өндіруші ұлттық сигналдық барлау қызметінің тапсырысы бойынша орната алады немесе кейінірек физикалық қол жеткізімі бар кез келген адам қоса алады. Аппараттық кездейсоқ сан генераторлары бар CPU чиптерін чиптердің микропрограммасында бұрмаланған RNG бар үйлесімді чиптермен ауыстыруға болады.
Қорғау
Құрал-жабдықпен (мысалы, xor) генерирленген кездейсоқ сандарды жақсы сапалы ағын шифрының нәтижесімен, мүмкіндігінше қолданылу орнына жақын араластырыңыз. Ағын шифрының кілті немесе бастамасы аудиттен өтетін және сенімді дереккөзден алынған, мысалы, ойыншық сүйектерді лақтыру арқылы өзгертілуі керек. Fortuna кездейсоқ сандар генераторы – осы механизмді пайдаланатын алгоритмнің мысалы. Нағыз кездейсоқ дереккөзді пайдаланып құпия сөздер мен сөз тіркестерін жасаңыз. Кейбір жүйелер пайдаланушыларға өздерінің құпия сөздерін ойлап табуға рұқсат бермей, олар үшін кездейсоқ құпия сөздерді таңдайды. Кездейсоқ сандарды қалай генерирлейтінін көрсететін және генерациялау процесін тексеруге мүмкіндік беретін шифрлау жүйелерін пайдаланыңыз. Қауіпсіздік жүйелерін тікелей дүкеннен сатып алынған құрал-жабдықтармен құрастырыңыз, мүмкіндігінше олардың мақсатын жасыратын тәсілдермен, мысалы, ірі сауда орталығынан жерден алыңыз. Осы тұрғыдан алғанда, дыбыс карталары мен веб-камералар осы мақсатта жасалған құрал-жабдыққа қарағанда кездейсоқтықтың жақсы көзі болуы мүмкін. Сатып алынғаннан кейін құрал-жабдыққа толық физикалық бақылауды сақтаңыз. Құрал-жабдық бір орында немесе жерде болуы керек және басқа құрал-жабдыққа сигнал берудің қажеті болмауы керек. Шабуылдар желідегі байланыс арқылы жүзеге асырылады, құрал-жабдықтың өзіне емес. Қауіпсіз кездейсоқ сандар генераторын жобалау, криптографиялық жүйенің басқа элементтерін жобалау сияқты, жоғары деңгейдегі күтімді талап етеді.
Netscape-тің болжамды тұқымы
Netscape-тің Secure Sockets Layer (SSL) шифрлау протоколының алғашқы нұсқалары PRNG-ден алынған псевдокезеңдік сандарды үш өзгермелі мәнмен қолданды: күннің уақыты, процесс ID және басты процесс ID. Бұл шамалар көбінесе болжауға оңай, сондықтан энтропиясы төмен және толық кездейсоқ емес болды, нәтижесінде SSL-дің сол нұсқасы қауіпсіз емес деп танылды. Бұл мәселе туралы 1994 жылы CERN веб-командасының зерттеушісі Филипп Халлам Бейкер Netscape-ке хабарлаған, бірақ ол жарияланғанға дейін түзетілмеді. 1995 жылы Ian Goldberg және David Wagner жұмыс істеп тұрған кодтағы мәселені анықтады, бірақ Netscape кездейсоқ сандарды генерациялау ережелерін (қауіпсіздік үшін құпиялылық) ашудан бас тартқандықтан, олар объектілік кодты кері инженериялауға мәжбүр болды. Бұл RNG кейінгі нұсқаларда (2 және одан жоғары) жақсартылды, оның себебі – оның сенімділігін арттыру (яғни, шабуылшы үшін көбірек кездейсоқтық және жоғары энтропия).
Microsoft Windows 2000/XP кездейсоқ сандар генераторы
Microsoft өзінің Windows операциялық жүйесі үшін жарияланбаған алгоритмді қолданады, осы арқылы кездейсоқ мәндерді жасайды. Бұл кездейсоқ сандар CryptGenRandom құралы арқылы пайдаланушыларға қолжетімді болады. 2007 жылдың қараша айында Лео Доррендорф және тағы басқалар, Иерусалимнің еврей университеті мен Хайфа университетінен, «Windows операциялық жүйесінің кездейсоқ сан генераторының криптоанализі» деген мақала жариялады. Мақалада Microsoft-тың сол кездегі тәсіліндегі қаулылы жәйттер көрсетілген. Мақаланың қорытындылары Windows 2000 кодының дисасемблированиесіне негізделген, бірақ Microsoft-тың мәлімдемесіне сәйкес, Windows XP-ге де қатысты. Microsoft бұл мақалада сипатталған мәселелер Windows-тың келесі нұсқаларында шешілгенін, онда басқа RNG іске асырылуы қолданылады деп хабарлады. Генераторлардың бірі – Dual EC DRBG, Ұлттық қауіпсіздік агенттігінің (ҰҚА) қолдауына ие болды. Dual EC DRBG эллипстік қисық технологиясын қолданады және ұсынылатын тұрақтылар жиынтығын қамтиды. 2007 жылдың тамызында Microsoft-тың Дэн Шумоу және Нильс Фергюсон тұрақтыларды алгоритмге клептографиялық артқы есікті құру үшін қалай құрастыруға болатынын көрсетті. 2013 жылдың қыркүйек айында The New York Times газеті «ҰҚА NIST қабылдаған 2006 жылғы стандартқа Dual EC DRBG стандарты деп аталатын артқы есікті енгізді» деп жазды, осылайша ҰҚА американ халқына қарсы зиянды бағдарламалық шабуыл жасағанын ашты. 2013 жылдың желтоқсанында Reuters Эдвард Сноуден жариялаған құжаттарда ҰҚА RSA Security компаниясына 10 миллион доллар төлеп, олардың шифрлау бағдарламалық жасақтамасында Dual EC DRBG-ді әдепкіге қойғанын хабарлады, сондай-ақ алгоритмде ҰҚА үшін артқы есік болуы мүмкін деген алаңдаушылықтарды күшейтті. Осы алаңдаушылықтарға байланысты, 2014 жылы NIST Dual EC DRBG-ді кездейсоқ сан генераторлары бойынша ұсынылатын нұсқаулықтан алып тастады, «Dual EC DRBG-ді қазіргі қолданушылар мүмкіндігінше тез арада қалған үш бекітілген алгоритмнің біріне көшуін» ұсынды.
MIFARE Crypto-1 (Криптовалюта-1)
Crypto 1 – MIFARE чиптерінде қолдану үшін NXP компаниясы әзірлеген криптожүйе. Бұл жүйе авторлық құқықпен қорғалған және бастапқыда алгоритмі жарияланбаған. Чипті кері инженериялау барысында Вирджиния университетінің және Хаос компьютерлік клубының зерттеушілері Crypto 1-ге нашар инициализацияланған кездейсоқ сандар генераторын пайдаланып шабуыл жасауға болатынын анықтады.
Debian OpenSSL- тің атауы
2008 жылдың мамыр айында қауіпсіздік зерттеушісі Лучано Белло Debian Linux және Ubuntu сияқты Debian негізіндегі басқа дистрибутивтермен таратылған OpenSSL пакетінің 2006 жылғы нұсқасындағы кездейсоқ сан генераторына енгізілген өзгерістер, жасалған мәндердің энтропиясын күрт төмендетіп, түрлі қауіпсіздік кілттерін шабуылға осал қылатынын анықтады. Бұл қауіпсіздік әлсіздігіне Debian әзірлеушісінің кодтағы көрінбейтін артық кодқа байланысты компилятор ескертулеріне жауап ретінде OpenSSL кодына енгізген өзгерістері себеп болды. Бұл бүкіл әлем бойынша кілттерді кең ауқымда қайта жаңартуға әкелді, және мәселеге көп назар аударылса да, осы ескі кілттердің көп бөлігі әлі де қолданыста болуы мүмкін. Әсер еткен кілт түрлеріне SSH кілттері, OpenVPN кілттері, DNSSEC кілттері, X.509 сертификаттарында қолданылатын кілт материалы және SSL/TLS қосылымдарында қолданылатын сессия кілттері жатады. GnuPG немесе GNUTLS арқылы жасалған кілттерге әсер етілмейді, себебі бұл бағдарламалар кездейсоқ сандарды жасау үшін басқа әдістерді қолданды. Debian негізіндегі емес Linux дистрибутивтерінде жасалған кілттер де әсер етпейді. Әлсіз кілт жасау осалдығы хабарланғаннан кейін дереу жойылды, бірақ ескі кодпен жасалған кілттерді әлі де пайдаланатын қызметтер осал күйде қалады. Көптеген бағдарламалық пакеттер енді осы қалған әлсіз кілттерді пайдалануды болдырмау үшін әлсіз кілттердің қара тізіміне қарсы тексерулерді қамтиды, бірақ зерттеушілер әлсіз кілттің іске асырылуын анықтауды жалғастыруда.
PlayStation 3 ойын автоматы
2010 жылдың желтоқсан айында fail0verflow деп аталатын топ Sony компаниясы PlayStation 3 ойын консолі үшін бағдарламалық құралдарға қол қоюға пайдаланған эллипстік қисық цифрлық қолтаңба алгоритмінің (ECDSA) жеке кілтін қалпына келтіргенін хабарлады. Бұл шабуылға Sony әрбір қолтаңба үшін жаңа кездейсоқ сан жасауға келмегені себеп болды.
RSA ашық кілт факторинг
2012 жылы Ленстра, Хьюз, Аужиер, Бос, Клейнджунг және Вахтер интернеттен жиналған миллиондаған RSA ашық кілттерін салыстырған талдауды жариялады. Олар Евклид алгоритмін ғана қолдана отырып, кілттердің 0,2%-ын жіктеуге қол жеткізді. Олар бүтін сандарды жіктеуге негіделген криптожүйелерге тән әлсіздікті пайдаланды. Егер 1=n = pq – бір ашық кілт болса, ал 1=n′ = p′q′ – екінші кілт болса, және кездейсоқ жағдайда 1=p = p′ тең болса, онда 1=gcd(n, n′) = p есептеуі n және n′ екі кілтті де толығымен құлатып жібереді. Ұқсас эксперимент жасаған топтың мүшесі Надя Хенингер, нашар кілттер көбінесе кіріктірілген қосымшаларда кездесетінін айтты. Екі топтың ашқан ортақ жақсы емес кілт мәселесінің себебі – псевдокезекті сандар генераторының бастапқыда нашар орнатылуы және содан кейін бірінші және екінші жай сандар жасалған аралықта қайта орнатылуы.
Java nonce түйісуі
2013 жылдың тамызында Java класындағы SecureRandom қатесі Android жүйесіндегі Bitcoin іске асыруларында ECDSA үшін қолданылатын k nonce мәндерінде қайталануға себеп болуы мүмкін екені анықталды. Мұндай жағдайда жеке кілтті анықтауға болады, соның салдарынан әмианнан Bitcoin ұрлануы мүмкін.