Парола — определение, видове, хеширане и правила за сигурност
Паролата е средство за удостоверяване — начин да се провери и потвърди, че дадено лице или система имат право на достъп до ресурс. Паролата служи за идентификация и авторизация и заради това трябва да се пази в тайна. Паролите могат да бъдат различни по предназначение и поведение: те могат да са статични (остават една и съща за продължителен период) или динамични (променят се често и/или са валидни само веднъж).
Видове пароли
Някои основни видове пароли и методи за тяхното генериране/използване:
- Статични пароли — обичайните пароли, които потребителят задава и използва многократно.
- Динамични пароли — променящи се пароли, които намаляват риска от повторна злоупотреба. Един вид динамична парола е еднократен блок, който може да се използва само веднъж (OTP — one-time password).
- Токени и генерирани кодове — хардуерни или софтуерни токени, които генерират временни кодове (например TOTP/HOTP).
- Пасфрази — дълги фрази от думи (по-лесни за запомняне и с по-голяма ентропия при равна дължина на символите).
Паролите са използвани за първи път в армията, когато е било необходимо да се разграничи кой е приятел и кой враг в условия с ограничена видимост. Днес концепцията е същата, но заплахите и инструментите са много по-разнообразни.
Състав и правила за сила на паролата
Съвременните пароли обикновено се състоят от комбинация от букви, цифри и символи. Някои сайтове изискват минимален брой символи (често 6–8 в по-стари или по-прости системи), но за да бъде паролата сигурна, днешните препоръки са за значително по-голяма дължина — например най-малко 12 знака или използване на пасфраза от няколко случайни думи.
Някои уебсайтове позволяват използването само на букви и цифри, но не и на други символи от клавиатурата. Други съветват да се използва комбинация от букви и цифри, за да се увеличи „силата“ на паролата. Важно е да се разбере, че дължината и случайността (ентропията) са по-важни от сложни, но предвидими модификации като „P@ssw0rd1“.
Някои добри практики за създаване на парола:
- Използвайте дълги пасфрази (напр. 3–5 случайни думи) вместо кратки и сложни комбинации.
- Не използвайте лична информация (рождени дати, имена на членове на семейството и т.н.).
- Не повтаряйте пароли между различни услуги.
- Приемайте силата на паролата като функция на дължина и непредсказуемост, а не само на наличието на специални символи.
Практиката да се изисква смяна на паролата веднъж годишно е била широко разпространена, но съвременните препоръки^1 предпочитат смяната само при подозрение за компрометиране или когато има индикатор за риск (така се избягва слабостта, присърце генерирана от често повтарящи се промени). По време на въвеждането на паролата обикновено всяка буква се показва маскирана (например като * или -).
Съхранение, криптиране и хеширане
Криптирането е преобразуване на данни с цел постигане на сигурност — за да се прочете криптиран низ, обикновено е необходим секретен ключ или парола за декриптиране. Това означава, че криптирането е обратимо при наличие на ключ.
За съхранение на потребителски пароли обаче се използва предимно хеширане — еднопосочна функция, която преобразува паролата в фиксирана по дължина стойност и е проектирана да бъде необратима. При правилно приложение, съхраняваме само хеша и случайна стойност (salt), а не оригиналния низ.
Основни принципи при съхранението на пароли:
- Никога не съхранявайте пароли в чист текст (plaintext).
- Използвайте уникален, случаен salt за всяка парола, за да се предотвратят атаки с rainbow tables.
- Използвайте адаптивни („бавно“) хеш-функции: Argon2id (препоръчван), bcrypt, scrypt или PBKDF2 с висок брой итерации. Те правят опитите за грубо пробиване по-скъпи и бавни за нападателя.
- Обмислете използване на допълнителен „pepper“ (секрет, съхраняван отделно от базата данни) за допълнителна защита в случай на компрометирана база.
- Настройвайте параметрите за трудност/натоварване (iterations, memory, time cost) според възможностите на системата и очакваните заплахи и ги променяйте с времето.
Практики за сигурност и управление
За по-добра защита на крайни потребители и системи се прилагат допълнителни мерки:
- Многофакторна автентикация (MFA) — комбиниране на парола с нещо, което потребителят има (хардуерен токен, мобилно приложение) или е (биометрия). Това значително намалява риска при компрометирана парола.
- Ограничаване на опитите и временно блокиране след многократно неуспешни опити, както и въвеждане на rate limiting и забавяния между опитите.
- Мониторинг и известяване при подозрителна активност, принудителна смяна на парола при компромис, и използване на механизми за проверка на изтекли креденшъли (credential stuffing).
- Използване на паролни мениджъри — те позволяват създаването и съхранението на дълги, уникални пароли за всяка услуга и са силно препоръчителни за повечето потребители.
Алтернативи и допълнителни методи за автентикация
Освен класическата парола, други методи за проверка на самоличността включват използване на скенери за пръстови отпечатъци и разпознаване на лица, както и смарт карти, хардуерни токени (например FIDO/U2F) и мобилни приложения за генериране на кодове. Добрата практика е да се комбинират методи (втора стъпка — MFA) за по-голяма сигурност.
Чести атаки и как да се предпазим
Основни типове атаки срещу пароли и препоръчани защити:
- Brute-force (грубо пробване) — защита със силни пароли, rate limiting и блокиране на акаунти.
- Dictionary атаки — използвайте неочаквани комбинации или пасфрази вместо често срещани думи и фрази.
- Rainbow tables — предпазва се чрез уникални salt и адаптивни хеш-функции.
- Phishing — образование на потребителите, използване на MFA и защитни технологии (антифишинг, защита на входни страници).
- Credential stuffing — предотвратява се чрез уникални пароли за различните услуги и чрез защити срещу многократни опити за влизане.
Практически съвети за потребители
- Използвайте дълги, уникални пароли или пасфрази за всяка услуга.
- Включете MFA (двуфакторна автентикация) където е възможно.
- Използвайте надежден паролен мениджър за генериране и съхранение на пароли.
- Не въвеждайте паролите си на подозрителни сайтове; проверявайте URL и сертификати.
- Сменяйте паролата след съобщение за пробив или при подозрение за компрометиране.
В обобщение: паролите остават централна част от дигиталната сигурност, но тяхната ефективност зависи от начина на избиране, съхранение и комбиниране с други механизми за защита. Системите трябва да прилагат съвременни стандарти за хеширане и управление, а потребителите — добри практики при създаването и използването им.
Забележка: препоръките и стандартите се развиват с времето. Към момента на публикуване най-добри практики включват използването на адаптивни хеш-функции (Argon2id, bcrypt, scrypt), уникални соли, MFA и паролни мениджъри.
Свързани страници
- Криптиране - Encryption
- FreeOTFE - Криптиране на дискове
- Pretty Good Privacy (PGP) - криптиране на имейл
- PuTTY - SSH криптиране
Ресурси
- https://useful.tools/password-generator - безплатен инструмент за генериране на силни и сигурни пароли
- https://www.theguardian.com/money/2016/may/21/how-create-perfect-password-hackers-online-accounts-safe "Как да създадем перфектната парола"
Въпроси и отговори
В: Какво е парола?
О: Паролата е начин за удостоверяване на самоличността, който може да се използва за идентифициране на дадено лице.
В: Защо е важно да пазите паролите в тайна?
О: Важно е паролите да се пазят в тайна, защото те са единственият начин за идентифициране на лицето.
В: Какво означава паролата да е статична?
О: Статична парола означава, че тя ще остане същата, освен ако потребителят не я промени, или че рядко се променя.
В: Какво означава една парола да е динамична?
О: Динамична парола означава, че тя се променя редовно и не остава една и съща.
В: Какъв вид динамична парола може да се използва само веднъж?
О: Еднократният блок е пример за динамична парола, която може да се използва само веднъж.