Зачем Laravel для шифрования нужен код аутентификации сообщения (MAC)? - PullRequest
0 голосов
/ 30 августа 2018

Laravel документация говорит

Все зашифрованные значения Laravel подписаны с использованием кода аутентификации сообщения (MAC), поэтому их базовое значение не может быть изменено после шифрования.

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

    // Once we get the encrypted value we'll go ahead and base64_encode the input
    // vector and create the MAC for the encrypted value so we can then verify
    // its authenticity. Then, we'll JSON the data into the "payload" array.
    $mac = $this->hash($iv  = base64_encode($iv), $value);

Лично я не вижу преимущества этого MAC для Laravel. Почему это там?

Я имею в виду, если у нас уже есть открытый ключ, который сопровождает сообщение и закрытый где-то закрытый ключ и openssl_encrypt как процессор. Как MAC может способствовать безопасности? Или это способствует чему-то еще?

Ответы [ 2 ]

0 голосов
/ 20 сентября 2018

как сказал Джеймс К Полк

MAC использует ключ, поэтому злоумышленник не может сгенерировать правильный, если у него нет ключа.

MAC необходим для защиты от преднамеренной модификации зашифрованного текста.

0 голосов
/ 30 августа 2018

В Laravel 3 возникла проблема безопасности, когда вы могли получить доступ как аутентифицированный пользователь. Хотя это, похоже, связано с файлами cookie (их можно каким-то образом подделать), но MAC был добавлен в файлы cookie.

http://joncave.co.uk/2012/10/lying-to-laravel/

TLDR В будущем было бы неплохо увидеть, как в классе Crypter компании Laravel есть встроенные MAC-адреса, так что все зашифрованные сообщения проверяются перед расшифровкой. Примеры такого типа поведения можно увидеть в Zend Framework 2 и Ruby on Rails.

https://laravel3.veliovgroup.com/docs/changes#3.2.8

Это потому, что расшифровка может быть выполнена с помощью грубой силы, добавление MAC означает, что вы ничего не сделаете, если он не соответствует тому, что должен. Точная реализация Laravel, я не знаю, сколько безопасности может добавить, но, по крайней мере, усложняет атакующему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...