Movatterモバイル変換


[0]ホーム

URL:


Перейти до вмісту
Вікіпедія
Пошук

Bcrypt

Неперевірена версія(що робити?)
Матеріал з Вікіпедії — вільної енциклопедії.

Статус версії сторінки

Сторінка не перевірена

Немаєперевірених версій цієї сторінки; ймовірно, її щене перевіряли на відповідність правилам проєкту.

bcrypt — адаптивна криптографічнафункція формування ключа, що використовується для безпечного зберіганняпаролів. Розробники:Нільс Провос[en] і David Mazières. Функція заснована на шифріBlowfish, вперше представлена наUSENIX у 1999 році[1]. Для захисту від атак за допомогоюрайдужних таблиць bcrypt використовує сіль (salt); крім того, функція є адаптивною, час її роботи легко налаштовується і її можна сповільнити, щоб ускладнити атаки перебором.

Шифр Blowfish відрізняється від багатьох алгоритмів обчислювально складною фазою підготовки ключів шифрування.Провос і Mazières скористалися цією особливістю, але змінили алгоритм підготовки ключів, отримавши шифр «Eksblowfish» (expensive key schedule Blowfish). Кількість раундів у підготовці ключів має бути ступенем двійки; конкретна ступінь може задаватися при використанні bcrypt.

Спочатку реалізовано функції crypt вOpenBSD. Існують реалізації для Java, Python, Nim, C#, Ruby,Perl,PHP 5.3,Node.js та деяких інших.

Алгоритм

[ред. |ред. код]

Алгоритм bcrypt використовує алгоритм налаштування ключів з «Eksblowfish»:

EksBlowfishSetup(cost,salt,key)state{\displaystyle \gets } InitState()state{\displaystyle \gets } ExpandKey(state,salt,key)repeat (2cost)state{\displaystyle \gets } ExpandKey(state, 0, key)state{\displaystyle \gets } ExpandKey(state, 0, salt)returnstate

Функція InitState відповідає оригінальній функції з шифру Blowfish; для заповнення масиву P і S-box використовується дробова частина числаπ{\displaystyle \pi }.

Функція ExpandKey:

ExpandKey(state,salt,key)    for(n = 1..18)        Pn{\displaystyle \gets }key[32(n-1)..32n-1]{\displaystyle \oplus } Pn //treat the key as cyclicctext{\displaystyle \gets } Encrypt(salt[0..63])    P1{\displaystyle \gets }ctext[0..31]    P2{\displaystyle \gets }ctext[32..63]    for(n = 2..9)ctext{\displaystyle \gets } Encrypt(ctext{\displaystyle \oplus }salt[64(n-1)..64n-1]) //encrypt using the current key schedule and treat the salt as cyclic        P2n-1){\displaystyle \gets }ctext[0..31]        P2n{\displaystyle \gets }ctext[32..63]    for(i = 1..4)        for(n = 0..127)ctext{\displaystyle \gets } Encrypt(ctext{\displaystyle \oplus }salt[64(n-1)..64n-1]) //as above            Si[2n]{\displaystyle \gets }ctext[0..31]            Si[2n+1]{\displaystyle \gets }ctext[32..63]returnstate

Для обчислення хешу bcrypt обробляє вхідні дані еквівалентно шифруванню 'eksblowfish(посилений_ключ, input)':

bcrypt(cost,salt,key,input)state{\displaystyle \gets } EksBlowfishSetup(cost,salt,key)ctext{\displaystyle \gets }inputrepeat(64)ctext{\displaystyle \gets } EncryptECB(state,ctext) // шифрування стандартним Blowfish в режимі ECBreturn Concatenate(cost,salt,ctext)

В різних ОС (linux, OpenBSD), використовують алгоритм bcrypt в стандартній функції crypt (3), в якості input подається константа «OrpheanBeholderScryDoubt»[2].

Недоліки

[ред. |ред. код]

bcrypt був розроблений в 1999 році і був захищений від ефективного перебору на апаратних засобах того часу. В даний час одержали широке поширенняПЛІС, в яких bcrypt реалізується ефективніше. У 2009 був створений алгоритмscrypt, що вимагає для своєї роботи значний обсяг пам'яті (з випадковим доступом), об'єм пам'яті налаштовується[3].

У порівнянні зPBKDF2, алгоритм розширення ключа в bcrypt практично не досліджувався криптографами[4].

Дивись також

[ред. |ред. код]

Посилання

[ред. |ред. код]

Примітки

[ред. |ред. код]
  1. Provos, Niels; Mazières, David; Talan Jason Sutton 2012 (1999). «A Future-Adaptable Password Scheme».Proceedings of 1999 USENIX Annual Technical Conference: 81–92.
  2. Архівована копія(PDF). Архіворигіналу(PDF) за 15 червня 2018. Процитовано 13 квітня 2018.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)
  3. http://www.unlimitednovelty.com/2012/03/dont-use-bcrypt.html[Архівовано 14 квітня 2018 уWayback Machine.] «Not only does scrypt give you more theoretical safety than bcrypt per unit compute time, but it also allows you to configure the amount of space in memory needed to compute the result.»
  4. http://www.unlimitednovelty.com/2012/03/dont-use-bcrypt.html[Архівовано 14 квітня 2018 уWayback Machine.] «Unlike bcrypt, PBKDF2 has been the subject of intense research and still remains the best conservative choice.»
Загальні функції
Фіналісти SHA-3
Інші функції
Гешування паролів/
розтягування ключів[en]
Формування ключа
Коди автентифікації
повідомлення
Режимиавтентифікованого
шифрування
Контрольні сумми та
некриптографічні[en]
функції
Атаки (огляд[en])
Конструкції
Стандартизація
Використання
Отримано зhttps://uk.wikipedia.org/wiki/Bcrypt
Категорії:
Приховані категорії:

[8]ページ先頭

©2009-2025 Movatter.jp