вычислите среднее число трех зашифрованных чисел

Возможно вычислить среднее число трех зашифрованных целых чисел? Нет ограничьте на методе шифрования. Точка этого должна только скрыть эти три числа и найти среднее число.

6
задан Progress Programmer 4 April 2010 в 22:42
поделиться

6 ответов

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

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

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

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

13
ответ дан 8 December 2019 в 12:19
поделиться

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

0
ответ дан 8 December 2019 в 12:19
поделиться

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

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

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

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

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

1
ответ дан 8 December 2019 в 12:19
поделиться

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

3
ответ дан 8 December 2019 в 12:19
поделиться

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

Для вычисления среднего (или «среднего арифметического») требуется сложения чисел. Теперь, если вы хотите умножить числа, то вы можете сделать это аккуратно с помощью шифрования 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 чисел). К сожалению, вычисление кубического корня в модульной арифметике нетривиально.

2
ответ дан 8 December 2019 в 12:19
поделиться

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

Например, если мой очень небезопасный метод шифрования заключается в умножении каждого числа на 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
ответ дан 8 December 2019 в 12:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: