Рейтинг:0

Недостатки отрицаемого шифрования

флаг br

Каковы недостатки схемы шифрования, являющейся схемой опровергаемого шифрования? Существует ли общий подход для преобразования схемы шифрования $\пи$ к $\пи'$ какая будет отрицательная схема шифрования?

Рейтинг:1
флаг ng

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

Среди недостатков отрицаемого шифрования

  • Поскольку в зашифрованном тексте должно быть место как для реального, так и для обманного открытого текста, зашифрованный текст получается больше, чем при стандартном шифровании.
  • Для шифрования диска с отрицанием существуют нетривиальные соображения по сокрытию того, какая часть диска используется. Безопаснее всего записывать случайные данные на весь диск перед использованием, но это замедляет первое использование; и сделать случайное логическое и физическое сопоставление, но это замедляет работу на механических дисках и вызывает более легкие проблемы на твердотельных накопителях.
  • Даже с учетом вышеперечисленных мер предосторожности создание образа диска до и после изменения фактических данных полезной нагрузки может позволить определить его местонахождение, и, если никакие ложные данные не были изменены, определить, являются ли данные, полученные с помощью пароля, фиктивными или реальными.
  • Трудно скрыть, что развернутая система способна использовать надежное шифрование. До тех пор, пока системы, способные к опровергаемому шифрованию, не станут широко использоваться людьми, которые используют только шифрование без обмана (несмотря на вышеупомянутые недостатки), простое использование системы шифрования, способной к опровергаемому шифрованию, должно вызывать подозрения.
  • Если опровергаемое шифрование является многоуровневым, и следователь не может знать, сколько их, криптоанализ с резиновым шлангом (стандартный эвфемизм для пыток; XKCD 538), скорее всего, продолжится после того момента, когда обладатель ключей открыл конечную точку.
  • Отказоустойчивое шифрование так же уязвимо, как и любая другая система шифрования, для некоторых других вполне реальных угроз, таких как перехват пароля при вводе.
Рейтинг:0
флаг cn

В случае с одноразовым блокнотом (OTP) простейшая схема шифрования с отрицанием может использовать использование Сообщение-приманка и Ключ-приманка которые создают Универсальный зашифрованный текст это будет то же самое Универсальный зашифрованный текст который будет XORed с Настоящее сообщение, что приводит к детерминированному Настоящий ключ (при условии, что длина реального сообщения не меньше длины ложного сообщения и результирующих ключей и зашифрованного текста, чтобы избежать необходимости заполнения).

  • Недостатком будет обработка битов открытого текста как закрытого ключа, в смысле генерация секретного ключа (Настоящий ключ), так как он полностью детерминистически выводится из «обычный текст», именуемый здесь Настоящий Сообщение.

Таким образом, безопасность реального ключа в битах будет зависеть от случайность и длина (и любая получающаяся или наследуемая безопасность) реального сообщения в битах (поэтому сообщение нужно рассматривать буквально и фигурально как закрытый ключ с точки зрения защиты всей системы, чтобы реальное сообщение было безопасным, поскольку оно не «защищается» закрытым ключом (скорее, закрытый ключ создается из сообщения). Ниже приведен пример:

pl = ключ-приманка
k1= ложное сообщение
c1 = универсальный зашифрованный текст
p2= реальный ключ
k2= реальное сообщение

p1âk1 =c1

c1âk2 = k1

*Сообщение-обманка (длина n) - ключ-обманка (длина n) = универсальный зашифрованный текст (длина n)

*Универсальный зашифрованный текст (длина n) Реальное сообщение (длина n) = Настоящий ключ (длина n)

Мнение: Такой метод шифрования для правдоподобного отрицания мог бы работать (совершенная секретность и квантовая безопасность), если бы само сообщение было достаточно случайным и при условии, что его длина в битах была бы невозможна для угадывания или столкновения с грубой силой (т. е. реальное сообщение могло бы быть частным сам ключ, сгенерированный CSPRNG) и длиной, например, 128 бит. В противном случае короткое или предсказуемое реальное сообщение приведет к созданию реального ключа, который не является безопасным.

Важные предположения безопасности: для достаточно защищенного реального сообщения (незашифрованного текста), такого как 256-битное целое число, сгенерированное CSPRNG, результирующий реальный ключ, который вычисляется после операции XOR против универсального зашифрованного текста, где квадратный корень [пространство сообщения * пространство ключа] = пространство зашифрованного текста (включая дубликаты составляет 2 ^ 512 из-за коммутативности XOR), из которого будет по крайней мере столько же раз (2 ^ 256) других сообщений и ключей, будет создавать один и тот же универсальный зашифрованный текст. Таким образом, невозможно узнать, какое сообщение или ключ является рассматриваемым, поскольку все они будут казаться действительными без предварительного знания реального ключа, если сообщение (рассматриваемое как генератор ключа) достаточно безопасно.Этот предел/диапазон определяется количеством различных уравнений исключающего ИЛИ, которые существуют (без перестановок) для любого произвольного диапазона действительных целых чисел (т.е. n=256) в следующей последовательности A028401.

Пример кода Python для вычисления отдельного XOR:

Initial_bits= int(input("введите количество битов"))
Initial_number_range= 2**Initial_bits
Unique_XOR_triples=((Initial_number_range+1)*(Initial_number_range+2))//6
Total_triplet_input_terms =((Initial_number_range//2)+1)*(Initial_number_range)+(Initial_number_range//2)+1
Repeat_Groups=(Total_triplet_input_terms)-((Initial_number_range**2)//2)-Initial_number_range
Checksum_repeat_group=(Initial_number_range//2)+1

print('1: Initial_bits, это будет показатель степени для числа 2, возведенного в эту степень:',Initial_bits)
print('2: Initial_number_range, два, увеличенные до количества начальных битов, равны этому:',Initial_number_range)
print('3: Unique_XOR_triples, три входных термина считаются за один:',Unique_XOR_triples)
print('4: Total_triplet_input_terms (т.е. XOR B = C будет тремя входными терминами):',Total_triplet_input_terms)
print('5: Repeat_Groups, каждое число в группе повторяется столько раз, а дополнительное число ноль столько раз:',Repeat_Groups)

Код Python с правдоподобной схемой шифрования с использованием небезопасных 56-битных строк в качестве примера:

P1 = 0B0110100001100101011011000110110001101111000000000000000000 #Plaintext1. 56-разрядное пример ASCII для «Hello» для «Hello».
р1 = бункер (р1)
k1= 0b10011001100110011001100110011001100110011001100110011000 #key1 DUMMY KEY 56-битный пример: 0b100110011001100110011001100110011001101001100011000
k1=бин(k1)
c1= int(p1,2)^int(k1,2) #ciphertext (вычисленный DETERMINISTIC 56-бит, полученный из фиктивного сообщения XOR с фиктивным ключом): "0b111100011111110011110101111101011111101101001100110011000"
с1 = бункер (с1)
p2= 0b01101100011001010110000101110110011010010110111001100111 #plaintext2 РЕАЛЬНОЕ СООБЩЕНИЕ 8-битный пример ASCII для «ухода»:
р2 = бункер (р2)
k2= int(c1,2)^int(p2,2) #key2 РЕАЛЬНЫЙ КЛЮЧ ((вычисляется ДЕТЕРМИНИСТИЧЕСКИЙ) 56-бит, полученный в результате операции XOR зашифрованного текста с реальным сообщением: 0b100111011001100110010100100000111001111111110111111111111
k2=бин(k2)

print('p1 фиктивное сообщение:',p1)
print('k1 DUMMY KEY is:',k1)
print('c1 UNIVERSAL CIPHERTEXT is:',c1)
print('p2 НАСТОЯЩЕЕ СООБЩЕНИЕ:',p2)
print('k2 REAL KEY is:',k2) ## этот "Ключ" является детерминированным, таким образом, настолько сильным, насколько случайным является сообщение 
print('реальное сообщение p2: ', (p2),
      'истинно', (int (p2,2)) == int (k2,2) ^ int (c1,2))
print('as c1',c1,'xor p2', p2, 'равно',bin(int(k2,2)), 'истинно')

print((int(k2,2)==(int(c1,2)^(int(p2,2)))))
print('and equals = ',bin(int(c1,2)^(int(p2,2))))

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.