Чим відрізняється 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.