Изначально, функция N-Hash была предназначена для того, чтобы решить проблему подмены информации на пути между двумя пользователями телефонной связи (Nippon Telegraph and Telephone — телекоммуникационная компания) и ускорить поиск данных. Например, если человек посылает смс-сообщение, то перед доставкой оно будет проверено на подлинность с помощью хеш-функции. А если пользователю продукции Nippon Telegraph and Telephone надо быстро найти в телефоне чей-либо контакт, то с помощью N-Hash можно упростить процесс поиска имени в списке. Это осуществляется благодаря тому, что хеш-кодом (маленькой по объёму определяющей частью контакта) имени объявляется первая буква контакта.
В основе алгоритма N-Hash лежит блочный алгоритм шифрования FEAL. Крупнейшая телекоммуникационная компания Nippon Telegraph and Telephone создала FEAL на основе DES. Но хотя этот алгоритм и выигрывает в быстродействии у DES, он является очень ненадежным и легко уязвимым: криптоаналитику требовалось очень мало информации, чтобы взломать алгоритм. Именно взлом алгоритма FEAL повлек за собой появление хеш-функции N-Hash в 1990 году. N-Hash также выигрывает в скорости у DES: по сравнению с 9 Кбит/сек у DES, N-Hash работает со скоростью 24 Кбит/сек для 15-раундовой схемы и со скоростью 29 Кбит/сек для 12-раундовой. При этом Nippon Telegraph and Telephone добилась повышения надёжности по сравнению с FEAL[1].
В течение некоторого времени алгоритм N-Hash использовался фирмой Nippon Telegraph and Telephone в соответствии с целями данной функции, но через некоторое время был разработан метод дней рождения, который с лёгкостью взламывал этот алгоритм. В связи со взломом отказались не только от N-Hash, но и почти от всех функций, основанных на блочных шифрах, так как для всех них характерна одна и та же проблема: они легко уязвимы методом дней рождения. Вместо них теперь используют более надежные функции, основанные на MD — технологиях: MD5, SHA-1 и другие, приведенные в списке функций, которые на данный момент считаются надежными (согласно стандарту ISO/IEC 10118).
Использование
Функция N-Hash использовалась в течение недолгого времени в начале 1990-х годов, пока не была взломана методом дней рождения.
N-Hash предназначалась для решения проблемы подмены данных:
Для современного человека эта проблема может легко быть описана на примере взаимодействия человека и интернет-магазина. Когда пользователь заказывает какой-нибудь товар в интернет-магазине, то магазин присылает ему номер заказа, сумму платежа и т. д. Далее, когда пользователь пытается оплатить заказ с помощью, например, Webmoney, то Webmoney вычисляет хеш-код полученного сообщения и сравнивает его с хеш-кодом, полученным от интернет-магазина. Если эти хеш-коды совпадают, то информация, присланная пользователем, правдива. Если не совпадают, то информация определяется как ложная и платеж не проходит.
Другой вариант использования прост: упорядочивание контактов в мобильном телефоне по алфавиту и поиск контакта по первой букве. Хеш-кодом имени выбирается первая буква этого имени, следовательно, когда человек нажимает некоторую букву в своем телефоне, то ищется хеш-код, который совпадает с этой буквой и на экран выводятся контакты, начинающиеся с неё.
Если дан конкретный человек, то можно взять у него отпечаток пальца;
Невозможно найти человека по отпечатку его пальца (если нет базы данных с отпечатками пальцев всех людей, а её нет);
Невозможно найти второго человека с таким же как у другого отпечатком пальца.
Однонаправленность решает очень важную проблему. Рассмотрим её на примере.
Алиса и Боб традиционно обозначают субъектов передачи информации.
Примеры
Допустим, Алиса подписала контракт с известным Алисе и Бобу хеш-кодом . Если бы была неоднонаправленная, то Боб мог бы найти такой другой контракт , что и, значит, смог бы утверждать, что Алиса подписала .
Допустим, Алиса имеет один и тот же отпечаток пальца h с каким-нибудь преступником, тогда Боб смог бы утверждать, что этот преступник — Алиса.
Устойчивость к столкновениям
Чтобы предотвратить возможность Алисы использовать метод «дней рождения» для обмана Боба, очень удобно ввести ещё более сильное условие, чем условие однонаправленности.
H такова, что трудно найти сообщения и , такие что их хеш-коды совпадают. То есть невозможно найти двух человек с одинаковыми отпечатками пальцев.
Данное условие называется устойчивостью к столкновениям и для хеш-функции N-Hash оно не выполняется.
По причине неустойчивости к столкновениям Алиса может обмануть Боба таким образом (метод «дней рождения»):
Алиса пишет две версии контракта: одна из них выгодна для Боба, а другая нет;
Внося небольшие изменения в каждый контракт (например, пробел заменяет на два пробела), она добьется того, что версий контрактов будет достаточно много для подбора и , для которых совпадают хеш-коды (версия выгодна Бобу, а — нет) (если в контракте 34 строки, то, внося или не внося изменения в каждую из строк, легко получить версий контрактов);
Теперь Алиса сможет доказать, что Боб подписал .
Для того, чтобы избежать подобной проблемы, достаточно вносить косметические изменения в подписываемый контракт. И хотя это действие никак не изменяет хеш-функцию H, а, значит, никак не влияет на её устойчивость к столкновениям, но человек этим действием получит новую версию контракта, хеш-код которого не совпадает с хеш-кодом версии контракта злоумышленника. То есть, если Боб в 5-й строке поставит в каком-нибудь месте запятую, или поставит две точки вместо одной, то Алиса не сможет доказать, что он подписал другой контракт (так как его хеш-код уже не совпадает с хеш-кодом контракта Алисы).
Можно рассмотреть жизненный пример: когда нотариус ставит печать в подписываемый контракт, он вносит туда косметические изменения.
Цели N-Hash
Для того, чтобы понять как работает функция N-Hash, необходимо перейти на более научную речь. Ниже приведены цели данной функции не на примерах, а в соответствии с тем, как они осуществляются и с соответствующей терминологией.
Данное свойство необходимо для того, чтобы исключить возможность злоумышленника внедрить некоторую ложную информацию в исходное сообщение. Для обеспечения целостности должна быть возможность обнаружить любые изменения в тексте сообщения (замена, вставка, удаление). Целостность обеспечивается путём внедрения в исходное сообщение избыточной информации, которая будет являться проверочной комбинацией. Такая комбинация называется контрольной суммой и её можно вычислить с помощью специального алгоритма. Так как этот алгоритм зависит от секретного ключа, то внедрение ложной информации в сообщение маловероятно.
, где salt — избыточная информация, M — сообщение - контрольная сумма;
Из формулы следует, что если меняется salt, то меняется и S (контрольная сумма), а значит изменялось и и .
То есть можно сделать вывод, что была добавлена ложная информация.
Функция N-Hash работает с сообщениями M произвольной длины. При этом на выходе получается хеш-код фиксированной длины в 128 бит. Это получается за счет того, что сообщение делится на блоки , размером 128 бит, и алгоритм работает последовательно с каждым из блоков.
Данное свойство выполняется для однонаправленных функций, какой и является N-Hash. Достоверность сообщения M проверяется путём нахождения конечного хеш-кода (дайджеста сообщения) дважды (отсылающая и принимающая стороны). Результаты сравниваются и, если они совпадают, то информация достоверна. Целостность не гарантирует достоверность.
Обеспечение конфиденциальности:
на сайтах, где нужно вводить логин и пароль, пароль после ввода переводится в хеш-код. То есть изначально пользователь вводит пароль M, но для входа в защищённую область используется хеш-код . По известному хеш-коду h и функции H вычислить M очень трудно, чем и обеспечивается конфиденциальность пароля.
Аутентификация — это процедура проверки подлинности пользователя или данных при помощи некоторого критерия.
Возникает вопрос, как хеш-функция обеспечивает правдивость аутентификации. Это легко показать на примере.
Когда пользователь вводит логин и пароль на каком-либо сайте, его пароль преобразуется в хеш-код и передается по сети для аутентификации. Очевидно, что для того чтобы войти под чужую учётную запись достаточно выяснить хеш-код пароля, а затем по формуле (h-хеш-код, M — пароль) найти пароль. Но N-Hash, являющаяся однонаправленной функцией, обеспечивает сохранность пароля, так как это уравнение для однонаправленных функций решается очень трудоёмко (не с помощью персонального компьютера).
Алгоритм
Алгоритм N-Hash основан на циклическом повторении (12 или 15 раз — число раундов) операций. На входе имеется хеш-код и он может быть произвольным, на выходе получается хеш-код h сообщения M, которое необходимо хешировать. При этом размер выходящего хеш-кода фиксирован и равен 128 бит, тогда как размер M произволен[2].
Основные обозначения
— сообщение, которое необходимо хешировать;
— блок сообщения длиной 128 бит. Для того, чтобы хешировать сообщение необходимо поделить его на блоки ;
Если x поступает на вход функции f, то на выходе получается f(x).
Один цикл работы N-Hash
Ниже представлен один цикл работы алгоритма N-Hash.
На вход функции g подается хеш-код (i-1)-го шага и i-й блок сообщения . При этом выбирается произвольно: например, он может быть нулевым. А также подается на выход на операцию сложения по модулю 2, то есть результат (хеш-код следующего шага) будет выглядеть так: (нечто пока неизвестное).
Из схемы видно, что подается не только на XOR, но и на выход на операцию сложения по модулю 2. То есть теперь в соответствии с первым пунктом результат выглядит таким образом: (оставшееся пока неизвестным нечто).
Оставшееся пока неизвестным нечто находится после прохождения каскада из восьми преобразующих функций. Его получение может быть описано таким образом:
Функция EXG меняет местами старшие и младшие разряды и прибавляет к результату , после чего результат складывает по модулю 2 с .
Как видно из схемы, результат подается последовательно на входы j преобразующих функций, вторым аргументом которых является сумма , где j=1, … , 8.
В результате получается хеш-код i-го шага :
.
Преобразующая функция
Возникает вопрос, как действует преобразующая функция .
Рассмотрим верхнюю часть схемы до перекрестья.
Исходное сообщение разбивается на блоки по бита.
Будем считать промежуточными выходами входы в нижнюю часть схемы. и подаются на промежуточные выходы, а на два других выхода подаются операции и . Теперь можно результаты на промежуточных выходах переобозначить и через них, аналогично верхней части, найти результаты на выходе нижней части, то есть и всей схемы в целом.
Сделав все необходимые вычисления, получим, что при подаче на вход сообщение на выходе можно представить как конкатенацию сообщений
;
;
;
.
Поиск функции f(x, P)
Так как функция f работает с аргументами, длина которых составляет 32 бит, то из схемы поиска функции f(x, P) имеем:
Величину разбиваем на части по 8 бит.
Запишем эти части как , i=1,…,4 и введёт новые обозначения:
;
;
;
;
Аргументами функции (первая стрелка слева) являются и .
Аргументами функции (вторая стрелка слева) являются и .
То есть две составляющие части из сообщения на выходе уже известны и равны
;
;
Далее будем пользоваться уже полученными оставляющими частями сообщения на выходе для удобства записи:
;
;
Тогда сообщение на выходе можно представить в виде .
Причём известно, что
=(левый циклический сдвиг на 2 бита)(a+b) mod 256
=(левый циклический сдвиг на 2 бита)(a+b+1) mod 256
Безопасность хеш-функций
Хеш-функция является безопасной в случае, когда криптоаналитику требуется очень много информации, для того чтобы взломать данную хеш-функцию (что делает взлом маловероятным) и если хеш-функция не взломана к данному времени[3].
Для того, чтобы хеш-функция была безопасной, необходимо, чтобы выполнялись условия:
При изменениях в тексте сообщения (вставки, перестановки и т. д.) должен меняться и хеш-код сообщения;
Иначе человек, который вводит свои логин и пароль для входа в Википедию, мог бы попасть на страницу другого участника.
Невозможность нахождения сообщения по известному хеш-коду из ;
Если данное условие не выполняется, то это делает возможным нахождение паролей пользователей Википедии.
Задача нахождения сообщений и , таких что их хеш-коды равны должна быть очень трудоёмкой.
Иначе, можно было бы найти два пароля с одинаковыми хеш-кодами.
N-Hash не является безопасной функцией, так как для неё не выполнено последнее условие.
В настоящее время N-Hash считается небезопасной функцией. На данном рисунке указаны все безопасные однонаправленные функции на данный момент согласно стандарту ISO/IEC 10118[1]:
Из алгоритмов, построенных как и N-Hash на основе блочных шифров, безопасными считаются только MDC-2 и MDC-4.
Для N-Hash характерна следующая проблема:
Так как длина хеш-кода равна длине блока алгоритма шифрования, то алгоритм нестоек перед атакой методом «дней рождения».
Атаки на хеш-функции
На данном рисунке приведена классификация атак на все алгоритмы хеширования в целом.
Атаки, зависящие от алгоритма, являются атаками, основанными на свойствах конкретного алгоритма.
Например, N-Hash успешно атакуют с помощью дифференциального метода, атакой с фиксированной точкой и встречей посередине.
Атаки, не зависящие от алгоритма, можно применить к любой функции хеширования, однако это не исключает того, что для некоторых алгоритмов они очень трудоёмки из-за большого объёма информации или быстродействия кода.
Ден Бур предложил способ построения коллизии для однораундовой схемы N-Hash.
Бихам и Шамир успешно применили метод дифференциального криптоанализа для компрометации 6-раундовой схемы N-Hash. Предложенный ими способ построения коллизии срабатывает для любого значения N кратного трём и при этом для N ≤ 12 он оказывается эффективнее подхода, основанного на парадоксе дней рождения.
Для 12-раундовой схемы сложность построения коллизий предложенным методом оценивается величиной 256 операций (трудоёмкость метода, основанного на парадоксе дней рождения — 264 операций).
Атаки, не зависящие от алгоритма
Увеличение длины хеш-кода и секретного ключа усложнит работу криптоаналитика. Можно попытаться сделать вычисления слишком трудоёмкими для персонального компьютера и требующими больших ресурсов. Тогда криптоаналитику надо будет или искать суперкомпьютер, или написать вирус, который на основе распараллеливания процесса взлома хеш-функции будет использовать сразу несколько персональных компьютеров для решения проблемы[3].
Также действенны такие методы защиты хеш-функции[4]:
использование контрольных сумм на разных этапах хеширования;
В настоящее время N-Hash мало распространён, так как не является безопасным и взломан более 10 лет назад.
Теперь для хеш-функций типа N-Hash существует специальное название — ключевые, то есть однонаправленные, но не устойчивые к столкновениям:
Если стороны доверяют друг другу (то есть каждая из сторон уверена, что другая не станет подменять контракт как в случае с Алисой и Бобом), то можно использовать N-Hash.
Mass killing site in Belarus You can help expand this article with text translated from the corresponding article in Polish. (January 2011) Click [show] for important translation instructions. View a machine-translated version of the Polish article. Machine translation, like DeepL or Google Translate, is a useful starting point for translations, but translators must revise errors as necessary and confirm that the translation is accurate, rather than simply copy-pasting machine-translated...
Stasiun Prupuk KD08JS15 Stasiun Prupuk, 2019Lokasi Jalan Raya Prupuk timur Tegal-Slawi-Prupuk-JeruklegiPrupuk Utara, Margasari, Tegal, Jawa TengahIndonesiaKetinggian+36 mOperatorKereta Api IndonesiaDaerah Operasi V PurwokertoLetak dari pangkal km 293+937 lintas Jakarta-Cikampek-Cirebon Prujakan-Prupuk-Purwokerto-Kroya km 38+500 lintas Tegal-Slawi-Prupuk[1] Jumlah peron3 (satu peron sisi yang rendah, satu peron pulau yang cukup tinggi namun merendah di bagian tengahnya, dan satu peron ...
701.º Grupo Aéreo Naval Mitsubishi G4M1 R2-385 del 702.º Escuadrón de Ataque en septiembre de 1944.Activa 1 de noviembre de 1942 - 15 de marzo de 194320 de febrero de 1944 – posguerra.País Imperio del JapónFidelidad Imperio del JapónRama/s Servicio Aéreo de la Armada Imperial JaponesaTipo Unidad de aviación navalFunción Hasta el 15 de marzo de 1943Bombardero, bombardero torpederoDespués del 20 de febrero de 1944Caza, bombardero, bombardero torpedero, reconocimientoTam...
присілок Красівка Красивка Країна Росія Суб'єкт Російської Федерації Воронезька область Муніципальний район Терновський район Поселення Народненське сільське поселення Код ЗКАТУ: 20254848002 Код ЗКТМО: 20654432126 Основні дані Населення 7 Поштовий індекс 397136 Географічні коо�...
هذه المقالة يتيمة إذ تصل إليها مقالات أخرى قليلة جدًا. فضلًا، ساعد بإضافة وصلة إليها في مقالات متعلقة بها. (نوفمبر 2019) جيمس أ. باتن معلومات شخصية تاريخ الميلاد سنة 1852 تاريخ الوفاة سنة 1928 (75–76 سنة) مواطنة الولايات المتحدة مناصب عمدة في المنصب1901 – 1905 �...
Valérie Boyer (2018) Valérie Boyer (* 11. Juni 1962 in Bourges, Département Cher) ist eine französische Politikerin (UMP, Les Républicains). Sie war von 2007 bis 2020 Mitglied der französischen Nationalversammlung, seit 2020 ist sie Senatorin für das Département Bouches-du-Rhône. Inhaltsverzeichnis 1 Leben 2 Politische Karriere 3 Weblinks 4 Einzelnachweise Leben Sie ist die Tochter des in Algerien geborenen Gabriel Boyer und der in Tunesien geborenen Lucienne Borg. Nach dem Schulabsc...
A. SarkunamSarkunam di pertemuan Pers ManjapaiLahir23 April 1975 (umur 48)[1]Ambalapattu, distrik Thanjavur, Tamil Nadu, IndiaPekerjaanSutradara film, penulis skenario, produser filmTahun aktif2010–sekarang A. Sarkunam adalah seorang sutradara film India, yang berkarya di industri perfilman Tamil.[2] Filmografi Tahun Film Disebutkan sebagai Catatan Sutradara Produser Penulis 2010 Kalavani Y T Y Penghargaan Film Negara Bagian Tamil Nadu untuk Film Terbaik 2011 Vaaga...
حصاد القصب في مصر القديمة. حقول القصب على ضفاف النيل قرب مدينة كوم أمبو في مصر. جزء من سلسلة مقالات حولديانة قدماء المصريين مفاهيم الحياة الآخرة دوات ماعت الأساطير الأرقام الفلسفة الروح طقوس الجنائزية القرابين المعابد الأهرامات الآلهةثامون هيرموبوليس (أجدود) آمون أمونيت �...
Flower-class corvette HMCS Lunenburg History Canada NameLunenburg NamesakeLunenburg, Nova Scotia Ordered24 January 1940 BuilderDavie Shipbuilding, Lauzon Laid down28 September 1940 Launched10 July 1941 Commissioned4 December 1941 Decommissioned23 July 1945 IdentificationPennant number: K151 Honours andawardsAtlantic 1942–45; North Africa 1942–43; English Channel 1944; Normandy 1944;[1] Gulf of St. Lawrence 1942[2] FateScrapped 1946. General characteristics Class and typeFl...
Mabuchi Motor CompanyMabuchi Motor head officeNative nameマブチモーター株式会社TypePublicTraded asTYO: 6592IndustrySmall DC motorsPredecessorKansai Rika Kenkyusho (a scientific research institute), followed by Tokyo Science Industrial Co. Ltd., Japan Science and Industry Co. Ltd., Mabuchi Shoji Co. Ltd., Mabuchi Industrial Co., Ltd., and Tokyo Science Co., Ltd.Founded1946; 77 years ago (1946)FounderKenichi MabuchiHeadquarters430 Matsuhidai 270-2280, Matsudo, Chiba...
Indian musician In this Indian name, the name Manoj is a patronymic, and the person should be referred to by the given name, Maalavika. MaliMali, pictured in 2017BornMaalavika Manoj (1993-09-16) 16 September 1993 (age 30)Chennai, Tamil NaduOccupationSinger-songwriterYears active2012–present Maalavika Manoj (born 16 September 1993) known professionally as Mali (/mælɪ/),[1] is an Indian singer-songwriter based in Mumbai, Maharashtra. Personal life Maalavika Manoj was born ...
1970 film ApotheosisDirected by John Lennon Yoko Ono Release date 1970 (1970) Running time17 minutesCountryUnited KingdomLanguageEnglish Apotheosis is a 1970 film directed by John Lennon and Yoko Ono.[1] Plot The film depicts a 17-minute-long journey on a balloon as it ascends and finally rises into the clouds. Lennon and Ono appear at the start of the film dressed in dark cloaks and hoods.[1] Production The film's directors Yoko Ono and John Lennon in 1969 The film was s...
This is a list of cities and towns found in KwaZulu-Natal, South Africa. They are divided according to the districts in which they are located. In the case of settlements that have had their official names changed the traditional name is listed first followed by the new name. Amajuba Amajuba District Municipality Dannhauser Hattingspruit Madadeni Newcastle Mountain View (Osizweni) Charlestown Ngagane Emadlangeni Kingsley eThekwini eThekwini Metropolitan Municipality ekuPhakameni Adams Mission...
Type of motorcycle Kawasaki Gpz305ManufacturerKawasakiProduction1983–1994ClassRoadster or sport bikeEngine306 cc (18.7 cu in) SOHC four stroke parallel twinBore / stroke61 mm × 52.4 mm (2.40 in × 2.06 in)Compression ratio9.7:1Top speed158 km/h (98 mph)[1]Power26 kW (35 bhp) @ 10,000 rpm (claimed)[1]Torque25.5 N⋅m (18.8 lb⋅ft) @ 8,500 rpm (claimed)[1]Ignition typeMagneto CDITran...
1995 single by Garth BrooksThe Beaches of CheyenneSingle by Garth Brooksfrom the album Fresh Horses B-sideIrelandReleasedDecember 11, 1995GenreCountryLength4:13LabelCapitol Nashville 19022Songwriter(s)Dan RobertsBryan KennedyGarth BrooksProducer(s)Allen ReynoldsGarth Brooks singles chronology The Fever (1995) The Beaches of Cheyenne (1995) The Change (1996) The Beaches of Cheyenne is a song co-written and recorded by American country music singer Garth Brooks. It was released in December 1995...
Rotation of Earth around its axis Not to be confused with Earth's revolution. Earth's rotation period redirects here. For the duration of daylight and night, see Daytime. Earth's rotation imaged by Deep Space Climate Observatory, showing axis tilt Earth's rotation or Earth's spin is the rotation of planet Earth around its own axis, as well as changes in the orientation of the rotation axis in space. Earth rotates eastward, in prograde motion. As viewed from the northern polar star Polaris, Ea...
Perseteruan Adam dan Hawa dengan Setan (juga dikenal sebagai Kitab Adam dan Hawa) adalah kitab ekstrakanonis Kristen yang ditemukan dalam bahasa Ge'ez, hasil terjemahan bahasa Arab.[1][2][3][4] Kitab ini bukan bagian dari kanon gereja mana pun. Asal naskah Gua Harta Karun adalah naskah Syria yang mengandung banyak kesamaan legenda dengan kitab ini; Malan menyebutkan bahwa seluruh kumpulan kisah yang mempertebal Perjanjian Lama juga ditemukan dalam Talmud, Al-Qu...