id: Гость   вход   регистрация
текущее время 16:01 28/03/2024
Владелец: spinore (создано 16/06/2007 09:40), редакция от 26/03/2009 16:07 (автор: spinore) Печать
Категории: криптография, openpgp, управление ключами, стандарты, атаки, разное, сообщество, социальная инженерия
https://www.pgpru.com/Разработки/ЦветоваяPGPИдентификация
создать
просмотр
редакции
ссылки

Цветовая PGP-идентификация в социальных средах


Может быть, идея, которую я хочу озвучить, уже широко известна (и тогда предлагаю всем кинуться в меня ссылками), а, может быть, и нет – тогда надеюсь на конструктивное обсуждение. После моей атаки на сайт www.pgpru.com я подумал о том, как сделать простую защиту от подмены (имперсонации) пользователя на основе PGP-ключей. Давайте создадим синтез двух общеизвестных идей:


  • Xорошо известно, что зрительная память человека развита существенно лучше, чем все остальные: "лучше один раз увидеть, чем сто раз услышать" © народная мудрость.
  • Согласно идее асимметричной криптографии, удостоверением человека до момента создания квантового компьютера с успехом может служить отпечаток его OpenPGP-ключа – 40 цифр в 16теричном формате.

Запоминать цифры у большинства людей получается не очень хорошо, а запомниать цвета, хотя бы приблизительно, – намного лучше. Поскольку как цвета, так и отпечаток ключа есть некоторая информация, выражаемая несколькими цифрами, можно взаимнооднозначно отобразить одно на другое для упрощения запоминания. Идей, каким образом можно было бы осуществить данное отображение, можно изобрести много, но в каждом конкретном случае можно подобрать более-менее подходящий вариант в зависимости от существующего контекста.

Конкретный пример


Рассмотрим в качестве демонстрационного примера возможный способ реализации цветовой идентификации пользователя на форуме www.pgpru.com. Заметим, что цвет во многих программах часто задаётся в виде модели "RGB" (красный, зелёный, синий): 3-х чисел, соответствующих доле конкретного цвета в итоговом, каждое из которых может варьироваться от 00 до FF в 16-теричной системе исчисления (от нуля до 255 – в десятичной). Поскольку длина отпечатка ключа (40ок 16теричных цифр) не кратна длине числа цвета (6ти цифрам), оганичимся последними 36ю цифрами отпечатка ключа и разделим их попорядку на группы по 6 штук. Для отпечатка моего ключа (448F 5B26 9BC2 CFD8 09FF 8986 4E36 8194 BCBB B732) деление выглядело бы так:

5B269B C2CFD8 09FF89 864E36 8194BC BBB732

Итак, на основе простого правила мы сформировали 6 цветов, частично (и довольно уникально) характеризующих личность. Для пользователей, загрузивших свои ключи в профиль, отразим часть их "личных цветов", например, 4ёх первых, следующим образом (я специально считаю цвета с конца отпечатка по аналогии с вычислением той или иной длины идентификатора ключа (key id'а), равного нескольким последним цифрам отпечатка):
в шапке комментария

spinore (16/06/2007 05:53) профиль <#> правка удалить
отпечаток ключа: ... 4E36 8194 BCBB B732

дадим цвет тексту "BB B732" равным "BBB732" в модели RGB, тексту "8194 BC" – равным "8194BC", тексту "4E36" – равным "864E36" (взяв недостающие 2 цифры из фингерпринта пользователя), а цветом "09FF89" будем писать имя пользователя – "spinore".

Теоретические предпосылки


Цель введения цветовой идентификации есть один из способов упрощения распознавания участниками друг друга, основанная на специфике восприятия человечкого глаза, который очень хорошо различает разные цвета. Экспериментируя с графическими программами можно убедиться, что в некоторых случаях глаз способен уловить различие в единицу в одном из 3ёх цветов в 256тизначной RGB-модели цвета. Рассмотрим теперь атаку на основе социальной инженерии, недавно воплощённую мной на этом форуме. Поскольку никто не может подделать отпечатки ключей участников, в случае подмены я бы имел шапку комментария от имени "клонированного" пользователя подсвеченную другим образом несмотря на тот факт, что мог бы подделать многие другие параметры ключей участников, включая их дату создания и тому подобную информацию. Маловероятно, что многие участники помнят отпечатки ключей друг друга, копировать же себе ключ каждого вновь зарегистрировавшегося участника в больших сообществах также не является технически разумным, однако, общаясь в среде форума, все постепенно начали бы узнавать друг друга по цветам, время от времени читая форум и волей-неволей каждый раз видя уникальные цветовые сочетания в шапке комментариев. В случае подозрения на подмену ключа каждый может скопировать ключ, которым было подписано сообщение, сконструировать из него "личные цвета" по вышеприведённому правилу и сверить их с теми "личными цветами", которые он приблизительно помнит как принадлежащими автору сообщения. Описанный способ "цветовой проверки", естественно, не может дать стопроцентной гарантии отсутствия подмены ключа, но позволит отсечь многие заведомо фальшивые ключи. Задача о подделке личных цветов сводится к подделке хэш-функции ключа, которая на данный момент считается технически неразрешимой существующими средствами за разумное время.

Ограниченность метода


В качестве дополнения интересно было бы рассмотреть эффективность "цветовой иднетификации" с учётом реальных возможностей человеческого глаза и общего числа уже существующих ключей. Заведомо очевидно, что можно создать две схожих последовательности 40ка шестнадцатеричных цифр, "подцветку" которых различить на глаз сходу будет сложно, однако, в силу трудности подбора ключа с заданным хэшэм, атака по цвету мне представляется не столь простой в реализации. Строгим ответом на надёжность цветовой идентификации являлось бы исследование, которое определило, какой процент среди уже существующих в мире ключей имеют слабо различимые "личные цвета", что же касается моего личного мнения на этот счёт, то в большинстве случаев надёжность метода при хорошем знакомстве с "личными цветами" будет достаточной для применения в серьёзных системах на практике.

Технические ремарки


При выборе количества "личных цветов" следует выбирать оптимум между их числом, которое отражает информативность, и лёгкостью запомнания: один цвет проассоциировать с человеком легко, но будет много коллизий с точки зрения глаза, много же цветов будут смотреться как разноцветная ёлка, которая опять же не запомнится. По моему мнению 4 – это максимальное число, которое ещё не в ущерб запоминанию и в то же время хорошо стойко к коллизиям.


Не последнюю роль играет и применение цветов к элементам текста: требуется создать наибольший контраст в расположении цветовых элементов для лучшего запоминания, но перегружать его излишними техническими тонкостями не стоит – каждому должно быть интуитивно понятно как находить эти цвета и как их проверять.


Дополнение: мне предложили взять более грубую дискретизацию во избежание зрительных коллизий – расматривать 16тизначные цвета, взяв последние 18 цифр и разделив их на группы попорядку по 3, чтобы сконструировать 6 личных цветов. Выбор глубины цвета, которая связана с длиной используемой последовательности для конструирования фиксированного числа цветов, должен исходить из сравнения вероятностей зрительных коллизий и хэшовых коллизий для рассматриваемых вариантов: в данном случае мы имеем уже два варианта выбора: 6 цветов 256тизначных (5B269B C2CFD8 09FF89 864E36 8194BC BBB732) или 6 цветов 16тизначных (864 E36 819 4BC BBB 732), и я склоняюсь к тому, что последний из предложенных вариантов даже лучше (идея, предложенная Vadim_Z'ом).


P. S.: открыт для отзывов, предложений, критических замечений и уточнений.
spinore


© 2007-2009 spinore
© 2007-2008 SATtva

Материал распространяется на условиях
CreativeCommons-Attribution-NonCommercial-ShareAlike
CreativeCommons-Attribution-NonCommercial-ShareAlike


 
На страницу: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 След.
Комментарии [скрыть комментарии/форму]
— spinore (16/06/2007 19:44)   профиль/связь   <#>
комментариев: 1515   документов: 44   редакций: 5786
Мне кажется, что проблем с цветом, близким к белому, нет. По наведению мыши человек итак получит фингерпринт. И я думаю что близкие к белому фингеры будут не столь часты. Можно и фон писать – давайте с фона начнём, он действительно даёт больший контраст... Поди не так сильно эстетика полетит.
Всё же думаю что цвет ника – не столь сильное "усложнение", и даже если усложнение и читатель не запомнит откуда оно берётся, он может проверить цвета только 2 цвета в фингере – это уже будет немало. Кстати, я изначально подумал чтоб назначать уникальные цвета никам на основе фингеров :-) А с прозрачностью ника можно бороться как и с близким к белым цветам в фингере: весь текст пусть идёт чёрным, а цвет отражает только фон. Давайте начнём с этого ;-) А чё ждать участников... я хотел сёдна результат увидеть чтоб спокойне1 спалось :-) А они потом подойдут, охают покритикуют уже существующую реализацию и будет вдвойне полезно. Поди цвета приделать не так сложно и переправить потом (?).
— spinore (16/06/2007 19:48)   профиль/связь   <#>
комментариев: 1515   документов: 44   редакций: 5786
как альтернатива нику пользователя 3-й цвет можно засунуть в фон текста "отпечаток ключа"
Хотя вносить его в фон ника мне больше хотелось именно потому, что он будет визуально отделён от предыдущих цветов и не будет смотреться ёлкой, то есть будет проще для запоминания...
— spinore (16/06/2007 20:09)   профиль/связь   <#>
комментариев: 1515   документов: 44   редакций: 5786
Кстати, по файлу pgpcolors_multi.html уже сразу видно что у unknown'а ключ поддельный: все 4 цвета – красный чуть разных оттенков. Ясно что нарочито такй ключ не сгенерить, – видно что химичил над фингером :-)
У SATtva'ы 3 цвета – сильные, живые – сразу видно что карма хорошая, у многих кстати хорошие сочетания цветов идут по последним трём. Только у меня чёт <вырезано>ня какая-то в 1-м цвете :-(, а 2,3,4 – между собой тоже неплохие.
— Гость (16/06/2007 20:50)   <#>
Если фон сделать дополнительным цветом к цвету шрифта, проблем с белым по белому не будет.

И может это всё, включая и показ отпечатка, сделать опцией. А в глазах рябит. Впрочем, ведь есть Privoxy с возможностью фильтрации. :)
— spinore (16/06/2007 21:43)   профиль/связь   <#>
комментариев: 1515   документов: 44   редакций: 5786
Гость:
Если фон сделать дополнительным цветом к цвету шрифта, проблем с белым по белому не будет.

Дополнительный цвет мне не нравится, это отступление от простого алгоритма, почти необоснованное.
Благо мы уже сошлись на том что будем пока делать фон, а если сильно нужен отпечаток, то наведите мышкой и получите его.

Гость:
И может это всё, включая и показ отпечатка, сделать опцией. А в глазах рябит.

Это делалось с умыслом лучшей pgp-защиты в реальной среде, для обкатки идеи... Вам не интересна эта идея – что ж, вольному – воля.
Гость:
Впрочем, ведь есть Privoxy с возможностью фильтрации. :)

Может быть я отстал от жизни, но насколько я знаю privoxy предназначена для резки баннеров и всплывающих окон а не кусков из текста. Я не уверен что можно реализовать то что вы хотите через privoxy.
— SATtva (16/06/2007 22:59)   профиль/связь   <#>
комментариев: 11558   документов: 1036   редакций: 4118
Фильтры Privoxy построены на регулярных выражениях, так что резать можно всё, что душе угодно, лишь бы имело общий паттерн.

Цветные отпечатки запущу завтра. (Может быть и алгоритм поиска похожих никнэймов к тому времени закончу.) Потом уезжаю на несколько дней, так что у вас всех будет время обсудить все "за" и "против". А пока, spinore, выпейте валерианки, это тоже для крепкого сна помогает. :-)
— spinore (16/06/2007 23:22, исправлен 16/06/2007 23:25)   профиль/связь   <#>
комментариев: 1515   документов: 44   редакций: 5786
SATtva:
Потом уезжаю на несколько дней, так что у вас всех будет время ...

ну вы смотрите, SATtva, если после поездки ваш фингерпинт линяет мы не виноваты... будем считать что вы и есть тот самый волк с кефиром, пришедший к семерым козлятам :-)
— Гость (17/06/2007 09:52)   <#>
отступление от простого алгоритма, почти необоснованное.

Вы, как автор алгоритма, будете наслаждаться его простотой, остальные же, коим алгоритм до лампочки и больше интересен результат, пусть страдают от плохо отличимых от фона цветов... Хмм.
Ну и на отраслевой стандарт по этой причине не потянет, потому как, мягко выражаясь, не везде ещё есть возможность, наведя мышь, увидеть полный отпечаток.

А цвет шрифта лучше выбирать из двух: либо белый, либо чёрный, в зависимости от темноты фона. Я думаю что это не очень усложнит алгоритм :)

резать можно всё, что душе угодно, лишь бы имело общий паттерн.

Не только резать, но и кое-что по другому форматировать. Например, можно, оставив только две группы цифр отпечатка, поместить их на одну строку с ником.
— Гость (17/06/2007 10:00)   <#>
Если же решите всё-таки использовать цвета самого шрифта, то, для хорошёй отличимости от белого фона, эти 16 цветов надо просто выбирать из тёмной половины, а не из всего диапазона.
(Хотя такие сложности spinore уже вряд-ли потянет. :)
— spinore (17/06/2007 14:14)   профиль/связь   <#>
комментариев: 1515   документов: 44   редакций: 5786
Гсть, вы внятно изложите что вы конкретно хотите, то есть полную спецификацию "технического стандарта", сделайте скрины, чтобы народ посмотрел. Если хорошо будет выглядеть – может и примем. Вы можете помогать не только советами но и конкретными действиями? Напишите реализацию "по-вашему" хотя бы для 10-ти ключей, каким бы вы хотели её видеть и дайте ссылку – будем обсуждать.
— spinore (17/06/2007 14:36)   профиль/связь   <#>
комментариев: 1515   документов: 44   редакций: 5786
Вообще, придумать можно всё что угодно. Можно, например, сам фингерпринт каждый раз писать чёрным на белом фоне, но в толстенькой цвтеной рамке, цвет (цвета) которой и будет соответствовать фингерпринту. Я высказал идею, как же сделать из неё оптимальный стандарт – вопрос к людям несколько других профессий: профессиональным дизайнерам, биологам и т. п. Ну и к "гостям", конечно, куда же без них ;-)
— spinore (17/06/2007 14:41)   профиль/связь   <#>
комментариев: 1515   документов: 44   редакций: 5786
Гость
Если же решите всё-таки использовать цвета самого шрифта, то, для хорошёй отличимости от белого фона, эти 16 цветов надо просто выбирать из тёмной половины, а не из всего диапазона.

(Хотя такие сложности spinore уже вряд-ли потянет. :)

Между прочим, SATtva так и сделал в скрине-файле pgpcolors_multi.html, так что идея уже используется... почему бы и нет, в конце концов. Шрифт можно подбирать из стратегии "лучше было видно на фоне", а сам фон уже из ключа. Вполне здраво.
— SATtva (17/06/2007 20:20)   профиль/связь   <#>
комментариев: 11558   документов: 1036   редакций: 4118
Сделано. Цветовая индикация присутствует в заголовках комментариев, а также на странице профиля пользователя. Цвет шрифта — белый или чёрный в зависимости от яркости фона (кто-то кого-то стелепатировал, я со вчерашнего вечера на сайт вообще не заходил).

spinore, я понял, что мне напоминает цвет Вашего отпечатка — давно нестираный украинский флаг. :-)
— SATtva (17/06/2007 20:29)   профиль/связь   <#>
комментариев: 11558   документов: 1036   редакций: 4118
Документ перемещён в раздел разработок.
— unknown (17/06/2007 20:46)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664
Нет, я конечно не против, чтобы мой ключ выглядел, как красно-коричневая чума, так даже забавно.

Только думаю, тут есть таже проблема, что и в старом бумажном делопроизводстве. При использовании большого количества цветных скрепок, маркеров, папок, информация перестаёт воприниматься, начинает возникать эффект цветовой усталости, и мысленные крики "спасите мои глаза". В крайнем случае, можно сделать две средней толщины подчёркивающие полоски под номером ключей, чтобы не так сильно било в глаза.

Ну и дальтоники, пользователи чисто консольных браузеров и обладатели двуцветных мониторов такую схему конечно не оценят.
На страницу: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 След.
Ваша оценка документа [показать результаты]
-3-2-1 0+1+2+3