Інструменти розробника · SHA калькулятор хешу
SHA-256 Крок за кроком: Падінг, Графік повідомлення та 64 Круги
· Як працює
Опубліковано ToolAcre · Редакція журналу
шемале256 криптографія веб-сайт Завантажити плагін

SHA-256 накладки вашого входу, розщеплює його 512-розрядні блоки і пропускаються через 64 раунди змішування. Цей пост пояснює кожну стадію на звичайну мову без необхідності криптографічного фону.
Що насправді відбувається в байтах — чорний ящик більшість розробників ніколи не відкриваються
SHA-256 – детермінований алгоритм, який перетворює будь-який вхід в 256-розрядний (розміщений)32-байт) відбитків пальців. Що виглядає як чорна коробка ззовні, насправді є послідовністю чітко визначених кроків. Розуміння тих кроків знімає таємницю і дозволяє перевірити правильність, слідувати помилкам і зрозуміти, чому вихід є те, що це таке. Кожен шматочок алгоритму є громадськістю; міцність йде від дизайну, не від секреції.
Алгоритм працює на 512-розрядні блоки. Якщо ваш вхід коротший, він отримує прокладку. Якщо вона довша, вона розщеплюється на кілька блоків, кожен обробляється послідовно, з кожним вихідним живленням блоку на наступний. Після обробки всіх блоків, у вас є вісім 32-розраховані номери, які з'єднуються між собою, утворюють фінальну 256-розбірний травень.
Падінг — застосування 1 bit, нулі і 64-проміжна довжина повідомлення для досягнення декількох 512 bits
Насипний крок детерміністично-формалізований. Після входу в обліковий запис, введіть один 1 bit (на практиці, the байт 0x80, якщо ваш вхід закінчується на межі байтів). Потім застосуньте нульові біти до тих пір, поки ви не 64 bits короткий проміжок 512 bits. Нарешті, зателефонуйте 64-розташуйте велику кількість кодування довжини входу в бітах. Цей наповнювач забезпечує кожне повідомлення є декількома 512 bits і закодує початкову довжину, так само ідентичні вводи різної довжини не можуть виробляти однаковий перетравень.
Для вхідного абс (а)3 bytes = 24 bits), веслований повідомлення 512 bits (одний блок): три байти 61 62 63, з'ясуйте 0x80, звернувшись до нуля, звернувшись до нас 64-розрядне кодування 24 (який 0x00...0x18 в a 64-розміщено велику кількість ендійських полів. Повідомлення тепер заповнюється точно одним 512-блоки. Для порожніх рядків, накидка придатків 0x80, з подальшими нуліями, з подальшим 0x00...0x00 (вказуючи 0 bits введення. Для більш тривалого введення, як 100-перевірити файл, набиваючи на нього останню блок 512 bits і вказати 800 bits початкової довжини.
Початкові значення та постійні положення зафіксовані алгоритмом; їх історичне деприація поза репозиторійними доказами
За допомогою алгоритму восьмого 32-розрядні робочі змінні, ініціовані на перший 32 bits дробових частин квадратових коренів перших вісім основних чисел. Це твердокодовані константи, видимі в будь-якому довідковому виконанні та в початковому коді криптографічних бібліотек. Вони існують, тому що використання фіксованих констанцій з математики дозволяє уникнути підозри на прихований піддошов. Мистецтво ToolAcre інструмент використовує веб-браузер, який застосовується в цих же константах.
Також алгоритм використовує 64 круглі константи, отримані з перших 32 bits дробових частин кубічних коренів перших 64 оригінальних номерів. Це також фіксована і громадська. Постійні дані включають додатковий матеріал змішування; зміни їх буде розбити алгоритм і виробляти різні трави.
Графік повідомлення — розширення 16 слова в 64 з перемикань і поворотів
Графік повідомлення розширюється 16 слова ()512 bits) в 64 слова ()2048 bits) за допомогою конкретної формули. Для турів 0-15, слова приходять безпосередньо з блоку введення. Для турів 16-63, кожен новий слово співвідношенно приймає два більші слова (у конкретних офсетах), застосовуючи обертання і зсув, що сидить в іншому слово, і зберігають результат. Формула детерміністична і реверсійна в рамках одного блоку, але розширення поширюється на вплив введення по всьому світу 64 турів.
Формула розширення використовує обертати-право (обмін кругових бітів, де біти, які знизилися один кінець, з'являються на інших) і вправно-зважених операціях. Обертання зберігає всі біти, але змінює їх позиції; праві зсувні дискризи. Поєднання обертань, зсувів і XOR операції забезпечують, що кожен біт вхідного впливу на кілька слів у графіку.
Один раунд — функції «Ч», «Мадж» та «Імпс» описані як біт-міксування операцій, а також оновлення змінних робочих змін
Кожен з 64 раунди обробляє одне слово розкладу повідомлення і оновлення вісім робочих змінних. Основна функція передбачає шість операцій: умовна суміш (часто називається Ч, для "хоза"), яка вибирає біти на основі змінної контролю, більшість функцій (Maj), які забирає найбільш поширене значення серед трьох змінних, дві спеціальні функції змішування (Sigma_0 і Sigma_1) які обертаються і зрушують робочі змінні, а також модуль додавання 2^32. Всі арифмети виконуються на 32-розвантажити слова, щоб переповнені обгортання навколо.
Функція «хоза» займає три 32-розрядні вводи і, для кожного положення біт, вибирає біт від першого входу, якщо контрольний біт 1, або біт з другого вводу, якщо контрольний біт є 0. Функція більшості виглядає на трьох вводах і, для кожного біта позиція виводить значення біта, яке з'являється найчастіше серед трьох. Це нелінійні операції, які розривають лінійність і забезпечують, що крихітні зміни вводу, які пропагують непередбачувано через стан.
Ланцюгові блоки і виробництво виходу — додаючи результат кожного блоку в запущений стан
Кожен круглий оновлює всі вісім робочих змін, обертаючи їх і перетворюючи нове значення, що відповідає поточній круглій постійній, слово розкладу повідомлення та попереднього стану. Перший сьомий робочий змінний зсув: 8-й стає 1-й, 1-й стає 2-й, і так далі. Новий 8-й комп’ютеризований з старих змінних, використовуючи функції змішування. Після 64 у вас є вісім нових 32-бітні значення. Додані (модуло) 2^32) до початкових констанцій, що виробляють остаточний хеш-стант для цього блоку.
Для багатоблокового повідомлення вісім значень з одного блоку стають початковим станом для наступного блоку. Мережа забезпечує, що зміна будь-якої точки в вході впливає на всі наступні блоки. За час, коли ви досягнете фінального блоку, кожен біт вводу впливає на кінцевий вихід.
Виконується приклад і що це не криється — вилучення накладки і підрахунку блоків для короткого повідомлення; докази безпеки виходять з сфери
Для вхідної абс повідомлення вписується в одному 512-блок за допомогою накипу. Набивні додає 424 bits, що робить загальний 512 bits. Графік повідомлення розширюється до 64 слова. Кожен раунд споживає одне слово і оновлює вісім робочих змінних через функції змішування. Після 64 округи, держава закріплюється початковими константами, виготовляючи остаточний травень ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad.
Це опублікований тестовий вектор: той же розрахунок на одному вході завжди виробляє однаковий вихід. Мистецтво ToolAcre інструмент виконує цей точний розрахунок через веб-провайдер веб-крипту браузера. Ви можете перевірити його, послухаючи abc і порівняти результат до відомого вектора. Будь-який браузер, який реалізує Web Crypto правильно буде виробляти однакову версію; алгоритм не дозволяє швидких або альтернативних шляхів.
Takeaway: Веб- Crypto виконує детермінацію SHA-256 змішування без розкладання секрету
Алгоритм є громадським, і кожен крок є детермінантним. Функції змішування (Ch, Maj, Sigma_0, Sigma_1) були обрані нелінійними, тобто, що зміни одного вхідного біту не прогнозовано змінити один вихідний біт. Розширення розширення 16 слова повідомлення 64 забезпечує весь вхід, що впливає на весь розрахунок. Мистецтво 64 округи та ланцюжок держави, що вивод чутливий до кожного біту вхідного, а репозиторій використовує отриманий вихід як детермінативний травлення. Колегійна стійкість - це властивість безпеки з лімітами, не обіцяє, що дублікати виводів є математично неможливими.
Cryptoграфічні докази є за межі цього повідомлення. Ключова точка полягає в тому, що ви зараз знаєте, що алгоритм насправді працює. Не чарівний, і це не чорна коробка. Якщо ви хочете перевірити, що ToolAcre чи варто вірно, слідувати за входом через ці кроки, або використовувати посилання на виконання іншої мови та порівняти результати. Впровадження браузера та будь-яке правильне посилання на нього виробляють ідентичні трави для ідентичних вводів.