Использование модулярной арифметики в алгоритме гомоморфного шифрования Выполнила: Чечулина Дарья Научный руководитель: Кренделев С. Ф. Лаборатория современных компьютерных технологий НИЧ НГУ 2 Определение • Модулярная арифметика (или арифметика остатков) – метод выполнения арифметических действий над большими целыми числами, основная идея которого состоит в том, чтобы оперировать не непосредственно числом u, а его «остатками» по различным модулям m1…mr (причем все модули взаимно просты) 3 Обозначения • u, v – большие целые числа • m1,…,mr – модули, не содержащие общих делителей • u1 = u mod m1, … , ur = u mod mr • v1 = v mod m1, …, vr = v mod mr • (u1, … , ur), (v1, … , vr) – модулярное представление чисел u и v • m = m1×…×mr – область чисел, над которыми можно выполнять все операции 4 Арифметические операции • Сложение (u1, …, ur) + (v1, …, vr) = ((u1 + v1) mod m1, …, (ur + vr) mod mr) • Вычитание (u1, …, ur) - (v1, …, vr) = ((u1 - v1) mod m1, …, (ur - vr) mod mr) • Умножение (u1, …, ur) × (v1, …, vr) = ((u1 × v1) mod m1, …, (ur × vr) mod mr) 5 Китайская теорема об остатках • Пусть m1,…,mr – положительные целые попарно простые числа, т.е НОД (mj, mk) = 1, j ≠ k • Пусть m = m1 × m2 × … × mr и пусть также a, u1, …, ur – целые числа. • Тогда существует ровно одно целое число u, удовлетворяющее условиям a≤u<a+m, u = uj (mod mj), 1 ≤ j ≤ r 6 Пример 1. Прямая задача • • • • • • • • u = 73, v = 12 u × v = 876 r = 3 – количество используемых «модулей» m1 = 11, m2 = 7, m3 = 13 – взаимно простые «модули» m = m1 × m2 × m3 = 1001 u1 = u mod m1 = 7, u2 = 3, u3 = 8 v1 = v mod m1 = 1, v2 = 5, v3 = 12 (u1, u2, u3) × (v1, v2, v3) = ((7 × 1) mod 11, (3 × 5) mod 7, (8 × 12) mod 13) = (7, 1, 5) 7 Пример 2. Обратная задача • (u1, u2, u3) × (v1, v2, v3) = (w1, w2, w3) = (7, 1, 5) • u×v-? • Пользуясь т. Эйлера, найдем: Mj = (m / mj)φ(mj) mod m где φ(mj) = (mj – 1) – функция Эйлера для простых чисел mj • M1 = (7 × 13)10 = 364, M2 = (11 × 13)6 = 715, M3 = (11 × 7)12 = 924 • Mj = 1 mod mj , Mj = 0 mod mk , k ≠ j • u × v = (w1 × M1 + w2 × M2 + w3 × M3) mod m = = (7 × 364 + 1 × 715 + 5 × 924) mod m = (546 + 715 + + 616) mod m = 1877 mod m = 876 8 Недостатки алгоритма гомоморфного шифрования с использованием только длинной арифметики • Большие объемы данных, получаемые при выполнении арифметических операций над длинными целыми числами • Большая длина шифротекста на выходе алгоритма шифрования 9 Преимущества использования модулярной арифметики • Возможность параллельного выполнения операций повышение производительности алгоритма • Повышение стойкости алгоритма к криптоаналитическим атакам • Уменьшение объема выходных данных при умножении длинных целых чисел • Сокращение длины шифротекста