Схема Блома — это симметричный пороговый протокол обмена ключами в криптографии . Схема была предложена шведским криптографом Рольфом Бломом в серии статей в начале 1980-х годов. [1] [2]
Доверенная сторона дает каждому участнику секретный ключ и открытый идентификатор, что позволяет любым двум участникам независимо создать общий ключ для общения. Однако, если злоумышленник может скомпрометировать ключи по крайней мере k пользователей, он может взломать схему и восстановить каждый общий ключ. Схема Блома является формой порогового разделения секрета .
Схема Блома в настоящее время используется схемой защиты от копирования HDCP (только версия 1.x) для генерации общих ключей для источников и приемников контента высокой четкости, таких как проигрыватели HD DVD и телевизоры высокой четкости . [3]
Протокол
Протокол обмена ключами включает доверенную сторону (Трент) и группу пользователей. Пусть Алиса и Боб будут двумя пользователями группы.
Настройка протокола
Трент выбирает случайную и секретную симметричную матрицу над конечным полем , где p — простое число. требуется, когда новый пользователь должен быть добавлен в группу совместного использования ключей.
Например:
Добавление нового участника
Новые пользователи Алиса и Боб хотят присоединиться к группе обмена ключами. Трент выбирает публичные идентификаторы для каждого из них; т.е. векторы k-элементов:
.
Например:
Затем Трент вычисляет их закрытые ключи:
Используя, как описано выше:
Каждый будет использовать свой закрытый ключ для вычисления общих ключей с другими участниками группы.
Вычисление общего ключа между Алисой и Бобом
Теперь Алиса и Боб хотят общаться друг с другом. У Алисы есть идентификатор Боба и ее закрытый ключ .
Она вычисляет общий ключ , где обозначает транспонирование матрицы . Боб делает то же самое, используя свой закрытый ключ и ее идентификатор, что дает тот же результат:
Каждый из них сгенерирует свой общий ключ следующим образом:
Сопротивление атакам
Чтобы гарантировать, что по крайней мере k ключей должны быть скомпрометированы, прежде чем каждый общий ключ может быть вычислен злоумышленником, идентификаторы должны быть k-линейно независимыми: все наборы из k случайно выбранных идентификаторов пользователей должны быть линейно независимыми. В противном случае группа злонамеренных пользователей может вычислить ключ любого другого участника, идентификатор которого линейно зависит от их идентификатора. Чтобы гарантировать это свойство, идентификаторы предпочтительно должны быть выбраны из матрицы MDS-Code (матрица кода исправления ошибок с максимальным расстоянием разделения). Строки матрицы MDS будут идентификаторами пользователей. Матрицу MDS-Code можно выбрать на практике с использованием кодовой матрицы кода исправления ошибок Рида-Соломона (этот код исправления ошибок требует только легко понимаемой математики и может быть вычислен чрезвычайно быстро). [4]
Ссылки
^ Блом, Рольф. Непубличное распределение ключей. В Proc. CRYPTO 82, стр. 231–236, Нью-Йорк, 1983. Plenum Press
^ Блом, Рольф. «Оптимальный класс систем генерации симметричных ключей», Отчет LiTH-ISY-I-0641, Университет Линчёпинга, 1984 [1]
^ Кросби, Скотт; Голдберг, Ян; Джонсон, Роберт; Сонг, Дон; Вагнер, Дэвид (2002). «Криптоанализ системы защиты цифрового контента с высокой пропускной способностью». Безопасность и конфиденциальность в управлении цифровыми правами . Конспект лекций по информатике. Том 2320. С. 192–200. CiteSeerX 10.1.1.10.9307 . doi :10.1007/3-540-47870-1_12. ISBN978-3-540-43677-5. {{cite book}}: |journal=проигнорировано ( помощь )