рассчитать среднее значение трех зашифрованных чисел - PullRequest
6 голосов
/ 05 апреля 2010

Можно ли рассчитать среднее из трех зашифрованных целых чисел? Нет ограничений на метод шифрования. Смысл этого в том, чтобы просто спрятать три числа и найти среднее.

Ответы [ 6 ]

12 голосов
/ 05 апреля 2010

То, что вы ищете, называется Гомоморфное шифрование : схема шифрования, которая позволяет вам выполнять операции с зашифрованными данными с зашифрованным результатом в качестве результата.

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

В вашем случае вам понадобятся две операции: сложение и деление. До недавнего времени схемы гомоморфного шифрования обычно поддерживали только 1 операцию. Но в сентябре 2009 года IMB анонсировал первую полностью гомоморфную криптосистему . Другие исследования опубликовали другую систему вскоре после этого.

Эти криптосистемы могут быть в состоянии делать то, что вы хотите, но это все передовые компьютерные исследования.

4 голосов
/ 05 апреля 2010

Расшифруйте числа, затем вычислите их среднее.

2 голосов
/ 05 апреля 2010

Я не вижу простых способов сделать то, что вы просите, кроме расшифровки чисел в первую очередь.

Для взятия среднего значения (или «среднего арифметического») требуется с добавлением чисел. Теперь, если вы хотите умножить числа, то вы можете сделать это аккуратно с шифрованием RSA. Если p - открытый текст, c - зашифрованный текст, а e - ключ шифрования, то в RSA c = p ^ e. Если у вас есть 3 отдельных целых числа, p1, p2, p3, и продукт равен pp, то

 pp^e = (p1 * p2 * p3)^e = p1^e * p2^e * p3^3 = c1 * c2 * c3 = cp

То есть вы можете либо умножить три целых числа открытого текста вместе, а затем зашифровать, либо просто умножить три зашифрованных текста вместе и получить один и тот же ответ. Это приведет вас к «геометрическому среднему», где вы умножаете все числа вместе, а затем берете кубический корень (или n-й корень для n чисел). К сожалению, вычисление корня куба в модульной арифметике нетривиально.

1 голос
/ 05 апреля 2010

С идеальными методами шифрования: Нет.

С большинством реальных методов шифрования: Нет.

С помощью какого-то глупо простого способа обфускации, специально разработанного для усреднения: Да.

При вызове последнего метода «шифрование» действительно использовался бы неправильный термин.

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

0 голосов
/ 05 апреля 2010

Если и только если метод шифрования является математической функцией «один к одному», то это можно сделать, пока числа зашифрованы.

Например, если мой очень небезопасный метод шифрования состоит в умножении каждого числа на 2, я бы сделал следующее:

function encrypt($number){
    return $number*2;
    }

$a=encrypt(3); // a= 9
$b=encrypt(5); // b= 15
$c=encrypt(6); // c= 18

$average = ($a+$b+$c)/6; // We divide by 6 because first we divide by 3 to get the average, then by 2 to do the decryption. The method will vary based on the mathematical function.

Единственная другая возможность - сначала расшифровать числа.

0 голосов
/ 05 апреля 2010

В общем случае три зашифрованных номера не должны поддерживать одинаковый порядок, если они зашифрованы, поэтому я почти уверен, что вы должны расшифровать их и рассчитать среднее значение.

...