Разве невозможно проверить, что веб-сайт использует опубликованный исходный код в производстве? - PullRequest
0 голосов
/ 28 августа 2018

Это немного странный вопрос, и я не видел ничего подобного в интернете.

Что я хочу сделать

Я хочу опубликовать исходный код моего сайта. Кроме того, характер веб-сайта (описанный ниже) таков, что я не только хочу выпустить исходный код, но я хочу, чтобы пользователи моего веб-сайта могли однозначно убедиться, что они используют точный версия сайта, как в дампе исходного кода.

Сложность в том, что моей доброй воле нельзя доверять . (Очевидно, что может, так как я иду на эту длину, но с точки зрения пользователя это не может).

Мои (умственные упражнения), чтобы попытаться исправить это

Попытка 1

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

Попытка 2

Второе, о чем я подумал, - это предоставить пользователям доступ к оболочке только для чтения, чтобы они могли хэшировать образ докера, который запускается. Проблема здесь в том, что нет способа проверить, что образ докера - это то, что работает (насколько мне известно). Я мог бы просто создать образ общедоступного исходного кода и поместить его там для хэширования пользователями

Кроме того, из-за проблем с безопасностью я действительно ненавижу идею ставить пользователей ближе к работе.

Попытка 3

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

Почему я хочу это сделать

Я создаю веб-сайт, который будет обрабатывать невероятно личные данные. Это может разрушить жизни людей, если произойдет утечка (нет, TLD не .xxx или что-то в этом роде. На самом деле с этими данными не происходит ничего противозаконного). Тем не менее, существует тип социальной стигмы, связанной с типом данных, и это на самом деле является достаточным доказательством (в некоторых странах), чтобы просмотреть смертную казнь в отношении пользователя, если какие-либо данные просочились.

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

Теоретически это возможно?

Ответы [ 2 ]

0 голосов
/ 03 октября 2018

«Доверие» вы можете строить по законам и политикам конфиденциальности.

Мы все охотно храним наши конфиденциальные данные в сети во многих приложениях / системах и никогда не проверяем, совпадает ли исходный код или архитектура системы с тем, что они обещали в начале.

Как сказал @ tystackoverflow , создание бэкдора в коде - это не единственный способ гарантировать пользователям системы, что их данные не доступны никому другому. В этом случае ваша системная архитектура также должна поддерживать шифрование данных на более высоком уровне, чтобы никто (если не осуществляется доступ через систему) не мог иметь прямой доступ к нему.

Я понимаю риск утечки этих данных,
Все зависит от того, как вы спроектируете Систему, чтобы она была защищена от несанкционированного вмешательства и защищена, а также донесла до пользователей идею мер безопасности, встроенных в Приложение, для пользователей.

Удачи в проекте!

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

Пока сервер получает некоторые из этих невероятно личных данных пользователя в формате, который он / вы можете прочитать, идеального способа не существует. Вы должны позволить пользователям зашифровать данные перед их загрузкой, используя ключ, который они знают.
Если передача данных не требуется, пользователи могут проверить код в браузере и сравнить хэши вручную. Возможно, есть автоматический способ сделать это. В любом случае вся работа с данными должна выполняться на стороне клиента.

Основная проблема заключается в том, что пользователь должен доверять всей среде, от исходного кода до компилятора, до выполнения ОС и оборудования.
Вы не можете криптографически гарантировать, что вы, например, не перехватываете запущенную программу на низком уровне и не считываете данные там, даже если у вас была возможность убедиться, что вы выполняете точный код на сервере.

...