The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Проект Vash переводит наглядную визуализацию хэшей на новый уровень

16.07.2011 10:31

Криптографические хэши позволяют отождествить большой набор данных с компактной последовательностью бит фиксированной длины, что значительно упрощает проверку неизменности исходной информации. Недостатком является то, что хаотичная последовательность из нескольких десятков цифр трудно воспринимается человеком, невозможно на глаз сразу определить - изменился ли хэш. Проект Vash, первый релиз которого вышел несколько дней назад, призван устранить данный недостаток, представляя хэши в виде картинок. Код Vash написан на языке Java и распространяется под лицензией AGPLv3.

В отличие он ранее предпринимаемых попыток графического представления хэшей, таких как Identicon, визуальное оформление хэшей в Vash значительно более наглядно, лучше воспринимается и запоминается. Если в Identicon изображение формируется из геометрических фигур, то в Vash генерируются более реалистичные изображения. Каждое из изображений обладает своим характером, который сразу бросается в глаза и западает в память.

Vash поддерживает генерацию изображений для любых порций данных, от нескольких слов и base64-последовательностей, до криптографических ключей и больших файлов. В качестве начальных данных для формирования изображения берется результат выполнения хэш-функции SHA-512, т.е. с криптографической точки зрения Vash-изображения уникальны на уровне хэша SHA-512.

Из дополнительных применений называется верификация ввода номеров кредитных карт. Например, вместо практикуемого отображения части номера кредитной карты (**************1234) гораздо нагляднее вывести хорошо запоминающуюся картинку, которую пользователь сможет мгновенно сверить с полученным аналогичным образом изображением, напечатанным на карте. Еще одной областью использования Vash может стать подтверждение корректности ввода закрытых данных, например, вывод изображения позволит пользователю сразу оценить корректно введен пароль или нет.

К сожалению формирование подобных изображений достаточно ресурсоёмкая задача. Выход виделся в реализации алгоритма генерации изображений с использованием OpenCL, расширений для параллельного программирования с возможностью задействования GPU видеокарт. Перенос вычислительной логики на плечи GPU позволил на несколько порядков ускорить генерацию изображений. По оценке разработчиков модифицированный таким образом прототип Vash должен работать в 100-500 раз быстрее реализации на языке Си, выполняемой на CPU. Вариант с OpenCL был опробован в реализации на языке Python с использованием библиотеки PyOpenCL.

На данный момент реализовать идею полного привлечения GPU для вычислений не удалось и разработчики ограничились использованием CPU. Первая проблема всплыла из-за необходимости организации обхода дерева в процессе генерации изображения — необходимый уровень вложенности удалось реализовать только на CPU. Вторая проблема оказалась более серьезной — разнообразие предварительных вычислений до получения хэша, и, соответственно, необходимость компиляции кода для GPU в процессе создания изображения. Компиляторы OpenCL от компаний AMD и Nvidia генерируют очень быстрый и прекрасно оптимизированный код, но сам процесс компиляции занимает слишком много времени. В итоге, генерация изображения на стороне GPU занимает всего 50-100 нс, но на сопутствующие операции тратится около 20-60 секунд времени CPU, что неприемлемо.

  1. Главная ссылка к новости (http://blog.thevash.com/2011/0...)
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/31207-vash
Ключевые слова: vash, hash, image, crypt, visual
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (27) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 11:44, 16/07/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +5 +/
    >Недостатком является то, что хаотичная последовательность из нескольких десятков цифр трудно воспринимается человеком, невозможно на глаз сразу определить - изменился ли хэш.

    А зачем это определять человеку? Это принято делать автоматически.
    По мне так эта технология более уместна при наборе пароля, когда не видишь что печатаешь.

     
  • 1.2, Анонимко (?), 12:08, 16/07/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +5 +/
    Хорошая технология.
    Мне тут недавно  довелось обновлять сертификаты/ключи нескольких фондов и банков.
    При чем, за много периодов.
    В половине случаев, сверял начало хеша ключей.
    А так, мог бы просто посмотреть на цветные кружочки-звездочки-муары.

    А вот пароли на сайтах проверять таким способом - это здорово.

     
     
  • 2.18, Alex (??), 20:55, 16/07/2011 [^] [^^] [^^^] [ответить]  
  • –2 +/
    А собрать два списка ключей, отсортировать по возрастанию, и сравнить визуально - проще.
     
     
  • 3.23, Below (ok), 07:57, 17/07/2011 [^] [^^] [^^^] [ответить]  
  • +3 +/
    man diff
     

  • 1.3, meequz (ok), 12:21, 16/07/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Прикольно, пойду сделаю аватарку по хэшу своего никнейма.
     
  • 1.4, Аноним (-), 12:23, 16/07/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Мне кажется или на пикрелейтедах листы каннабиса?
     
     
  • 2.5, meequz (ok), 12:29, 16/07/2011 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Почти. Только симметричные со всех сторон.
     

  • 1.6, Аноним (-), 12:34, 16/07/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Слишком ресурсоемко получается. Взяли бы более простой алгоритм, при котором шанс получить похожую картинку 1 к 1000 например.
    Веб сервера загнутся от такой нагрузки. Легко будет заддосить попытками авторизации )) Если картинка генерится дольше 1 с, то в большинстве случаев это непрактично.
     
     
  • 2.8, Аноним (-), 13:00, 16/07/2011 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Исполнять на клиенте. Сейчас подтянутся JavaScript-фанбои и перепишут за вечер поделку, правда после этого она будет тормозить ещё на порядок усерднее.
     
  • 2.26, Кодер (?), 15:16, 17/07/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Согласен - 32 байта "размазать" на картинку в 2^12 _пикселей_ - не нужно особо ума.
    Касательно алгоритма (навскидку): по идее, любой хэш можно разбить на порции битов, задающих характерные особенности. Скажем, первые 2 бита дают 4 комбинации фигур - "круги", "градиенты", "квадраты" и "синусоиды". Следющие 8 бит задают "общий тон" картинки (цвета фигур, фона). Следующие биты влияют как коэффициенты к фигурам (множитель к синусу или скорость градиента). Вобщем, учитывая сильный характер изменчивости хэша, увидеть, что твоя картинка - не та, можно очень легко. Не понимаю, что за чушь они там обсчитывают на ГПУ... Наводит на мысль "есть игрушка ГПУ, чего бы нам на ней посчитать??".
     

  • 1.7, anonymous (??), 12:45, 16/07/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Непонятно, про какую реализацию на Си написано в новости. Скачать можно только код на java.
     
     
  • 2.9, Аноним (-), 13:01, 16/07/2011 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Омич, читать научись.
     
     
  • 3.24, ИмяИмя (?), 09:32, 17/07/2011 [^] [^^] [^^^] [ответить]  
  • –1 +/
    "Код Vash написан на языке Java и распространяется под лицензией AGPLv3.
    По оценке разработчиков модифицированный таким образом прототип Vash должен работать в 100-500 раз быстрее реализации на языке Си, выполняемой на CPU.
    Вариант с OpenCL был опробован в реализации на языке Python ..."

    что-то както непонятно. они проводили тест скомпиленой
    1. сишной программы(CPU)
    2. питонской программой(на GPU)
    у них три исходника, а дают только 1? или как?

    ps: йа запутался помидорами не кидать)

     

  • 1.10, Аноним (-), 13:01, 16/07/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Хоть алгоритм бы какой рассказали что ли...
     
  • 1.11, k_bx (?), 13:15, 16/07/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    +--[ RSA 2048]----+
    |                 |
    |        .        |
    |     . +         |
    |    . E+o        |
    |   .. ..S .      |
    |    .+...=       |
    |   .o+.=o .      |
    |  o o.o.o.       |
    |   +. ..         |
    +-----------------+
     
     
  • 2.22, Аноним (-), 07:41, 17/07/2011 [^] [^^] [^^^] [ответить]  
  • +/
    twofish с длинным ключем:

    8===>

     

  • 1.12, Аноним (-), 15:24, 16/07/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >PyOpenCL

    Вот изврат-то! А High Performance Visual Basic ещё не сделали?

     
     
  • 2.13, anonymus (?), 15:37, 16/07/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Для прототипирования самое оно, надо же увидеть, достижимо ли оно вообще, или нет.
     
  • 2.19, Аноним (-), 21:18, 16/07/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Сделали, давно еще. А что, что-то не так?
     
  • 2.21, Аноним (-), 07:09, 17/07/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Пинайте майкрософт - будет high performance computing для самых маленьких :)
    P.s. эти огурцы не осилили взять сорц чего-то типа hashkill чтобы сделать все на сях в культурном виде?
     

  • 1.15, lucentcode (ok), 18:35, 16/07/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Очень интересный проект. Если он ещё сможет по картинке хэш выдавать, вообще удобно бы было.
     
     
  • 2.16, filosofem (ok), 19:34, 16/07/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Уже добавить в метаданные файла с картинкой соответствующий ей хэш не проблема.
     

  • 1.17, Аноним (-), 20:19, 16/07/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А восстановить данные по изображению конечно же можно?
     
     
  • 2.20, FractalizeR (ok), 22:24, 16/07/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Конечно же нет.
     
  • 2.25, ibat (??), 12:07, 17/07/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Шутиш ?
     

  • 1.28, рфьыеук (?), 16:16, 18/07/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Можно брать "картины" современных "худйожников" и пустить их на хэши, хоть какя-то от них польза будет.
    :)
     
     
  • 2.29, Andrey Mitrofanov (?), 16:19, 18/07/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Нельзя. Койпирасты возражать будут. /dev/random надёжнее.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру