- 18, Oct 2024
- #1
Я обнаружил, что ниже приведена рабочая реализация вычисления функции AND между общими ресурсами, замаскированными XOR, реализация в Гитхаб. Он работает путем расчета паритетов, условия которых «счастливым» образом компенсируют друг друга всякий раз, когда используется нечетное количество акций.
Основным преимуществом этого алгоритма может быть то, что четность обладает тем свойством, что его можно легко обновить с помощью XOR любого термина, который нужно удалить, и добавить любой новый термин, необходимый, тем самым уменьшая количество вычислений как в XOR, так и, наконец, в AND.
def masked_AND(shares, a_masked, b_masked, random):
# calculate AND between shares...
c_masked = [a_masked[i] & b_masked[i] for i in range(shares)]
# ...with refreshing the output's mask
c_masked = [c_masked[i] ^ random[i] for i in range(shares)]
# calculating correction terms: some terms of the parities'
# cancel out at the end in case of an odd number of elements
for i in range(shares):
parity_a = 0
parity_b = 0
# calculating parities of all corresponding Aj and Bj bits...
for j in range(shares):
# ...corresponding means all but the Ai and Bi bits
if i!=j:
parity_a ^= a_masked[j]
parity_b ^= b_masked[j]
# addig correction term to the particular output share
# which is the "AND" between the parities
c_masked[i] ^= parity_a & parity_b
return c_masked
Меня больше всего беспокоит следующий вопрос: безопасно ли рассчитывать паритеты всех акций, кроме одной, одну за другой? Можете ли вы подсказать мне, возможно, другие проблемы - например, по какой-то причине в ISW-схеме $(a[i] \wedge b[i])$ не обновляются, но все остальные комбинации $(a[i] \wedge b [j]) \ где \ i\neq j$?
#проектирование алгоритма #реализация #атака по боковым каналам