Прослеживаться кольцо подпись используется в cryptonote https://cryptonote.org/whitepaper.pdf выглядит как:
Keygen: P_i = x_i * G, I_i = x_i * Н (P_i)
ЗНАК: в качестве подписчика J; случайное s_i, w_i
(Я перемаркированные q_i, как s_i, чтобы быть больше стандарта, и перемаркированные в подписавшего S в качестве подписчика J)
IF I = J THEN L_i = s_i * G ELSE L_i = s_i * G + w_i * P_i
Если I = J ТОГДА R_i = s_i * Н (P_i) ИНАЧЕ R_i = s_i * Н (P_i) + w_i * I_j
с = ч (м, L_1, ..., L_n, R_1, ..., R_n)
Если I = J THEN c_i = с-я sum_ {!} = J (c_i) ИНАЧЕ c_i = w_i
IF I = J THEN r_i = w_i-c_i * x_i ELSE r_i = w_i
\ Сигма = (м, I_j, c_1, ..., c_n, r_1, ..., r_n)
ПРОВЕРКИ:
L_i '= r_i * G + c_i * P_i
R_i '= r_i * Н (P_i) + c_i * I_j
sum_ {1..n} (c_j) =? ч (м, L_1, ..., L_n 'R_1' , ..., R_n')
LINK: отклонить повторяющиеся значения I_j.
где Н (.) является функцией hash2curve (принимая значение в Zn и детерминировано отображение его в точку кривой) и Н (.) является хэш-функция с хэш выходной размер очень близко к п порядка кривой, т.е. ч (.) = SHA256 (.) по модулю п.
На пути к поиску более компактное кольцо подписи я пытался найти способ сделать c_i в CPRNG генерироваться последовательности, как они в основном произвольно, хотя они должны быть связан с остальной частью подписи (не податливый), так что вы можете вычислить в большинстве п-1 экзистенциальных подписи подделок, не зная никаких закрытые ключи.
Я нашел эту статью "1-из-н Подпись из множества ключей" Абэ, Окубо и Suzuki http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.363.3431&Rep = REP1&тип = PDF раздел 5.1 показывает способ сделать это. Я показываю здесь, как добавить прослеживаемость к ней таким образом, что делает его совместимым с криптографическим примечанием:
Keygen: P_i = x_i * G, I_i = x_i * Н (P_i)
ЗНАК: в качестве подписчика J; \ Альфа = случайная, \ forall_ {я! = У} s_i = случайная
C_ {j + 1} = Н (P_1, ..., P_n, \ альфа * G, \ альфа * Н (p_j))
C_ {j + 2} = Н (P_1, ..., P_n, S_ {J + 1} * G + C_ {J + 1} * Р- {J + 1}, {S_ J + 1} * Н (Р- {J + 1}) + C_ {J + 1} * I_j)
...
c_j = ч (P_1, ..., P_n, S_ {J-1} * G + C_ {J-1} * Р- {J-1}, {S_ J-1} * Н (Р- {J-1} ) + C_ {J-1} * I_j)
так что определяет c_1, ..., c_n с J значениями, взятыми Mod L некоторое количество подписантов. Далее находим значение s_j:
Теперь \ альфа * G = s_j * G + c_j * p_j так \ альфа = s_j + c_j * x_j так s_j = \ альфа - c_j * x_j мод п.
Аналогично \ альфа * H (p_j) = s_j * H (p_j) + c_j * I_j так \ альфа работает там.
\ Сигма = (м, I_j, c_1, s_1, ..., s_n)
ПРОВЕРКИ:
\ Forall_ {я = 1..n} вычислить e_i = s_i * G + c_i * P_i и e_i = s_i * Н (P_i) + c_i * I_j и C_ {+ 1} = Н (P_1, ..., P_n , e_i, e_i)
проверить C_ {п + 1} = c_1
LINK: отклонить повторяющиеся значения I_j.
Эта альтернативная связываемое кольцо подпись стремится к 1/2 размеру криптографических нот кольцевой подписи как подписи 3 + п значений Vs 2 + 2n значений.
Адам