Pull to refresh

Comments 56

Входными данными для обоих функций является блок данных длиной 512 бит.

Думаю, следует уточнить, что это относится непосредственно к хэшированию, но в стандарте также описаны функции сжатия (для сообщений больших 512 бит) и дополнения (для сообщений меньших 512 бит).

P.S. Нормативным написанием является «хэширование», «хэш», а не «хешеривание», «хеш». Собственно даже по названию стандартов (что старого, что нового) это видно. Да и логически, по-моему, сложнее обосновать преобразование «hash» в «хеш», чем в «хэш».
Вы совершенно правы. Вычисления х{е, э}ш-функции возможно для сообщений любой длины. Однако, на каждой итерации обрабатывается блок длиной именно в 512 бит.
Что касается вашего замечания касательно правильности написания слова х{е, э}ш, то тема эта не нова и в интернете уже давно ведется обсуждение этого вопроса. Например вот в этой ветке. однако к какому то определенному решению так никто и не пришел, кому то ближе слово хеш, а кому то хэш. Я из числа первых, поэтому всегда использовал вариант с буквой е. Может быть он и неправильный, что спорно, но более привычный. Поэтому я все таки оставлю текущий вариант, и надеюсь на ваше понимание:)
По-моему неплохо бы этот момент уточнить прямо в посте, рядом с процитированной фразой. А то я полез читать сам стандарт, чтобы уточнить этот момент :)

Слово «хеш» (и аналогичные, например «кеш») мне лично не нравятся прежде всего потому-что допускают двоякое прочтение на русском. Уже сталкивался в реале с прочтением через «е». Потому обрадовался когда обратил внимание, что в ГОСТе (ещё старом) используется «мой» вариант. Хотя иногда бессознательно подстраиваешься под собеседника и пишешь через «е».

Добавил следующий текст:
В случае, если длина сообщения больше 512 бит, то происходит разбиение сообщения на блоки. В случае же, если длина меньше 512 бит, то производится дополнение сообщения.

Думаю, так станет понятнее.
Спасибо за замечание)
UFO just landed and posted this here
соу хаш литл бэйби доооуунт йу край…
UFO just landed and posted this here
хабр скушал тэг «сарказм».

Далеко не все звуки из одного языка можно перенести в другой без потерь. И если утверждать что Hash — это Хаш, то Hush транскрибировать придется точно так же вместе с add — ад и bad — бад.
UFO just landed and posted this here
А я вот слышу «э». И если верить словарям, то транскрипция /hæʃ/, а в других источниках /æ/ характеризуется как «Долгое «э» с широко раскрытым ртом и сильно опущенной нижней челюстью, среднее между «а» и «э»». Но пускай среднее, но всё долгое «э», а не «а». А уж е откуда взяло вообще не понять. Вроде как оно может заменять английское «a» после русских «ж», «ш» и «ч», но про «х» или «к» не упоминается.
UFO just landed and posted this here
Индийские корни? Т.е. город Стрий в Львовской области имеет какое-то сакральное отношение к Индии? =)
Всё более популярна сейчас идея как раз об обратном переносе культуры — от древних славян-многобожцев в Индию.
UFO just landed and posted this here
Имя Стрибога восходит к древнему корню «стрег», что означает «старший», «дядя по отцу». godsbay.ru/slavs/stribog.html

Возможно, что это не у русских слов индийские корни, а у санскрита славянские корни, потому то многие слова и похожи.
UFO just landed and posted this here
Технари не могут в лингвистику, да? Санскрит и русский — равноправные потомки праиндоевропейского языка, с точки зрения официальной науки.
Причем санскрит законсервировался намного раньше, и куда ближе к ПИЕ, чем русский (или даже древневосточнославянский).
А что за свидетельства? Просто во времена ведического санскрита (~1500 лет до н.э) протославянский язык ещё толком не отпочковался от балтославянской общности. Кстати, балтийские языки в этом смысле к санскриту ещё ближе, в т.ч. по грамматическим свойствам. Так что у литовского в этом отношении даже побольше прав записываться в «прародители санскрита» :)

Но с учётом миграций индоевропейских племён ситуация, при которой давно ушедшие на северо-запад балтославяне каким-то образом дают начало индийскому языку, кажется очень сомнительной. Намного логичней рассматривать ситуацию, при которой и та и другая группа ветвь языков — соседние и развивающиеся из общего корня, а сохранение в славянских языках архаичных черт легко объясняется тем, что славяне селились преимущественно на не слишком заселённых территориях и не были подвержены действию языкового субстрата автохтонных племён (как это произошло, например, с германскими и романскими племенами — Западная Европа к моменту их прибытия была уже весьма заселена неиндоевропейским населением)
Почему-то в глазах многих термин «индоевропейские» ассоциируется прежде всего с Индией.
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
Тогда еще нужно будет переименовать всех демонов в «прислужники» например. А вот что делать с 666 — я еще не придумал :(
Ну как минимум тем, то стандарта sha3 ещё нет даже черновой версии. А ГОСТ 34.11-2012 уже введён в действие с 01.01.2013.
Все прекрасно знали о сроках принятия, кандидатах и всем остальном. Так что, смысла торопиться со своим велосипедом не было.
Не думаю, что это велосипед, в плане шифрования у нас всегда всё нормально было
Мне вот кстати тоже непонятно это желание быть «не такими как все». Это еще можно было понять в конце 80-х, начале 90-х когда принимались старые стандарты. Но сейчас… хз, может они знают что то, чего не знаем мы.
UFO just landed and posted this here
Радует, что появился еще один хэш-алгоритм. Но хочется понять его приемущества:
1) насколько он устойчив к коллизиям по сравнению например с SHA2 или SHA2?
2) насколько он требователен к вычислительным ресурсам по сравнению с другими?
3) на каких аппаратных архитектурах ожидаются лучшие результаты?
4) рекомендации к применению этого алгоритма: где он к месту, а где лучше использовать другие?
Для прикладных программистов ситуация пока в тумане.
UFO just landed and posted this here
Случайность недостаточно хороша, как минимум. да и как вы дешифровывать будете?
Таблицы подбираются для усложнения взлома.
UFO just landed and posted this here
Вам ничто не мешает для своих нужд применять доморощенные таблицы замен, вычисленные каким угодно способом. Только потом не говорите, что вас не предупреждали, если ваш хеш будет взломан. И вообще, надеюсь, вы имеете профессиональный опыт в криптографии, потому что чуть более, чем всегда, бывает так, что «усовершенствования», вносимые в стандартный криптоалгоритм дилетантами, приводят к образованию в нем фатальных уязвимостей.

При чем здесь дороги с двусторонним движением? Может лучше вообще отказаться от автомобилей? Ведь из-за них в день так много смертей случается? И переход на дороги с односторонним движением может лишь сократить, но не устранить эти случаи гибели людей.
UFO just landed and posted this here
Мне как-то говорили, что изобретают свои криптографические алгоритмы 2 типа людей: гении и глупцы. Вы так уверены, что взятие дополнительной функции от сообщения вместо константы увеличит криптостойкость? Я вот нет.
UFO just landed and posted this here
UFO just landed and posted this here
Для «генерации хаоса» ни в коем случае нельзя использовать исходные сообщения в общем случае, ибо исходное сообщение, в реальных применениях, имеет какой-либо практический смысл, следовательно, оно не является случайным!

Так что использовав исходное сообщение мы практически наверняка понизим криптостойкость.
UFO just landed and posted this here
Хоть бы ссылку на оригинальную реализацию дали. А то подстановка сначала «Pi», а потом «Sbox» обзывается…
Указал. Я правильно понимаю, что это ваша реализация и вы являетесь одним из авторов алгоритма?
Да, реализация моя. Она ориентирована в первую очередь на кроссплатформенность, а потом уже на производительность. И нет, я не один из авторов стандарта, просто независимый эксперт.
В стандарте в качестве примера используются следующие строки:

Строка: 210987654321098765432109876543210987654321098765432109876543210
512: 486f64c1917879417fef082b3381a4e211c324f074654c38823a7b76f830ad00fa1fbae42b1285c0352f227524bc9ab16254288dd6863dccd5b9f54a1ad0541b
256:
00557be5e584fd52a449b16b0251d05d27f94ab76cbaa6da890b59d8ef1e159d

Строка: ыверогИ ыкълп яырбарх ан ималертс яром с ътюев, ицунв ижобиртС, иртев еС
512: 28fbc9bada033b1460642bdcddb90c3fb3e56c497ccd0f62b8a2ad4935e85f037613966de4ee00531ae60f3b5a47f8dae06915d5f2f194996fcabf2622e6881e
256:
508f7e553c06501d749a66fc28c6cac0b005746d97537fa85d9e40904efed29d
О Бояне, соловію стараго времени!
С первой строкой согласен, а во второй у вас ошибочка с запятыми)
Вот так она должна выглядеть:
ыверогИ ыкълп яырбарх ан ималертс яром с ътюев, ицунв ижобиртС, иртев еС
Упс, оказывается это хабр пробелы перед запятыми глотает. В общем там пробелы не после запятых а перед должны стоять.
UFO just landed and posted this here
Круто!
Добавлю в пост, если вы не против.
UFO just landed and posted this here
В псевдокоде у вас написано что пункты 7 и 8 следующие
7. Вычислить h = g(0, m, h)
8. Для хеш-функции с длиной выхода в 512 бит возвращаем h в качестве результата. Для функции с длиной выхода 256 бит возвращаем MSB256(h).
но в C#
h = G_n(N_0, h, N);
h = G_n(N_0, h, Sigma);
Получается 8 шаг должен быть
h = g(0, Σ, h)
Спасибо за замечание. Я в описании псевдокода последний шаг пропустил.

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

Sign up to leave a comment.

Articles