Криптография с публичен ключ

Това е правилният метод за защита на обмяната на ключове. Нека разберем защо.

Криптиращ и декриптиращ ключ

Тази криптография се различава от нейната "сестра" – тази със секретен ключ, по начина, по който се използват ключовете.

За криптиране на съобщение се използва криптиращ ключ.

За декриптиране се използва различен декриптиращ ключ.

Следователно когато искате да комуникирате защитено, трябва да генерирате два ключа – криптиращ и декриптиращ. Те не могат да бъдат извлечени един от друг (освен с груба сила), затова трябва да ги пазите и двата в паметта (или написани на хартия за по-лесно разбиране).

нешифрован_текст ---> криптиращ_ключ ( нешифрован_текст ) ---> шифрован_текст ---> декриптиращ_ключ ( шифрован_текст ) --->

нешифрован_текст

Ключовете са взаимно еквивалентни – това работи дори в обратната посока (т.е. и декриптиращият ключ също може да се използва за криптиране, като тогава другият ще служи за декодиране):

нешифрован_текст ---> декриптиращ_ключ (нешифрован_текст) ---> шифрован_текст ---> криптиращ_ключ (шифрован_текст) ---> нешифрован_текст

Такива криптографски алгоритми се наричат асиметрични заради тяхната асиметрична природа.

Обмяна на ключове

Обикновено процесът на обмяна на ключовете с другата страна протича така:

  • генерирам ключовете
  • криптиращият ключ публично (т.е. без абсолютно никакъв страх от подслушване) се транспортира до моя приятел
  • декриптиращият ключ остава скрит при мен
  • когато приятелят ми изпрати съобщение, той го криптира с публичния криптиращ ключ
  • дори всички да знаят публичния криптиращ ключ, никой не може да декриптира съобщението, защото то може да бъде декриптирано само чрез моя частен декриптиращ ключ

Публичен и частен ключ

Mоже би по-горе забелязахте думите публичен и частен.

Понеже вие правите криптиращия ключ публичен, той се нарича публичен ключ (изпускаме думата "криптиращ"). Другият ключ се нарича частен ключ, защото вие стриктно го пазите само за себе си.

Проблеми на криптографията с публичен ключ

Единственият проблем е времето, което е нужно за генериране на двата ключа и за криптиране и декриптиране на съобщение.

Времето за криптиране на дадено съобщение расте експоненциално с неговата дължина. Казано просто, това означава, че ако текст с дадена дължина изисква 10 секунди за кодиране/декодиране, то обработката на четири пъти по-дълго съобщение ще отнеме 16 пъти повече време, т.е. 160 секунди.

В реалния живот заради скоростта на криптиране тези алгоритми са неизползваеми при съобщения, по-дълги от 20 байта. Както можете да си представите, това е много кратък текст (например предното изречение е дълго 115 байта). От друга страна, криптографията със секретен ключ (тази от предишната глава) е бърза и е приложима без значение от дължината на съобщението.