Для установки нажмите кнопочку Установить расширение. И это всё.

Исходный код расширения WIKI 2 регулярно проверяется специалистами Mozilla Foundation, Google и Apple. Вы также можете это сделать в любой момент.

4,5
Келли Слэйтон
Мои поздравления с отличным проектом... что за великолепная идея!
Александр Григорьевский
Я использую WIKI 2 каждый день
и почти забыл как выглядит оригинальная Википедия.
Статистика
На русском, статей
Улучшено за 24 ч.
Добавлено за 24 ч.
Что мы делаем. Каждая страница проходит через несколько сотен совершенствующих техник. Совершенно та же Википедия. Только лучше.
.
Лео
Ньютон
Яркие
Мягкие

Из Википедии — свободной энциклопедии

bcrypt
Разработчики Нильс Провос и David Mazières
Впервые опубликован 1999
Число раундов 2n

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

Шифр Blowfish отличается от многих алгоритмов вычислительно сложной фазой подготовки ключей шифрования[en].

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

Изначально реализовано в функции crypt в OpenBSD. Существуют реализации для Java, Python, Nim, C#, Ruby, Perl, PHP 5.3, Node.js, Go[2] и некоторых других.

Алгоритм

Алгоритм bcrypt использует алгоритм настройки ключей из «Eksblowfish»:

EksBlowfishSetup(cost, salt, key)
    state  InitState()
    state  ExpandKey(state, salt, key)
    repeat (2cost)
        state  ExpandKey(state, 0, key)
        state  ExpandKey(state, 0, salt)
    return state

Функция InitState соответствует оригинальной функции из шифра Blowfish; для заполнения массива P и S-box используется дробная часть числа .

Функция ExpandKey:

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


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

bcrypt(cost, salt, key, input)
    state  EksBlowfishSetup(cost, salt, key)
    ctext  input
    repeat (64)
        ctext  EncryptECB(state, ctext) // шифрование стандартным Blowfish в режиме ECB
    return Concatenate(cost, salt, ctext)

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

Недостатки

bcrypt был разработан в 1999 году и был защищен от эффективного перебора на аппаратных средствах того времени. В настоящее время получили широкое распространение ПЛИС, в которых bcrypt реализуется эффективнее. В 2009 был создан алгоритм scrypt, требующий для своей работы значительный объем памяти (со случайным доступом), объем памяти настраивается[4].

В сравнении с PBKDF2, алгоритм расширения ключа в bcrypt практически не исследовался криптографами[5].

См. также

Ссылки

Примечания

  1. Provos, Niels; Mazières, David. A Future-Adaptable Password Scheme (неопр.) // Proceedings of 1999 USENIX Annual Technical Conference. — 1999. — С. 81—92. Архивировано 4 февраля 2012 года.
  2. Package bcrypt (англ.). godoc.org. Дата обращения: 10 января 2020. Архивировано 29 мая 2020 года.
  3. Архивированная копия. Дата обращения: 19 августа 2015. Архивировано 15 июня 2018 года.
  4. 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.»
  5. 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.»
Эта страница в последний раз была отредактирована 31 октября 2022 в 07:17.
Как только страница обновилась в Википедии она обновляется в Вики 2.
Обычно почти сразу, изредка в течении часа.
Основа этой страницы находится в Википедии. Текст доступен по лицензии CC BY-SA 3.0 Unported License. Нетекстовые медиаданные доступны под собственными лицензиями. Wikipedia® — зарегистрированный товарный знак организации Wikimedia Foundation, Inc. WIKI 2 является независимой компанией и не аффилирована с Фондом Викимедиа (Wikimedia Foundation).