**DSA** - elektron imzo yaratish uchun shaxsiy kalitdan kriptografik algoritm, lekin shifrlash uchun emas. Imzo yashirincha (maxfiy kalit bilan) yaratiladi, lekin uni ommaviy ravishda tekshirish mumkin (ommaviy kalit bilan). Bu shuni anglatadiki, faqat bitta sub'ekt xabar imzosini yaratishi mumkin, ammo har kim uning to'g'riligini tekshirishi mumkin. Algoritm chekli sohalarda logarifmlarni olishning hisoblash murakkabligiga asoslangan. Algoritm 1991-yil avgust oyida Milliy standartlar va texnologiyalar instituti ( AQSh ) tomonidan taklif qilingan va patentlangan  , NIST ushbu patentni royaltisiz foydalanish uchun taqdim etgan. DSA <b id="mwGg">DSS</b> ning bir qismidir Raqamli imzo standarti - birinchi marta 1998 yil 15 dekabrda nashr etilgan raqamli imzo standarti. Standart bir necha marta yangilangan  , eng oxirgi versiyasi FIPS-186-4 . (2013 yil iyul).

Algoritmning tavsifi
--------------------

 DSA operatsiyasining tasviri
DSA ikkita algoritmni (S, V) o'z ichiga oladi: xabar imzosini yaratish (S) va uni tekshirish uchun (V) iborat. Yana bir qancha qo`shimchalar mavjud. Ikkala algoritm ham birinchi navbatda kriptografik hash funktsiyasidan foydalangan holda xabarning xeshini hisoblab chiqadi. Algoritm S imzo yaratish uchun xesh va shaxsiy kalitdan foydalanadi, V algoritmi imzoni tekshirish uchun xabar xeshi, imzo va ochiq kalitdan foydalanadi. Ya`ni barchasi umumlashgan holda ishlaydi. Shuni ta'kidlash kerakki, aslida imzolangan xabar emas, balki uning xeshi (160 - 256 bit), shuning uchun to'qnashuvlar muqarrar va bitta imzo, umuman olganda, bir xil xeshli bir nechta xabarlar uchun amal qiladi.. Shuning uchun, etarlicha "yaxshi" hash funktsiyasini tanlash butun tizim uchun juda muhimdir. Standartning birinchi versiyasida SHA-1 xesh funktsiyasi ishlatilgan   , so'nggi versiyada siz SHA-2 oilasining istalgan algoritmidan ham foydalanishingiz mumkin  . 2015 yil avgust oyida yangi SHA-3 xesh funksiyasini tavsiflovchi FIPS-202  nashr etildi. Tizim ishlashi uchun muallifning haqiqiy ma'lumotlari (bu jismoniy shaxs yoki tashkilot bo'lishi mumkin) va ochiq kalitlar, shuningdek elektron raqamli imzo sxemasining barcha kerakli parametrlari .

Raqamli imzo sxemasi imkoniyatlari
----------------------------------

Elektron raqamli imzo tizimini yaratish uchun siz quyidagi bosqichlarni bajarishingiz kerak. Albatta ketma ketlikda:

1. H(x) kriptografik xesh funksiyasini tanlash.
2. Bitlardagi *N* o'lchami H(x) xesh funktsiyasining bitlardagi o'lchamiga to'g'ri keladigan *q* tub sonini tanlash.
3. *(p-1)* *q* ga bo'linadigan *p* tub sonni tanlash. *p ning* bit uzunligi *L* bilan belgilanadi.
4. *g* raqamini tanlash ( {\displaystyle g\neq 1} ) shundayki, uning ko'paytma tartibi moduli *p* *q* ga teng. Uni hisoblash uchun siz formuladan foydalanishingiz mumkin {\displaystyle g=h^{(p-1)/q}\mod p}, bu erda *h* - ixtiyoriy son, {\displaystyle h\in (1;p-1)} shu kabi {\displaystyle g\neq 1}. Aksariyat hollarda *h* = 2 qiymati bu talabni qondiradi.

Yuqorida aytib o'tilganidek, raqamli imzo sxemasining birinchi parametri kriptografik xesh funktsiyasidan foydalaniladi, bu xabar matnini imzo hisoblangan raqamga aylantirish uchun zarurdir. DSS standartining birinchi versiyasi SHA-1 funksiyasini  tavsiya qildi va shunga mos ravishda imzolangan raqamning bit uzunligi 160 bit  . Standart *L* va *N* raqamlari uchun quyidagi mumkin bo'lgan qiymat juftlarini belgilaydi:

1. L = 1024, N = 160
2. L = 2048, N = 224
3. L = 2048, N = 256
4. L = 3072, N = 256

Ushbu standart SHA-2 xesh funktsiyalari oilasini tavsiya qiladi. AQSh hukumati tashkilotlari dastlabki uchta variantdan birini qo'llashi kerak; CAlar abonentlar ishlatadigan juftlikka teng yoki undan yuqori bo'lgan juftlikdan foydalanishlari kerak . Tizim dizayneri istalgan yaroqli xesh funksiyasini tanlashi mumkin. DSA-ga asoslangan kriptotizimning kuchi ishlatiladigan xesh funktsiyasining kuchidan va juftlikning (L, N) kuchidan oshmaydi, ularning kuchi alohida raqamlarning har birining kuchidan katta emas. Hozirgi vaqtda 2010 yilgacha ( 2030 yilgacha ) chidamli bo'lishi kerak bo'lgan tizimlar uchun tavsiya etilgan uzunlik 2048 (3072) bitni tashkil qiladi.  

### Umumiy va shaxsiy kalitlar

1. Yashirin kalit - bu raqam {\displaystyle x\in (0,q)}
2. Ochiq kalit formuladan foydalanib hisoblanadi {\displaystyle y=g^{x}\mod p}

Umumiy parametrlar raqamlardir *(p, q, g, y)*. Faqat bitta shaxsiy parametr mavjud - *x* raqami. Bunday holda, raqamlar *(p, q, g)* foydalanuvchilar guruhi uchun umumiy bo'lishi mumkin va *x* va *y* raqamlari mos ravishda ma'lum bir foydalanuvchining shaxsiy va ochiq kalitlari hisoblanadi. Xabarga imzo qo'yishda *x* va *k* maxfiy raqamlari qo'llaniladi. *(p, q, g)* bir nechta foydalanuvchilar uchun ishlatilishi mumkinligi sababli, ba'zi bir mezonlarga ko'ra bir xil *(p, q, g)* guruhlarga bo'linadi.

Xabar imzosi
------------

*Xabar quyidagi algoritm*  yordamida imzolanadi *:*

1. Tasodifiy raqamni tanlash {\displaystyle k\in (0,q)}
2. Hisoblash {\displaystyle r=(g^{k}\mod p)\mod q}
3. Agar boshqa k ni tanlash {\displaystyle r=0}
4. Hisoblash {\displaystyle s=k^{-1}(H(m)+x\cdot r)\mod q}
5. Agar boshqa k ni tanlash {\displaystyle s=0}
6. Imzo juftlikdir {\displaystyle (r,s)} umumiy uzunligi {\displaystyle 2N}

Hisoblash jihatidan murakkab operatsiyalar ko'rsatkich moduli (hisoblash {\displaystyle g^{k}{\bmod {p}}} ), ular uchun tezkor algoritmlar mavjud, xeshni hisoblash {\displaystyle H(x)}, bu erda murakkablik tanlangan xesh algoritmiga va kirish xabarining o'lchamiga va teskari elementni topishga bog'liq.

Imzoni tekshirish
-----------------

*Imzoni tekshirish algoritmga muvofiq amalga oshiriladi*  *:*

```
1 Funksiyani hisoblashda {\displaystyle w=s^{-1}\mod q} formulada
2 Funksiyani Hisoblashda {\displaystyle u\_{1}=H(m)\cdot w\mod q} formulada
3 Funksiyani  Hisoblashda {\displaystyle u\_{2}=r\cdot w\mod q} formulada
4 Funksiyani Hisoblash {\displaystyle v=(g^{u\_{1}}\cdot y^{u\_{2}}\mod p)\mod q} formuladan ko`pincha foydalaniladi.
5 Imzo to'g'ri bo'lsa {\displaystyle v=r}
```

Hisoblab chiqish jihatidan murakkab funksiyalarni tekshirganda, bu ikkita eksponentatsiya {\displaystyle g^{u\_{1}}y^{u\_{2}}}, xeshni hisoblash {\displaystyle H(x)} va teskari qismni topish {\displaystyle s^{-1}{\bmod {q}}}. Bu funksiyalar o`zi muhim.

Sxemaning to'g'riligi
---------------------

Ushbu elektron raqamli imzo sxemasi shu darajada to'g'ri bo'ladiki, imzoning haqiqiyligini tekshirishni istagan har bir kishi haqiqiylik holatida har doim ijobiy natija oladi. Bunda chiqishi mumkin emas. Chunki bular shaxsiydir. Keling, buni ko'rsatamiz:Birinchidan, agar {\displaystyle g=h^{(p-1)/q}\mod p}, {\displaystyle g^{q}=h^{p-1}=1\mod p}. *g* >1 va *q* tub son ekan, u holda *g* *q* moduli *p* ning ko'paytma tartibida. Xabar imzosi uchun u hisoblanadi

{\displaystyle s=k^{-1}(H(m)+x\cdot r)\mod {q}.}
Shuning uchun

{\displaystyle k=H(m)\cdot s^{-1}+x\cdot r\cdot s^{-1}=H(m)\cdot w+x\cdot r\cdot w\mod {q}.}
*g* *q* tartibli bo'lgani uchun biz olamiz

{\displaystyle g^{k}=g^{H(m)\cdot w\mod q}g^{x\cdot r\cdot w\mod q}=g^{H(m)\cdot w\mod q}y^{r\cdot w\mod q}=g^{u1}y^{u2}\mod {p}.}
Nihoyat, DSA sxemasining to'g'riligi shundan kelib chiqadi

{\displaystyle r=(g^{k}\mod p)\mod q=(g^{u1}y^{u2}\mod p)\mod q=v.}

Ishga misol
-----------

Xesh qiymati bizning xabarimizning funktsiyasi bo'lsin {\displaystyle H=9} .

### Parametrlarni yaratish

1. {\displaystyle H=9\_{10}=1001\_{2}}
2. hash uzunligi {\displaystyle 4}, bu siz tanlashingiz mumkin degan ma'noni anglatadi {\displaystyle q=11\_{10}=1011\_{2}}
3. tanlaylik {\displaystyle p=23}, chunki {\displaystyle 23-1=22=2\*q}
4. tanlaylik {\displaystyle g=2^{2}=4}

### Kalitlarni yaratish

1. maxfiy kalit sifatida biz tanlaymiz {\displaystyle x=7}
2. keyin umumiy kalit {\displaystyle y=g^{x}{\bmod {p}}=4^{7}{\bmod {2}}3=16384{\bmod {2}}3=(712\cdot 23+8){\bmod {2}}3=8}

### Xabar imzosi

1. tanlaylik {\displaystyle k=3}
2. Keyin {\displaystyle r=(g^{k}{\bmod {p}}){\bmod {q}}=(4^{3}{\bmod {2}}3){\bmod {1}}1=7}
3. {\displaystyle r\neq 0}, davom etishga ruxsat
4. {\displaystyle s=k^{-1}(H(m)+x\cdot r){\bmod {q}}=4(9+7\cdot 7){\bmod {1}}1=1}, bu hisobga olinadi {\displaystyle 3^{-1}{\bmod {1}}1=4}
5. {\displaystyle s\neq 0}, davom etishga ruxsat
6. imzo juft raqamlardan iborat {\displaystyle (r,s)=(7,1)}

1. {\displaystyle w=s^{-1}{\bmod {q}}=1^{-1}{\bmod {1}}1=1}
2. {\displaystyle u\_{1}=H(m)\cdot w{\bmod {q}}=9\cdot 1{\bmod {1}}1=9}
3. {\displaystyle u\_{2}=r\cdot w{\bmod {q}}=7\cdot 1{\bmod {1}}1=7}
4. {\displaystyle v=(g^{u\_{1}}\cdot y^{u\_{2}}{\bmod {p}}){\bmod {q}}=(4^{9}\cdot 8^{7}{\bmod {2}}3){\bmod {1}}1=7}
5. tushundim {\displaystyle v=r}, keyin imzo to'g'ri.

Analoglar
---------

DSA algoritmi diskret logarifmlarni hisoblash qiyinligiga asoslanadi va klassik El-Gamal sxemasining  modifikatsiyasi bo'lib, bu erda xabar xeshlash qo'shiladi va barcha logarifmlar quyidagi tarzda hisoblanadi. {\displaystyle mod~q}, bu sizga analoglarga nisbatan imzoni qisqartirish imkonini beradi. U GOST R 34.10-2012 standarti bilan almashtirildi [13] , bu elliptik egri nuqtalar guruhidan foydalanadi. Shunga o'xshash modifikatsiya, ya'ni. Ko'paytma guruhi modulidan tub sondan elliptik egri chiziqning nuqtalar guruhiga o'tish DSA - ECDSA  uchun ham mavjud. U, masalan, bitcoin kriptovalyutasida tranzaktsiyalarni tasdiqlash uchun ishlatiladi. Ushbu tarjima xavfsizlikni buzmasdan kalitlarning hajmini qisqartirish imkonini beradi - bitkoin tizimida shaxsiy kalitning o'lchami 256 bit, mos keladigan ochiq kalit esa 512 bit. Yana bir umumiy ochiq kalit algoritmi, RSA (mualliflar nomi bilan atalgan: Rivest, Shamir, Adleman ) katta raqamlarni faktoring qilish qiyinligiga asoslangan.

Kriptografik kuch
-----------------

Algoritmga qilingan har qanday hujumni quyidagicha ta'riflash mumkin: buzg`unchi barcha ochiq imzo parametrlarini va ma'lum bir juftlik to'plamini oladi va ushbu to'plamdan foydalanib, yangi imzo yaratishga urinadi. Ushbu hujumlarni ikki guruhga bo'lish mumkin - birinchidan, tajovuzkor maxfiy kalitni tiklashga harakat qilishi mumkin {\displaystyle x}, va keyin u darhol istalgan xabarni imzolash imkoniyatini qo'lga kiritadi, ikkinchidan, u maxfiy kalitni to'g'ridan-to'g'ri tiklamasdan yangi xabar uchun haqiqiy imzo yaratishga harakat qilishi mumkin. Bu havfsizlik parametrlarini buzadi. Imzonoi buzib kirish imkoni paydo bo`ladi.

### Tasodifiy parametrni bashorat qilish

{\displaystyle k} tizim xavfsizligi uchun juda muhim. Agar bir nechta ketma-ket parametr bitlari ma'lum bo'lsa {\displaystyle k} bir qator imzolar uchun, keyin maxfiy kalit yuqori koeffitsiyent bilan tiklanishi mumkin.  Kalit yo`qolgan taqdirda tiklash imkonini beradi. Ikkita xabar uchun parametrni takrorlash tizimni oddiy buzishga olib keladi. Android uchun bitcoin tizimining ba'zi ilovalarida tajovuzkor hamyonga kirish huquqiga ega bo'lishi mumkin.   Ikkala misolda ham ECDSA tizimi  ishlatilgan. Agar ikkita xabar uchun {\displaystyle m\_{1},m\_{2}} Xuddi shu parametr ishlatilgan {\displaystyle k}, keyin ularning imzolari {\displaystyle (r,s)} xuddi shunday bo'ladi {\displaystyle r}, lekin boshqacha {\displaystyle s}, keling, ularni chaqiramiz {\displaystyle s\_{1},s\_{2}}. Algaritmlarda to`g`ri foydalana bilish kerak. Uning s1 , s2 funksidan foydalanish

uchun ifodasidan {\displaystyle s} umumiy ifodalanishi mumkin {\displaystyle k} :

{\displaystyle k=(H(m)+xr)s^{-1}\mod q} .

Va umumiy miqdorni tenglashtiring {\displaystyle k} turli xabarlar uchun:

{\displaystyle (H(m\_{1})+xr)s\_{1}^{-1}\mod q=(H(m\_{2})+xr)s\_{2}^{-1}\mod q}

Bu erdan maxfiy kalitni ifodalash oson {\displaystyle x} :

{\displaystyle x={\frac {H(m\_{1})s\_{1}^{-1}-H(m\_{2})s\_{2}^{-1}}{r(s\_{2}^{-1}-s\_{1}^{-1})}}}

### Ekzistensial soxtalashtirish

Ba'zi raqamli imzo algoritmlari mavjud soxtalik bilan hujum qilishi mumkin. Gap shundaki, imzo uchun faqat umumiy parametrlardan foydalangan holda to'g'ri xabarni yaratish mumkin (ammo bu odatda mantiqiy emas). DSA sxemasi imzosi uchun {\displaystyle r=g^{e}y\mod p\mod q}, {\displaystyle s=r} har qanday vaqtda {\displaystyle e} xash bilan xabar uchun to'g'ri {\displaystyle H(m)=es}. Mos kelishi mumkin. Agar xesh funktsiyasi to'g'ri tanlangan bo'lsa, DSA algoritmi ushbu hujumdan himoyalangan, chunki kriptografik xesh funktsiyasi teskari {\displaystyle k} topish {\displaystyle m} shu kabi {\displaystyle H(m)=k} ) hisoblash jihatidan murakkab masala. 

### Kalitni tiklash

Imzoning amal qilish sharti boshqa shaklda qayta yozilishi mumkin{\displaystyle g^{ks}\mod p\mod q=g^{H(m)+xr}\mod p\mod q} bu tenglama ekvivalent

{\displaystyle H(m)\mod q=ks-xr\mod q} Bu shuni anglatadiki, kalitni tiklash uchun buzuvchi shakldagi tenglamalar tizimini hal qilishi kerak deb taxmin qilishimiz mumkin. {\displaystyle H(m\_{i})\mod q=k\_{i}s\_{i}-xr\_{i}\mod q} lekin bu tizimda noma'lum {\displaystyle x} va tamom {\displaystyle k\_{i}}, ya'ni noma'lumlar soni tenglamalardan bitta ko'p va har qanday uchun {\displaystyle x} bo'ladi {\displaystyle k\_{i}}, tizimni qondirish. q katta tub son bo'lgani uchun tiklash uchun {\displaystyle x\mod q} eksponensial sonli juftlik *(xabar, imzo) talab qilinadi.*  Juftliklar bo`lmagan taqdirda tizimga kirish uchun qayta tiklash parametrlari mos kelmaydi. Shuning uchun bularga katta e`tibor qaratish kerak.

### Imzoni qalbakilashtirish

Siz maxfiy kalitni bilmasdan imzo soxtalashtirishga harakat qilishingiz mumkin.{\displaystyle r^{s}\mod p\mod q=g^{H(m)}y^{r}\mod p\mod q} nisbatan {\displaystyle r} Va {\displaystyle s}. Har bir o`zgarmas uchun {\displaystyle r} tenglama diskret logarifmni hisoblashga teng.  Huddi s kabi hisoblash.

Algoritmni amalga oshirishni tekshirish tizimi
----------------------------------------------

Litsenziya shartlari algoritmni dasturiy va apparat vositalarida amalga oshirish imkonini beradi. NIST DSAVS ni yaratdi. DSAVS har bir tizim komponentini boshqalardan mustaqil ravishda tekshiradigan bir nechta muvofiqlik test modullaridan iborat. Sinov qilingan amalga oshirish komponentlari:

1. Domen parametrlarini yaratish
2. Domen parametrlari tekshirilmoqda
3. Ommaviy-xususiy kalitlar juftligini yaratish
4. Imzo yaratish
5. Imzoni tekshirish

Amalga oshirishni tekshirish uchun ishlab chiquvchi CMT laboratoriyasida uning bajarilishini sinab ko'rish uchun ariza topshirishi kerak .

Bosh sonlarni hosil qilish
--------------------------

DSA algoritmi ikkita tub sonni talab qiladi (𝑝 Va 𝑞), shuning uchun tub yoki psevdo tub sonlar generatori kerak.tub sonlarni hosil qilish uchun Shou-Teylor algoritmidan foydalaniladi . Psevdoprimalar xesh funksiyasi yordamida yaratiladi va birlamchilikni tekshirish uchun Miller-Rabin probabilistik testidan foydalaniladi.  Kerakli takrorlashlar soni ishlatilgan raqamlarning uzunligiga va tekshirish algoritmiga bog'liq . Ya`ni barcha algoritmlar bir biriga bog`liq:

| variantlari | Faqat M-R testi | MR testi + Luka testi |
| --- | --- | --- |
| p: 1024 bit
q: 160 bit
xatolik ehtimoli {\displaystyle 2^{-80}} | 40 | p: 3
s: 19 |
| p: 2048 bit
q: 224 bit
xatolik ehtimoli {\displaystyle 2^{-112}} | 56 | p: 3
s: 24 |
| p: 2048 bit
q: 256 bit
xatolik ehtimoli {\displaystyle 2^{-112}} | 56 | p: 3
s: 27 |
| p: 3072 bit
q: 256 bit
xatolik ehtimoli {\displaystyle 2^{-128}} | 64 | p: 2
s: 27 |

Tasodifiy raqamlarni yaratish
-----------------------------

Algoritm tasodifiy yoki psevdo-tasodifiy raqamlar generatorini ham talab qiladi. Ushbu generator shaxsiy foydalanuvchi kalitini yaratish uchun kerak bo'ladi *x* va s *.* Standart blokli shifrlar yoki xesh funksiyalari yordamida psevdor tasodifiy raqamlarni yaratishning turli usullarini taklif qiladi.   Har bir usul universal bo`lishi mumkin.

Eslatmalar
----------

1. 1 2 3  Patent US 5231668 A. sfn error: no target: CITEREFPatent\_US\_5231668\_A (help)
2. ↑  FIPS 186-2. sfn error: no target: CITEREFFIPS\_186-2 (help)
3. ↑  FIPS 186-3. sfn error: no target: CITEREFFIPS\_186-3 (help)
4. 1 2 3 4 5 6 7 8 9 10 11  FIPS 186-4. sfn error: no target: CITEREFFIPS\_186-4 (help)
5. 1 2  FIPS 180-4. sfn error: no target: CITEREFFIPS\_180-4 (help)
6. 1 2  FIPS 186-1. sfn error: no target: CITEREFFIPS\_186-1 (help)
7. ↑  FIPS 202. sfn error: no target: CITEREFFIPS\_202 (help)
8. ↑  Finding Collisions in the Full SHA-1. sfn error: no target: CITEREFFinding\_Collisions\_in\_the\_Full\_SHA-1 (help)
9. ↑  Freestart collision for full SHA-1. sfn error: no target: CITEREFFreestart\_collision\_for\_full\_SHA-1 (help)
10. ↑  NIST Special Publication 800-57. sfn error: no target: CITEREFNIST\_Special\_Publication\_800-57 (help)
11. ↑  Elgamal 1985. sfn error: no target: CITEREFElgamal1985 (help)
12. 1 2  The Elliptic Curve Digital Signature Algorithm (ECDSA). sfn error: no target: CITEREFThe\_Elliptic\_Curve\_Digital\_Signature\_Algorithm\_(ECDSA) (help)
13. ↑  The Insecurity of the Digital Signature Algorithm with Partially Known Nonces. sfn error: no target: CITEREFThe\_Insecurity\_of\_the\_Digital\_Signature\_Algorithm\_with\_Partially\_Known\_Nonces (help)
14. ↑  ECDSA - Application and Implementation Failures. sfn error: no target: CITEREFECDSA\_-\_Application\_and\_Implementation\_Failures (help)
15. ↑  Elliptic Curve Cryptography in Practice. sfn error: no target: CITEREFElliptic\_Curve\_Cryptography\_in\_Practice (help)
16. ↑  Security Arguments for Digital Signatures and Blind Signatures. sfn error: no target: CITEREFSecurity\_Arguments\_for\_Digital\_Signatures\_and\_Blind\_Signatures (help)
17. ↑  The Digital Signature Algorithm Validation System. sfn error: no target: CITEREFThe\_Digital\_Signature\_Algorithm\_Validation\_System (help)
18. ↑  Generating strong primes. sfn error: no target: CITEREFGenerating\_strong\_primes (help)
19. ↑  Random Number Generation. sfn error: no target: CITEREFRandom\_Number\_Generation (help)

Adabiyot
--------

### Standartlar va patentlar

* FIPS. PUB 186-1 (англ.).
* FIPS. PUB 186-2 (англ.).
* FIPS. PUB 186-3 (англ.).
* FIPS. PUB 186-4 (англ.).
* FIPS. PUB 180-4 (англ.). Архивировано 26 ноября 2016 года.
* FIPS. PUB 202 (англ.).
* FIPS. PUB 202 (англ.).
* David W. Kravitz. Digital signature algorithm 5231668 A (англ.).
* NIST Special Publication 800-57 Part 1Revision 4. Recommendation for Key Management (англ.).
* ГОСТ Р 34.10-2012. Информационные технологии. Криптографическая защита информации. Процессы формирования и проверки электронной цифровой подписи (рус.).
* The Digital Signature Algorithm Validation System (англ.).

### Maqolalar

* Marc Stevens, Pierre Karpman, Thomas Peyrin. Freestart collision for full SHA-1 (англ.).
* NIST Special Publication 800-90A Recommendation for Random Number Generation Using Deterministic Random Bit Generators (англ.).
* J. Shawe-Taylor. Generating strong primes (англ.).
* Xiaoyun Wang, Yiqun Lisa, Hongbo Yu. Finding Collisions in the Full SHA-1 (англ.).
* Phong Q. Nguyen, Igor E. Shparlinski. The Insecurity of the Digital Signature Algorithm with Partially Known Nonces (англ.).
* David Pointcheval, Jacques Stern. Security Arguments for Digital Signatures and Blind Signatures (англ.).
* Markus Schmid. ECDSA - Application and Implementation Failures (англ.).
* Don Johnson, Alfred Menezes, Scott Vanstone. The Elliptic Curve Digital Signature Algorithm (ECDSA)
* Joppe W. Bos, J. Alex Halderman, Nadia Heninger, Jonathan Moore, Michael Naehrig, Eric Wustrow. Elliptic Curve Cryptography in Practice (англ.).