Ars Longa, Vita Brevis

В данный момент я работаю над очень интересным проектом ExtremeMember (который, кстати, работает на WordPress). Одной из особенностей разработки является то, что мы используем Subversion (также известный как SVN) для обновления кода на всех сайтах (будь то основной, тестовый или клиентский — которых больше сотни — сайт).

Другой особенностью разработки является то, что мы предоставляем клиентам FTP-доступ ко всему сайту (разумеется, каждый клиент имеет доступ только к своему сайту — целиком — а не только к каталогу uploads). Логично, что для предотвращения "кражи интеллектуальной собственности" мы шифруем все наши файлы (в целях безопасности мы также ограничиваем доступ к некоторым другим файлам — например, базовые файлы WordPress доступны только для чтения, но это другая история). Для шифрования мы используем ionCube Encoder.

Задача такова: при изменении ветки с кодом клиентских сайтов её нужно автоматически зашифровывать. Проблема в том, что мы (разработчики) работаем над открытым кодом, а клиенты должны получить закрытый (шифрованый) код; как следствие, одну и ту же ветки в репозитории мы использовать не можем. Читать статью «Subversion, ionCube и прозрачное шифрование» полностью…

Почему-то каждый третий мнит себя экспертом по безопасности, пишет "безопасные" программы для шифрования данных, но даже не подозревает, что существуют и другие режимы шифрования, кроме известного как ECB. И этим грешат не только студенты в своих дипломных работах (головы бы поотрывал их научрукам за такое), но и "серьёзные" разработчики.

Например, программист на сайте uk-swingers.com шифровал номера кредитных карточек (!), используя простой алгоритм RC4 и постоянный ключ. Ломалось очень просто. К счастью, уже исправлено :-) Другие товарищи использовали сложение по модулю два для шифрования важных данных. Третий товарищ защитил диплом по безопасности, и шифрование секретной базы данных опять-таки выполнялось по модулю два. Четвертый шифровал AES'ом тонны информации (в режиме ECB, разумеется), при этом не потрудившись даже ее сжать. Этот печальный список можно продолжать и продолжать…

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