Українська

Розробники · Base64 енкодер & decoder

Base64 не є шифруванням: чому закодований секрет зчитувається будь-яким

· Чому це питання

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

бази64 безпека коди

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

Base64 приховує нічого: будь-який з рядком може декодувати його миттєво, без ключа. Цей пост пояснює різницю між кодуванням, шифруванням та хешуванням, і що робити, коли ви знайдете секрети Base64 в репозиторію.

Настроювання значення, яке виглядало scrambled і декодовано до пароля бази даних — бетонне відкриття і як швидко він відредагує

Знайдіть Base64 у файлі конфігурації створює помилкове відчуття безпеки. Розробник розкриває пароль бази даних, який з'являється як масштабована послідовність, як dGlnZXJfZGF0YWJhc2VfYWRtaW4, приймає його зашифровано, і приймає його до репозиторій поряд з кодом програми. Через тиждень огляд безпеки розкриває актуальність: tiger database admin.

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

Encoding, шифрування та хешування: три різні вакансії — які кожні гарантії, і які потрібні ключі

Конфузія виникає тому, що Base64 виглядає як захист. Людина не може дивитися на dGlnZXJfZGF0YWJhc2VfYWRtaW4and читати tiger database admin. Вона з'являється до тих пір, поки ви не запустіть її через декодер. Це поверхнево-рівнева обфузія відчуває себе як безпека, але це не так. Base64 був розроблений для вирішення іншої проблеми повністю: переміщення довільних бінарних даних через текстові канали. Електронна пошта, старі веб-форми та системи лін-протокол не можуть носити сирі байти. Base64 перетворює байти в друковані ASCII символи, щоб дані могли переходити через ці канали.

Після того, як дані прибули, одержувач відхилив його до байтів. Захоплення і декодування однаково прості; вони не вимагають ключів, немає ентропії, немає криптографічної бібліотеки. Увімкнення, шифрування та хешування три окремі цілі та пропонують три різні гарантії. Конкодування перетворює дані в різне представлення, щоб вона може проходити через конкретний канал або використовуватися в конкретному контексті. База64, URL-encoding, шестигранне представлення та навіть escaping котирування в JSON всі кодування. Не потрібно нічого секретного ключа.

Чому Base64 існує на всіх — безпечне перевезення байтів через текстові канали, ніколи не конфіденційності

Мета роботи — форматна сумісність, не конфіденційність. Зашифрування, на відміну, вимагає ключового відома тільки уповноважених осіб. Тільки хтось з правильним ключем може перетворити ciphertext в звичайний текст. Без ключа повідомлення залишається непрозорим навіть для того, щоб хтось був досить складним, щоб атакувати його. Збір пароля не можна перевернути. Щоб перевірити, що пароль відповідає збереженому хешу без зберігання пароля.

The Kubernetes Secret названий бази даних-password, який містить base64: dGlnZXJfZGF0YWJhc2VfYWRtaW4 не є фактично секрет. Base64 - кодування за замовчуванням Kubernetes використовується для зберігання, не захисту. Будь-який з доступом до YAML або і т.д. база даних може декодувати значення за секундами. Внутрішня змінна з base64-encoded API ключі в скрипті запуску стикаються з однаковою проблемою. Basic Authentication header, який надсилає авторизації: Basic base64 username:password to the server може бути вилучений будь-яким проксі, інструментом моніторингу або мережевим спостерігачем між клієнтом і сервером.

Призначений для користувача приклад: декодування рядка 'secret' в браузері — паста, декодування і звичайний текст, без участі сервера

Якщо канал є HTTP замість HTTPS, вплив ще більше. Base64 в цих контекстах є червоною оселедцем: реальний секрет вже був порушений шляхом збереження або передається в відновлену форму. Приклад роботи робить задачу бетону. Припустимо API ключ для сторонніх послуг з'являється в конфігураційному файлі YXBpa2V5XzEyMzQ1Njc4OTAx. Скопіюйте цей рядок в Base64 енкодер & decoder у вашому браузері, вставте його в поле введення і натисніть кнопку Decode.

Інструмент повертає apikey 1234567890. Це відбулося миттєво, у вашому браузері, без контакту з сервером, не потрібно ключів і не виконується автентифікації. Вся операція займає менше другого. Цей же ключ знаходиться у громадському репозиторію GitHub. Щоб отримати доступ до сервісу, вони відхиляють його однаково легко, в будь-яких інструментах, які вони віддають перевагу, і використовують його для доступу до сервісу. Якщо рядок залишається застарілим у репозиторію, подорожує по мережі або з'являється в журналах додатків, вона може бути розкрита з тривіальною роботою, доступна в кожній мові програмування та в інструментах браузера, таких як це.

Де ця помилка показує - Kubernetes Secrets, .env файли, Основні auth headers і мобільні додатки ресурсів

З'являється помилка, тому що Base64 є настільки поширеним, що він стає пов'язаною з обфускією за безпосередністю. Розробники див. Base64-encoded data, в тому, що хтось думав, і залишити секрети в цій формі. Файл .env, що містить API_KEY=VGhpcyBpcyBub3QgcmVhbGx5IGEgc2VjcmV0 з'являється до молодшого інженера, як більш надійний, ніж API_KEY=Це не дуже секрет, хоча декодування займає одну операцію. Пакет мобільних додатків Base64-encoded токени в ресурсах, які будь-який декомпілер може витягти і декодувати. Резервне копіювання бази даних містить паролі Base64-encoded у полях, які призначені для пошуку, не захищені.

У кожному випадку, якщо хтось помилився кодуванням для шифрування і створив архів секретів plaintext, який відбувається у форматі, який вимагає додаткового кроку для читання. Що робити, коли Base64 секрети відкриті залежно від контексту.

Що робити замість — секретні менеджери, реальне шифрування в стані спокою, а також обертати все, що вже зроблено

Якщо секрет - токен, API ключ або пароль, і він вже був здійснений для контролю версій, лікуючи його як компромісний. Відновити його, створити новий і оновити кожну його. історичний коміт є частиною постійного запису репозиторій, навіть якщо секрет пізніше вилучений в новому коміті; хтось з доступом до історії репозиторій може знайти його.

Пошук репозиторіїв для базових64-кодованих значень тепер стандартна розвідувальна тактика, тому що щось було Base64 не робить його секретом. Для будь-якої операції, ніколи не закодувати секрети з Base64 і припустити, що вони захищені. Використовуйте секрети менеджера, який зберігає значення, зашифровані, керовані та перевірочні. Зберігати тільки посилання або приношення, не секрет, в коді заявки і конфігурації. Реальне шифрування в іншому випадку означає, що дані зашифровані за допомогою ключа, що зберігається окремо і без використання для всіх, хто не має цього ключа.

Що це не обкладинка — вибір алгоритму шифрування або програмного забезпечення

База даних, яка шифрує чутливі стовпці, секрети менеджера, який використовує шифрування конвертів з ключами в модулі безпеки апаратного забезпечення, або менеджер паролів, який зашифровує ключі шифрування від паролів користувачів, всі пропонують справжню конфіденційність. Перед тим, як вони зберігаються в будь-якій точці, ще сильніше. Обертаючи секрети, які були відкриті, навіть якщо вони були тільки Base64-encoded, видаліть вікно можливості для зловживання. Якщо секрет був в репозиторію, перевірте журнали, щоб побачити, коли він був доступним і що його використовували під час вікна експозиції.

Для постійної безпеки використовуйте короткочасні токени, видані службою авторизації, не статичні секрети, що зберігаються в конфігурації. Токен, який закінчується в годину, менш цінний на атакуючого, навіть якщо компромісний. Ця стаття не охоплює вибір алгоритму шифрування, дизайну ключа або архітектури автентифікації. Ми працюємо з власними стандартами та торговими марками. Пункт простий: Base64 не є одним з інструментів для будь-якого з цих проблем. Це формат перетворення для транспорту та зберігання.

Takeaway: обробляти Base64 як звичайнийтекст — як Base64 енкодер & decoder робить точку одним клацанням, без секрету, коли ви залишаєте вкладку

Не дозволяйте зовнішній вигляд Base64 в репозиторію, конфігураційному файлі або затишній колоді, щоб дані захищені. Будь-який інструмент, який може читати текст, може видалити Base64, і операція миттєва і детерміналістична. Читання рядка Base64-encoded як ciphertext є загальним непорозумінням, і він залишає реальні секрети в простому вигляді. Розробники часто розуміють це тільки після пошуку Base64 секретів у виробництві або в аудиті. Якщо інженер декодує рядок зразка локально і бачить оригінальний звичайний текст.

Інструмент робить точку неминучим: кодування не є шифруванням. Після того, як ця відмінність прозора, слідування автоматично. Кожна база64 секрет в клієнтській бази повинна бути обертається. Кожне місце, яке секрет використовується, необхідно оновити. Оцінити вікно впливу. Для майбутнього, секретні менеджери та реальне шифрування повинні замінити кодування в цій ролі. Base64 encoder & decoder показує, наскільки швидко і легко реверсал, без секрету, коли-небудь залишаючи браузер. Якщо ви можете видалити його в секунду, це може бути будь-яким іншим.