logo
INFO2

Открытые ключи

Перед пониманием того, что есть инфраструктура открытых ключей, нужно чётко представлять себе что есть открытые ключи. В этом учебнике не будет ничего про криптографию, результаты криптографии принимаются "как есть". Хотя, часть криптоалгоритмов может страдать уязвимостями, быть быстро взламываемыми и т.д., но они воспринимаются как данное (т.е. без анализа устойчивости). Все случаи взлома, раскрытия, подделки и т.д. мы отнесём к одной категории - компрометации ключей. Это не совсем верно, т.к. компрометация алгоритма делает невозможным некоторые функции PKI, но в первом приближении об этой проблеме можно не думать.

Итак, что нам нужно из криптографии?

Во-первых, концепция криптофункции.

Криптофункция — функция, позволяющая из текста и ключа сделать шифр, такого типа, что даже имея несколько пар "текст-шифр" невозможно угадать ключ, и такой, что воссоздать текст из шифра можно только с помощью ключа. (Ключ, вообще, очень хорошее название, оно более ёмкое, чем "пароль" - ключ похож на обычный железный ключ - мы можем иметь много открытых и закрытых замков, но открыть данный конкретный замок мы можем только имея данный конкретный (подходящий к этому замку) ключ).

Криптография (использование криптофункций) бывает двух видов: симметричное и несимметричное (т.е. с открытыми и закрытыми ключами). В симметричной криптографии ключ для расшифровки такой же, как для шифровки. Этот тип криптографии нас не интересует.

Криптография ассиметричная же (являющаяся основой PKI) использует разные половинки ключа для шифровки и расшифровки. Половинки равноценны: если мы ключ разделили на две половинки A и B, то зашифровав с помощью A, мы можем расшифровать с помощью B. Зашифровав с помощью B мы можем расшифровать с помощью A (и только!). Мы не можем расшифровать шифр, созданный с помощью A, используя A. И наоборот, зашифрованное B не может быть расшифровано с помощью B. Более того (и это есть основа криптографии), ничем, кроме соответствующей половинки ключа, шифр не может быть расшифрован. Если B - шифровало, то ТОЛЬКО A может расшифровать. Если А шифровало, то ТОЛЬКО B может расшифровать.

Более того, процесс создания половинок A и B таков, что они могут быть созданы только вместе, одновременно. Нельзя сначала сделать A, а потом B. И наоборот - точно так же. (Соотвественно, мысль: если мы посеяли одну половинку ключа, то вторую не удастся восстановить).

Мы своим произволом (административным решением, не имеющим под собой технического обоснования) объявляем одну половинку ключа открытым ключом, а вторую, ей соответствующую, закрытым ключом. Комбинацию открытого и закрытого ключа мы назовём ключевой парой. С точки зрения математики не имеет разницы кто есть кто. С административной же важно не то "кто есть кто", а чтобы использование (хранение и т.д.) открытых/закрытых ключей было разным. На самом деле, именно это - идея, что открытый и закрытый ключ используются с разными целями, и есть истиная цель ассиметричной криптографии. Термины "закрытый" и "открытый" ключи немного неудачны. Им соответствуют более точные английские термины: private key (закрытый ключ) и public key(открытый ключ). Эти термины точнее, их дословный перевод: частный (личный) ключ и общественный ключ, соответственно.

Как понятно из английских названий, публичный (открытый) ключ мы предоставляем публике, а приватный (закрытый) храним у себя в чулане в секерете от всех остальных. Любой желающий может зашифровать некий текст (публично известным) открытым ключом и послать его нам. НИКТО, повторю, НИКТО (даже ФСБ, ФНС, ОБЭБ, ООН, ОБСЭ, МАГАТЕ, МАРДУК, ФБР и т.д.) не сможет расшифровать его (не применив силовые методы к отправителю/получателю, но это уже другой вопрос). НИКТО, у кого нет закрытого ключа НЕ МОЖЕТ расшифровать это сообщение. А владелец закрытого ключа (получатель) - может. Заметим, что пара открытый-закрытый ключ должны быть именно ПАРОЙ, какой попало закрытый ключ шифр от какого попало открытого ключа не сможет расшифровать. Таким образом, дав другу открытый ключ (его можно не прятать, так как обладание им никому ничем не поможет, и "дать другу" можно, например, по электронной почте или выложив на веб-сайте), вы дадите ему возможность отправить вам сообщение в зашифрованном виде, которое расшифровать можете только вы. Кстати, если друг пришлёт вам свой открытый ключ (из своей пары ключей, сохранив в уютной нычке секрете свой закрытый ключ), то вы так же сможете ему отправить сообщение в зашифрованном виде.

Оппа. Лёгкое движение руками мозгом - и у нас защищённый канал связи, который можно прослушивать сколько влезет, но из которого не получится ничего понять (кроме факта шифрованной переписки). Заметим, для установления защищённого канала связи мы даже не предпринимали каких-то серьёзных усилий (вроде передачи шифроблокнотиков резиденту, паролей и явок).

Это и есть суть ассиметричной криптографии.