Проект:Кандидаты в добротные статьи/28 октября 2019
Завершённые обсуждения кандидатов в добротные статьи |
Статья о великом визире, занимавшем этот пост дважды. — Зануда 05:14, 28 октября 2019 (UTC)
- Комментарий: Субашей по тексту или викифицировать или пояснить надо. — --с уважением, Lapsy 11:17, 29 октября 2019 (UTC)
- Сделано.-- Зануда (с чужого компа)
Итог
[править код]Статья избрана. Требованиям ВП:ТДС соответствует. — --с уважением, Lapsy 10:56, 6 ноября 2019 (UTC)
Добрый день! Это моя первая статья, которую я номинирую на статус добротной статьи. В данной статье описывается блочный шифр Halka, главной особенностью которого является использование мультипликативной инверсии на основе LFSR для 8-битных S-блоков. Статья содержит такие разделы, как: История, Алгоритм, Подробная информация о раунде, Мультипликативная инверсия с использованием LFSR, Криптоанализ, Примечания, Литература и Ссылки. — Student zaschitainformacii (обс.) 14:48, 28 октября 2019 (UTC)
- Спасибо за статью! Некоторые замечания:
- В русской википедии не принято использовать прямые ссылки на другие языковые разделы (см. ВП:МЕЖЪЯЗ), следует переделать их с использованием шаблона {{iw5}} или подобного.
- На иллюстрацию, использованную в статье, отсутствует обоснование добросовестного использования (cм. ВП:КДИ), да и то, что файл является незаменяемым в данном случае сомнительно. Скорее всего, этому файлу следует сделать свободный аналог или убрать его.
- В карточке имя автора помечено как Sourav Das, на википедии принято писать имена людей на русском, поэтому данное имя следует транскрибировать.
- Сноска «Облегчённая криптография» на текущий момент ведёт в никуда.
- Текст раздела «Алгоритм», как и «алгоритмическое описание» — практически дословный перевод куска статьи, что формально считается нарушением авторского права. Данный раздел (и другие подобные, значительная часть статьи это перевод оригинального текста Sourav Das) стоит переработать.
- В «алгоритмическом описании» функции «generateRoundKeys», «addRoundKey» и т. д. используются, хотя они не были толком определены где либо. По данному отрывку невозможно понять, что на самом деле происходит в алгоритме.
- В разделе «Подробная информация о раунде» отсутствует ссылка на АИ, и в целом по статье не выполняется требование «АИ после каждого нетривиального утверждения и в конце каждого абзаца», это следует исправить (см. ВП:ТДС-6).
- Повсеместно используются понятия, которые нигде не вводятся. «Конкретный раунд состоит из XOR с раундовым ключом» — что такое раундовый ключ, откуда он взялся? Возможно, это стандартные термин для специалистов в защите информации, но в целом следует всё же уделять больше внимания моментам, где в статью вводится новый термин и, по возможности, уточнять его смысл.
- Аналогично для операций — по видимому, обозначает побитовое исключающее или (кстати, его лучше как-то так или в другом русскоязычном варианте и называть, а не «XOR»), а — обычное побитовое или, но в статье это нигде не поясняется.
- Про перестановку говорится, что она случайная, а дальше указывается таблица с некоторой конкретной перестановкой. Как это вообще следует понимать? Это как из распространённой шутки: «const int rnd_int = 4; // truly random number, selected by fair dice roll». Если перестановка фиксирована и всегда производится по таблице, то к чему фраза про случайность? По видимому, имелось в виду, что эта перестановка была сгенерирована некоторым случайным образом, а не что она является случайным, тогда это стоит уточнить (но нужен АИ). Саму перестановку я бы убрал, она, на мой взгляд, энциклопедически не значима. То же самое относится к S-блоку ниже, никакой пользы статье от 256 случайных байт, записанных в таблицу 16x16 нет.
- Я уверен, что под «мультипликативной инверсией» (тоже межъязыковая ссылка почему-то) имеется в виду что-то, что называется по другому и это что-то также следует в явном виде определить, прежде чем использовать в тексте статьи. Скажем, я думаю, имеется в виду обратный элемент по умножению, но обратный к чему и в каком кольце нужно уточнять.
- Раздел «Hardware Mode» (кстати, что вообще значит это название?) содержит некий алгоритм, описанный на английском языке. Это плохо, у нас википедия на русском и соответственно описание алгоритма тоже должно быть на русском.
- Это общие замечания, с которыми я предлагаю пока поработать. Когда разберёмся с ними, перечитаю статью и приведённые источники, которые, я надеюсь, добавятся и посмотрим, что можно дальше делать. Общий комментарий — статья, на мой взгляд, перегружена специфической терминологией и очень тяжело читается. adamant (обс./вклад) 22:35, 17 ноября 2019 (UTC)
- Добрый вечер! Спасибо за сделанные комментарии.
- Изменила, спасибо, что подсказали, как исправить.
- Иллюстрацию убрала =)
- Транскрибировала, теперь ок.
- Спасибо, что заметили. Настроила.
- Поправила.
- Это определения и вспомогательные процедуры из AES, на основе которого разработан Halka. Добавила такой комментарий.
- Добавлены ссылки на АИ.
- Блочный шифр SP-сети использует свой ключ, получаемый из начального. Это основа, которая описана здесь: блочный шифр.
- Это стандартное обозначение для исключающего "или", но на всякий случай, это я тоже указала. Даже во многих русскоязычных источниках и учебной литературе XOR обозначают именно так.
- Перестановки действительно случайны. Таблица с конкретной перестановкой представлена в качестве примера (указала это в названии), иллюстрирующего отображение перестановок, которое уже не является случайным. Также я считаю, что не стоит убирать пример перестановки и S-блока, так как блочный шифр типа SP-сеть состоит их S-боксов(блоков) и P-блоков(перестановок), а данные таблицы помогают проиллюстрировать возможное построение SP-сети.
- Понятие "мультипликативная инверсия" существует и используется в русскоязычной литературе по криптографии, поэтому заменять не стала. Инвертирование по отношению к примитивному многочлену (указано в начале статьи). А по какому модулю, хз, ни в одной статье автора не указано :D
- Переименовала в "Аппаратный режим". Алгоритм перевела :)
Student zaschitainformacii (обс.) 22:29, 23 ноября 2019 (UTC)
- Хорошо, продолжаем.
- Возможно ли выделить в статье раздел, где будет в максимально доступном (для неспециалиста в криптографии) виде описываться постановка задачи, а также используемые обозначения? Если они все описаны в какой-то основной статье, можно также проставить шаблон {{основная статья}}. Мне сложно оценить, насколько большим будет такой раздел, но если это можно сделать достаточно сжато, то лучше сделать.
- У вас всё ещё встречаются ссылки напрямую на английскую википедию. Например, с мультипликативного инвертирования — исправьте, пожалуйста, все такие ссылки.
- Ссылка на мультипликативную инверсию, вообще говоря, явно ведёт не туда, куда имелось в виду — в английской статье, на которую идёт ссылка, почти целиком статья посвящена обратному элементу над и их расширениями.
- Статья логический элемент в рувики присутствует, зачем поверх неё лежит {{не переведено}} — не понятно.
- Думаю, лучше всё же не использовать сноски для ссылок на другие вики-проекты. Наверно, в данном случае стоит прописать ссылку как «в облегчённой криптографии», чтоб был задел на статью по этой теме.
- «трансформация при шифровании при которой Round Key XOR’ится c » — если пишете «раундовый ключ», то лучше не отходить от такого обозначения и везде называть его именно так.
- «Преобразование S-блока» — уточнения о том, что обозначается через так и не появилось.
- Писать «XOR’ится» не очень энциклопедично. Следует перефразировать на что-то вроде «к состоянию применяется XOR с раундовым ключом ».
- В разделе «Алгоритм» используется обозначение , а в следующем разделе — обозначение . Следует их согласовать между собой.
- Обозначение не очень удачное, так как по нему не сразу видно, что — пара из перестановки. Я думаю, здесь следует выделить какую-нибудь стандартную нотацию для перестановок (например, пусть мы работаем с перестановкой ) и записать это так, чтобы было сразу видно, что применяется перестановка: . Пример конкретной перестановки я бы всё же убрал — он не несёт энциклопедической ценности, а лишь может вводить в заблужение. Кстати, если перестановка случайная — следует уточнить, в какой момент она генерируется. Это происходит на каждом раунде независимо?
- Не ясно, что значит фраза «каждый бит из каждого 8-битного S-блока влияет на один и только один бит в каждом из восьми 8-битных S-блоков на следующем уровне». Её смысл можно отобразить формулой?..
- Смысл раздела «Мультипликативная инверсия с использованием LFSR» не ясен. Откуда вообще берётся LFSR и как это связано с тем, что описано в разделе «Алгоритм»? Мультипликативная инверсия чего именно, в каком кольце, и с какой целью вычисляется? Я думаю, что статья должна быть написана таким образом, чтобы ответы на эти вопросы были ясны человеку, который заранее не знаком с криптографической кухней.
- 𝓪𝓭𝓪𝓶𝓪𝓷𝓽 (обс./вклад) 08:07, 24 ноября 2019 (UTC)
- И снова здравствуйте! Спасибо за оперативный ответ, помощь и комментарии.
- Скорее нет, чем да. Halka - блочный шифр из огромного множества блочных шифров. Что это и для чего нужно описано здесь: блочный шифр. Это достаточно объемная статья, поэтому коротко объяснить точно не получится, скорее, написать новую статью :D Но зачем, если и так есть замечательная статья блочный шифр сама по себе.
- По-моему, это был единственный момент, который остался? Исправила.
- Спасибо, Вы правильно заметили! Теперь нормально. Ссылаюсь только один раз в самом начале и куда нужно.
- Точно, не видела, убрала.
- Cделано. Кстати! я думаю, в скором времени такая статья появится, её напишет кто-то из моих одногруппников. Дело в том, что все эти статьи на вики по защитке - это наша домашка по "Защите информации" в институте :с
- Согласна, переписала.
- Теперь появилось :)
- Поправила.
- В алгоритме S это же переменная, а S_i в описании о раунде так и определено как состояние в i-м раунде. Согласование тут не требуется.
- Обозначение в тексте статьи, на мой взгляд, весьма понятное и не перегруженное. Формула показывает, какие биты текущего уровня влияют на следующие, то есть j-ые на i-ые, что и написано. По поводу второго вопроса, хз, в статье не указано. Могу написать письмо автору, чтобы пояснил. Соответственно, перестановку из статьи тоже пока не убираем.
- Ее смысл и отображен формулой, о которой мы выше говорим))))
- Раздел Алгоритм повествует о чисто математическом принципе работы шифра. А регистр сдвига LFSR помогает реализовать этот алгоритм на железе. Об этом и речь в hardware разделе. По поводу второго вопроса могу написать автору. Но никакого АИ у нас не будет
P.S. Эх, чувствую, что если Вы будете продолжать докапываться (͡° ͜ʖ ͡°) в том же духе, я не закрою защитку до нового года :D Student zaschitainformacii (обс.) 14:48, 24 ноября 2019 (UTC)
- Статья блочный шифр несёт в себе намного больше информации, чем нужно для написания введения в эту статью. Я не предлагаю пересказывать всю мотивацию, историю и т. д., но дать постановку вкратце (хотя бы формульно) и пояснить основные обозначения, мне кажется, можно было бы. Например, в разделе «Постановка» в статье Алгоритм Шрайера — Симса, я вкратце даю некоторые определения и поясняю обозначения, хотя они и есть в любой книге по теории групп.
- Modular multiplicative inverse — про обратный элемент , где — обычное число, а у вас ведь здесь многочлены обращаются, я так понимаю? Это, конечно, ближе по смыслу, но всё ещё ведёт немного не туда.
- «XOR with Round Key» — не лучшее название для этапа в раунде, лучше перевести.
- «Ее смысл и отображен формулой, о которой мы выше говорим» — что-то я не очень понял. То есть, фраза просто о том, что это именно перестановка, а не что либо ещё? Тогда её лучше просто убрать, чтоб не запутывала.
- Я не могу из статьи понять, какое вообще LFSR имеет отношение к алгоритму, в самом алгоритме его нет. Если он помогает его реализовать, то следует выделить отдельный раздел, в котором описывается, каким образом. Из оригинальной статьи я так понял, что multiplicative inverse каким-то образом связано с этим S-box, но каким? Из статьи на википедии я не могу извлечь ответ на этот вопрос.
- Указание на то, что значительная часть текста является прямым переводом и нарушает авторские права Sourav Das я уже сделал. Похоже, ситуация сохраняется, поэтому укажу конкретнее:
- «Подробная информация о раунде» — дословный перевод страницы 7 статьи Sourav Das,
- «Мультипликативная инверсия с использованием LFSR» — перевод разных кусков статьи, в частности, страницы 3 на Hardware Mode, страницы 4 на «аппаратную реализацию», страницы 5-6 на «Параметризацию» и «S-блок»,
- «Криптоанализ» — значительная часть раздела напрямую заимствована из страниц 8-9 работы Sourav Das.
- Это всё следует переделывать, статья с ВП:КОПИВИО не может быть избрана.
- P.S. К сожалению, я больше заинтересован в том, чтобы статья была достаточно качественной, чем в том, чтобы вы своевременно сдали вашу домашку.
- P.P.S. @Colt browning: буду очень признателен, если найдёте возможным также прокомментировать данную номинацию. adamant (обс./вклад) 16:11, 24 ноября 2019 (UTC)
- Спасибо за оперативный ответ!
- По поводу введения с теоркой. Посмотрела разнообразные статусные статьи на вики по данной теме, например, Blowfish, Khufu, Skipjack. Здесь, как у вас, такого нет, - история, описание алгоритма и погнали! Если вам очень хочется введение из статьи о блочных шифрах, подскажите, о чем писать. Потому что мне не очень ясен этот момент.
- Итак, алгоритм Евклида находит обратный элемент и его реализация связана со сдвиговым регистром. Вот это: Extended_Euclidean_algorithm (Раздел Simple algebraic field extensions, там рассказывается про инверсию для многочленов). Но как на это сослаться?
- Убрала.
- В разделе "Мультипликативная инверсия с LFSR" описывается как LFSR используется для реализации алгоритма. В самом начале раздела преобразование записывается математически. Дальше рассказывается как используется LFSR для реализации алгоритма (Со слов "На вход принимаются... " начинается описание аппаратной реализации мультипликативной инверсии с lfsr). Это и показывает их связь.
- Переделала.
Student zaschitainformacii (обс.) 20:27, 24 ноября 2019 (UTC)
- Ладно, давайте к введению позже вернёмся, пока есть более насущные вещи. На счёт обратного элемента — действительно, раздел выглядит подходящим. Я бы на en:Extended Euclidean algorithm#Simple algebraic field extensions и сослался через соответствующий шаблон. На счёт LFSR — я всё ещё не могу понять, какое он вообще имеет отношение к шифру. Ну, описан некоторый алгоритм, вычисляющий мультипликативную инверсию через LFSR, но сама мультипликативная инверсия в каком месте нужна? Выше говорится, что она является главной особенностью алгоритма, ниже описано, как её вычислять. А инверсию чего именно вычисляют и зачем? adamant (обс./вклад) 21:08, 24 ноября 2019 (UTC)
- Первое и главное: никогда не используйте в TeXовских формулах звёздочку для обозначения умножения! В частности, в пункте "Преобразование S-блока" её можно просто удалить. (Я вижу, в источнике так; неважно, всё равно.)
- В настоящий момент из статьи не видна значимость её предмета, поскольку не представлен ни один независимый источник, рассматривающий шифр Halka. К счастью, такие источники существуют: например, этот обзор посвящает шифру небольшой, но отдельный подраздел.
- Ссылка в сноске, озаглавленная "Algebraic attack", не работает, а одноимённая ссылка ниже ведёт на страницу с сообщением об ошибке.
- Ссылка в сноске на K. Nyberg тоже не работает, а в ссылке на статью Carlet вылезло что-то лишнее.
- Да, прямой перевод не свободных источников -- это нарушение авторского права. А злоупотребление автопереводчиком -- ещё и прямо путь к ошибкам: "a few more common attacks" -- это не "несколько более распространённых атак", а "ещё несколько распространённых атак"; не «каждый бит из каждого 8-битного S-блока влияет на один и только один бит в каждом из восьми 8-битных S-блоков на следующем уровне», а «8 бит из каждого 8-битного S-блока переходят в различные S-блоки на следующем уровне» (это же видно в примере перестановки!).
- Вопреки написанному в статье и здесь, я не нашёл ни в викистатье про AES, ни в самом стандарте (во всяком случае, в pdfке, на которую ссылается викистатья) ни одну из упомянутых функций, кроме AddRoundKey.
- В статье Sourav Das описывается общая идея шифра и конкретный пример (но, как я понимаю, в принципе далеко не единственный возможный) его реализации. В частности, конкретный многочлен, конкретная перестановка, конкретный S-блок -- всё это относится только к конкретному примеру. Можно взять другой примитивный многочлен, это тоже будет реализация Halka. В номинированной статье это разделение отражено очень смутно.
- Насчёт multiplicative inverse: если я правильно понял статью Sourav Das и стандарт AES, мы работаем в поле GF(28), элементы которого также можно представить многочленами с коэффициентами из GF(2), причём сами многочлены берутся по модулю ещё какого-то многочлена -- неприводимого и со старшим членом x8 (подобно тому, как это делается в разделе Конечное поле#Поле из девяти элементов; биты вроде бы соответствуют восьми младшим коэффициентам многочлена). Главный вопрос -- действительно, какое отношение это имеет к шифру?
- Вообще, информация в статье подаётся беспорядочно. Многочисленные неясности, отмеченные коллегой adamant, проистекают именно из этого факта. Например, если я правильно понял, описание преобразования S-блока размазано по всей статье: в преамбуле говорится, что у S-блоков вычисляется мультипликативная инверсия; в разделе "Алгоритм" внезапно вбрасывается многочлен, который в конкретной реализации шифра используется для представления поля, в котором мы берём инверсию; далее без комментариев используется преобразование S-блока G(...)
, которое, видимо, и состоит в взятии мультипликативной инверсии(в источнике как-то неясно это написано); а далее уже описывается сама мультипликативная инверсия (это, может, и было бы нормально, если бы остальные части не были так разбросаны).
- Словом, статью вполне реально доработать до статуса, но в данный момент она нехороша. — Браунинг (обс.) 21:39, 24 ноября 2019 (UTC)
- «Первое и главное» — вот это я понимаю, расстановка приоритетов :) adamant (обс./вклад) 21:48, 24 ноября 2019 (UTC)
- Спасибо за ваши комментарии! Я даже не успеваю на них реагировать. А c кем еще можно это все обсуждать, кто-то может помочь доработать статью? А то я новичок и одна немного не вывожу:D Просто вдруг есть какая-то страница на вики, где можно найти единомышленников, с которыми это все тоже можно обсуждать. Хотя вот вы тоже нереально помогаете, thx) И вот что делать с вопросами, которые у вас и меня возникают, но на которые в оригинальной статье нет конкретного ответа? Например про функции и что-то еще?
Student zaschitainformacii (обс.) 03:38, 25 ноября 2019 (UTC)
- Рецепт один: хорошо понять источник, отделить важное от неважного и изложить своими словами. Например, по-видимому, названия пресловутых функций неважны, они чисто условные и больше нигде не используются (их можно вообще не упоминать); разделение блока на 8-битные куски и последующая конкатенация не так важны, как то, что происходит в середине (применение S-блока); а вот мультипликативная инверсия с использованием LFSR важна, поскольку позволяет что-то важное (я не понял пока, что именно) сделать с аж восьмибитными S-блоками, затратив на это сравнительно мало ресурсов (поэтому и написано про использование в RFID и т. п.), но при этом конкретный алгоритм, скорее всего, не так уж и важен для викичитателей -- важно, что он есть и обладает такими-то характеристиками. К сожалению, лучше вас тут вряд ли кто-то разберётся в этом материале (поскольку только у вас есть серьёзная мотивация), однако можно опереться на других людей вне Википедии, которым пришлось прочитать и понять источник, в частности, в репозитории https://github.com/jcsf/LightweightBlockCiphers.Thesis.2018 имеется реализация Halka. (О, да это же чья-то прошлогодняя дипломная работа! Если раздобыть саму работу, т.е. убедиться, что она была напечатана и защищена, то это можно и в статье использовать.) Я думаю, у вас всё получится. — Браунинг (обс.) 09:52, 25 ноября 2019 (UTC)
- Окей) Займусь этим на выходных
Student zaschitainformacii (обс.) 17:17, 25 ноября 2019 (UTC) 17:16, 25 ноября 2019 (UTC)
Адамант:
- Пофиксила ссылку на мультипликативную инверсию.
- Добавила в разделе алгоритм объяснение, что для преобразования s-блока необходимо взятие мультипликативной инверсии.
Браунинг:
- вроде ок
- Спасибо за предложенный обзор, добавила в разделе про мультипликативную инверсию информацию оттуда.
- Ccылку на алгебраическую атаку убрала, сослалась на страницу из википедии.
- Поправила ссылки.
- Эти выражения были уже убраны :D
- По вашему предложению были убраны названия пресловутых функций)
- Все конкретные примеры были убраны, осталась только общая идея шифра.
- Взаимосвязь мультипликативной инверсии с шифром Halka теперь отражена в разделе Алгоритм.
- Поправила. В разделе алгоритм объяснила, в какой момент вычисляется мультипликативная инверсия, а ниже описан сам алгоритм взятия инверсии.
По последней части: в статье была отражена важность использования мультипликативной инверсии на основе lfsr в начале раздела про инверсию.
Student zaschitainformacii (обс.) 13:08, 1 декабря 2019 (UTC)
Так. Я прочитал обновлённый раздел "Алгоритм", и у меня появилось архиважное содержательное замечание. Состояние S (очевидно, от слова state) и S-блок (от слова substitution) — это разные вещи. Состояние — это блок (block) из 8 8-битных кусков. 8-битный S-блок (S-box) — это преобразование одного 8-битного куска в другой, которое, с одной стороны, может быть представлено таблицей (в статье-источнике это сделано для примера, но в реальных устройствах держать в памяти лишние 256 байтов может быть слишком затратно), а с другой — реализовано в виде основанной на LFSR схемы (состоящей из пресловутых 138 логических элементов). "Преобразование S-блока" — это преобразование, являющееся (или называющееся, без разницы) S-блоком, а не процесс изменения S-блока на какой-то другой. Нет, даже ещё хуже: в контексте описания самого шифра Halka S — это то, что я сказал (нынешнее состояние шифруемого 64-битного блока), а в контексте описания S-блока на основе LSFR S — это нынешнее состояние преобразуемого 8-битного куска. В общем, надо опять всё довольно сильно переписать с учётом этого. Не принимайте мои слова на веру, перечитайте источники и убедитесь, что я не ошибся (или ошибся). — Браунинг (обс.) 14:52, 1 декабря 2019 (UTC)
- Спасибо за замечание! Да, всё верно: есть преобразование, есть шифруемый блок, а есть 8-битный кусок, который надо мультипликативно инвертировать. Поправила разделы "Алгоритм" и "Мультипликативная инверсия с использованием LFSR", переобозначила эти три сущности разными символами, чтобы не было путаницы.
Student zaschitainformacii (обс.) 19:05, 1 декабря 2019 (UTC)
В целом, по-моему, стало лучше.
- Надо всё-таки понять, как по-русски пишут называют S-box transform. "Преобразование S-блока" — плохо, потому что кажется, что преобразуется сам S-блок; "S-блоковое преобразование" — не по-русски. Как пишут в литературе про AES?
- В преамбуле: "Главной особенностью является вычисление для 8-битных S-блоков мультипликативной инверсии по отношению к примитивным многочленам на основе LFSR, требующего 138 логических элементов" — если я правильно понял, взятие мультипликативной инверсии — это и есть преобразование S-блока; возможно, лучше сказать что-то вроде "S-блок, основанный на...". Главное, из нынешнего текста кажется, что вся особенность — это мультипликативная инверсия на основе LFSR. Но всё ведь немного шире: сама идея мультипликативной инверсии позаимствована из AES, а тут особенность — комбинация: 8-битный S-блок (в смысле, преобразование, работающее с 8 битами, а не с 4, как во многих шифрах, рассчитанных на криптографию в непроизводительных устройствах) + мультипликативная инверсия (что обеспечивает хорошие криптографические свойства) + её реализация на основе LFSR, позволяющая аппаратно реализовать S-блоковое преобразование в 138 логических элементах — это мало, если верить автору. То есть важно сочетание всех трёх составляющих. Или хотя бы первой и третьей (целых 8 бит + всего 138 логических элементов).
- "До появления Halka было предложено довольно много блочных шифров" — ага, например, AES, который более значим, чем все названные шифры вместе взятые. Автор статьи-источника-то перечисляет только недавно предложенные блочные шифры.
- Раздел "Применение" я бы переименовал в "Возможное применение", поскольку по факту-то шифр пока нигде не используется.
- Фраза "Алгоритмическое описание блочного шифра Halka приведено ниже" — прямой перевод источника, и это очевидно даже без заглядывания в источник, потому что мы буквально в предыдущем предложении сказали, что Halka 3 блочный шифр, не надо это тут же повторять. Если где-то ещё остался прямой перевод, лучше переделать, не дожидаясь указаний.
- "Значение промежуточного этапа шифрования" — выглядит так, как будто у этапа есть значение. Странновато.
- Правильно, что вернули описание особенности перестановки; мне кажется, запись перестановки формулой стоит либо выкинуть, либо записать так, как предложил adamant выше.
Продолжение следует. — Браунинг (обс.) 18:15, 2 декабря 2019 (UTC)
- "соответствующая особенность <...> составляет не меньше 253" — не по-русски.
- Моё замечание, что главная особенность Halka состоит в сочетании "всего 138 лог. эл. на целых 8 бит", применимо и к началу раздела про мультипликативную инверсию. Кроме того, здесь надо чётко напомнить, что в шифре это используется в S-блоке, сейчас это как-то неясно написано.
- "Для 8-битной LFSR" — LFSR вроде мужского рода, "регистр"?
- "Затем преобразование запускается в обратном направлении." — непонятно, с какого состояния и сколько раз. То ли с состояния W(t+p) и пока не получится W(t), то ли наоборот; и LFSR что, можно взять и провернуть в обратном направлении?
- Характеристический многочлен LFSR упомянут, не считая преамбулы, только один раз — в разделе про аппаратную реализацию. Надо раньше, ведь именно многочлен определяет, как конкретно устроен LFSR. Вообще, кстати, неплохо бы где-то в одном месте написать, какие именно сущности нужно выбрать, чтобы зафиксировать конкретный вариант Halka (многочлен, на нём основан LFSR, что вместе с чем-то там ещё даёт S-box, и т. д.).
- "Триггеры сканирования", шлюзы — это какая-то стандартная терминология?
- NOT и NAND надо бы викифицировать. Кстати, так лучше — записывать названия логических элементов простыми шрифтом, а не в теге math, как почему-то сделано с XOR.
- "Это обеспечивает логику управления для указания завершения 255 циклов." — и опять: неестественные фразы — признак прямого перевода источника... В других местах тоже видно. Это, собственно, пожалуй, основная претензия к разделу про криптоанализ.
— Браунинг (обс.) 20:43, 2 декабря 2019 (UTC)
- LFSR можно взять и повернуть в обратном направлении. Это ведь по сути линейная рекуррента — если есть выражение , то отсюда можно выразить , если это то, что имеется в виду под обратным направлением. Правда в данной статье LSFR почему-то задан не как обычная рекуррента, а в матричном виде и в общем случае чтоб такое развернуть, нужно иметь обратную матрицу (что, в принципе, не проблема — матрица то константная, небось, можно и заранее обратить над ). Но вообще в данном случае совершенно не ясно, откуда этот LSFR берётся и как он связан с мультипликативной инверсией, так что алгоритм выглядит как «сначала пойдём сюда, потом пойдём туда и готово». Кстати, если формально взглянуть на алгоритм, начинаем мы в , а заканчиваем в , что, видимо, эквивалентно . Учитывая, что называется «начальным» состоянием это, вероятно, как раз то, что нам нужно, если правильно определить, как матрица и вектор соответствуют изначально поставленной задаче считать мультипликативную инверсию.Видимо, там где-то загнали под ковёр, что матрица такова, что умножение на неё вектора соответствует умножению многочлена, чьи коэффициенты уложены в , на некоторый многочлен , являющийся образующим в мультипликативной группе с её представлением в виде остатков по модулю некоторого примитивного многочлена степени (отсюда и возврат в начало через циклов, малая теорема Ферма для конечных полей по сути). В случае классической линейной рекурренты , кстати. Короче, этот Сурав Дас решил забросать умными словами и загадочными формулировками тривиальную вещь. Typical applied science. adamant.pwn — contrib/talk 00:04, 4 декабря 2019 (UTC)
- То есть, ещё раз — весь инновационный алгоритм, описанный в том разделе, выглядит так: Если вам известен , а вы хотите посчитать , то умножайте на первообразный элемент пока не получите , а потом делите на первообразный элемент , пока не окажется, что вы сделали действий в сумме. Но это всё сдобрено сленгом типа LFSR и подобного. Конечно, найти источник по криптографии, где это написано человеческим языком вряд ли получится, так что придётся пересказывать то, что есть… adamant.pwn — contrib/talk 00:14, 4 декабря 2019 (UTC)
- LFSR можно взять и повернуть в обратном направлении. Это ведь по сути линейная рекуррента — если есть выражение , то отсюда можно выразить , если это то, что имеется в виду под обратным направлением. Правда в данной статье LSFR почему-то задан не как обычная рекуррента, а в матричном виде и в общем случае чтоб такое развернуть, нужно иметь обратную матрицу (что, в принципе, не проблема — матрица то константная, небось, можно и заранее обратить над ). Но вообще в данном случае совершенно не ясно, откуда этот LSFR берётся и как он связан с мультипликативной инверсией, так что алгоритм выглядит как «сначала пойдём сюда, потом пойдём туда и готово». Кстати, если формально взглянуть на алгоритм, начинаем мы в , а заканчиваем в , что, видимо, эквивалентно . Учитывая, что называется «начальным» состоянием это, вероятно, как раз то, что нам нужно, если правильно определить, как матрица и вектор соответствуют изначально поставленной задаче считать мультипликативную инверсию.Видимо, там где-то загнали под ковёр, что матрица такова, что умножение на неё вектора соответствует умножению многочлена, чьи коэффициенты уложены в , на некоторый многочлен , являющийся образующим в мультипликативной группе с её представлением в виде остатков по модулю некоторого примитивного многочлена степени (отсюда и возврат в начало через циклов, малая теорема Ферма для конечных полей по сути). В случае классической линейной рекурренты , кстати. Короче, этот Сурав Дас решил забросать умными словами и загадочными формулировками тривиальную вещь. Typical applied science. adamant.pwn — contrib/talk 00:04, 4 декабря 2019 (UTC)
Спасибо за замечания. Часть1:
- Сделано.
- Cделано.
- Сделано.
- Сделано.
- Сделано.
- Cделано.
- Cделано.
Часть2:
- Сделано.
- Сделано.
- Cделано.
- C момента W(t), пока общее число составит 255. Про обратное направление, автор статьи описывает какие-то логические схемы вокруг lfsr, которые обеспечивают обратное преобразование. Но непонятно, как это работает.
- Сделано.
- Сделано.
- Cделано.
- Сделано.
Student zaschitainformacii (обс.) 22:48, 3 декабря 2019 (UTC)
- Статья сейчас выглядит значительно лучше, чем когда я в последний раз её осматривал. Но некоторые замечания ещё есть.
- «с условием, что все биты текущего блока переходят в различные биты блока следующего уровня» — что именно значит это условие? Браунинг выше написал, что «8 бит из каждого 8-битного S-блока переходят в различные S-блоки на следующем уровне» — мне кажется, это не соответствует текущей формулировке?
- Мои "8-битные S-блоки" — это, конечно, имеются в виду 8-битные фрагменты текущего состояния шифруемого блока. Но да, ой, я при предыдущем чтении пропустил неверную формулировку: не просто в различные биты (это, действительно, любая перестановка так устроена), а из каждого 8-битного фрагмента биты расходятся по разным 8-битным фрагментам на следующем уровне. Мне лично помогли рисунки вот в этой статье. — Браунинг (обс.) 10:08, 4 декабря 2019 (UTC)
- Что такое «последняя трансформация» для и ?
- Многочлен — он вшит в алгоритм или это только пример и на его месте может быть любой примитивный многочлен степени ?
- Раздел «Математическое описание» про мультипликативную инверсию — как всё написанное в этом разделе относится к мультипликативной инверсии? Откуда берётся матрица LFSR?
- Раздел «Реализуемый алгоритм» — неплохо бы названия переменных привести к тому же формату, что и в разделе «Алгоритм» выше, обрамить их в TeX.
- Мне в целом вообще не понятен алгоритм, описанный в разделе «Реализуемый алгоритм». Какое преобразование, какое обратное направление, о чём речь вообще? Что такое , и ?
- «с условием, что все биты текущего блока переходят в различные биты блока следующего уровня» — что именно значит это условие? Браунинг выше написал, что «8 бит из каждого 8-битного S-блока переходят в различные S-блоки на следующем уровне» — мне кажется, это не соответствует текущей формулировке?
- adamant.pwn — contrib/talk 23:39, 3 декабря 2019 (UTC)
Добрый день! Спасибо за замечания.
- Сделано.
- Сделано.
- Можно использовать любой, но для этого многочлена получается наименьшее количество логических элементов - 138.
- Обозначено в предложении "Для вычисления мультипликативной инверсии ..." Таким образом, последняя формула математического описания - и есть формула мультипликативной инверсии для входного значения . Это указано сразу после неё.
- Предполагается, что она известна, так как имеется LFSR, который мы сами вводим в аппаратную реализацию, следовательно, про него все известно.
- Исправила. Да, - это из раздела "Математическое описание". Для того, чтобы не было путаницы, исправила это.
Student zaschitainformacii (обс.) 16:10, 4 декабря 2019 (UTC)
- Я уточню вопросы по поводу мультипликативной инверсии.
- Пожалуйста, дайте точное определение мультипликативной инверсии, которое используется в статье. Мне не ясно, почему является инверсией в обозначениях статьи; adamant.pwn — contrib/talk 18:35, 4 декабря 2019 (UTC)
- Укажите, какая именно матрица используется в выбранном LFSR (видимо, en:Linear-feedback shift register#Matrix forms, как ниже указал Браунинг?), и каким именно образом элемент поля представляется в виде вектора (видимо, используется представление поля в виде остатков по модулю характеристического многочлена LFSR и коэффициенты этого остатка складываются в вектор?); adamant.pwn — contrib/talk 18:35, 4 декабря 2019 (UTC)
- Что касается второго вопроса: мне кажется, поскольку в Halka вся машинерия с позаимствована из AES, нет необходимости расписывать всё здесь. Тем более что самый лаконичный и содержательный ответ — "как в разделе Конечное поле#Мультипликативная группа поля из 16 элементов, только на 4 бита, а 8, и многочлен другой". Это и на вопрос про определение мультипликативной инверсии отвечает. — Браунинг (обс.) 22:02, 4 декабря 2019 (UTC)
- А я вот не думаю, что отвечает. Потому что в моём понимании является инверсией от только в том случае когда , а здесь это не так и, видимо, под мультипликативной инверсией понимается не то же самое, что обратный элемент в . На Конечное поле#Мультипликативная группа поля из 16 элементов следует хотя бы сослаться в таком случае, чтоб было ясно, почему мы вдруг об элементах поля говорим как о векторах. Но вопрос даже не столько о представлении поля в целом, сколько о его связи с LFSR и его характеристическим многочленом. adamant.pwn — contrib/talk 22:35, 4 декабря 2019 (UTC)
- Секундочку. В статье же нет никакого . (Не комментирую остальное, связанное с этой частью статьи, пока не разберёмся здесь.) — Браунинг (обс.) 15:30, 5 декабря 2019 (UTC)
- В статье есть . С учётом того, что сдвиг на 255 ничего не меняет, это как раз по смыслу. adamant.pwn — contrib/talk 15:35, 5 декабря 2019 (UTC)
- Секундочку. В статье же нет никакого . (Не комментирую остальное, связанное с этой частью статьи, пока не разберёмся здесь.) — Браунинг (обс.) 15:30, 5 декабря 2019 (UTC)
- Так что делать-то? Вы меня запутали :с Student zaschitainformacii (обс.)
- См. ниже про , меня устроит, если эта неопределённость исчезнет. adamant.pwn — contrib/talk 15:17, 5 декабря 2019 (UTC)
- А я вот не думаю, что отвечает. Потому что в моём понимании является инверсией от только в том случае когда , а здесь это не так и, видимо, под мультипликативной инверсией понимается не то же самое, что обратный элемент в . На Конечное поле#Мультипликативная группа поля из 16 элементов следует хотя бы сослаться в таком случае, чтоб было ясно, почему мы вдруг об элементах поля говорим как о векторах. Но вопрос даже не столько о представлении поля в целом, сколько о его связи с LFSR и его характеристическим многочленом. adamant.pwn — contrib/talk 22:35, 4 декабря 2019 (UTC)
- Что касается второго вопроса: мне кажется, поскольку в Halka вся машинерия с позаимствована из AES, нет необходимости расписывать всё здесь. Тем более что самый лаконичный и содержательный ответ — "как в разделе Конечное поле#Мультипликативная группа поля из 16 элементов, только на 4 бита, а 8, и многочлен другой". Это и на вопрос про определение мультипликативной инверсии отвечает. — Браунинг (обс.) 22:02, 4 декабря 2019 (UTC)
- Откуда берётся и, в частности, некий момент времени ? В разделе «Алгоритм» инверсия считается непосредственно от 8-битных блоков, никакого «начального состояния » там нет. adamant.pwn — contrib/talk 18:35, 4 декабря 2019 (UTC)
- Cтранный вопрос, неясна суть. В разделе Алгоритм просто говорится, что необходимо взять мультипликативную инверсию от 8-битного куска, а возникает уже, когда мы описываем способ взятия мультипликативной инверсии. Поэтому и не должно фигурировать в разделе Алгоритм. Что такое - это какое-то типо нулевое состояние lfsr. Student zaschitainformacii (обс.)
- Оно должно фигурировать там. Если алгоритм, описанный в «Реализуемый алгоритм» вызывается как подпрограмма в основном алгоритме, то надо указать, чему равны оба его аргумента. На это можно было бы закрыть глаза, если бы выбор был чисто техническим и ни на что не влиял, но это ведь не так. Если алгоритм примет на вход и , то вернёт он , а не , как того ожидаешь когда говорят о мультипликативной инверсии. Нужно разобраться с этим. adamant.pwn — contrib/talk 15:17, 5 декабря 2019 (UTC)
- Так. Да. Подтверждаю: это серьёзная проблема. Более того, W(t) гарантированно не единичный элемент: в статье выбрано значение 0x16, которое не кодирует единичный элемент ни в какой из очевидных кодировок (единичный был бы 0x01 или что-то вроде 0x80). Возможное решение: алгоритм из статьи в действительности вычисляет разом инверсию и последующее аффинное преобразование (кстати, и правда, откуда оно взялось?) — но я в этом сооовершенно не уверен. — Браунинг (обс.) 16:16, 5 декабря 2019 (UTC)
- Оно должно фигурировать там. Если алгоритм, описанный в «Реализуемый алгоритм» вызывается как подпрограмма в основном алгоритме, то надо указать, чему равны оба его аргумента. На это можно было бы закрыть глаза, если бы выбор был чисто техническим и ни на что не влиял, но это ведь не так. Если алгоритм примет на вход и , то вернёт он , а не , как того ожидаешь когда говорят о мультипликативной инверсии. Нужно разобраться с этим. adamant.pwn — contrib/talk 15:17, 5 декабря 2019 (UTC)
- Про аффинное преобразование уже обсуждалось. Оно взялось из AES, как тут. Student zaschitainformacii (обс.) 11:41, 6 декабря 2019 (UTC)
- Cтранный вопрос, неясна суть. В разделе Алгоритм просто говорится, что необходимо взять мультипликативную инверсию от 8-битного куска, а возникает уже, когда мы описываем способ взятия мультипликативной инверсии. Поэтому и не должно фигурировать в разделе Алгоритм. Что такое - это какое-то типо нулевое состояние lfsr. Student zaschitainformacii (обс.)
- Я ещё раз прочитал статью Сурав Дас и увидел там такое предложение: «Throughout the rest of the paper referring to LFSR would mean a maximum length LFSR with a given primitive polynomial». В статье нигде нет указаний на то, что у нас maximum length LFSR (судя по Регистр сдвига с линейной обратной связью#Периодичность, это следует из того, что многочлен примитивный), но мне кажется, что на это следует указать прямым текстом, а также пояснить, что это значит, потому что именно из этого факта следует, что мы в какой-то момент обязательно обнаружим в ходе прямого LFSR. adamant.pwn — contrib/talk 18:35, 4 декабря 2019 (UTC)
- Сделано. Student zaschitainformacii (обс.)
- Я ещё раз прочитал статью Сурав Дас и увидел там такое предложение: «Throughout the rest of the paper referring to LFSR would mean a maximum length LFSR with a given primitive polynomial». В статье нигде нет указаний на то, что у нас maximum length LFSR (судя по Регистр сдвига с линейной обратной связью#Периодичность, это следует из того, что многочлен примитивный), но мне кажется, что на это следует указать прямым текстом, а также пояснить, что это значит, потому что именно из этого факта следует, что мы в какой-то момент обязательно обнаружим в ходе прямого LFSR. adamant.pwn — contrib/talk 18:35, 4 декабря 2019 (UTC)
- И ещё пара общих замечаний:
- Вы пишете, что . Во-первых, такого следствия в общем случае нет, возможно просто является собственным вектором . Если оно есть в данном конкретном случае, это стоит обосновать. Во-вторых, само равенство лишено смысла — слева от него стоит матрица, а справа от него число. Единичную матрицу традиционно обозначают как или . При этом стоит отметить, что у Сурав Дас здесь явная путаница в понятиях, сначала он пишет, что — это матрица, а потом что — это единичный элемент (видимо, поля ?), я не знаю, как это следует трактовать, надо смотреть на то, как алгоритм описан в других АИ; adamant.pwn — contrib/talk 18:35, 4 декабря 2019 (UTC)
- Сделано. Student zaschitainformacii (обс.)
- Обозначение единичной матрицы (да, это матрица, по крайней мере, можно представить в таком виде) — мелочь, важнее пункт "во-первых", который не исправлен. — Браунинг (обс.) 15:30, 5 декабря 2019 (UTC)
- Матрица там так устроена, что -я строка это коэффициенты остатка от по модулю характеристического многочлена, так что там действительно будет единичная матрица, т.к. . Конечно, ни один уважающий себя индиец об этом в своих статьях не напишет и это тоже если и указывать, то на основе статьи, которую я привёл ниже. adamant.pwn — contrib/talk 15:41, 5 декабря 2019 (UTC)
- Обозначение единичной матрицы (да, это матрица, по крайней мере, можно представить в таком виде) — мелочь, важнее пункт "во-первых", который не исправлен. — Браунинг (обс.) 15:30, 5 декабря 2019 (UTC)
- Адамант прав. Student zaschitainformacii (обс.) 11:10, 6 декабря 2019 (UTC)
- Адамант снова прокомментировал пункт "во-вторых", а пункт "во-первых" остался не исправлен (насколько я понимаю, он лечится условием "для любого W(t)"). — Браунинг (обс.) 11:57, 6 декабря 2019 (UTC)
- Я прокомментировал пункт "во-первых". adamant.pwn — contrib/talk 14:28, 6 декабря 2019 (UTC)
- Тогда я не понял. Указанная импликация неверна. Правая часть верна, но лишь благодаря конкретному виду матрицы A — либо действительно вследствие левой части, но только если уточнить, что левая часть верна для любого W(t). — Браунинг (обс.) 14:39, 6 декабря 2019 (UTC)
- Да, наверно следует указать, что левая часть выполнена для любого , тогда импликация будет нормальной, т.к. пробегает все элементы поля. adamant.pwn — contrib/talk 14:50, 6 декабря 2019 (UTC)
- Тогда я не понял. Указанная импликация неверна. Правая часть верна, но лишь благодаря конкретному виду матрицы A — либо действительно вследствие левой части, но только если уточнить, что левая часть верна для любого W(t). — Браунинг (обс.) 14:39, 6 декабря 2019 (UTC)
- Я прокомментировал пункт "во-первых". adamant.pwn — contrib/talk 14:28, 6 декабря 2019 (UTC)
- Адамант снова прокомментировал пункт "во-вторых", а пункт "во-первых" остался не исправлен (насколько я понимаю, он лечится условием "для любого W(t)"). — Браунинг (обс.) 11:57, 6 декабря 2019 (UTC)
- Адамант прав. Student zaschitainformacii (обс.) 11:10, 6 декабря 2019 (UTC)
- Сделано. Student zaschitainformacii (обс.)
- Сейчас, похоже, наконец-то правильно описано ограничение на «случайную перестановку». Так как она оказалось очень трудной для перевода и восприятия, было бы идеально ещё сделать картинку, иллюстрирующую фразу «все биты одной 8-битной части текущего блока переходят в биты различных 8-битных частей блока следующего уровня» по аналогии с теми, которые расположены в статье, на которую дал ссылку Браунинг (но это уже немного выходит за ВП:ТДС). adamant.pwn — contrib/talk 18:35, 4 декабря 2019 (UTC)
- Это задача со звёздочкой, она необязательна) Student zaschitainformacii (обс.)
- Вы пишете, что . Во-первых, такого следствия в общем случае нет, возможно просто является собственным вектором . Если оно есть в данном конкретном случае, это стоит обосновать. Во-вторых, само равенство лишено смысла — слева от него стоит матрица, а справа от него число. Единичную матрицу традиционно обозначают как или . При этом стоит отметить, что у Сурав Дас здесь явная путаница в понятиях, сначала он пишет, что — это матрица, а потом что — это единичный элемент (видимо, поля ?), я не знаю, как это следует трактовать, надо смотреть на то, как алгоритм описан в других АИ; adamant.pwn — contrib/talk 18:35, 4 декабря 2019 (UTC)
- И ещё пара общих замечаний:
- О каком именно аффинном преобразовании и в каком векторном пространстве идёт речь в разделе «Алгоритм»? adamant.pwn — contrib/talk 18:35, 4 декабря 2019 (UTC)
- Это ясно из литературы и викиссылки, которые находятся в этом же предложении. Там дважды указан явный вид (константная матрица) для аффинного преобразования. Student zaschitainformacii (обс.)
- Из «AES-подобное» не очевидно, что используется то же самое преобразование, что в SubBytes из AES, стоит на это более явно указать. Кстати, S-блок это само преобразование, как сейчас указано в статье, или это «таблица замен», с помощью которой оно проводится, как указано в статье про AES? Если второе, то что в этой таблице хранится? Для каждого байта заранее посчитан байт, который получится после преобразования? Вроде ни в одной из статей это явно не указано. adamant.pwn — contrib/talk 15:09, 5 декабря 2019 (UTC)
- Да, это преобразование. Почему вам не очевидно? Если написано "нелинейное преобразование (S-блок)" и ссылка прям на преобразование SubBytes. Как на это указать еще более явно? По викиссылке о преобразовании рассказано достаточно подробно. Student zaschitainformacii (обс.) 11:10, 6 декабря 2019 (UTC)
- S-блоки, они же SubBytes(), есть в разных шифрах, и они, как правило, разные. Многочлен у нас не такой, как в AES, почему бы и аффинному преобразованию не быть другому? Тем более что в статье указан xor со значением 0x24, что в AES не упоминается. Мне кажется, мы этого не поймём, пока не разберёмся, что за "инверсию" вычисляет алгоритм. — Браунинг (обс.) 11:57, 6 декабря 2019 (UTC)
- Да, это преобразование. Почему вам не очевидно? Если написано "нелинейное преобразование (S-блок)" и ссылка прям на преобразование SubBytes. Как на это указать еще более явно? По викиссылке о преобразовании рассказано достаточно подробно. Student zaschitainformacii (обс.) 11:10, 6 декабря 2019 (UTC)
- Это ясно из литературы и викиссылки, которые находятся в этом же предложении. Там дважды указан явный вид (константная матрица) для аффинного преобразования. Student zaschitainformacii (обс.)
- О каком именно аффинном преобразовании и в каком векторном пространстве идёт речь в разделе «Алгоритм»? adamant.pwn — contrib/talk 18:35, 4 декабря 2019 (UTC)
- На матричное представление LFSR неплохо бы дать викиссылку (поскольку это сейчас раздел английской статьи, надо перевести этот раздел в русскую статью, либо в крайнем случае сделать в русской статье заголовок раздела и поставить туда {{в планах}}). У меня лично вопросы остались к "реализуемому алгоритму". (Кстати, превращать там S-box в W-box — это было уже лишнее.) Я (тоже) так и не понял про обратное преобразование. Про прямое преобразование понятно: начинаем с такого-то состояния, выполняем до тех пор, пока не получим такое-то. А про обратное преобразование такого не написано. И дальше пункт 5 ещё подразумевает, что мы выполняем LFSR туда-обратно (или только обратно? Непонятно, потому что тело цикла не выделено), пока в сумме не получится ровно 255 — а что мы меняем между итерациями этого внешнего цикла перебора? — Браунинг (обс.) 17:29, 4 декабря 2019 (UTC)
- Если прямое преобразование было сделано раз, то обратное делаем . Сначала делается только прямое, потом только обратное, здесь всё достаточно прозрачно, вроде. adamant.pwn — contrib/talk 18:37, 4 декабря 2019 (UTC)
- Не знаю, не знаю, я вот не понимаю, почему бы не расписать в статье этот пункт про обратное преобразование так же ясно, как и предыдущий, про прямое. Плюс ещё вопрос про внешний цикл остаётся. Тогда, кстати, станет понятнее, откуда взялось . — Браунинг (обс.) 22:02, 4 декабря 2019 (UTC)
- Сделано. Student zaschitainformacii (обс.)
- Не знаю, не знаю, я вот не понимаю, почему бы не расписать в статье этот пункт про обратное преобразование так же ясно, как и предыдущий, про прямое. Плюс ещё вопрос про внешний цикл остаётся. Тогда, кстати, станет понятнее, откуда взялось . — Браунинг (обс.) 22:02, 4 декабря 2019 (UTC)
- Если прямое преобразование было сделано раз, то обратное делаем . Сначала делается только прямое, потом только обратное, здесь всё достаточно прозрачно, вроде. adamant.pwn — contrib/talk 18:37, 4 декабря 2019 (UTC)
Мда, знатно этот вредный индиец накрутил всю эту лабуду с W(t)... Выкинуть бы это к чёрту да написать своими словами: вот, мол, генератор мультипликативной группы поля , вот домножение на него, реализованное с помощью LFSR... Но непонятно, с опорой на что. К сожалению, книжка, которую индиец посылает читать про LFSR, говорит лишь, что feedback shift register позволяет вычислять линейные рекуррентные последовательности в конечном поле, а что это соответствует домножению на порождающий элемент -- это лишний логический шаг, который мы делать не вправе. — Браунинг (обс.) 22:02, 4 декабря 2019 (UTC)
- Да это не индиец. Просто в теории кодирования принят свой специфический язык и в терминах общей алгебры они без крайней необходимости не пишут. Вот хотя бы Алгоритм Берлекэмпа — Мэсси: замечательная процедура для поиска минимальной линейной рекурренты, которой удовлетворяет последовательность чисел. Работает для последовательностей над примерно любыми полями, а что мы в статьях обычно видим? Байки про регистры сдвига для очень частного случая , потому что общий случай мало кому интересен. Пойти чтоли переработать статью про него… adamant.pwn — contrib/talk 22:47, 4 декабря 2019 (UTC)
- На счёт лишнего логического шага — это сейчас уже unpublishably unoriginal факт. Если немного покопать, можно легко найти публикацию, которая его формулирует (с. 108, лемма 2.1). adamant.pwn — contrib/talk 23:48, 4 декабря 2019 (UTC)
- Я за позицию Браунинга не дописывать лишние логические шаги. Сурав Дас не очень заморачивался математически доказывать и обосновывать свой алгоритм, не думаю, что я вправе это делать. Я думаю, что и обычному викичитателю это тоже не так интересно. Student zaschitainformacii (обс.)
- Я думаю, вы неверно поняли позицию Браунинга. Мы не можем сами додумывать что-то. Конкретно факт о том, что один шаг LFSR соответствует умножению на (как и тот факт, что является первообразным элементом в таком представлении поля) по модулю характеристического многочлена додумывать не надо, т.к. я привёл АИ, на основании которого его можно внести. adamant.pwn — contrib/talk 14:49, 5 декабря 2019 (UTC)
- Я за позицию Браунинга не дописывать лишние логические шаги. Сурав Дас не очень заморачивался математически доказывать и обосновывать свой алгоритм, не думаю, что я вправе это делать. Я думаю, что и обычному викичитателю это тоже не так интересно. Student zaschitainformacii (обс.)
- Между прочим, я тут загнал в гуглопереводчик аннотацию той японской статьи, на которую я давал ссылку, и выяснилось, что там говорится, что шифр не так устойчив к дифференциальному криптоанализу, как заявлял автор. Стоит добавить об этом хоть одну фразу. — Браунинг (обс.) 15:51, 5 декабря 2019 (UTC)
- И ещё. У меня организационное предложение: не актуальную часть обсуждения (где-то до реплики 16:10, 4 декабря 2019 включительно) загнать в {{скрытый блок}}, а в остальной части обсуждения заменить нумерованные списки на ненумерованные (нумерация всё равно разъехалась) и добавить подписи к каждому пункту. — Браунинг (обс.) 15:51, 5 декабря 2019 (UTC)
- Я не против. adamant.pwn — contrib/talk 15:56, 5 декабря 2019 (UTC)
- Спасибо за попытку сделать обсуждение более понятным. К сожалению, я ужасно путаюсь, потому что одни и те же вопросы вы обсуждаете в разных ветках и это какой-то ад. Поэтому постараюсь ответить здесь на все ваши вопросы. То есть на те вопросы, которые я не прокомментировала выше. В дальнейшем прошу писать ниже и списочком, а лучше вписывайтесь в какой-то один список, пока я не оставлю новый ответ. Как это и было раньше. Это, как мне кажется, намного удобнее и чтобы понять, что конкретно вы спрашиваете и просите исправить, на что именно мне нужно отвечать. Спасибо за понимание.
- Я не против. adamant.pwn — contrib/talk 15:56, 5 декабря 2019 (UTC)
Итак, мультипликативная инверсия определяется в определенном поле. Это поле Галуа по модулю многочлена. Записывается так: GF(28) = GF(2)[x]/(x8 + x4 + x3 + x + 1), Rijndael's finite field.
Вот пример: , . Если перемножить эти два многочлена и результат поделить столбиком на , найти остаток от деления, то он будет равен . Получили единичку, это значит, что они обратны друг другу по модулю . Кстати, нам понадобится именно такое представление дальше, например,
По поводу вопроса об initial_seed = W(t). В статье явным образом не говорится, что это единичный элемент, однако на странице 6 в статье приведён пример конкретного S-блока и то, что там называется initial_seed'ом, является единичным элементом. Возможно, это подразумевалось автором или он считал, что это очевидно из самого названия initial seed. В статье в конкретном примере initial_seed = 0x16, в таблице подстановки этому значению соответствует число 0x32, и после того как его проXORить с данным константным значением 0x24, получится вновь 0x16. Совпадение? Не думаю. Initial_seed может быть любым - это просто параметр для построения шифра. Кстати, полезная викистраница про это: S-box AES
W(t), по всей видимости, в LFSR это вектор из ноликов и единичек, соответствующих тому значению, которое хранит каждый отдельный триггер в LFSR. Функцией обратной связи для LFSR является многочлен , по модулю которого рассматривается поле.
Аффинное преобразование в статье не описывается вообще.
Student zaschitainformacii (обс.) 13:13, 6 декабря 2019 (UTC)
- tl;dr: видимо, adamant прав, наша "инверсия" не инверсия , а . Пара поправок: аффинное преобразование в статье не только не описывается, но и не упоминается, откуда оно взялось вообще? И многочлен у нас немножко другой (это не затрагивает остального рассуждения). — Браунинг (обс.) 13:40, 6 декабря 2019 (UTC)
- Ой, да, перепутала. Про аффинное преобразование вообще тогда упоминание уберу. На страницах 3-4 оригинальной статьи сформулирована и доказана теорема, что реализуемый на LFSR алгоритм будет возвращать мультипликативную инверсию. Student zaschitainformacii (обс.) 13:52, 6 декабря 2019 (UTC)
- На страницах 3-4 он доказывает, что на выходе будет получено такой что . Почему, собственно, это мультипликативная инверсия он никак не обосновывает и есть все основания полагать, что это просто неверное утверждение. adamant.pwn — contrib/talk 14:35, 6 декабря 2019 (UTC)
- Да. (Или не неверное утверждение, а крайне неортодоксальная терминология.) — Браунинг (обс.) 14:39, 6 декабря 2019 (UTC)
- На страницах 3-4 он доказывает, что на выходе будет получено такой что . Почему, собственно, это мультипликативная инверсия он никак не обосновывает и есть все основания полагать, что это просто неверное утверждение. adamant.pwn — contrib/talk 14:35, 6 декабря 2019 (UTC)
- Упс, стоп. Я попробовал закодить этот алгоритм и воспроизвести S-блок из статьи, и у меня ничего не получилось. Точнее, S[0x16] = 0x32 получилось, а остальное нет (вместо 2c, 20, dc... получаю 2d, ae, 23...). Что ставит под сомнение выводы, основывающиеся на этом совпадении. :( Код с Гитхаба, на который я давал ссылку выше, к сожалению, не поможет, поскольку там S-блок взят целиком из статьи. — Браунинг (обс.) 14:15, 6 декабря 2019 (UTC)
- А вы авторитетный источник? Я не могу ответить, потому что Адамант ввел свои обозначения. Что такое D? Что я понимаю. У нас есть начальное состояние. Через 255 шагов LFSR возвращает нас к начальному состоянию. При помощи этого свойства и XORа находится мультипликативная инверсия. Мы все уже несколько раз перечитали эту статью. О какой другой мультипликативной инверсии может идти речь, кроме той, что есть в литературе по AES, а именно: Let , the multiplicative inverse in GF(2^8) ??? Ничего больше я понять не могу.
- Это тупик. Давайте не пытаться запутывать самих себя. Student zaschitainformacii (обс.) 14:25, 6 декабря 2019 (UTC)
- Вопрос риторический, ответ ожидаемый: не АИ я, не АИ. D — можно считать P=QD определением. "О какой другой мультипликативной инверсии может идти речь" — так вот именно этого мы и не понимаем! Потому что это определённо не та инверсия. Если вы понимаете, то сможете написать на любом языке программирования программу, которая воспроизводит S-блок из статьи. Я вот не осилил. — Браунинг (обс.) 14:36, 6 декабря 2019 (UTC)
- это некоторый элемент такой что и, соответственно, . Можно считать, что по модулю примитивного многочлена. adamant.pwn — contrib/talk 14:41, 6 декабря 2019 (UTC)
- Это тупик. Давайте не пытаться запутывать самих себя. Student zaschitainformacii (обс.) 14:25, 6 декабря 2019 (UTC)
- А вы авторитетный источник? Я не могу ответить, потому что Адамант ввел свои обозначения. Что такое D? Что я понимаю. У нас есть начальное состояние. Через 255 шагов LFSR возвращает нас к начальному состоянию. При помощи этого свойства и XORа находится мультипликативная инверсия. Мы все уже несколько раз перечитали эту статью. О какой другой мультипликативной инверсии может идти речь, кроме той, что есть в литературе по AES, а именно: Let , the multiplicative inverse in GF(2^8) ??? Ничего больше я понять не могу.
- Ой, да, перепутала. Про аффинное преобразование вообще тогда упоминание уберу. На страницах 3-4 оригинальной статьи сформулирована и доказана теорема, что реализуемый на LFSR алгоритм будет возвращать мультипликативную инверсию. Student zaschitainformacii (обс.) 13:52, 6 декабря 2019 (UTC)
- На самом деле есть компромиссный вариант: выкинуть всю конкретику и оставить общие слова с атрибуцией ("По утверждению автора, вычисляется мультипликативная инверсия..."). Не знаю, сочетается ли это с ВП:ТДС-4. Может, и сочетается, поскольку это всё вторичными источниками (описывающими именно Halka) всё равно не освещено. — Браунинг (обс.) 14:36, 6 декабря 2019 (UTC)
- Ваш вариант мне абсолютно по душе. Но, кстати, я нашла статью c абсолютно таким же математическим описанием и примитивным многочленом(чорт, не могу скинуть ссылку на сайхаб, но вот doi: 10.1109/ICCE-TW.2015.7217019), мне тут показалось, что про обычную инверсию и говорится, потому что они пытаются to compute the multiplicative inverse of any non-zero element in Galois Field — Эта реплика добавлена участником Student zaschitainformacii (о • в) 14:51, 6 декабря 2019 (UTC)
- Так у этих-то парней начальное состояние 00000001, а не как у некоторых индийцев. — Браунинг (обс.) 14:51, 6 декабря 2019 (UTC)
- Короче, что оставить и что убрать? Мы все равно ничего не поняли :D Student zaschitainformacii (обс.) 14:51, 6 декабря 2019 (UTC)
- В общем, я думаю, ситуация здесь такова, что на самом деле Сурав Дас самовольно расширяет понятие мультипликативной инверсии и на самом деле работает не с ней, а с некоторым параметрическим семейством инверсно-подобных преобразований, каждое из которых всё ещё называет мультипликативной инверсией. Скорее всего, этот произвольно выбранный действительно служит некоторым замещением для аффинного преобразования из AES, но так как это явно нигде не прописано, внести в статью мы это также не можем. Так что, видимо, следует обойтись добавлением в статью того, что данное преобразование является мультипликативной инверсией «по утверждению автора» (я уже внёс это в статью). adamant.pwn — contrib/talk 15:32, 6 декабря 2019 (UTC)
- Подтверждением того, что служит заменой аффинному преобразованию служит, например, такая строчка: «Using a different initial seed, this also gets a free linear transformation for Halka S-box». Я думаю, на её основании можно уточнить в статье, что произвольно выбранный позволяет «автоматически» проводить линейное преобразование после взятия инверсии. adamant.pwn — contrib/talk 15:38, 6 декабря 2019 (UTC)
- В общем, я попробовал расписать подробнее этот момент на основе того, что Сурав Дас пишет у себя про параметризацию, думаю сейчас вопрос решён более менее приемлемым образом. adamant.pwn — contrib/talk 15:52, 6 декабря 2019 (UTC)
- В общем, я думаю, ситуация здесь такова, что на самом деле Сурав Дас самовольно расширяет понятие мультипликативной инверсии и на самом деле работает не с ней, а с некоторым параметрическим семейством инверсно-подобных преобразований, каждое из которых всё ещё называет мультипликативной инверсией. Скорее всего, этот произвольно выбранный действительно служит некоторым замещением для аффинного преобразования из AES, но так как это явно нигде не прописано, внести в статью мы это также не можем. Так что, видимо, следует обойтись добавлением в статью того, что данное преобразование является мультипликативной инверсией «по утверждению автора» (я уже внёс это в статью). adamant.pwn — contrib/talk 15:32, 6 декабря 2019 (UTC)
- У них то же математическое описание потому что они его скопировали у Sourav Das, вон и ссылки в примечаниях есть. А начальное состояние действительно 00000001, так что инверсия честная получается. adamant.pwn — contrib/talk 15:00, 6 декабря 2019 (UTC)
- Я (снова) посмотрел статью, автор явно в курсе того, что «мультипликативная инверсия» у него определена неоднозначно (см. секцию Parametrization) и он в этом проблем не видит. В принципе, можно оставить конкретику, но указанную атрибуцию добавить к «Для вычисления мультипликативной инверсии заданного входного вектора…». То есть, что это уважаемый автор статьи заявляет, что нам нужно именно искать. adamant.pwn — contrib/talk 15:18, 6 декабря 2019 (UTC)
- Ваш вариант мне абсолютно по душе. Но, кстати, я нашла статью c абсолютно таким же математическим описанием и примитивным многочленом(чорт, не могу скинуть ссылку на сайхаб, но вот doi: 10.1109/ICCE-TW.2015.7217019), мне тут показалось, что про обычную инверсию и говорится, потому что они пытаются to compute the multiplicative inverse of any non-zero element in Galois Field — Эта реплика добавлена участником Student zaschitainformacii (о • в) 14:51, 6 декабря 2019 (UTC)
- За. Статья прошла достаточно долгий путь и, на мой взгляд, она сейчас намного лучше, чем была изначально. Единственное, что ещё — Браунинг выше упомянул, что в [1] в преамбуле заявляют о некоторых проблемах с устойчивостью к дифференциальному анализу, если это так, то действительно стоит упомянуть об этом в статье. adamant.pwn — contrib/talk 16:05, 6 декабря 2019 (UTC)
- Спасибо, сделано) Student zaschitainformacii (обс.) 16:53, 6 декабря 2019 (UTC)
Итог
[править код]Статья избрана. Требованиям ВП:ТДС соответствует. Статья прошла долгий и сложный путь, но в итоге пришла к статусу. Поздравляю! — Красныйхотите поговорить? 19:57, 7 декабря 2019 (UTC)