Вопрос

может кто-нибудь объяснить, безопасен ли этот алгоритм или нет?есть ли атака, чтобы сломать это?этот алгоритм использует обычную криптографию XOR, но имеет некоторые отличия:

M(1) = ключевое сообщение XOR(1)
M(2) = h(ключ) Сообщение XOR(2)
M(3) = h(h(ключ)) Сообщение XOR(3)
и так далее

Примечания:

  1. M(i) — зашифрованный текст
  2. Сообщение(i) — это сообщение, которое мы собираемся зашифровать.
  3. ключ и сообщение(i) имеют одинаковую длину**
  4. злоумышленник просто имеет зашифрованный текст и знает схему создания ключей (продолжает хеширование) и криптографию XOR
  5. алгоритм хэширования: SHA-512
Это было полезно?

Решение

Изучение алгоритмов шифрования — это очень весело.Просто помните, что вы играете, а не производите ничего серьезного.Пока вы храните в зашифрованном виде только такие вещи, как ваш личный дневник (или, возможно, даже пароли), и сохраняете данные в безопасности, с вами, вероятно, все будет в порядке.Этот вид считается безопасностью через неизвестность.Я бы не рекомендовал шифровать большие объемы данных, которые вы ДЕЙСТВИТЕЛЬНО Однако необходимо сохранять конфиденциальность всего, что доступно и представляет интерес для внешнего мира.


В этом случае, если ваше сообщение короче размера ключа и размера хеш-блока, а ключ одноразовый и случайный, вы фактически используете одноразовый блокнот, так что все в порядке.Если ваша генерация ключей случайных чисел идеальна, у вас есть нерушимый механизм шифрования.Добавляя каждый блок в сообщение, вы фактически вычисляете новые ключи с использованием SHA-512, а не добавляете какое-либо конкретное значение.Если злоумышленник может предположить, что сообщение состоит из печатного текста, а длина сообщения велика или ключ используется неоднократно, то найти исходный ключ не составит большого труда.

Более эффективно было бы рассчитать:

M(1)=h(N + key) XOR Message(1)
M(2)=h(M(1)) XOR Message(2)
M(3)=h(M(2)) XOR Message(3)

(где N — количество раз использования ключа, который передается в виде открытого текста.)

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


Я где-то прочитал:

  • Первое правило криптографии гласит: «Криптографию следует оставить экспертам».
  • Второе правило: «Вы не эксперт».

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

Веселитесь и не позволяйте ворчливым людям вроде меня расстраивать вас./Боб Брайан

Другие советы

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

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

И, конечно, вы никогда не должны повторно использовать ключ.


Более надежный (но вдвое медленный) алгоритм будет:

Key(i+1) = h("A"+key)
M(i) = h("B"+key) XOR Message(i)

Или конструкция, аналогичная режиму CTR:

M(i) =  h(i+key) XOR Message(i)

Но я все еще не буду использовать тоже.


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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top