Математическая свобода
Недостаточно защитить себя законами, нужно защитить себя математикой.
Шифрование слишком важно, чтобы оставить его только правительствам.
Брюс Шнайер
Есть хорошие и меткие слова: дай людям любое средство для общения, и они моментально начнут пользоваться им. И это бесконечная (р-)эволюция: речь, письмо, радио, телефон, изображение. Страшно подумать, каких-нибудь пятьдесят лет назад поделится своими сиюминутными мыслями, идеями, мнениями было не так уж и просто. Можно было набрать номер и рассказать другу, или даже встретится где-нибудь на улице, но друзья ведь и так знают о вас многое, слишком многое. Правильно, мысль должна дойти до посторонних людей, проникнуть в их сознание. Но что делать, если ваши взгляды их совсем не интересует. Остаётся лишь грубая сила.
Отбросим мысли и идеи, оставим только мнения. О чём угодно: о просмотренном фильме, о прочитанной книге, о политике или бомонде, о человеке, в конце концов. Мнение — это меньше чем мысль или идея, иметь своё мнение достаточно несложно, в противном случае — вам всегда поможет толпа. Но с другой стороны, мнение нужно уметь защитить. Представьте, что грязный хиппи перешёл вам дорогу, так и хочется выкрикнуть: «катись колбаской, хиппи»; или мерзкий качок выплюнул очередную порцию слюны под модный блатняк рядом с вами, злость прямо вырывается наружу, а руки так и тянутся к толстой шеи. А вот если кто-то не согласен с вами в споре и ваш собеседник, что горох об стену, разве не хочется его взять и хорошенько поколотить? Да, но…
Грубая сила, грубо говоря, требует силы: человеческой внутренней автореферентной. Оборачиваясь и говоря веское “но”, нужно быть уверенным: возможный удар будет отбит и сдача будет выдана, или, наоборот, в зависимости от контекста. И не всегда мы справедливы в своих суждениях: можно и просто так грязью облить, святое дело. В общем, я подвожу вас к тому, что в былые времена вескость мнений часто определялась физической силой индивида, а не логической формальностью, т.е. формальной логичностью. Мир крайностями богат, и нужно отметить, что раньше немощность и старость часто также служили неплохими доводами, вырождаясь в так называемую мудрость.
И грянула сеть, и появился Arpanet, и превратился он в Internet, который расцвёл форумами, блогами, журналами, гостевыми книгами, личными страницами, социальными паутинками и прочими и прочими. И была et cetera. Что же изменилось?
Теперь ничего не стоит доставить свою мысль в момент, обычно хватает пары телодвижений пальцами. А мнения — ещё легче. Но экономия не только во времени, но и в силе. Вам кто-то не нравиться?.. да выливайте на него тонны виртуальной грязи, засыпайте его помоями из байтов и килобайтов, вам всё равно ничего не будет. Организуйте митинги и акции, доставляйте идеи, конвертируйте суждения, вы всесильны, мой король, и даже Голиаф с Геркулесом склоняют перед Вами колени. Но где же пята?
А её нет, формально нет, и не может быть. Вас и меня защищает математика. Бокс превратился в проблему факторизации, карате в дискретный логарифм, а бои без правил так вообще стали эллиптическими кривыми. Часто наши личные данные оберегают те же системы, что и гарантируют национальную безопасность, разница если и есть, то только количественная.
А сила вот где. Есть функция *y=**f(*x), которая для каждому значению x сопоставляет конкретный y, считайте, что x — это ваш секретный ключ (пароль), а y — ваш публичный ключ, который другие люди без какого-либо ограничения могут использовать для секретной отправки данных вам. Пример, наверное, слишком рафинированный и не совсем соответствует сути рассказа, но важно понимать, что в большинстве случаев ваша секретность прозрачна для вас, она обеспечивается тем ПО, которое вы повседневно используете.
Продолжим. Наша функция *f(*x) — она универсальна, она даёт разные публичные ключи для разных секретных ключей. Alice и Bob спокойно обмениваются данными, Alice кричит на Bobа, Bob угрожает Alice. И если Bobу захочется узнать пароль Alice и, используя его, добраться до её почты и других личных данных, то всё что ему потребуется: a) найти обратную функцию от *f(*x), т.е. *f-1(*y); б) подставить в обратную функцию публичный ключ Alice и узнать её секретный пароль. Обратную функцию построить несложно, значит, нужно всего лишь немного магии и… бац!
Вот и вся магия. Обратная функция не должна позволять выполнить задуманное за разумное время. Хорошо подобранная функция обязана быстро генерировать публичные ключи, но должна совершенно отвратительно вести себя наоборот. Вот три главные боевые дисциплины современности:
- проблема факторизации больших чисел;
- проблема дискретного логарифма;
- проблема эллиптического дискретного логарифма.
Эти проблемы (задачи, обратные функции) и оберегают нас. Легко перемножить пару простых числе, но сложно разложить на множители, легко возвести в степень в конечном поле, но непросто найти показатель (логарифм) и т.д. Не будем вдаваться в подробности, изложение этого не требует, просто стоит помнить, что 2) появилось позже 1), а 3) позже 2). Соответственно, большая скорость, большая надёжность.
Вот и получается, что свобода в Internet имеет идеальную математическую природу. Помним это.
Лирическое отступление. Самое популярное средство общения — ICQ. Что же мы имеем? По умолчанию вся наша информация передаётся через глобальный сервер в незашифрованном виде, значит, может беспрепятственно быть там сохранена. Ваш пароль от ICQ шифруется самым простым xor`ом по массиву байт: 0xF3, 0x26, 0x81, 0xC4, 0x39, 0x86, 0xDB, 0x92, 0x71, 0xA3, 0xB9, 0xE6, 0x53, 0x7A, 0x95, 0x7C. и превращается в т.н. roasted вид. Вот так.