Здається, вони є алгоритмами шифрування, для яких потрібні відкриті та приватні ключі. Чому я вибираю один проти іншого, щоб забезпечити шифрування в моєму клієнтському сервері?
Здається, вони є алгоритмами шифрування, для яких потрібні відкриті та приватні ключі. Чому я вибираю один проти іншого, щоб забезпечити шифрування в моєму клієнтському сервері?
Відповіді:
Шифрування та дешифрування 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. Це підкреслює необхідність "системної безпеки", а не просто хорошого алгоритму.
Перевірте відповідь Ав нижче .
Моя стара відповідь здається неправильною
Щодо 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-keygen
RHEL).