Пример за асиметричен алгоритъм: RSA, Има различни асиметрични алгоритми. Един от най-известните е RSA (поради разработчиците му). Този алгоритъм се използва широко в браузърите, за сигурни уебсайтове и за криптиране на имейли. Това е в домейн обществеността.

Пример за асиметричен алгоритъм: RSA за криптиране

За да шифроваме съобщение, правим: c = m ^ e mod n

За да го дешифрирате: m = c^d mod nm = обикновен текст

c = криптирано съобщение

(В) = публичен ключ

(г, п) = частен ключ

Не. = е произведение на две прости числа

^ = е операцията на експониране (a ^ b: мощността b)

моден = е операцията по модул (остатък от цяло деление)

Създайте двойка ключове

Много е просто, но внимавайте при избора y, d y Не., И знайте, че изчисляването на тези три числа е деликатно.

Ето как да го направите:

1. Съберете две прости числа p y че (приблизително равен размер). Изчисли n = защо.

2. Съберете число y тя няма общ фактор с (p-1) (q-1).

3. Изчислете d като ed mod (p-1) (q-1) = 1.

Двойката (В) Това е публичният ключ. (г, п) Това е частният ключ.

Пример:

Първо, нека създадем нашата ключова двойка:

Вземете произволно две прости числа: р = 29, q = 37

изчисли n = pq = 29 * 37 = 1073

y трябва да бъдат избрани на случаен принцип, така че y нямат общи фактори с (p-1) (q-1):

(р-1) (q-1) = (29-1) (37-1) = 1008

Вземете е = 71

Да избирам d като 71 * d мод 1008 = 1

Да намерим d = 1079

Сега имаме нашите ключове:

  • Публичният ключ е (e, n) = (71.1073) (= ключ за криптиране)
  • Частният ключ е (d, n) = (1079.1073) (= ключ за дешифриране)

Нека шифроваме съобщението «Здравейте". Нека вземем ASCII код на всяка буква и ги поставете една до друга:

m = 7269767679

Затова трябва да нарежем съобщението на блокове, които съдържат по-малко цифри от Не.. Не. Той има 4 цифри, така че изрежете нашето съобщение на трицифрени блокове:

726 976 767 900

(в комплект с нули)

Тогава ще шифроваме всеки блок:

726 ^ 71 мод 1073 = 436

976 ^ 71 мод 1073 = 822

767 ^ 71 мод 1073 = 825

900 ^ 71 мод 1073 = 552

Криптираното съобщение е 436 822 825 552. Може да се дешифрира с gras> d:

436 ^ 1079 мод 1073 = 726

822 ^ 1079 мод 1073 = 976

825 ^ 1079 мод 1073 = 767

552 ^ 1079 мод 1073 = 900

Тоест, последователността на числата. 726976767900.

Открихме съобщението си в обикновен текст 72 69 76 76 79: «ЗДРАВЕЙТЕ».

На практика

На практика не е толкова лесно да се програмира:

  • Трябва да намерите големи прости числа (това може да е твърде дълго, за да се изчисли)
  • Трябва да получите прости номера p y че случаен (което не е лесно).
  • Не използвате блокове толкова малки, колкото в горния пример - трябва да можете да изчислявате мощности и модули с много големи числа.

Всъщност асиметричните алгоритми никога не се използват за криптиране на всички данни, защото отнема твърде много време за изчисляване: данните се криптират със симетричен алгоритъм, чийто ключ е избран произволно и именно този ключ се дешифрира с асиметричен алгоритъм като RSA.

Софтуер за криптиране на файлове

Ако искате да шифровате вашите файлове, препоръчвам отличния софтуер PGP (Доста добра поверителност) или GPG (GNU Privacy Guard).

Има и други асиметрични алгоритми, включително ECC (Криптосистеми на елиптична крива, чрез елиптична крива). Тази система се основава на параметрична крива, която преминава определен брой цели числа координатни точки. Все още не е добре развита, но е обещаваща.

Има и Дифи-Хелман , е все по-предпочитан от RSA. (Diffie-Hellman бързо бе приет от общността с отворен код, когато RSA все още не беше публично достояние.)