Проблема: доверие вслепую
Когда вы устанавливаете приложение-радионяню, вы даёте ему доступ к очень личному месту — комнате вашего малыша. Приложение слушает, а иногда и наблюдает. При этом родители часто не знают, что происходит в фоновом режиме: проходят ли трансляции через сторонние серверы, собираются ли данные об использовании, кто технически может получить доступ к чему-либо?
Честный ответ: в случае со многими приложениями вы этого просто не знаете. Код закрыт, а представление об архитектуре основано лишь на заявлениях разработчика. В итоге вас просят просто ему поверить.
Закрытый код, открытые уязвимости
За последние годы было достаточно сообщений о взломанных радионянях. Посторонние могли подслушивать, управлять камерами или разговаривать через динамики. Чаще всего это были не какие-то экзотические атаки, а серьёзные недочёты: незашифрованные соединения, пароли по умолчанию, отсутствие аутентификации.
В проприетарном ПО посторонние часто замечают такие слабые места только после того, как что-то уже случилось. Исследователи безопасности, независимые разработчики и родители видят готовый продукт только снаружи. Для устройства в детской это ненадёжный подход.
Прозрачность как принцип безопасности
В информационной безопасности есть старое и полезное правило: принцип Керкгоффса. Безопасность не должна зависеть от того, что архитектура системы хранится в тайне. Система должна оставаться защищённой, даже если известно, как она устроена.
Открыто документированный код сам по себе не делает ПО безопасным. Но он позволяет проверять заявления. Специалисты могут изучить потоки данных, формирование криптографических ключей и действующие правила, а не просто читать маркетинговые тексты.
Подход Timmy: отдельное ядро безопасности
В Timmy я теперь очень чётко отделяю компоненты, которые действительно критически важны для безопасности. Не каждая деталь интерфейса определяет, заслуживает ли продукт доверия. Главное — это логика серверной части, правила сигнального обмена, криптографические механизмы сопряжения и то, какие данные попадают на сервер.
Поэтому ядро безопасности теперь находится в открытом репозитории baby-monitor-timmy-core. Полный код приложения сейчас не открыт. Критически важные для безопасности компоненты вынесены из интерфейса и логики продукта, чтобы их можно было отдельно документировать и проверять.
Что это означает на практике?
- Чёткие границы: компоненты безопасности отделены от интерфейса и логики продукта.
- Проверяемые потоки данных: сопряжение, сигнальный обмен и интерфейсы серверной части можно документировать отдельно.
- Без скрытых трекеров: в критически важных путях есть только то, что технически необходимо.
- Удобство поддержки в долгосрочной перспективе: отдельное ядро проще проверять, чем неструктурированный монолит.
Вывод: родители заслуживают прозрачности
Если приложение имеет доступ к детской комнате, оно должно ясно отвечать на важные вопросы: какие данные создаются? Куда они попадают? Кто может их прочитать? Родители заслуживают большего, чем значок конфиденциальности внизу страницы.
Baby Monitor Timmy должен показать, что хороший продукт и проверяемая безопасность совместимы. Для меня это не означает, что весь код приложения должен быть открытым. Это означает, что открытыми должны быть компоненты, от которых зависят сопряжение, сигнальный обмен, доступ к серверной части и потоки данных.