МИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ,
СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА»
(СПбГУТ)
Факультет Инфокоммуникационных сетей и систем
Кафедра Защищенных систем связи
Дисциплина Криптографические протоколы
ОТЧЕТ ПО ЛАБОРАТОРНОЙ РАБОТЕ №8-2
Исследование протокола скрытого определения местоположения точек
интереса мобильного пользователя с учетом типа POI
(тема отчета)
Направление/специальность подготовки
10.03.01 Информационная безопасность
(код и наименование направления/специальности)
Студент:
(Ф.И.О., № группы) (подпись)
Преподаватель:
Яковлев В.А
(Ф.И.О) (подпись)
Цель лабораторной работы
Закрепить теоретические знания по разделу: «Гомоморфное шифрование». Ознакомиться с протоколом скрытого определения точек интереса мобильного пользователя на основе изученных алгоритмов криптосистем Пэйе и Рабина.
Выполнение лабораторной работы
Координата i = N mod5 + 1 = 28 mod 5 + 1 = 4
Координата j = (D + N) mod5 + 1 = (30+28) mod 5 + 1 = 4
Ячейка (4,4):
Генерация ключей пользователем
Сгенерируем простые числа p1, q1, таких, что N1 = p1q1 > M, где M = max(di,j) = 14700 – самое больше целое число из базы данных сервера.
Сгенерируем при помощи программы Maxima:
Получили p1 = 127, q1 = 131. Модуль N1 = 16637.
Сгенерируем простые числа p2, q2, так, чтобы N21 * 100 < N2 < N41, где N2 = p2q2.
Сгенерируем их также при помощи программы Maxima:
Получили p2 = 166399, q2 = 170003. Модуль N2 = 28288329197.
Далее, сгенерируем числа g1 из множества и g2 из множества , удовлетворяющие условию:
С помощью программы получили следующие значения:
g1 = 69994723
g2 = 711014335763367719741
Проверка:
Числа g1 и g2 подходят.
Таким образом,
Открытые ключи:
Pk1 = {g1, N1} = {69994723; 16637}
Pk2 = {g2, N2} = {711014335763367719741; 28288329197}
Секретные ключи:
Sk1 = {p1, q1} = {127, 131}
Sk2 = {p2, q2} = {166399, 170003}
Формирование пользователем зашифрованного запроса
Запрос формируется на основе своего местоположения и типа запрашиваемой точки интереса, используя алгоритм шифрования криптосистемы Пэйе и выполняется в три этапа.
Шифрование типа t POI на первом открытом ключе.
Для каждого пользователь выбирает случайное целое число и вычисляет криптограммы :
где t – тип точек интереса, про который пользователь запрашивает информацию.
g1 = 69994723, N1 = 16637
Выбираем t = 1 (банкомат)
Получили cl = {172245960 ; 96951916 ; 179668273 ; 93352806}
Encrypt(1, pk1), l = t = 1
Шифрование координаты i своей ячейки на втором открытом ключе.
Для каждого пользователь выбирает случайное целое число и вычисляет криптограммы :
где i – первая координата ячейки, в которой находится пользователь.
i = 4, g2 = 711014335763367719741, N2 = 28288329197
Получили c’l = {457187852266935158332 ; 572650764566015599574 ; 110724341283937467168 ; 267308458966397950317 ; 621368301944776417040}
Encrypt(1, pk2), l = i = 4
Шифрование координаты j своей ячейки на втором открытом ключе.
Далее пользователь выбирает случайное целое число и вычисляет еще одну криптограмму :
где j – вторая координата ячейки, в которой находится пользователь.
j = 4, g2 = 711014335763367719741, N2 = 28288329197
Получили криптограмму координаты j: c = 735870554799190456938.
Все полученные криптограммы пользователь отправляет на сервер в качестве запроса.
Таким образом, отправленный запрос:
Q = {5 ; 4 ; 172245960 ; 96951916 ; 179668273 ; 93352806 ; 457187852266935158332 ; 572650764566015599574 ; 110724341283937467168 ; 267308458966397950317 ; 621368301944776417040 ; 735870554799190456938 ; 69994723 ; 16637 ; 711014335763367719741 ; 28288329197}
Формирование сервером ответа на запрос, полученный от пользователя
Сервер, получив зашифрованный запрос от пользователя, производит вычисления, состоящие из двух этапов. Сервер использует шифрование Рабина и Пэйе для того, чтобы пользователь не мог расшифровать данные никакой другой ячейки, кроме своей.
Шифрование значений POIs для всех ячеек на первом открытом ключе.
Сервер шифрует информацию о ближайшей POI каждого типа, хранящейся в его базе данных, при помощи открытого ключа Pk1. Для этого он дополнительно использует алгоритм шифрования криптосистемы Рабина.
Вычисляется , где , :
Вторичное шифрование POIs и дополнительное шифрование для координаты j на втором открытом ключе.
Сервер шифрует полученные на предыдущем шаге криптограммы при помощи открытого ключа Pk2, дополнительно используя алгоритмы шифрования криптосистем Рабина и Пэйе.
Для каждого выбирается – целое число из множества и вычисляется :
Полученные криптограммы, которые сервер отправляет пользователю в качестве ответа:
R = {219751464759017887113 ; 103803329079309472230 ; 658751326055329960828 ; 726760509344019403795 ; 57509912127614153411}