В 1868 году математик Чарльз Доджсон (более известный как Льюис Кэрролл) заявил, что схема шифрования под названием «шифр Виженера» является «невзламываемой». У него не было доказательств, однако имелись убедительные подтверждения этой веры: математики безуспешно пытались его взломать более трёх сотен лет.

Была лишь одна небольшая проблема: на самом деле, пятью годами ранее её взломал немецкий пехотный офицер Фридрих Касиски, описав решение в книге, привлёкшей на тот момент мало внимания.

Криптографы играли в эти «кошки-мышки», создавая и взламывая шифры, ещё с тех пор, как люди впервые начали передавать секретную информацию. «Тысячи лет люди пытались найти ответ на вопрос: сможем ли мы разорвать этот круг?», — рассказывает криптограф Рафаэль Пасс из Cornell Tech и Корнеллского университета.

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

Сегодня подобные функции используются в Интернет-протоколах для выполнения таких задач, как передача номеров кредитных карт и цифровых подписей. «Основная часть используемой в реальном мире криптографии может быть основана на односторонних функциях», — объясняет криптограф Юваль Исхаи [Uval Ishai] из Техниона (Хайфа, Израиль).

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

В условиях отсутствия доказательств криптографам остаётся лишь надеяться на то, что пережившие все атаки функции на самом деле являются надёжными. У исследователей нет обобщённой методики изучения защищённости этих функций, поскольку, по словам Исхаи, каждая функция «взята из своей предметной области и разработана своей командой специалистов».

Криптографы уже давно задавались вопросом, существует ли более обобщённая методика изучения. «Существует ли некая главная задача, которая позволит нам понять, возможна ли криптография в принципе?», — задаётся вопросом Пасс.

Недавно они с аспирантом Корнеллского университета Яньи Лю [Yanyi Liu] доказали, что она существует. Эти учёные доказали, что существование истинных односторонних функций зависит от самой старой и фундаментальной задачи в другой области computer science под названием «теория сложности», или «вычислительная сложность». Эта задача, называемая колмогоровской сложностью, касается определения того, насколько сложно отличить случайные строки чисел от строк, содержащих некую информацию.


Криптограф Cornell Tech и Корнеллского университета Рафаэль Пасс помог найти вопрос, ответ на который позволит выяснить, действительно ли существуют односторонние функции, а значит, и вся современная криптография.

Лю и Пасс доказали, что если конкретная версия колмогоровской сложности является сложновычисляемой, то истинные односторонние функции существуют и есть чёткий способ построения такой функции. Если же эту версию колмогоровской сложности вычислить легко, то односторонних функций не может существовать. «Оказалось, что эта задача, возникшая ещё до того, как люди придумали односторонние функции, полностью их характеризует», — рассказывает Пасс.

Из этого вывода следует, что вместо того, чтобы подыскивать варианты односторонних функций, криптографы могут просто сосредоточить свои усилия на понимании колмогоровской сложности. «Всё зависит от этой задачи», — говорит Исхаи. Доказательство стало «качественно новой работой в фундаментальной криптографии».

Статья стимулирует к более тесному сотрудничеству криптографов и специалистов по теории сложности, вызвав всплеск активности по объединению их методик. «Несколько исследовательских групп уже работают над более глубоким изучением проблемы», — сообщил специалист по computer science Райан Уильямс из Массачусетского технологического института.

Вычисление сложности


Обычно сложность задачи является препятствием. Однако в криптографии, где её можно использовать против своих противников, это благословение. В 1976 году Уитфилд Диффи и Мартин Хеллман написали новаторскую статью в которой написали, что высокая сложность односторонних функций — это именно то, что нужно криптографам в условиях зарождающейся компьютерной эпохи. «Мы стоим на пороге революции в криптографии», — заявили они.


Мартин Хеллман (в центре) и Уитфилд Диффи (справа), написавшие историческую статью, связавшую односторонние функции с криптографией. Фото 1977 года, слева Ральф Меркл.

За последующие десятилетия исследователи выяснили, как создавать из односторонних функций широкий спектр криптографических инструментов, в том числе шифрование с приватным ключом, цифровые подписи, генераторы псевдослучайных чисел и доказательства с нулевым разглашением (в которых один человек может убедить другого, что утверждение истинно, не раскрывая доказательства). По словам Пасса, статья Диффи и Хеллмана «походила на пророчество». Из единственного кирпичика односторонних функций криптографы смогли создать «свои сверхсложные и красивые творения».

Чтобы понять, как работают односторонние функции, представьте, что кто-то попросил вас перемножить два простых числа, допустим, 6547 и 7079. Вычисление результата (46346213) может оказаться немного трудоёмким, но вполне посильным. Однако если бы кто-то показал вам число 46346213 и спросил его простые множители, то вы могли бы и не найти их. На самом деле, для чисел с достаточно большими простыми множителями у нас нет эффективного (известного нам) способа нахождения этих множителей. Поэтому умножение стало многообещающим кандидатом на звание односторонней функции: если начинать с достаточно больших простых чисел, процесс легко выполнить, но сложно обратить. Но мы не знаем наверняка, так ли это. В любой момент кто-нибудь может найти быстрый способ разложения чисел на множители.

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

В 1985 году специалист по computer science Леонид Левин из Бостонского университета ответил на этот вопрос в формальном виде, продемонстрировав «универсальную» одностороннюю функцию, которая гарантированно была бы односторонней функцией, если они вообще существуют. Однако, по словам специалиста по computer science Эрика Эллендера из Ратгерского университета, эта конструкция была «очень искусственной». «Изучать её можно только для того, чтобы получить такой результат».

На самом деле криптографы стремились найти универсальную одностороннюю функцию, возникшую из некой естественной задачи; она могла бы дать истинное понимание того, существуют ли односторонние функции. Исследователи давно думали о конкретной задаче, появившейся в 1960-х: колмогоровской сложности, являющейся мерой случайности. Однако её связь с односторонними функциями была слабой и ускользающей.

Пасса восхитила эта связь, когда в 2004 году он был аспирантом. На протяжении долгих лет он экспериментировал с этой задачей, но без особого успеха. Однако он чувствовал, что в ней что-то скрывается, и всплеск внимания к колмогоровской сложности за последние пять лет лишь подстегнул его интерес.

Пасс попытался убедить многих аспирантов исследовать этот вопрос вместе с ним, но ни один из них не захотел заниматься тем, что может оказаться бесплодным проектом. Потом аспирантом Корнеллского университета стал Яньи Лю. «Яньи был бесстрашен», — вспоминает Пасс. Вместе они погрузились в изучение задачи.

Что такое случайность?


Концепцию случайности, по самой её природе, сложно объяснить. Есть комикс про Дилберта, в котором на экскурсии по офисам компании Дилберту показывают «генератор случайных чисел» бухгалтерского отдела. Тот оказывается монстром, постоянно повторяющим число 9. «Вы уверены, что он случаен?», — спрашивает Дилберт. «В этом-то и есть проблема случайности — точно никто не знает», — отвечает его гид.


Яньи Лю работал с Пассом над выявлением значимой связи между односторонними функциями и колмогоровской сложностью.

Если кто-то покажет вам строки чисел 99999999999999999999 и 03729563829603547134, и скажет, что их выбрали случайно, то вы не сможете опровергнуть это заявление со всей определённостью: при выборе случайных чисел вероятность создания обеих строк одинакова. Однако вторая строка определённо кажется более случайной.

«Мы считаем, что знаем, что имеем в виду, когда говорим „это случайные данные“. Однако до появления концепции колмогоровской сложности у нас не было математически значимого определения», — говорит Эллендер.

Чтобы прийти к понятию случайной строки чисел, в 1960-х годах Андрей Колмогоров решил сосредоточиться не на процессе генерации строк, а на простоте их описания. Строку 99999999999999999999 можно кратко записать как «20 девяток», однако у строки 03729563829603547134 может и не быть более короткого описания, чем сама строка.

Колмогоров определил сложность строки как длину кратчайшей возможной программы, создающей на выходе эту строку. Если мы имеем дело, допустим, со строками из тысячи цифр, некоторые из них имеют очень короткие программы, например, «напечатать тысячу девяток» или «напечатать число 23319» или «напечатать тысячу знаков пи при помощи следующей формулы...». Другие строки невозможно описать кратко и мы не можем получить программы короче, чем так, которая просто записывает строку целиком и приказывает компьютеру её вывести. А для некоторых строк длина программ находится где-то посередине.

Колмогоровская сложность быстро стала одной из базовых концепций computer science. Это понятие настолько фундаментально, что в 1960-х его по отдельности обнаруживали несколько раз. По словам Пасса, это «глубокая задача, не просто о случайности и математике, но и о науке в целом».

Однако колмогоровская сложность имеет один недостаток: она невычисляема, то есть не существует программы, способной вычислить сложность любой возможной строки. Мы знаем это, потому что если бы такая программа существовала, мы бы пришли к противоречию.

Чтобы понять это, представим, что у нас есть программа, способная вычислить колмогоровскую сложность любой строки. Назовём эту программу K. Теперь давайте найдём наименьшую строку чисел (назовём её S), колмогоровская сложность которой вдвое больше длины K. Чтобы перейти к конкретике, представим, что K состоит из 1 миллиона символов, поэтому мы будем искать строку S, колмогоровская сложность которой равна 2 миллионам (то есть кратчайшая программа, выводящая S, содержит 2 миллиона символов).


Благодаря наличию программы K вычислить S легко (хоть и необязательно быстро): мы можем написать новую программу под названием P. По сути, программа P приказывает: «Пройди по всем строкам по порядку, используя программу K для вычисления их колмогоровской сложности, пока не найдёшь первую, колмогоровская сложность которой равна 2 миллионам». При создании программы P нам потребуется использовать программу K, поэтому суммарно P будет немного больше 1 миллиона символов. Однако эта программа выводит S, а мы определили S как строку, кратчайшая программа которой содержит 2 миллиона символов. Мы пришли к противоречию.

Однако это противоречие испаряется, если вместо поиска кратчайшей программы, выводящей строку, мы будем искать кратчайшую достаточно эффективную программу, выводящую строку (и
здесь нам нужно указать, что означает «достаточно»). В конечном итоге, для выполнения программы P потребуется огромное количество времени, ведь ей нужно проверить очень много строк. Если мы запретим такие сложные программы, то придём к понятию «ограниченной по времени» колмогоровской сложности. Эта версия колмогоровской сложности вычисляема — мы можем вычислить ограниченную по времени колмогоровскую сложность для любой возможной строки, по крайней мере, теоретически. И в некотором смысле эта концепция столь же естественна, как и сама колмогоровская сложность. Ведь в конечном итоге, по словам Пасса, на самом деле нас волнует только следующий вопрос: «Можно ли сгенерировать строку, пока мы ещё живы, или пока существует Вселенная?»

Так как ограниченная по времени колмогоровская сложность вычисляема, естественно возникает следующий вопрос: насколько сложно её вычислить. И Лю с Пассом доказали, что в этом вопросе скрывается ключ к ответу о существовании односторонних функций. «Это замечательное открытие», — утверждает Эллендер.

В частности, допустим, мы стремимся решить менее амбициозную задачу, чем вычисление точной ограниченной по времени колмогоровской сложности каждой возможной строки: допустим, нам вполне достаточно вычислить её приблизительно и лишь для большинства строк. Лю и Пасс показали, что если существует эффективный способ сделать это, то истинных односторонних функций существовать не может. В таком случае все наши кандидаты на роль односторонних функций мгновенно окажутся взламываемыми, не только теоретически, но и практически. «Тогда можно попрощаться с криптографией», — говорит Пасс.

И наоборот, если задачу вычисления приблизительной ограниченной по времени колмогоровской точности слишком сложно решить эффективно для множества строк, то, как продемонстрировали Лю и Пасс, истинные односторонние функции обязаны существовать. На случай, если это так, в их статье даже приводится конкретный способ создания такой функции. Описанная в их статье односторонняя функция слишком сложна для использования в реальном применении, однако, по словам Исхаи, в криптографии практические конструкции часто следуют за теоретическими прорывами. Он считает, что непрактичность односторонней функции Лю и Пасса «не является фундаментальным ограничением».


И если их функцию можно сделать практичной, её следует предпочесть другим кандидатам на роль односторонних функций, основанным на умножении и других математических операциях. Если уж односторонняя функция существует, то она будет такой. «Если мы сможем сломать подобную схему, то и все остальные схемы тоже могут быть сломаны», — утверждает Пасс.

Расширение теории


Статья породила каскад новых исследований на стыке криптографии и теории сложности. По словам специалиста по теории сложности Рахула Сантханама из Оксфордского университета, хотя обе дисциплины исследуют сложность вычислительных задач, они подходят к этому вопросу под разными углами. Он считает, что криптография подвижна, прагматична и оптимистична, а теория сложности медленна и консервативна. В последней «есть давно нерешаемые вопросы, и что-то происходит лишь раз в десяток лет. Однако эти вопросы очень глубоки и сложны».

Теперь у криптографии и теории сложности появилась общая цель и каждая из областей предлагает свежий взгляд на неё: у криптографов есть причины считать, что односторонние функции существуют, а у специалистов по теории сложности есть столь же весомые причины думать, что ограниченная по времени колмогоровская сложность является сложной задачей. Благодаря новым исследовательским результатам обе эти гипотезы подкрепляют друг друга.

«Если вы верите, что задача колмогоровской сложности сложна, то верите и в существование односторонних функций. А если вы верите в криптографию, то вам придётся поверить, что эта версия ограниченной по времени колмогоровской сложности обязана быть сложной».

Сегодня криптографы столкнулись с задачей приведения односторонней функции Лю и Пасса в более практичный вид. Также они начали исследовать, есть ли другие «главные задачи», наряду с ограниченной по времени колмогоровской сложностью, которые тоже могут руководить существованием односторонних функций или более сложных криптографических инструментов. Тем временем специалисты по теории сложности начинают глубже изучать, насколько сложна колмогоровская сложность.

Всё это намекает нам на то, что истинную пользу открытия мы узнаем в будущем. «Это семя, которое, вероятно, разовьётся в гораздо более обширную теорию», — считает Исхаи.

Комментарии (39)


  1. dmitryvolochaev
    11.04.2022 23:21
    +3

    "конкретный способ создания такой функции" не раскрыт


  1. XanKraegor
    12.04.2022 02:22
    +15

    Если кто-то покажет вам строки чисел 99999999999999999999 и 03729563829603547134, и скажет, что их выбрали случайно, то вы не сможете опровергнуть это заявление со всей определённостью: при выборе случайных чисел вероятность создания обеих строк одинакова.

    Я долго смотрел на эту фразу, и что-то во мне зудело. Хотелось подвергнуть сомнению. Но кажется, я понял, в чем дело. Наш мозг, нацеленный на поиск закономерностей, на ходу выполняет конвертацию из «набор цифр» в более простой для понимания и хранения формат «20 девяток», что и искажает восприятие числа. Так и хочется сказать: «ну ведь вероятность выпадения 20 девяток подряд меньше!». И действительно, вероятность выпадения 20 девяток подряд меньше, только вот перед нами не 20 девяток, а условно случайный набор цифр, которые, так уж получилось, составляют 20 девяток.


    1. Jetmanman
      12.04.2022 09:18
      -5

      Это называется число.


    1. ksbes
      12.04.2022 09:29
      +4

      И действительно, вероятность выпадения 20 девяток подряд меньше

      С чего это меньше?
      Человек интуитивно оценивает «энтропию» таких последовательностей, т.е. количество похожих, сформулированных потому же правилу отнесённую к общему количеству. И именно её называет «вероятностью».
      Т.е. то что 20 девяток выпадет реже — кажется из-за того что такая последовательность уникальна, в то время как случайных наборов цифр в 20 штук — больше чем человек может себе представить. Если для конкретного человека код 03729563829603547134 — уникален (например, это номер его счёта в швейцарском банке), то «ощущаемая вероятность» выпадения такой последовательности так же резко падает в область нуля.


      1. sappience
        12.04.2022 15:32
        +4

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


    1. K0styan
      12.04.2022 10:19
      +4

      Есть классическая задачка, практического смысла не имеющая, но хорошо иллюстрирующая когнитивные искажения:

      Одну и ту же монету (можно уточнить, что гарантировано симметричную) подбросили 99 раз. Все разы выпал орёл. Какова вероятность того, что на сотый раз выпадет решка?

      Интуитивные представления о вероятностях в головах с настоящей математикой очень слабо стыкуются. Просто потому, что противоречат 90% повседневного опыта - ну не сталкиваются люди с такими вот феноменами. Собственно, за счёт этого и живут страховщики, лотереи и азартные игры.


      1. eurol
        14.04.2022 13:52

        А у этой монеты решка точно есть? Или у нее два орла?


    1. xenon
      12.04.2022 11:55

      В одной из лекций про случайность лектор рассказывал случай из практики. В поезде "лоха" развели на карточную игру и "раздели". Он заявил в милицию. "Шулеров" задержали. Один из аргументов против них был в том, что несколько милиционеров проводили "следственный эксперимент" - специально целую ночь сидели, тасовали и раздавали карты, и такой расклад как случился там в поезде - ни разу у них не вышел. Следовательно (заключило следствие) - расклад в поезде (выигрышный для шулеров) был явно подтасован! :-)


      1. vvzvlad
        12.04.2022 16:32

        Вот чуваки, которые просто в карты в поезде решили поиграть, охренели, наверное.


    1. Makeman
      12.04.2022 14:09
      +1

      Возможно, для каких-либо обоснованных утверждений о вероятности важное значение имеет алгоритм получения таких строк, который в условии задачи не уточнён / не определён чётко и однозначно.

      Если случайные числа генерируются одним событием, то каждому целому числу в зависимости от системы исчисления можно сопоставить множество строковых представлений. Для одних и тех же пар чисел в зависимости от системы исчисления будут существовать как красивые, так и не очень строковые комбинации их представлений.

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

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

      Причём, уровень осмысленности паттернов зависит от багажа знаний, например: кто-то сразу распознает привычные десятичные иррациональные значения математических констант в строках, а для других - эти же строки будут выглядеть совершенно случайными.

      314159, 271828


    1. Dolios
      12.04.2022 14:25

      И действительно, вероятность выпадения 20 девяток подряд меньше

      Если эти строки являются результатом подбрасывания идеального десятигранного кубика, то вероятность их "выпадания" одинаковая. Потому что, при каждом подбрасывании вероятность выпадания каждой конкретной цифры 1/10 и о том, что там выпадало ранее, кубик не знает.


      1. domix32
        12.04.2022 22:31
        +2

        А зачем деястигранным кубиком ограничиваться, когда можно сразу кидать n-мерный m-гранный честный кубик и получать число заданного размера.


      1. dzhiharev
        13.04.2022 09:22

        мне плохо давалась теория вероятности, но этот момент я хорошо усвоил. Вероятность выпадения любой цифры при очередном броске действительно 1/10, но вероятность выпадения 10 одинаковых цифр подряд в 10 последовательных испытаниях с-и-ильно меньше…


        1. Dolios
          13.04.2022 09:28
          +1

          Вероятность выпадения любых конкретных 10 цифр сильно меньше и для любой последовательности она одна и та же. Не важно, одинаковые там цифры или нет. Вероятности выпадения 9999999999 и 1234567890 абсолютно одинаковы и равны 1/1000000000.


          1. dzhiharev
            13.04.2022 10:00

            Вы совершенно правы, но вот тут и возникает тот тонкий момент, из-за которого я не очень люблю иметь дело с теорией вероятности — нужно понять, что именно утверждается в неполной фразе «вероятность выпадения 20 девяток подряд меньше». Если «вероятность выпадения 20 девяток подряд меньше чем 03729563829603547134», то это неправда, а если «вероятность выпадения 20 девяток подряд меньше чем вероятность выпадения последовательности из разных цифр», то это абсолютная правда, т.к. число исходов с разными цифрами намного больше.


    1. santa324
      12.04.2022 16:17
      +3

      А ведь наш мозг в этом примере какраз решает задачу Колмогоровой сложности, видимо не для большинства строк а выборочно. Кто знает, может задача ИИ тоже плотно связана с этой математической задачей...


    1. pavelsc
      13.04.2022 10:02

      Вероятность выпадения 20 девяток подряд точно такая же, как и числа из 20 девяток. Представим диск с числами от 0 до 999. Вероятность выпадения 999 выходит 1/1000. Представим три диска с цифрами от 0 до 9. Вероятность выпадения трёх 9 выходит 1/10 * 1/10 * 1/10 внезапно так же 1 из 1000.

      А теперь представим мешочек с 30 шариками, по 3 шарика на цифру от 0 до 9. Вероятность выпадения трёх 9 будет 3/30 * 2/29 * 1/28, что примерно в 4 раза меньше чем 1/1000. Это результат для зависимых событий.

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


  1. avkor2021
    12.04.2022 08:57
    +12

    Спасибо за статью на Хабре по тематике Хабра


  1. terekhovna
    12.04.2022 10:54
    +2

    Стоит наверное заметить, что так как обращение односторонней функции это NP-задача (дан образ, нужно найти прообраз (сертификат)), то если односторонние функции существуют, то есть NP-задача, которая не решается за полиномиальное от длинны входа время, и значит P != NP (и одна из задач тысячелетия решена https://ru.wikipedia.org/wiki/Равенство_классов_P_и_NP )


    1. stranger1101
      12.04.2022 11:57
      +2

      Вот у меня похожий вопрос, который я не совсем понял.

      Разве это не тоже самое, что задача о P = NP? Которая давно сведена к решению любой из NP-полных задач?

      То есть задача упомянутая в статье это "просто" еще одна NP-полная задача? Судя по тому сколько было проделано работы кажется что нет и где-то кроется принципиальная разница, но, увы, я её не понимаю пока что.


      1. terekhovna
        12.04.2022 12:35
        +2

        Может быть такое, что P != NP, но при этом односторонних функций нет, что является довольно неприятной ситуацией: у нас нет криптографии, но при этом мы не умеем эффективно решать все NP-задачи.

        Статья приводит аналог NP-полной задачи в мире односторонних функций. В случае P vs NP, вопрос о равенстве сводится к проверки принадлежности определенной NP-задачи к классу P (эти задачи называются NP-полными). Статья сводит вопрос о существовании односторонней функции к проверки односторонности определённой функции F (такие функции называются универсальными односторонними), то есть если её легко можно обращать, то в принципе все предполагаемые односторонние функции можно будет легко обращать. Ранее тоже были конструкции универсальных односторонних функций, но они были довольно искусственными. В статье даётся пример более естественной универсальной односторонней функции.

        Если доказать, что обращение некой односторонней функции является NP-полной задачей, то это будет очень крутой результат, так как он покажет, что либо P=NP либо есть односторонние функции (и значит криптография). При этом на NP-полноту обращения достаточно проверять только некую универсальную одностороннюю функцию, так как если обращение некой универсальной односторонней функций не является NP-полной задачей, то и обращение любой другой односторонней функции не является NP-полной задачей. Поэтому нам интересно исследовать на NP-полноту универсальные односторонние функции, и чем естественнее определение такой функции, тем легче это исследование будет провести.

        Еще универсальные односторонние функции самые "надежные" из односторонних функций, так если их взломать, то можно взломать и все остальные односторонние функции. Поэтому интересно найти универсальные односторонние функции которые можно эффективно вычислять и использовать на практике.


        1. stranger1101
          12.04.2022 13:07

          Спасибо! Да, оказывается у меня было заблуждение о том, что обращение односторонних функций обычно является NP-полной задачей.

          Интересно узнать, что это на самом деле открытый вопрос.


        1. Andruh
          13.04.2022 17:22

          Предположим, что P != NP и односторонних функций нет. Тогда умножение чисел тоже не односторонняя функция. Но факторизация ведь (это так?) NP-трудная задача (к ней сводятся все NP), значит все NP-задачи могут быть решены эффективно, значит P = NP - противоречие?

          Где в моих рассуждениях ошибка?


          1. AndrChm
            13.04.2022 17:37

            Если сводимость доказана, то задача относится к NP-полным. Для задачи факторизации и дискретного логарифма это не доказано. Возможно по этой причине для этих задач известны решения с полиномиальной сложностью на квантовом компьютере. Вообще эта публикация настолько поверхностна, что её нельзя использовать в дидактичеких целях. Я уже написал, что те, кто не разбираются в вопросе, скорее больше запутаются, чем что-то для себя выяснят.


  1. MaxxxZ
    12.04.2022 12:19

    А как влияет культурный код на колмогоровскую сложность? Вот, например, программа для записи 999999999999 очевидна для нас, привыкших к десятеричной системе счисления. В двоичной системе сложность записи повышается. Помимо системы счисления наверняка есть и другие вещи, позволяющие оптимизировать запись в зависимости от багажа знаний записывающего. Древние люди, например, число e не знали. Только pi.


    1. Vindicar
      12.04.2022 12:37

      Ну тут нужно учитывать «багаж», но не культурный, а размер компилятора/системы команд процессора (или эквивалент).
      Ведь компьютер тоже не знает, что такое pi. У него может быть или алгоритм для расчёта знаков числа, или константа.


      1. MaxxxZ
        12.04.2022 13:16

        Согласен. Я почему-то подумал про константы. Но для оценки сложности они, пожалуй, не подходят. И если брать голый ассемблер, то он и не будет оперировать десятичными числами. Про девятки он не знает. Тогда зависимость будет минимальной.\

        Я по привычке про оптимизацию алгоритмов на ЯВУ подумал)


  1. karambaso
    12.04.2022 14:11
    -2

    Тогда можно попрощаться с криптографией

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


    1. StJimmy
      12.04.2022 14:35
      +3

      Обычно в симметричной криптографии секретом является ТОЛЬКО ключ, а алгоритм, как правило, открытый. Да, есть засекреченные алгоритмы, но целесообразность такого оставим на откуп профильных ведомств.


      1. randomsimplenumber
        12.04.2022 17:16
        -1

        Я так понимаю, имеется в виду секретность получения вектора инициализации для ГПСЧ.


      1. karambaso
        12.04.2022 22:04
        -1

        Хорошо, менее параноидальные пользователи криптографии используют известные алгоритмы. Но эти алгоритмы не предполагают разглашение результата прямого преобразования, как в асимметричной криптографии. То есть там нет места для взлома "возможно слабого" обратного преобразования.

        Хотя в моём случае стоило добавить это уточнение ещё в первом сообщении. Но получение шифрующей последовательности по имеющемуся в наличии закодированному сообщению затруднительно по причине неоднозначности преобразования шифр -> открытый текст. Это аналог неизвестного множества алгоритмов для случая с асимметричной криптографией, ведь даже умея вскрывать все обратные преобразования, но не зная конкретный алгоритм, мы получаем ту самую неоднозначность.


  1. AndrChm
    13.04.2022 01:44

    А имеет ли смысл публиковать перевод статьи неспециалиста? Ведь Erica Klarreich не является специалистом в этой области. Те, кто не разбираются могут вообще не понять, понять неправильно или не до конца. Специалисты же читают совсем другие тексты. Тогда возникает вопрос: А на кого рассчитана эта публикация? Тем более, что текст не рецензировался, как я понимаю.


  1. Geratron
    13.04.2022 09:24

    "Одну и ту же монету (можно уточнить, что гарантировано симметричную) подбросили 99 раз. Все разы выпал орёл. Какова вероятность того, что на сотый раз выпадет решка? "

    Предыдущие результаты (их 99) однозначно указывают на более чем вероятный результат.


    1. Dolios
      13.04.2022 09:32
      +2

      Монета ничего не знает про предыдущие броски. Вероятность 0.5


      1. ksbes
        13.04.2022 09:47

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


        1. Dolios
          13.04.2022 09:57

          Ну там же оговорились, что бросают "гарантировано симметричную" монету. 100 бросков — слишком мало, чтобы делать какие-то выводы.


          1. StJimmy
            13.04.2022 10:55
            +3

            За 100 бросков явно напрашивается очевидный вывод. Как уже сказали выше — монета абсолютно симметричная и имеет с обеих сторон орла.


  1. Andruh
    13.04.2022 17:28

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

    Такой подход наиболее практичен в свете быстро надвигающихся квантовых компьютеров.

    И как с этим всем соотносится постквантовая криптография? Справедливы ли там все эти рассуждения, есть ли там такая функция-стражник, которая защищает односторонность и вообще постквантовую криптографию единолично? Отличается ли этот стражник от стражника доквантового?


  1. santa324
    14.04.2022 13:35

    Момент, который был для меня не очевиден, пока не задумался: невычислимость Колмогоровой сложности сводится к проблеме останова.

    Можно вообразить программу, которая перебирает все возможные программы в порядке возрастания размера. Резмер первой компилирующейся и выдающей на выходе нужную строку - это Колмогорова сложность. Однако такая программа не реализуема из-за проблемы останова.