Доступно (https://github.com/paragonie/sodium_compat/releases) несколько первых выпусков криптографической библиотеки Sodium Compat (https://github.com/paragonie/sodium_compat), примечательной тем, что она реализована целиком на языке PHP и не требует для своей работы внешних зависимостей. Sodium Compat совместим с libsodium (https://download.libsodium.org/doc/) и может применяться в качестве замены расширения pecl/libsodium (https://pecl.php.net/package/libsodium).Ключевым достоинством Sodium Compat является поддержка работы с устаревшими версиями PHP, что является актуальной проблемой, так как полноценные средства для работы с цифровыми подписями и открытыми ключами появились только в относительно новых выпусках PHP. Например, Sodium Compat может работать с PHP 5.2.4, в то время как для использования pecl/libsodium требуется ветка PHP 5.4 и дополнительная внешняя зависимость. Полноценные встроенные средства для работы с RSA-ключами появились только в PHP 5.6.0.
Подобное ограничение мешает внедрению (https://core.trac.wordpress.org/ticket/25052) в WordPress средств для верификации устанавливаемых дополнений и обновлений по цифровой подписи. Без повышения минимально поддерживаемой версии интерпретатора PHP проверку по цифровой подписи реализовать не получается из-за отсутствия необходимых криптографических функций, а поднять минимальную версию PHP мешают обязательства перед пользователями. В настоящее время проверка целостности обновления сводится (http://seclists.org/oss-sec/2016/q4/478) только к сверке хэша MD5 без верификации источника.Для обеспечения оперативной доставки обновлений начиная с WordPress 3.7 добавлена поддержка автоматической установки обновлений с устранением критических уязвимостей, но данная возможность может сыграть злую шутку в текущей ситуации, когда обновления не проверяются по цифровой подписи. Без полноценной системы верификации (https://paragonie.com/blog/2016/10/guide-automatic-security-...) компрометация api.wordpress.org и распространение вредоносного обновления через официальные источники может привести к массовому поражению пользовательских систем с WordPress, которые по некоторым оценкам (https://wptavern.com/wordpress-passes-27-market-share-banks-...) составляют до 27% всех сайтов в глобальной сети.
При этом проблема не умозрительна, например, в ноябре 2016 года была выявлена (https://www.wordfence.com/blog/2016/11/hacking-27-web-via-wo.../) уязвимость, позволяющая атакующему выполнить свой код на стороне api.wordpress.org. Без проверки по цифровым подписям для успешной атаки на конфигурации WordPress со включенной функцией автоматической установки обновлений достаточно взломать сервер доставки обновлений. В случае применения цифровых подписей получение контроля над сервером распространения обновлений не приведёт к должному результату, так как для проведения атаки понадобиться получить закрытый ключ, при помощи которого осуществляется подпись обновлений.
Sodium Compat позволит выйти из возникшего тупика и реализовать проверку дополнений по цифровым подписям без повышения требований к программному окружению. Для WordPress уже предложен (https://core.trac.wordpress.org/ticket/39309) прототип системы верификации по цифровым подписям на базе Sodium Compat. Отсутствие системы верификации не специфично для WordPress и также наблюдается в других CMS на PHP, включая Drupal и Joomla.
URL: Ghttps://ma.ttias.be/wordpress-get-secure-cryptographic-updates/
Новость: http://www.opennet.me/opennews/art.shtml?num=45868
md5 от содержимого файлов трудно было сделать уже много лет как? Не издевайтесь!
> md5 от содержимого файлов трудно было сделать уже много лет как? Не
> издевайтесь!Речь про цифровые подписи, созданные секретным закрытым ключом, которые можно проверить общедоступным открытым ключом. Контрольные суммы нельзя использовать как элемент верификации источника, особенно MD5 с его коллизиями. Ничего не мешает создать контрольную подпись во время атаки или подменить во время MITM, а цифровую подпись без наличия ключа не подделаешь и взлом становится бесполезен.
подогнать MD5 вообще не проблема
> подогнать MD5 вообще не проблемаПодгони 43aa4fe5fa9dc5c4d6664d07d159ce0f
Подогнал. Выходи давай уже.
> криптографической библиотеки ...(которая)... реализована целиком на языке PHP и не требует для своей работы внешних зависимостейПростите, что-что? Реализация криптографических алгоритмов на PHP? Серьёзно?
Именно так https://github.com/paragonie/sodium_compat/tree/master/src/Core скорость работы для решаемых библиотекой целей в не принципиальна.
> скорость работы для решаемых библиотекой целей в не принципиальна.Да я собственно не про скорость работы. Почему не сделали обвязочки над уже готовыми сишными библиотеками? Зачем принципиально так "без внешних зависимостей"? Это же долго, сложно, и некачественно.
Патамушта разрабы водрпресса не хотят удлиннять список зависимостей. В настоящий момент вордпресс можно развернуть практически на любом веб-хостинге, где есть ТОЛЬКО php и mysql. Видать, не осилили реализовать криптографическую библиотеку на sql -- пришлось писать на php...
это же php, какие биндинги, переписать весь мир на php!
>> скорость работы для решаемых библиотекой целей в не принципиальна.
> Да я собственно не про скорость работы. Почему не сделали обвязочки над
> уже готовыми сишными библиотеками? Зачем принципиально так "без внешних зависимостей"?
> Это же долго, сложно, и некачественно.тут дело такое, если у вашего "хостинга" дырявые библиотеки, а WP крутится на на огромном заоопарке хостингов, то вы не сможете их заменить. так-же на некоторых хостингах они могут быть просто недоступны, или доступны "не те" или "не те версии" и т.д., в такой ситуации гораздо проще реализовать на php, особенно с учётом того, что большинство требований предъявляемых реализации в системных библиотеках теряют смысл. ( не нужно думать о защите памяти, равном времени выполнения и т.п. вещах )
>Почему не сделали обвязочки над уже готовыми сишными библиотеками?Вот собственно и ответ:
> для использования pecl/libsodium требуется ветка PHP 5.4 и дополнительная внешняя зависимость
такая есть, но не подходит
>Реализация криптографических алгоритмов на PHP?Скоро и на Java, и на VBA! :)
> Скоро и на JavaУже.
man BouncyCastle
man JCE
Что плохого если код подписан? Неважно код какого языка будет подписан.
Речь про реализацию криптографических библиотек на неподходяцих для этого языках. А так да, любой код можно подписать.
няша, на java целая анонимная, децентрализованная, отказоустойчивая сеть со сквозным шифрованием написана.
А почему gpg нельзя вызвать для проверки подписи?
Потому что его может не быть
Пусть поставят.
Для разворачивателей сайтов на вордпрессе это слишком сложно.
> достоинством Sodium Compat является поддержка работы с устаревшими версиями PHP, что является актуальной проблемойМда... И это вместо того, чтобы пнуть юное дарование, рулящее сайтом, в сторону обновления.
Вот и я думаю: а почему бы им ни написать библиотеку BAT-файлов, чтобы я мог вебсервер с HTTP 2 под DOS на своём стареньком 486-м поднять...