@accountnujen

Какова вероятность взлома AES-128-ECB, если часть информации доступна?

Есть вот такой json массив:
[
  {
    "date": "28.08.23 10:52",
    "type": "text",
    "data": "номер карты, включая срок действия и CVC"
  },
  {
    "date": "29.08.23 10:52",
    "type": "text",
    "data": "пароль от банка в виде admin:password"
  },
  {
    "date": "30.08.23 10:52",
    "type": "text",
    "data": "координаты, где я труп закопал"
  }
]

Далее этот массив подвергается JSON.stringify(json) и шифруется алгоритмом AES-128-ECB.
В итоге я получаю вот такое:
j0SoAqGRf1bLDc1rIbyT1PSSoFQgpXXYvk3kibRrSo71Ndgrhe4nczhIaeoeSYkgpkPsXrvRFesfsuDEV1Crs1aVDcLgdEGq76m7aoDfIEOHNaFNDASLicCJdqUcet81iLTImGfiGqI3lkf9USbgyaIM40dJ0l1ogRpln/ml6kO7D8ec4O7IyXdo7Xac4PCeTlo5F7hlrND9u3Str3O4j8y89Tn8qPGtS/832WeysMoumJ0agsT0KYC1G93tzImTUi5+5DBxB4N4jLjyHGPtLL0V4pPuVkdpKlfGlpYkH/kLOuS/ebm5NQ6lP9kuBpuHGVVRv8fYX8H3o45EmaMEyRKNYV4j+ZBtKzyFVlJ55fVCTpg0lTYtd3skuDYyP/1Yo5nJQ69wgbi7Z39flEJqQ3RpMU8oKSaPaIS3Jsv3pF5O4flM43vfd1IqfXIXPX61


Теперь симулируем попытку взлома.
Что хранится в значении ключей мы не знаем, но точно знаем,
  • что это был json;
  • что каждый блок содержит в себе ключи "date", "type" и "data";
  • что вероятнее всего поле type имеет значение text, но не факт;
  • Также можно узнать то, что указано в date;


Упрощают ли как-нибудь эти знания взлом?
Я понимаю, что iv бы всё решил, но я не знаю, где и как его хранить.
  • Вопрос задан
  • 358 просмотров
Пригласить эксперта
Ответы на вопрос 1
Основной недостаток ECB заключается в том, что одинаковые данные будут шифроваться в одинаковые блоки шифротекста, поэтому зная шифрованный текст для одного открытого текста (например для одного JSON) можно понять что другой файл это тоже JSON в определенной структуре. Если какие-то блоки из 16 октетов у файлов совпадают, то и в шифротексте будут совпадающие блоки. Если у атакующего есть возможность получать шифротекст по открытому тексту (например инциировать запрос клиента и получать результаты шифрования, аналогично BEAST) то можно попытаться подобрать недостающие неизвестные данные в блоке, причем в отличие от BEAST просто прямым перебором.

Имеет ли это значение зависит от того, как именно вы собираетесь использовать криптографию. Есть замечательное правило: "do not roll your own crypto". Если можно обойтись без криптографии - лучше обойтись без криптографии. Если вам надо шифровать данные - используйте готовые проверенные библиотеки и форматы криптоконтейнеров. Если вам надо шифровать потоки данных - используйте TLS с рекомендуемыми настройками.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы