Gauss и Reload — атака кэша на схему подписи на основе решетки BLISS

24.03.2024
Gauss и Reload — атака кэша на схему подписи на основе решетки BLISS

Python-скрипта, который демонстрирует атаку Gauss и Reload на схему подписи на основе решетки BLISS, основанный на статье, опубликованной в CHES 2016:

import numpy as np
from scipy.stats import norm
import matplotlib.pyplot as plt

# Параметры BLISS
n = 512
q = 12289
sigma = 215
k = 23

# Функция для получения сигнатуры BLISS
def bliss_sign(message, sk):
    # Реализация функции подписи BLISS опущена
    return signature

# Функция для моделирования атаки Gauss и Reload
def gauss_reload_attack(message, pk, sk):
    # Получение сигнатуры
    signature = bliss_sign(message, sk)
    
    # Моделирование атаки Gauss и Reload
    power_trace = []
    for i in range(n):
        # Вычисление коэффициента Гаусса
        c = signature[i]
        
        # Моделирование потребления мощности
        power = norm.rvs(loc=c*sigma, scale=sigma, size=1)[0]
        power_trace.append(power)
        
        # Моделирование перезагрузки кэша
        if c != 0:
            # Моделирование перезагрузки кэша
            power_trace.extend([norm.rvs(loc=c*sigma, scale=sigma, size=k-1)])
    
    return power_trace

# Пример использования
message = b"Hello, world!"
sk = np.random.randint(-2**16, 2**16, size=n, dtype=np.int16)
pk = bliss_sign(message, sk)

power_trace = gauss_reload_attack(message, pk, sk)

# Визуализация атаки
plt.figure(figsize=(12, 6))
plt.plot(power_trace)
plt.title("Атака Gauss и Reload на BLISS")
plt.xlabel("Временной шаг")
plt.ylabel("Потребляемая мощность")
plt.show()

Этот скрипт реализует основные компоненты атаки Gauss и Reload на схему подписи на основе решетки BLISS:

  1. Определяются параметры BLISS, включая размерность n, модуль q, стандартное отклонение Гаусса sigma и количество перезагрузок кэша k.
  2. Реализована функция bliss_sign, которая получает сообщение и секретный ключ и возвращает подпись. В этом примере она опущена, но вы можете добавить реализацию схемы BLISS.
  3. Реализована функция gauss_reload_attack, которая моделирует атаку Gauss и Reload. Она получает сообщение, открытый ключ и секретный ключ, и возвращает след потребляемой мощности.
    • Для каждого коэффициента в подписи вычисляется соответствующее потребление мощности, используя нормальное распределение с центром в c*sigma и стандартным отклонением sigma.
    • Если коэффициент не равен нулю, моделируется k-1 дополнительных перезагрузок кэша.
  4. В примере использования создаются случайный секретный ключ sk, вычисляется открытый ключ pk, и запускается атака Gauss и Reload, чтобы получить след потребляемой мощности.
  5. Полученный след потребляемой мощности визуализируется с помощью библиотеки Matplotlib.


Useful information for enthusiasts:

Contact me via Telegram: @ExploitDarlenePRO