Українська

Інструменти розробника · SHA калькулятор хешу

Підтримка субресурсів: Як використовувати браузери SHA-384 Перевірити сценарії

· Підземелля

Опубліковано ToolAcre · Редакція журналу

шемале256 бази64 веб-сайт безпека

Атрибут доброчесності, що показує алгоритм префіксу, гіфену та base64
Головна ToolAcre векторна ілюстрація

Атрибут цілісності дозволяє браузеру відмовитися від CDN скрипт, який змінив байти. Цей запис пояснює формат атрибута, чому SHA-384 в base64 є загальним вибором, і що SRI не може захиститися від.

Мистецтво CDN що може служити що-небудь — ризик-поставка SRI був призначений для

Теґ скрипта на веб-сторінці може носити атрибут цілісності: `<script src="https://cdn.example.com/lib.js" integrity="sha384-..."></script>`. Значення цілісності є криптографічним перетравленням байтів скрипта. Коли браузер завантажує скрипт, він комп’ютерно зберігає перетравлення отриманих байтів і порівнює від атрибуту цілісності. Якщо вони відповідають, скрипт завантажується. Якщо вони не відповідають, браузер відмовляється від його завантаження і повідомляє про відмову в консолі. Це захищає від компромісів CDN подавати модифікований код або проти мережевого атаки, що перехоплюється і змінює відповідь.

Підприємницька інтеграція (SRI) є W3C специфікація, яка стосується сценаріїв та таблиць стилів. Це єдиний криптографічний гарантій, який дозволяє зробити про зміст крос-рігінного ресурсу: байти повинні відповідати перетравленню, або ресурс відхилений. Це не доводить, що створив ресурс, тільки що він не змінився, оскільки перетравлення було комп’ютерно. Для ресурсу, що подається HTTPS від переведення CDN, травлення забезпечує захист від CDN бути пропагований або подача вмісту, що ви повинні бути спеціально.

Атрибут цілісності — префікс алгоритму, фен, базовий64-дайджест та підтримка декількох хешів

В якості атрибуту цілісності є специфічний формат: алгоритм-ім'я, гіфен, перетравлення в base64. Приклад: `integrity="sha384-JZDdQnrrAMe+sxxpn47in+PwhkxrCrt4SNvt+xWqV3zPJUkeFF0Qq/wNtuvNqPP5"`. Ім’я алгоритму може бути SHA-256, SHA-384 або SHA-512. Base64 - кодування, не шістнадцяткова; це свідомий вибір SRI специфікація. Base64 є більш компактним, ніж шестигранний (приблизний) 33% коротший для того ж перетравлення, що стосується вкладання в HTML атрибути. Ім'я алгоритму гіфену від травлення. Зазначені декілька значень цілісності, що містяться в просторі: якщо будь-який з них відповідає, то ресурс приймається.

До чого SHA-384? У SRI можливість вибору SHA-256, SHA-384 і SHA-512. SHA-384 ставши за замовчуванням спільноти, оскільки він пропонує розмір/security баланс. SHA-256 менша (менша)32 bytes, 44 символи в base64) але SHA-384 ширше (ширший)48 bytes, 64 символи в base64) і не вмітно збільшити розмір атрибуту в порівнянні з SHA-256. SHA-512 для цього використання є можливість використовуватися, але рідко, оскільки його більший дайджест не зданий необхідним. Вибір вибору SHA-384 історичний і прагматичний, не відбиття властивостей вищої безпеки (всі три є криптографічно міцними для цієї мети).

SHA-384 пропонується і виробляє необхідний базовий матеріал; перевага спільноти не відкладена з інструменту

Кодування Base64 в SRI стандартний base64, не base64url. Стандартний base64 використовує + і / символи, які діють в HTML атрибути без відсотків-кодування, хоча вони мають спеціальні значення в URL-адресах та формувати дані. Мистецтво SRI формат призначений для HTML атрибути, не URL, тому стандарт base64 доречний. Якщо ви будуєте значення цілісності вручну, ви зрозуміли, що SHA-384 перетравлення (послідовність байтів), потім закодувати ці байти як стандартна base64, потім prepend `sha384-` і вставте в атрибут цілісності.

Переглядач виконує ті ж кроки у зворотному напрямку: вилучіть base64 від атрибуту цілісності, декодуйте байтам, щоб відновити травлення, компрамент SHA-384 завантажувального скрипту байтів і порівняння двох значень травлення. Вони повинні відповідати точно; одностороння відмінність в перетравленні викликає відхилення. Не існує нечітких матчів або часткових кредитів: цілісність є бінарними.

Хрещатик SRI поведінка вимагає документації браузера за цим обліковим записом

SRI , CORS на крос-орієнтовних відповідей. Якщо ви навантажуєте скрипт з іншого походження, сервер повинен відповідати з `Access-Control-Allow-Origin: *` або конкретний заголовок походження, який включає в себе ваш. Без категорії CORS не може перевірити, що веб-сайт не може бути SRI, без CORS не може підтвердити, що користувач відповідь відповідає тим, що сервер, призначений для відправки. CORS головки - це заява сервера, яка ця відповідь є безпечною для перевірки; SRI - Ваш контроль, який байти правильні. Разом вони утворюють зобов'язання по наданню: сервер дозволяє перевірити вміст, і ви робите.

Якщо скрипт не вистачає CORS заголовки та має атрибут цілісності, браузер завантажить його (якщо скрипти з цього походження дозволені до цього сайту) CSP), але невірно невірно. Сцена буде завантажено як якщо атрибут цілісності не був. Це не збій SRI; це межа безпеки: ви не можете перевірити відповідь, що ви не можете прочитати.

Що відбувається на мітці — браузер блокує ресурс і звіти в консолі

Коли браузер виявляє невідповідність, він відмовляється виконувати скрипт і записує повідомлення в консолі браузера. Повідомлення зазвичай іменує повідомлення URL, очікуваний хеш і комп'ютерний хеш. Несправність атомів: чи ресурс завантажується як-і, або повністю відхилюється. Не існує часткового завантаження або повернення коштів. Якщо сайт навігував на цьому скрипті, і він відхилений, сайт може зламатися. Це навмисне: видача неправильного коду гірше, ніж не доставити код, і безшумні збої дозволяють атакувати на постійність в невизначений термін.

Тестування SRI налаштування є прямимforward: відкрити консолі браузера, завантажити сторінку і шукати повідомлення про помилки в об'єктах цілісності. Якщо ви бачите невідповідність, порівнювати з’єднану з нею повіску, що відображається в консолі з одним атрибутом вашої цілісності. Якщо вони не відповідають, перез'єднання: скрипт може бути оновлено і вам потрібно новий дайджест.

Успішний приклад — обчислення засвоюваного сценарію та форматування його у значення цілісності, включаючи базовий 64-ступінчастий крок

Збір SRI дайджест вручну вимагає тільки скриптів байтів і хеш-інструменту. Завантажити скрипт, вставте його в ToolAcre SHA калькулятор хешу, виберіть SHA-384, копіювання базового64 виходу (не шістнадцять), препененд `sha384-` і вставте в атрибут цілісності. Якщо скрипт великий, використовуючи curl або wget, щоб зберегти його на файл, а потім читати файл швидше, ніж пасти. Для онлайн скриптів (в рядку) `<script>` тег в мітці HTML не від URL), SRI не застосовується; в режимі реального часу завжди довіряється за визначенням. SRI для зовнішніх ресурсів.

Приклад роботи: suppose ви хочете завантажити jQuery з a CDN з SRI. Знайдіть скрипт URL, завантажити його (або використовувати curl для fetch it), вставте байти в калькулятор або використовувати `sha384sum` на командному рядку, отримайте команду SHA-384 перетравлення як base64, так і формат як `sha384-[base64-digest]`. Вставте в атрибут цілісності скрипта. Навантаження сторінки та перевірка помилок консолі не з'являються.

Що це не криється — скрипти, які змінюють навмисно, і сайти, як ToolAcre що не завантажується зовнішніх скриптів, і так що нічого не потрібно закріпити

SRI не захищає від всіх атак, що поставляються. Захищаючи від перетравлення байтів, після чого не змогла перетравити, що комп'ютером, що піддається зведенню. Якщо CDN скомпрометовано перед тим, як скласти травлення, SRI не допомогла. Засвоюється тільки як надійний джерело, від якого ви його комп'ютерно. Для максимального забезпечення, компute трави з початкового джерела (наприклад, випуски бібліотеки GitHub), а також використання ті трави при завантаженні з CDN. Засвоюється від прихильника через процес релізу.

SRI не захищає від компромісної мережі в даний момент, коли ви компате дайджест або проти компромісної машини розвитку. Захищаючи лише від змін до скрипту між тим, як створюється перетравлення, а час завантаження браузера на скрипт. Для забезпечення постійного забезпечення, деякі розгортання, які використовують випуск, що надходить для SRI: видача підписано ключом підтримки, ви перевіряєте підпис, обчисліть травлення з перевірених байтів і використовуйте, що в SRI.

У статті не твердження ToolAcre’на сайті-широкий інвентар з джерела хешу

Мистецтво ToolAcre SHA калькулятор хешу видає травлення в стандартному base64 безпосередньо (як `base64` вихід з `toBase64()` функція. Для перетворення SRI формат, препендія ім’я алгоритму та гіфена: `sha256-`, `sha384-` або `sha512-`. Калькулятор не застосовується, що префікс автоматично, тому що має бути з'являються в багатьох контекстах (git, Docker, npm, URL), де ім'я алгоритму є окремим або закодовано різним чином. Зобов'язковою є: калькулятор має UTF-8 текст, який ви вставляєте, не файли або бінарні ключі. Виходив як шестигранний, так і базовий64. Ви обираєте, що використовуватися на основі контексту. Для SRI, base64 вимагається за специфікацією. Для git та інших інструментів, шестигранний є звичайним. Для npm і Go використовується base64. Вибір кодування - це ваш; байти перетравлення однакові.

SRI залишається одним з небагатьох криптографічних перевірок браузера, може здійснюватися клієнтом без централізованого органу. Поповнення засвоюваного інструменту ToolAcre, SHA калькулятор і перевірка їх на завантажені ресурси є доступним способом затвердити сайт на певних атаках, які забезпечуються. Захист є тільки таким чином, як травлення; переадресація після кожного оновлення до зовнішнього ресурсу і тестування, що браузер завантажує скрипт без відторгнення його.