* Колизия при hash алгоритмите
Публикувано на 21 ноември 2008 в раздел ПТСК.
Всички, дори най-добрият познат hash алгоритъм, имат един и същ потенциален проблем със сигурността. Това са т.нар. колизии (от англ. collision). Проблемът идва от там, че символните низове, които алгоритмите генерират, са с фиксирана дължина. От там веднага следва фактът, че те са изброим брой от комбинации на думи и цифри. Начинът на генериране не гарантира уникалност на създадения hash. С други думи е напълно възможно вие да създадете някоя изключително трудна за отгатване парола, чийто hash обаче да съвпадне с hash на дума от речника. Този проблем не може да бъде решен, а може единствено да бъде ограничен. Добрият администратор би трябвало да спазва няколко правила:
1. Регулярно проверявайте паролите от базата данни с rainbow таблици, за да сте сигурни, че при някоя сменена или нова от тях не се е получила колизия с речникова дума. При възможност може да се имплементира такава функционалност непосредствено преди въвеждане на данните в базата данни.
2. Използвайте hash алгоритми, които генерират достатъчно дълги низове, за да може да се възползвате от колкото се може повече комбинации.
3. Използвайте hash алгоритми, които са доказани, че не генерират прекалено чести колизии. Един алгоритъм може да генерира много дълги, но сходни низове и по този начин да предизвиква повече колизии. С други думи алгоритъмът трябва да разпределя генерираните символи равномерно в множеството си от стойности в което се разпростира.
Добрият програмист, който реализира или модифицира hash алгоритъм трябва също да спазва тези правила.
Единственият вариант да избегнете проблема с колизиите е да не използвате hash алгоритми. Като алтернатива можете да използвате симетрично криптиране (например с популярният алгоритъм BlowFish). При него няма колизии, защото всеки криптиран низ е уникален. За сметка на това бързо можете да се досетите, че съществува естествен обратен алгоритъм за дешифриране. Поради тази причина може да се приеме следното:
1. Симетричното криптиране е по-добро от гледна точка на сигурността при справяне с brute force атаки.
2. Hash алгоритмите създават значително по-сигурна база данни.
Тъй като в съвременните алгоритми за hash множеството на възможните стойности е изключително голямо, то можем да приемем, че все пак hash е по-добрият избор при съхранение на пароли.
Пусни коментар
Категории
- Бази от Данни (39)
- Вероятности (30)
- История (14)
- Кучета (67)
- Лада Нива (91)
- Математика (159)
- Методика (52)
- Общи работи (107)
- ПИК-3 Java (38)
- Политика (40)
- Програмни Среди (1)
- ПТСК (37)
- С/C++ (45)
- Семейни (15)
- Физика (35)
- ХHTML/JS (25)
- Храна (11)
Нови
- Как да разрежем хляба?
- Здравей бебе!
- Какво означават метеорологичните кодове?
- Берра проправя пътеки
- Задача от YES