Асимметричное шифрование

В отли­чие от сим­мет­рич­но­го шиф­ро­ва­ния, в кото­ром всё шиф­ру­ет­ся и рас­шиф­ро­вы­ва­ет­ся одним и тем же клю­чом, асим­мет­рич­ное устро­е­но слож­нее. В нём уже два клю­ча, и один из них мож­но пока­зы­вать всем.

👉 Если совсем про­сто: в асим­мет­рич­ном шиф­ро­ва­нии дан­ные шиф­ру­ют­ся одним клю­чом, а рас­шиф­ро­вы­ва­ют­ся дру­гим. Пер­вый ключ мож­но дер­жать у всех на виду, а вот вто­рой нуж­но пря­тать. 

👉 Такой под­ход сни­ма­ет неко­то­рые вопро­сы без­опас­но­сти в интер­не­те: ведь невоз­мож­но вооб­ще не пере­да­вать нико­му ника­кие клю­чи. Вот асим­мет­рич­ное шиф­ро­ва­ние помо­га­ет с этим: часть клю­чей мож­но без­опас­но пере­сы­лать, это не нару­шит сек­рет­но­сти. 

Теперь подроб­нее.

Принцип работы

Асим­мет­рич­ное шиф­ро­ва­ние осно­ва­но на парах чисел. Одно из этих чисел — откры­тый ключ, кото­рый досту­пен всем. С помо­щью это­го чис­ла кто угод­но может зашиф­ро­вать сооб­ще­ние. Но рас­шиф­ро­вать его с помо­щью это­го же чис­ла не полу­чит­ся.

Для рас­шиф­ров­ки берут вто­рое чис­ло — закры­тый ключ. Он дол­жен быть сек­рет­ным. 

Это не могут быть два слу­чай­ных клю­ча. Откры­тый и закры­тый ключ все­гда свя­за­ны меж­ду собой алго­рит­мом, кото­рый их выда­ёт. Смысл в том, что внут­ри это­го алго­рит­ма есть тре­тье, тоже сек­рет­ное, чис­ло, кото­рое свя­за­но с обо­и­ми клю­ча­ми. 

Самый про­стой спо­соб уста­но­вить такую связь — взять два боль­ших про­стых чис­ла и пере­мно­жить их. Мы полу­чим ещё боль­шее чис­ло, кото­рое и будет лежать в осно­ве наше­го алго­рит­ма. А внут­ри это­го алго­рит­ма будет такая мате­ма­ти­ка, кото­рая зави­сит от раз­ло­же­ния чисел на мно­жи­те­ли. Если мы не зна­ем ни одно из пер­во­на­чаль­ных про­стых чисел, то раз­ло­жить на мно­жи­те­ли такое огром­ное чис­ло будет очень слож­ной зада­чей. 

Пример: алгоритм RSA-2048

Все асим­мет­рич­ные алго­рит­мы делят­ся по виду мате­ма­ти­че­ской зада­чи, на кото­рой стро­ит­ся шифр. Зада­ча долж­на быть слож­ной не для чело­ве­ка, а с точ­ки зре­ния мате­ма­ти­ки — той, кото­рую слож­но решить даже с мощ­ным ком­пью­те­ром.

Раз­ло­же­ние боль­шо­го чис­ла на мно­жи­те­ли, кото­рое лежит в осно­ве алго­рит­ма RSA, — неслож­ная зада­ча, если таких мно­жи­те­лей все­го два. Напри­мер, если взять чис­ло 45, то оно лег­ко рас­кла­ды­ва­ет­ся на мно­жи­те­ли так:

45 делит­ся на 2? Нет.

45 делит­ся на 3? Да, полу­ча­ет­ся 15.

15 делит­ся на 2? Нет.

15 делит­ся на 3? Да, полу­ча­ет­ся 5.

5 делит­ся на 2, 3 или 4? Нет, оста­ёт­ся толь­ко само чис­ло 5.

Полу­ча­ет­ся 45 = 5 × 3 × 3.

Если мы возь­мём чис­ло 474 689, то таких про­ве­рок и дей­ствий нам нуж­но будет выпол­нить ров­но 479, пото­му что 474 689 = 479 × 991. Для чело­ве­ка это уже слож­нее, но ком­пью­тер это сде­ла­ет так же быст­ро, как и в слу­чае с чис­лом 45.

А вот для чис­ла из 617 зна­ков — имен­но столь­ко при­ме­ня­ет­ся в алго­рит­ме RSA-2048 — потре­бу­ет­ся сот­ни лет машин­ных вычис­ле­ний, что­бы раз­ло­жить его на два мно­жи­те­ля.

Плюсы и минусы асимметричного шифрования

Плюс таких алго­рит­мов в том, что для пере­да­чи зашиф­ро­ван­ных сооб­ще­ний мож­но исполь­зо­вать откры­тый канал свя­зи. Даже если зло­умыш­лен­ник пере­хва­тит сооб­ще­ние, он не смо­жет про­чи­тать его без сек­рет­но­го клю­ча. Но что­бы всё было имен­но так, нуж­но, что­бы ключ был доста­точ­но длин­ный — 1024 бит и выше.

Минус асим­мет­рич­но­го шиф­ро­ва­ния оче­ви­ден — оно рабо­та­ет толь­ко в одну сто­ро­ну. Что­бы такое обще­ние было дву­сто­рон­ним, каж­дый дол­жен предо­ста­вить дру­го­му свой откры­тый ключ.

Применение

Асим­мет­рич­ное шиф­ро­ва­ние при­ме­ня­ют в двух слу­ча­ях:

  1. Когда нуж­но уста­но­вить защи­щён­ный канал свя­зи в интер­не­те. Мы зна­ем, что изна­чаль­но наши дан­ные может пере­хва­тить кто угод­но, поэто­му нам нуж­но обме­ни­вать­ся толь­ко теми клю­ча­ми, кото­рые мож­но пока­зы­вать дру­гим. 
  2. Для созда­ния циф­ро­вых под­пи­сей и сер­ти­фи­ка­тов. Это поз­во­ля­ет про­ве­рять под­лин­ность циф­ро­вых доку­мен­тов, а так­же убе­дить­ся, что его отпра­вил имен­но вла­де­лец сер­ти­фи­ка­та.

Что дальше

Крип­то­гра­фия и шиф­ро­ва­ние — слиш­ком боль­шая тема, что­бы рас­ска­зать о ней в паре ста­тей. Ско­ро будет объ­яс­не­ние, как мес­сен­дже­ры уста­нав­ли­ва­ют защи­щён­ное соеди­не­ние для чатов и как рабо­та­ет циф­ро­вая под­пись. А потом пого­во­рим про взло­мы и крип­то­стой­кость.