Страница 1 из 1

шифрование сумм и названий сущностей

Добавлено: 10 май 2019, 08:47
docker
предыстория тут
думаю это один из наиболее критичных моментов: в небольшие то конторы типа дзенмани или какие там еще я бы опасался актуальную базу скидывать, и в силу паранойд-факторов да и в силу рисков безопасности которая конечно не на высшем уровне у небольших фирмочек, не говоря уж об ресурсах фриланс разработчиков.

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

Т.к. js код всегда виден в браузере то пользователь всегда может его проверить на предмет утечки пароля и это будет гарантией того что клиентский ключ расшифровки никуда скрытыми запросами не отправляется и сервер его никогда не узнает.
При этом ключ дешифровки можно хранить в локальном хранилище браузера (http://htmlbook.ru/html5/storage), т.е. запрашивается один раз и никуда не пересылается из браузера

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

в целом добавление шифрования в андройд версию не должно быть долгим и сложным в случае выбора метода/алгоритма и наличия библиотеки под java/android

Re: шифрование сумм и названий сущностей

Добавлено: 10 май 2019, 15:09
admin
Вопрос навскидку. Если будут шифроваться суммы, то после добавления/редактирования/удаления транзакции/перевода на конкретном счете надо высчитать сумму по всему счету и внести в сущность счета (отображается на страничке счетов). Как это сделать на уровне клиента?

Re: шифрование сумм и названий сущностей

Добавлено: 12 май 2019, 19:23
docker
admin писал(а):
10 май 2019, 15:09
Вопрос навскидку. Если будут шифроваться суммы, то после добавления/редактирования/удаления транзакции/перевода на конкретном счете надо высчитать сумму по всему счету и внести в сущность счета (отображается на страничке счетов). Как это сделать на уровне клиента?
навскидку - при изменении суммы транзакции считаем разницу на сколько поменялось, потом дешифруем баланс счета и меняем его на эту вычисленную разницу.
В целом надо будет еще плотнее копнуть алгоритмы шифрования, там есть нюансы, например тот что поддерживает сортировку и сравнение в зашифрованном виде (гуглить по order preserving ecryption) как оказывается не обеспечивает тотальной безопасности и тп.

Re: шифрование сумм и названий сущностей

Добавлено: 12 май 2019, 20:07
admin
так, ну предположим. но надо понимать, что мы уже удваиваем логику. Т.е. фактически кроме шифрования/дешифрования мы будет дублировать серверную логику. Надо понимать, что объем работ растет очень значительно.
Теперь следующий вопрос: поиск работать не будет? или мы все данные должны выгрузить на клиент и там искать после дешифрования: т.е. js-клиент должен хранить дешифрованную БД на своей стороне (в браузере). Я даже не могу предположить, сколько будет кушать памяти и процессора эта страничка? Про SQL поиск надо будет забыть. Т.е. надо будет написать какой-то js-поиск с каким-то собственно написанным заменителем SQL. Так?
Про отчеты я вообще молчу...
Гораздо проще взять и написать это все с нуля в виде толстого клиента, который будет брать дамп прямо с диска (ну если для винды).

Re: шифрование сумм и названий сущностей

Добавлено: 20 май 2019, 08:03
admin
Я тут подумал, что есть один простой способ решения проблемы повышенной тревоги за личные данные. Я могу выделить некоторый функционал и выкладывать его локально. Желающие будут скачивать и запускать локально веб-сервер с БД. В результате все данные будут храниться локально. Если на компе установлен клиент облака, то импорт/экспорт в облако тоже будет локального решения (сервис будет класть на жесткий диск в папку облака и забирать оттуда, а клиент уже сам автоматически синхронизирует в облаке). Тут конечно тоже надо будет подумать, как это лучше сделать (не хочу исходники в сеть выкладывать, опять же ключи, какую-то минимальную работа надо будет делать, форум опять же локально не нужен. надо подумать, чтобы и сервис защитить, и проблему решить), но такое решение проще в разы, поэтому оно имеет гораздо большие шансы на реализацию.

Re: шифрование сумм и названий сущностей

Добавлено: 05 июн 2019, 21:57
admin
добавил в опрос вариант:
Нет, достаточно локальной реализации (веб-функционал, который можно будет развернуть на домашнем ПК - БД хранится дома, а не в интернете)

Прежние ответы, к сожалению, сбросились (было 3 голоса за "да, нужен"). Кто голосовал уже, можете переголосовать.

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

К сожалению, материальной поддержки я почти не получаю. В опросе 18 человек отметили, что готовы жертвовать разные суммы, в итоге на данный момент за всю историю было целых два пожертвования 500+100 руб, которые не покрыли даже моих затрат на хостинг и домен (больше 1500 руб).

насчет локальной версии Re: шифрование...

Добавлено: 19 июн 2019, 13:06
docker
admin писал(а):
20 май 2019, 08:03
Я тут подумал, что есть один простой способ решения проблемы повышенной тревоги за личные данные. Я могу выделить некоторый функционал и выкладывать его локально. Желающие будут скачивать и запускать локально веб-сервер с БД. В результате все данные будут храниться локально. Если на компе установлен клиент облака, то импорт/экспорт в облако тоже будет локального решения (сервис будет класть на жесткий диск в папку облака и забирать оттуда, а клиент уже сам автоматически синхронизирует в облаке). Тут конечно тоже надо будет подумать, как это лучше сделать (не хочу исходники в сеть выкладывать, опять же ключи, какую-то минимальную работа надо будет делать, форум опять же локально не нужен. надо подумать, чтобы и сервис защитить, и проблему решить), но такое решение проще в разы, поэтому оно имеет гораздо большие шансы на реализацию.
да это хорошая идея: более того можно в опенсорс эту часть с графиками и аналитикой выложить, чтобы желающие могли скачать и сами установить на свой lamp сервер локальный по инструкции. Ну а тем кто технически далек от всего этого - можно за денюжку помогать ставить и настраивать разово, это к вопросу о монетизации так сказать.

p.s. +очевидно что если будет опенсорс и на гитхабе выложено, то если тема раскрутится - народ будет еще и PR на багфиксы присылать безвозмездно так сказать.

Re: шифрование сумм и названий сущностей

Добавлено: 19 июн 2019, 13:14
admin
docker писал(а):
19 июн 2019, 13:06
если будет опенсорс и на гитхабе выложено
Я думал об этом. Но отказался от этой идеи. Опенсорс чреват тем, что баги можно будет обнаружить быстрее, чем они будут пофикшены. Не хочу лишний раз светить внутренности, как оно устроено. С другой стороны локальный сервак можно было бы выкладывать, в котором будет вырезана вся авторизация и т.п. Подумаю об этом.

Re: шифрование сумм и названий сущностей

Добавлено: 19 июн 2019, 13:22
docker
admin писал(а):
19 июн 2019, 13:14
docker писал(а):
19 июн 2019, 13:06
если будет опенсорс и на гитхабе выложено
Я думал об этом. Но отказался от этой идеи. Опенсорс чреват тем, что баги можно будет обнаружить быстрее, чем они будут пофикшены. Не хочу лишний раз светить внутренности, как оно устроено.
в этом особо ничего страшного нет (имеется ввиду в опенсорс но без кода авторизации, для безопасности), наоборот бенефитов больше, финансисто приложение полностью открыто на гитхабе и это позволило ему дальше немного развиваться после того как автор забросил считай.

p.s. еще бенефиты такой схемы - меньше нагрузки на ваш сервер, экономия на тарифе хостинга так сказать.