Какво представлява „солта“ (salt) в хеша на парола за Linux и защо е важно?

Последна актуализация: 04/12/2025
Автор: Isaac
  • Солтта е произволен низ, който се добавя към паролата преди хеша, за да се получат уникални хешове за всеки потребител.
  • Linux Той съхранява хеш, сол и алгоритъм в /etc/shadow, засилвайки защитата срещу речникови атаки и таблици тип „rainbow“.
  • Добрите практики изискват дълги, случайни и уникални соли, заедно с надеждни хеш алгоритми и бази данни добре защитени.
  • Соленето на пароли трябва да бъде интегрирано в по-широки политики за сигурност, които включват силни пароли, многофакторна автентификация (MFA) и мениджъри на пароли.

сол в хеша на паролата в Linux

Ако работите със системи GNU/Linux или просто сте загрижени за сигурността на вашите акаунти, вероятно сте чували за сол в хеша на паролатаТова е една от онези концепции, които се споменават много, но често се разбират само наполовина: звучи технически, но в действителност прави разликата между система, която е лесна за разбиване, и такава, която е много по-устойчива на атаки.

Накратко, солта е ключов елемент, който прави хешовете на паролите непредсказуемиРаботи чрез добавяне на произволни данни преди прилагане на хеш алгоритъма, така че дори ако двама потребители имат една и съща парола, резултатът, съхранен в базата данни, ще бъде различен. Оттам нататък, специфичната имплементация в Linux, връзката ѝ с /etc/shadow, инструменти като mkpasswd и съвременните най-добри практики за сигурност са цял свят сам по себе си, който ще разгледаме подробно.

Какво точно представлява „солта“ в хеша на паролата?

дефиниция на сол в хеша на паролата

В криптографията, a сол (сол) е произволен низ от символи който се добавя към паролата на потребителя преди прилагане на хеш функция. Целта е полученият хеш да бъде уникален, дори ако паролата в обикновен текст е една и съща за множество потребители.

Когато потребител създаде или промени паролата си, системата генерира произволна солКомбинира го с паролата (преди, след или в специфичен формат в зависимост от схемата) и прилага хеш алгоритъм към тази комбинация, например SHA-256 o SHA-512Паролата не се съхранява в базата данни, а по-скоро хеш на (парола + сол), а в повечето схеми самата сол също се съхранява заедно с хеша.

Тази техника прави много от техники за атака, базирани на предварително изчислени хешове, подобно на таблиците тип „rainbow“, и значително усложнява речниковите атаки и атаките с груба сила в голям мащаб. Атакуващият вече не може да използва факта, че множество потребители споделят една и съща парола, защото всеки от тях ще има различен хеш.

Важно е да се разбере, че солта сама по себе си не е тайна: Това не е парола или частен ключНеговата функция е да въведе случайност и уникалност в процеса на хеширане. Сигурността все още зависи от използването силни пароли y подходящи хеш алгоритми, за предпочитане специално проектирани за пароли (като bcrypt, scrypt, Argon2), въпреки че много класически Linux системи използват варианти на SHA-256 или SHA-512.

Как работи „salting“ на пароли стъпка по стъпка

Как работи „соленето“ на пароли

Процесът на осоляване може да се обобщи в поредица от сравнително прости стъпки, но с огромно влияние върху сигурността:

  Как да откриете злонамерени процеси с Process Explorer и VirusTotal

Първо, когато потребител се регистрира или промени паролата си, системата генерира уникална и произволна сол за тези идентификационни данни. Тази сол обикновено е с достатъчна дължина (например 16 байта или повече) и се получава от криптографски защитен генератор на случайни числа.

След това, избраната от потребителя парола се комбинира с тази сол, за да се образува междинна веригаТази комбинация може да бъде толкова проста, колкото конкатенирането на salt + password, или може да има по-сложен формат, дефиниран от хеш схемата. Важното е, че всеки потребител получава различна комбинация.

След това, a еднопосочен хеш алгоритъмРезултатът е привидно произволен низ, хешът, с фиксирана дължина, който ще се съхранява в базата данни заедно със солта. В съвременните системи се търсят алгоритми, които произвеждат дълги и сложни изходиТова увеличава пространството за търсене и прави атаките с груба сила по-скъпи.

Накрая, когато потребителят влезе в системата, системата отново извлича въведената парола. свързана сол От базата данни, той повтаря абсолютно същия процес на комбиниране и хеширане и сравнява резултата със съхранения хеш. Ако съвпадат, той знае, че паролата е правилна, без да е необходимо да знае открития текст.

Този механизъм гарантира, че дори ако базата данни изтече, нападателят ще види само отделни хешове със собствени солиВместо набор от сравними хешове, спирането на атака не е магия, но става значително по-изчислително скъпо.

Предимства на използването на сол в хешовете на паролите

Предимства на използването на сол в паролите

Основната причина за използването на осоляване е, че засилва сигурността на съхранените пароли срещу голямо разнообразие от атаки. Но си струва да се разгледат подробно конкретните предимства.

Първо, осоляването осигурява устойчивост на речникови атакиБез „salt“, атакуващият може да подготви огромен списък с често срещани пароли и техните хешове и просто да ги сравни с открадната база данни. С уникална „salt“ за всеки потребител, тези предварително изчислени хешове стават безполезни, защото всяка комбинация от парола и „salt“ генерира различна стойност.

Второ, употребата на сол намалява ефективността на дъгови масиТова са просто предварително изчислени бази данни с хешове за популярни пароли, за да се ускори възстановяването. Отново, тъй като резултатът зависи от конкретната сол (salt), тези таблици, предназначени за несолени хешове, стават безполезни или най-малкото силно неефективни.

Друго очевидно предимство е, че подобрява поверителност в случай на изтичанеДори ако нарушител получи достъп до таблицата с потребители с нейния хеш и сол, той няма да може бързо да идентифицира кой има същата парола като другите или лесно да започне масови атаки. Всеки акаунт изисква индивидуално внимание, което обикновено е непрактично в голям мащаб.

  Предупреждение за новата измама в WhatsApp: Bizum и видео разговори за кражба на акаунти и пари

Освен това, осоляването добавя сложност към атаки с груба силаВместо да може да тества кандидат-парола спрямо всички хешове едновременно, атакуващият е принуден да вземе предвид „salt“-а на всеки потребител, умножавайки общото натоварване. Ако това се комбинира с бавен и параметризиран алгоритъм за хеширане (като bcrypt или Argon2), цената на атаката се увеличава още повече.

И накрая, осоляването е техника, която се адаптира добре към технологичната еволюция. Дори когато компютърното оборудване се усъвършенства и се появяват нови атаки, комбинацията от силен хашиш и уникална сол Поддържа високо и мащабируемо ниво на трудност: можете да увеличите дължината на солта, да подсилите алгоритъма, да увеличите изчислителните разходи и т.н.

Как Linux реализира „солене“ на пароли (/etc/shadow)

В Linux системите и други варианти на *NIX, потребителските пароли не се съхраняват в /etc/passwd, а във файла / и т.н. / сянкаТози файл, достъпен само за суперпотребителя, съхранява хешовете на паролите заедно с допълнителна информация и е мястото, където ясно се вижда използването на salt и хеш алгоритъма.

Редовете в /etc/shadow имат структура, подобна на:

потребител:$id$sal$hash:допълнителни_полета…

Символът $ Разделете различните части. Първата част след потребителското име показва тип алгоритъм използван. Например, $ 1 $ обикновено представлява MD5, $ 5 $ SHA-256 и $ 6 $ SHA-512, който е най-разпространеният алгоритъм в съвременните дистрибуции, защото предлага по-голяма сигурност от по-старите схеми, базирани на DES или MD5.

След като се появи идентификаторът на алгоритъма, соли след това полученият хешВсичко това е в едно и също поле. Когато паролата е валидирана, системата прочита този идентификатор, солта, прилага алгоритъма, съответстващ на въведената парола, и сравнява изчисления хеш със съхранения.

Ако искате бързо да проверите кои потребители имат криптирани пароли и какъв алгоритъм се използва, можете да използвате команда като grep '\$' /etc/shadowВ този контекст знакът за долар ($) се използва за намиране на редове с хешове в съвременен формат. Символът трябва да бъде екраниран с обратна наклонена черта, защото в регулярните изрази той означава „край на реда“.

Акаунти без парола или заключени акаунти обикновено показват подобна стойност в това поле. ! o * вместо хеш с долари, което показва, че не може да бъде удостоверено с помощта на стандартна парола. Тази структура изяснява едно нещо: Linux интегрира осоляването във формата си на съхранение пароли родно.

Разлика между хеширане на пароли и солене

Важно е ясно да се прави разлика между две понятия, които понякога се смесват: хеширане y осоляванеХеширането на пароли е процес, чрез който паролата се трансформира в неразпознаваема стойност, използвайки еднопосочен алгоритъм. Сървърът никога не е необходимо да знае оригиналната парола, а само да провери дали потребителят знае правилната парола, защото генерира същия хеш.

  Какво е WINUX: Linux със свободна душа и външния вид и усещането на Windows

Проблемът е, че ако две пароли са еднакви, Несоленият хашиш също ще бъде идентиченТова позволява на нападателя да сравнява и групира потребители по парола или да използва предварително изчислени таблици. Освен това, ако хеш алгоритъмът е бърз и проектиран за целостност на данните (като например прост SHA-256), той става по-уязвим за масивни атаки с груба сила.

Осоляването идва именно за да реши тази слабост: става въпрос за добавете произволни данни към паролата преди хеширането му. Резултатът е, че дори двама потребители да изберат „casa“ за парола, хешовете в базата данни ще бъдат напълно различни, защото единият ще има например „casa+7Ko#“, а другият „casa8p?M“ като низ преди хеширането.

По този начин, хеширането и осоляването не се конкурират, а по-скоро се допълват взаимно. Хеширането осигурява свойство на еднопосочност и лекота на проверка; солта осигурява уникалност и устойчивост срещу масивни атакиИмплементацията на сигурно съхранение на пароли комбинира и двете техники, в идеалния случай използвайки алгоритъм, проектиран за тази цел, с конфигурируема цена.

Използване на солта в Linux с mkpasswd

В GNU/Linux среди и други системи UnixМного практичен начин за експериментиране с осоляване е инструментът mkpasswdТази команда се използва за генериране криптирани пароли сигурно и обикновено е интегриран в процесите на създаване на потребители, скриптовете за администриране и др.

Основният синтаксис на mkpasswd ви позволява да укажете паролата, която ще бъде криптирана, и серия от опции, като например типа на алгоритъма (например des, md5, sha-256, sha-512), използвайки опцията -mВ съвременните системи разумното решение е да се избере SHA-512 поне или чрез дори по-стабилни схеми, ако дистрибуцията ги поддържа.

Особено интересният вариант в контекста на осоляването е -SРазрешаването добавете сол към паролата, преди да я криптирате. Ако не е зададена ръчно, mkpasswd може да генерира произволна сол във всяко изпълнениетака че дори при използване на една и съща парола за вход, полученият хеш е различен всеки път.

Това може лесно да се провери: ако криптирате „password123“ няколко пъти с mkpasswd, използвайки SHA-512 и произволна salt стойност, ще получите напълно различни хешове. Ако обаче подадете една и съща salt стойност, използвайки -S, хешът винаги ще бъде идентичен, защото комбинацията password + salt не се променя.

Благодарение на този инструмент е много лесно Подгответе пароли, криптирани със сол да добавяте към конфигурационни файлове, да управлявате потребители ръчно или да тествате поведението на солене, без да е необходимо да програмирате каквото и да било.

Какво е дигитална хигиена?
Свързана статия:
Дигитална хигиена: безопасност, благополучие и ред във вашия онлайн живот