Кіріспе
Цифрлық тексеру стандарты
Цифрлық қолтаңба алгоритмі (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 қолдауын тоқтатуды жариялады.
The Digital Signature Algorithm (DSA) is a public key cryptosystem and Federal Information Processing Standard for digital signatures, based on the mathematical concept of modular exponentiation and the discrete logarithm problem. DSA is a variant of the Schnorr and ElGamal signature schemes. The National Institute of Standards and Technology (NIST) proposed DSA for use in their Digital Signature Standard (DSS) in 1991, and adopted it as FIPS 186 in 1994. Five revisions to the initial specification have been released. The newest specification is: FIPS 186 5 from February 2023. FIPS 186–2 in 2000, FIPS 186–3 in 2009, FIPS 186–4 in 2013, and FIPS 186–5 in 2023. Standard FIPS 186 5 forbids signing with DSA, while allowing verification of signatures generated prior to the implementation date of the standard as a document. It is to be replaced by newer signature schemes such as EdDSA. DSA is covered by , filed July 26, 1991 and now expired, and attributed to David W. Kravitz, a former NSA employee. This patent was given to "The United States of America as represented by the Secretary of Commerce, Washington, D. C.", and NIST has made this patent available worldwide royalty free. Claus P. Schnorr claims that his (also now expired) covered DSA; this claim is disputed. In 1993, Dave Banisar managed to get confirmation, via a FOIA request, that the DSA algorithm hasn't been designed by the NIST, but by the NSA. OpenSSH announced that DSA is scheduled to be removed in 2025.
Операция
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-ның қасақана жасалған нұсқаларында мәні қолтаңбалар арқылы жасырын түрде ақпаратты тарату үшін таңдалуы мүмкін. Мысалы, офлайн жеке кілт тек қана зиянсыз қолтаңбаларды шығаратын, офлайн құрылғыдан ағып кетуі мүмкін.
This issue affects both DSA and Elliptic Curve Digital Signature Algorithm (ECDSA) – in December 2010, the group fail0verflow announced the recovery of the ECDSA private key used by Sony to sign software for the PlayStation 3 game console. The attack was made possible because Sony failed to generate a new random for each signature. This issue can be prevented by deriving deterministically from the private key and the message hash, as described by This ensures that is different for each and unpredictable for attackers who do not know the private key
In addition, malicious implementations of DSA and ECDSA can be created where is chosen in order to subliminally leak information via signatures. For example, an offline private key could be leaked from a perfect offline device that only released innocent looking signatures.