Пользователь
0,0
рейтинг
24 июля 2011 в 21:00

Разработка → Онлайн генератор паролей с энтропией

Хочу познакомить вас с еще одним онлайн генератором паролей.
Основное его достоинство — возможность генерации паролей с энтропией. Т.е. случайность пароля напрямую зависит от того, как вы будете перемещать мышь и какие кнопки на клавиатуре при этом нажмете.
Режимы работы — полностью рандомный пароль либо произносимый пароль по алгоритму pwgen.
Ну и набор опций нормального генератора паролей — выбор диапазонов символов, возможность исключения похожих символов (например B и 8), настройка длины и количества паролей, отображение безопасности пароля в битах.
Собственно вот он: genpas.peter23.com
Протестирован на работу во всех браузерах.
Под катом немного технических подробностей.

Энтропия реализуется достаточно просто: обработчики событий mousemove, click, keydown сохраняют координаты мыши, флаг клика, размеры окна, нажатые клавиши. Когда накапливается определенное количество данных, они используются для инициализации генератора случайных чисел, основанного на алгоритме RC4.
Алгоритм pwgen был просто списан с исходников pwgen и немного подредактирован.
Стойкость пароля вычисляется по формуле: Math.floor(Math.log(<количество_используемых_символов>)*(<длина_пароля>/Math.log(2))).

Написано все на JS, исходники доступны для просмотра. При разработке использован ряд библиотек, распространяющихся под различными свободными лицензиями:
jQuery
pwgen.js, pwgen.js с модификациями
seedrandom.js с незначительными модификациями

С удовольствием выслушаю замечания и пожелания.
@peter23
карма
172,2
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

Комментарии (46)

  • 0
    Ушло в избранное.
    Параноик внутри меня жаждет https.
    • +11
      Зачем еще https, там же js.
      • +3
        да, глупость сморозил.
      • 0
        Opera Mini
        Режим с энтропией только не работает.

        Или это только кажется, что опера мини js гоняет через себя?
        • 0
          В Opera Mini JS поддерживается весьма ограниченно, это «медицинский факт».
          • +2
            Поддерживается достаточно, чтобы этот сервис работал (но без энтропии).
            При нажатии «Генерировать» страница полностью перегружается. С сервера? Если да, то пароль будет сохранен как минимум на серверах оперы.
    • +4
      Параноик внутри вас должен бояться пополнять чужие словари своим паролем
  • +12
    Энтропия? Ахах! Загляните в Википедию. Энтропия — это мера, а не механизм или инструмент.

    То что вы называете энтропией, является не более чем Биометрическим датчиком случайных чисел
    • 0
      Тоже поржал над энтропией. Все эти «поводите мышкой» и «понажимайте кнопки» в данном случае могут служить только для иллюзии чего-то супер защищённого у обычного пользователя и практического смысла не несут.
    • +1
      Есть вполне легитимный термин в области криптографии, детали ищутся в той же википедии по сочетанию «Информационная энтропия»
    • +2
      Энтропия — не только мера дизорганизации системы, но еще и величина, обратная информации. С ее помощью мы можем выразить объем неизвестной нам информации. Такое впечатление, что от мыши и клавы информация не прибывает, а наоборот, утекает в них. А употребление автором этого слова тут — это влияние английского языка, в котором entropy — это еще и процесс, приводящий вселенную (или систему) к тепловой смерти, почти синоним хаоса.
      • НЛО прилетело и опубликовало эту надпись здесь
        • 0
          Абсолютно верное пояснение.
        • 0
          В данном случае способ генерации инициализирующего числа не играет абсолютно никакой практической роли. Следовательно требование от пользователя делать дополнительные «телодвижения» для якобы большей защиты смешно.
          • НЛО прилетело и опубликовало эту надпись здесь
  • +4
    Для WebKit-based browser (Chrome точно, в Safari не проверял) имеет смысл использовать на Math.random, a crypto.getRandomValues, которые возьмут энтропию из /dev/random или аналога, предоставляемого операционной системой.

    wiki.whatwg.org/wiki/Crypto
    jsperf.com/rng-booleans/2

    Firefox тоже скоро доделает поддержку crypto.getRandomValues: bugzilla.mozilla.org/attachment.cgi?id=547820&action=diff
  • 0
    Aingai3ohwai Upee0bahjies Kex5weithoox gahBahngu4ri Aac1oosinaes Esu1veeyiexi Uk1iepubaeda Aonaiwoogh4h Ohsie7ahnahw Paeshae1tayo Ciecaef6umei hohLao8seedo

    >Стойкость одного пароля: 71 bits

    А это откуда? Что такое «стойкость»?

    PS
    KeePass на те же пароли даёт 57-63 бита. Всегда у автора хотел спросить что имеется ввиду.
  • +1
    А вероятность случайного выпадания словарной комбинации? А без такой проверки вся паранойя коту под хвост, извините :)
  • –1
    Злоумышленник может обмануть ваш сервер, послав поддельные данный с датчика энтропии?
    • +1
      На JS работает же :)
      Обмена данными с сервером не происходит.
  • +2
    нажимаю на клавиши, мышь не двигаю — ничего не происходит
    Браузер Chrom3 12
    • 0
      Даже не знаю, что сказать. Может быть JS отключен?
      Тестировал работу в Chrome 12 и 13 версий под Linux и под Windows.
      • 0
        мышь двигаю то все работает, причем тут JS?
        • 0
          Попробуйте побольше понажимать клавиши. Скорость работы высока только с мышкой, генерить пароли нажатиями клавиш и ресайзом окна, долго.
          P.S. Chrome 12
        • 0
          При том, что именно код JS обрабатывает события передвижения мыши.
          • 0
            Так мышь работает! клава не работает, перечитайте первое сообщение
            • 0
              Ага, я понял наконец, сплю на ходу.
              bad_guy выше верно сказал.
              Просто нужно много клавиш понажимать. Мышь генерирует намного больше событий.
  • 0
    Так всё-таки, чем плох pwgen?..
  • +2
    Несложный код оценки энтропии событий движения мыши

    if (iEventCount % 100 == 99)
    {
    fEntropyX = 0.0; fEntropyY = 0.0;
    for (var i=0; i<=63; i++)
    {
    if (0<iDiffStatX[i]) { fEntropyX = fEntropyX - (iDiffStatX[i]/iEventCount)*Math.log(iDiffStatX[i]/iEventCount)/Math.log(2); };
    if (0<iDiffStatY[i]) { fEntropyY = fEntropyY - (iDiffStatY[i]/iEventCount)*Math.log(iDiffStatY[i]/iEventCount)/Math.log(2); };
    };
    document.getElementById('stt').innerHTML = 'X: ' + fEntropyX + 'Y: ' + fEntropyY;
    };

    в моем браузере дает

    EventCount : 2002

    Statistics :
    EntropyX: 3.6365715988552525 bits
    EntropyY: 3.2915305203895318 bits


    Как видите, движения мыши дают несколько меньший прирост энтропии Вашему генератору, чем Вы рассчитываете.
  • +2
    раз уж параноидально думать о безопасности… то какой нафиг сторонний сервис для онлайн генератор паролей?
    • 0
      А он не сторониий, все же на JS написано, и можно взять и скопировать в любой сайт и, как уже тут говорили, работать то оно будет на стороне клиента, а не на сервере, т.е. ни какой подмены/перехвата/хитростей. Вопрос только в том, какой лицензией снабдил автор свое творение:
      • genpas.js — © Peter <i@peter.am> — а лицензия не указана
      • pwgen.js — © Peter <i@peter.am> — лицензия GPL
      • seedrandom.js — David Bau, Peter — лицензия BSD
      • jQuery — John Resig — Dual licensed under the MIT or GPL Version 2 licenses
      • +2
        Снабдил genpas.js лицензией GPL :)
        • 0
          Теперь все понятно. Спасибо спасибо :)
  • 0
    Firefox 3.6.13. Не считывает нажатия клавиш. По крайней мере проценты не бегут.

    Вопрос. А как генерируется пароль без пользовательского ввода? Ведь большинство будет делать именно так, ибо лениво.
    • 0
      Просто нужно много клавиш понажимать. Мышь генерирует намного больше событий.
      Без пользовательского ввода генерируется обычным Math.random(). Он инициализируется текущим временем и возможно еще какими-то параметрами.
  • 0
    А как ставить «галочку» для «исключать символы из набора B8G6I1l|0OQDS5Z2»?
    • 0
      для режима pwgen возможно?
      • 0
        Это только для режима полного рандома.
  • НЛО прилетело и опубликовало эту надпись здесь
    • –1
      и сразу ссылку на словарик рядом выкладывать с хэшами и паролями
    • НЛО прилетело и опубликовало эту надпись здесь
      • НЛО прилетело и опубликовало эту надпись здесь
        • НЛО прилетело и опубликовало эту надпись здесь
  • 0
    Все это сложно.
    www.parolik.com/ просто пароли и ничего лишнего.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.