id: Гость   вход   регистрация
текущее время 06:14 19/04/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 След.
Комментарии [скрыть комментарии/форму]
— SATtva (23/11/2009 22:40, исправлен 23/11/2009 22:42)   профиль/связь   <#>
комментариев: 11558   документов: 1036   редакций: 4118

[offtopic]
Я честно говоря не помню, какие цвета были раньше. Просто заметил, что что-то изменилось.


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


А защитить от подбора такой механизм всё равно не сможет, сколько цветовых полей ни вводи. Человек способен неплохо запомнить дискретную информацию, но не волновую (профессиональные художники, музыканты, сомелье не в счёт), поэтому генерация ключей под заданный ID, да ещё с приличными погрешностями, чтобы только примерно соответствовать заданным цветам — вполне решаемая задача.
[/offtopic]

— sentaus (23/11/2009 23:24)   профиль/связь   <#>
комментариев: 1060   документов: 16   редакций: 32
[offtopic]
Специально не подбирал, чистое совпадение. Цвета действительно оказались похожи, по крайней мере, там точно был фиолетовый.
[/offtopic]
— spinore (24/11/2009 01:10)   профиль/связь   <#>
комментариев: 1515   документов: 44   редакций: 5786
[offtopic]
Во-первых, с увеличением числа цветовых полей запомнить такой светофор будет всё сложнее, раскраски ключей разных пользователей смешаются в голове в кучу.

Я вполне с Вами согласен, вопрос лишь в оптимуме между минимумом светофорности и максимуме запоминаемости. Лично мне кажется, что оптимальным было бы давать 3 поля, а не 2 как сейчас. Может быть, стоит провести опрос на эту тему?
[/offtopic]
— SATtva (24/11/2009 10:50)   профиль/связь   <#>
комментариев: 11558   документов: 1036   редакций: 4118
[offtopic]
Лично мне кажется, что оптимальным было бы давать 3 поля, а не 2 как сейчас. Может быть, стоит провести опрос на эту тему?

Хорошая мысль, добавляйте. :-)
[/offtopic]
— Гость (24/11/2009 11:22)   <#>
[offtopic]
Лично мне кажется, что оптимальным было бы давать 3 поля, а не 2
Есть ещё вариант позволить зарегистрированному пользователю самому выбирать их количество. От 0 до 16.
И к опросу неплохо бы картинку приложить, как это будет выглядеть.
[/offtopic]
— Гость (24/11/2009 11:48)   <#>
[offtopic]
Можно просто хранить сочетания цветов с остальной информацией аккаунта, а генерировать их фильтруя похожие на уже существующие в базе. Тогда такие же цвета и постаравшись злоумышленник не получит. Когда закончатся двухцветные комбинации вводить третий цвет и т. д.
[/offtopic]
— Гость (24/11/2009 12:21)   <#>
[offtopic]
Зачем же так усложнять? Достаточно вычислять цвет от sha256(secret_key + pgp_key_id), и тогда без знания secret_key и без взаимодействия с сервисом нельзя будет подбирать цвета.
[/offtopic]
— spinore (24/11/2009 20:43, исправлен 24/11/2009 20:44)   профиль/связь   <#>
комментариев: 1515   документов: 44   редакций: 5786
Хорошая мысль, добавляйте. :-)

И к опросу неплохо бы картинку приложить, как это будет выглядеть.

Терпение и спокойствие: сейчас они появятся, эти яйца.

— Гость (24/11/2009 22:15)   <#>
нельзя будет подбирать цвета
Подбирать как раз хорошо бы, плохо когда похоже на других.
— spinore (25/11/2009 00:57, исправлен 25/11/2009 01:00)   профиль/связь   <#>
комментариев: 1515   документов: 44   редакций: 5786

Опрос добавлен в очередь.


И к опросу неплохо бы картинку приложить, как это будет выглядеть.

С примерами того, как "выглядит" можно ознакомиться, скачав pdf-ку fileотсюда (прямая ссылка, но может не завестись под IE) или fileотсюда (работает с firefox).


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

Имхо, громоздко, и ассоциация с отпечатком будет для стороннего человека слишком неявной.


Достаточно вычислять цвет от sha256(secret_key + pgp_key_id), и тогда без знания secret_key и без взаимодействия с сервисом нельзя будет подбирать цвета.

А сервис должен иметь доступ к секретному ключу, чтобы подтвердить, что таков хэш именно от secret_key, а не от программы с hello world? Как посторонние-то смогут убедиться в цветах?

— spinore (25/11/2009 01:21)   профиль/связь   <#>
комментариев: 1515   документов: 44   редакций: 5786
С примерами того, как "выглядит" можно ознакомиться, скачав pdf-ку fileотсюда (прямая ссылка, но может не завестись под IE) или fileотсюда (работает с firefox).

На второй странице, кстати, видно, что ключ/отпечаток unknown'а – не обычный случайный: там что 2, что 3, что 4 цвета выбрать – краснокоричневая чума не меняется.
— spinore (25/11/2009 15:05)   профиль/связь   <#>
комментариев: 1515   документов: 44   редакций: 5786
SATtva, а выделять ссылки в тексте вопроса в опроснике движок не позволяет(?), а то текущая имплементация ссылок в вопросе такова, что "поймут только те, кому излишние пояснения не нужны вообще".
— SATtva (25/11/2009 16:31, исправлен 25/11/2009 16:33)   профиль/связь   <#>
комментариев: 11558   документов: 1036   редакций: 4118
SATtva, а выделять ссылки в тексте вопроса в опроснике движок не позволяет(?)

Боюсь, что нет. Не задавался такой целью. В любом случае, я подправил ссылки в вопросе, думаю, так будет понятней.


25/11 (id124): Какое число цветов, по-вашему мнению, оптимально для подцветки отпечатка PGP-ключа (http://www.pgpru.com/comment35173)? С примерами того, как бы это выглядело, можно ознакомиться здесь: http://omploader.org/vMnVtZA/fingprnt_colors.pdf
два цвета, как и реализовано на текущий момент 22  37.9%
три цвета 15  25.9%
четыре цвета 10  17.2%
лучше вообще без подцветки 6  10.3%
пять цветов 5  8.6%
Респондентов: 58
Опрос шел (дней): 31
Добавил: spinore

— unknown (27/11/2009 19:10)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664
Собственно идея витала в воздухе.

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

Но многих людей внешний бесит жутко, поменяйте хэши в ссылках из примера и посмотрите на результат (если кто ещё не видел) в режиме identicon, monsterid, wavatar.

Gravatar
— spinore (28/11/2009 05:40)   профиль/связь   <#>
комментариев: 1515   документов: 44   редакций: 5786
Но многих людей внешний бесит жутко

Если я правильно понял, то таков ваш портрет, unknown. Здесь он же в identicon, а тут – в wavatar. На мой вкус wavatar в целом уныл, monsterid более различен (и легче запоминаем), identicon – более благоприличен, но с запоминаемостью хуже, чем у monsterid. По ссылке можно поглядеть как бы выглядели отпечатки-картинки для разных пользователей: fileavatars.pdf (22 разных аккаунта с ключами на pgpru). В связи с "вновь открывшимися обстоятельствами" возникает естественный вопрос: не стоит ли нам перейти на систему с аваторами типа identicon вместо раскраски отпечатков? Мощность их множества явно выше чем у текущей системы покраски, да и с запоминаемостью получше будет.
На страницу: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 След.
Ваша оценка документа [показать результаты]
-3-2-1 0+1+2+3