Кіріспе

Цифрлық тексеру стандарты
Цифрлық қолтаңба алгоритмі (DSA) – бұл цифрлық қолтаңбалар үшін ашық кілт криптожүйесі және Федералдық ақпаратты өңдеу стандарты, модульдік дәрежелеудің математикалық түсінігі мен дискретті логарифм мәселесіне негізделген. DSA – Schnorr және ElGamal қолтаңба схемаларының түрі. Ұлттық стандарттар және технология институты (NIST) 1991 жылы DSA-ны өздерінің Цифрлық қолтаңба стандартында (DSS) пайдалану үшін ұсынды және 1994 жылы оны FIPS 186 ретінде қабылдады. Бастапқы сипаттамаға бес түзету енгізілді. Ең соңғы нұсқасы: 2023 жылғы ақпаннан бастап FIPS 186 5. FIPS 186–2 2000 жылы, FIPS 186–3 2009 жылы, FIPS 186–4 2013 жылы және FIPS 186–5 2023 жылы жарияланды. FIPS 186 5 стандарты DSA арқылы қол қоюға тыйым салады, бірақ стандарт күшке енгенге дейін жасалған қолтаңбаларды құжат ретінде тексеруге рұқсат береді. Ол EdDSA сияқты жаңа қолтаңба схемаларымен алмастырылуы керек. DSA 1991 жылдың 26 шілдесінде тіркелген және қазір мерзімі өткен патентке ие, және бұл патент бұрынғы NSA қызметкері Дэвид В. Кравицке тиесілі. Бұл патент «Америка Құрама Штаттарына, Сауда министрінің Вашингтон, округ Колумбиядағы өкілі ретінде» берілген, ал NIST бұл патентті бүкіл әлемде авторлық төлемсіз пайдалануға мүмкіндік берді. Клаус П. Шнорр өзінің (қазір мерзімі өткен) патенты DSA-ны қамтығанын мәлімдейді; бұл таласқа түсіп отыр. 1993 жылы Дейв Банисар FOIA сұранысы арқылы DSA алгоритмін NIST емес, NSA жасағанын растады. OpenSSH 2025 жылы DSA қолдауын тоқтатуды жариялады.

Операция

DSA алгоритмі төрт операцияны қамтиды: кілт жасау (кілт жұбын құратын), кілт тарату, қол қою және қол қоюдың дұрыстығын тексеру.

1. Кілтті жасау

Кілтті жасау екі кезеңнен тұрады. Бірінші кезеңде жүйенің әртүрлі қолданушылары арасында ортақ болатын алгоритм параметрлері таңдалады, ал екінші кезеңде бір қолданушы үшін кілт жұбы есептеледі.

Параметрлерді құру

Бірнеше биттері бар бекітілген криптографиялық хэш функциясын таңдаңыз. Алғашқы DSS-де әрқашан SHA-1 қолданылды, бірақ қазіргі DSS-де қолдануға SHA-2 хэш функциялары бекітілді. Егер модуль ұзындығынан үлкен болса, хэш шығысының тек сол жақ біттері ғана қолданылады. Кілттің ұзындығын таңдаңыз. Алғашқы DSS кілттің ұзындығын 512 мен 1024 аралығындағы 64-тің есесіне шектеді. NIST 800-57 2010 жылдан (немесе 2030 жылдан) кейін қауіпсіздік мерзімі ұзақ болатын кілттер үшін 2048 (немесе 3072) ұзындығын ұсынады. FIPS 186-4 стандартында модуль ұзындығын таңдау керек, және оның мәні (1024, 160), (2048, 224), (2048, 256) немесе (3072, 256) болуы тиіс. Бір мәнді екі рет пайдалану (тіпті құпия сақталған жағдайда да), болжамды мәнді қолдану немесе бірнеше қолтаңбада бірнеше биттің ашыққа шығуы жеке кілттің ашылуына жеткілікті. Бұл мәселе DSA және Эллипстік қисық цифрлық қолтаңба алгоритміне (ECDSA) қатысты. 2010 жылдың желтоқсанында fail0verflow тобы Sony PlayStation 3 ойын консолі үшін бағдарламалық жасақтамаға қол қою үшін пайдаланған ECDSA жеке кілтін қалпына келтіргенін хабарлады. Бұл шабуылға Sony компаниясының әрбір қолтаңба үшін жаңа кездейсоқ мәнін жасауға келмегені себеп болды. Бұл мәселені жеке кілт пен хабарламаның хэшінен детерминистік түрде шығару арқылы болдырмауға болады, бұл жеке кілтті білмейтін шабуылшылар үшін оның әрқайсысы әртүрлі және болжауға мүмкін емес етеді. Сонымен қатар, DSA және ECDSA-ның қасақана жасалған нұсқаларында мәні қолтаңбалар арқылы жасырын түрде ақпаратты тарату үшін таңдалуы мүмкін. Мысалы, офлайн жеке кілт тек қана зиянсыз қолтаңбаларды шығаратын, офлайн құрылғыдан ағып кетуі мүмкін.