id: Гость   вход   регистрация
текущее время 17:15 29/03/2024
Владелец: spinore редакция от 31/10/2008 20:07 (автор: spinore) Печать
Категории: криптография, openpgp, управление ключами, стандарты, атаки, разное, сообщество, социальная инженерия
https://www.pgpru.com/Разработки/ЦветоваяPGPИдентификация
создать
просмотр
редакции
ссылки

Это старая редакция страницы Разработки / Цветовая P G P Идентификация за 31/10/2008 20:07.


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


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


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

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




Рассмотрим в качестве демонстрационного примера возможный способ реализации цветовой идентификации пользователя на форуме https://www.pgpru.com. Заметим, что цвет во многих программах часто задаётся в виде модели "RGB" (красный, зелёный, синий): 3-х чисел, соответствующих доли конкретного цвета в итоговом, каждое из которых может варьироваться от 0 до 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), и я склоняюсь к тому, что последний из предложенных вариантов даже лучше – это идея этого человека.




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


© 2007-2009 spinore
© 2007-2008 SATtva

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