Чим відрізняється DSA від RSA?


114

Здається, вони є алгоритмами шифрування, для яких потрібні відкриті та приватні ключі. Чому я вибираю один проти іншого, щоб забезпечити шифрування в моєму клієнтському сервері?


3
Як згадує хенрі , DSA не для шифрування, а лише підписання.
Samveen

Відповіді:


27

Посилаючись, https://web.archive.org/web/20140212143556/http://courses.cs.tamu.edu:80/pooch/665_spring2008/Australian-sec-2006/less19.html


Шифрування та дешифрування RSA RSA є комутаційними,
тому його можна використовувати безпосередньо як схему цифрового підпису,
задану схемою RSA {(e, R), (d, p, q)}
для підписання повідомлення M, обчислення:
S = M потужність d (mod R)
для перевірки підпису, обчисліть:
M = S потужність e (mod R) = M потужність ed (mod R) = M (mod R)

RSA можна використовувати як для шифрування, так і для цифрових підписів, просто змінивши порядок, в якому використовуються експоненти: таємний експонент (d) для створення підпису, публічний показник (е) для будь-кого, хто перевірить підпис. Все інше ідентично.

DSA (алгоритм цифрового підпису)
DSA - це варіант алгоритмів ElGamal і Schnorr, створює 320-бітовий підпис, але 512-1024 бітова безпека безпеки знову опирається на труднощі обчислення дискретних логарифмів, отримавши досить широке поширення,

покоління DSA Key Generation
спочатку поділилося світовою громадськістю вибираються ключові значення (p, q, g):
вибираємо велику просту p = 2 потужність L,
де L = 512 до 1024 біт, і кратну 64
вибираємо q, 160-бітний простий коефіцієнт p-1,
вибираємо g = h потужність (p-1) / q
для будь-якого h1,
то кожен користувач вибирає приватний ключ і обчислює свій відкритий ключ:
вибираємо x compute y = g power x (mod p)

Генерація ключів DSA пов'язана з, але дещо складнішою, ніж El Gamal. Переважно через використання вторинного 160-бітного модуля q, який використовується для прискорення обчислень та зменшення розміру отриманої сигнатури.

Створення та перевірка підписів DSA

для підписання повідомлення M
генерують випадковий ключ підпису k, k обчислюють
r = (g потужність k (mod p)) (mod q)
s = k-1.SHA (M) + xr (mod q)
відправити підпис (r, s) з повідомленням

для перевірки підпису, обчислити:
w = s-1 (mod q)
u1 = (SHA (M) .w) (mod q)
u2 = rw (mod q)
v = (g потужність u1.y потужність u2 (mod p)) (mod q),
якщо v = r, тоді підпис перевірено

Створення підпису знову схоже на ElGamal з використанням тимчасового ключа підписи k за повідомленням, але виконуючи calc спочатку mod p, а потім mod q для зменшення розміру результату. Зауважте, що використання хеш-функції SHA тут явне. Перевірка також полягає у порівнянні двох обчислень, знову ж таки трохи складніших за, але пов'язаних з El Gamal.
Зауважимо, що майже всі розрахунки є моди q, а значить, і набагато швидшими.
Але, на відміну від RSA, DSA можна використовувати лише для цифрових підписів

Безпека DSA
Наявність підсвідомого каналу існує у багатьох схемах (будь-яких, для яких потрібно вибрати випадкове число), а не лише DSA. Це підкреслює необхідність "системної безпеки", а не просто хорошого алгоритму.


посилання на вашу посилання порушено
Пол Вінц

82

Перевірте відповідь Ав нижче .

Моя стара відповідь здається неправильною


Так це означає, що якщо кількість даних для шифрування буде великою, вона працюватиме швидше за допомогою RSA?
WilliamKF

2
Ні, навпаки. DSA швидше підписується (що математично більш-менш дорівнює шифруванню), тому якщо вам доведеться багато шифрувати і часто розшифровувати, DSA швидше.
Анрі

Багато даних для шифрування на стороні клієнта, але вони розшифровуються лише один раз на сервері, тож DSA все одно виграє?
WilliamKF

30
DSA не шифрується. Повторіть, DSA не шифрує. Ось вікторина: Що означає "S" у DSA?
Президент Джеймс К. Полк

4
@GregS RSA, здатне шифрувати проти DSA, не може шифрувати - це здебільшого питання термінології. Ми називаємо кілька різних алгоритмів RSA, деякі з яких знаку (наприклад, RSA-PSS), деякі з яких шифруються (наприклад, RSA-OAEP). Але ми дали кожному алгоритму в криптовалюті на основі групи різні назви, викликаючи один з алгоритмів шифрування ElGamal шифрування і викликаючи один з алгоритмів підпису DSA.
CodesInChaos

24

До речі, ви не можете шифрувати DSA, підписувати лише. Хоча вони математично еквівалентні (більш-менш), ви не можете використовувати DSA на практиці як схему шифрування, лише як схему цифрового підпису.


20

Щодо man ssh-keygen , довжина ключа DSA обмежена рівно 1024 бітами, щоб залишатися сумісною з FIPS 186-2 NIST. Тим не менш, довші клавіші DSA теоретично можливі; FIPS 186-3 їх явно дозволяє. Крім того, безпека більше не гарантується за допомогою клавіш RSA або DSA з довжиною 1024 біт.

На закінчення, 2048-бітний ключ RSA є найкращим вибором.

БІЛЬШЕ МЕРЕЖІВ, ЩО ВИКОНАТИ

Встановлення безпечного з’єднання SSH тягне за собою ще більше ніж вибір технології безпечної шифрування пари ключів. З огляду на відкриття НДА Едварда Сноудена, треба бути ще пильнішими, ніж те, що раніше вважалося достатнім.

Назвати лише один приклад, не менш важливо використовувати алгоритм безпечного обміну ключами . Ось хороший огляд поточних найкращих практик загартування SSH .


Деякі старіші версії ssh-keygenдозволяють використовувати і інші бітові клавіші (я сам використовую 2048-бітний ключ DSA, згенерований за допомогою ssh-keygenRHEL).
Samveen

6

І крім вищезазначених приємних відповідей.

  • DSA використовує дискретний логарифм.
  • RSA використовує цілісну факторизацію.

RSA розшифровується як Ron R ivest, Adi S hamir та Leonard A dleman.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.