Есть система, в которую поступают текстовые сообщения. На клиенте с помощью публичных/приватных ключей они шифруются и отправляются на сервер.
На сервере они хранятся в шифрованном виде и никаких ключей для дешифрования на сервере нет принципиально.
У меня есть задача искать на сервере по каким-то запросам или ключевым словам текст в зашифрованных сообщениях.
Как это у меня работает сейчас. Я запрашиваю порции шифротекста с сервера, расшифровываю на клиенте приватными ключами. И уже в расшифрованном тексте на клиенте я делаю нужный мне поиск.
Недостаток очевиден - поиск производится крайне медленно и безо всякой оптимизации, никакой Sphynx тут не поможет.
Вопрос. Можно ли как-то ускорить поиск в шифрованном тексте?
P.S. Это, кстати, пинок в сторону Телеграма как доказательство, что там ничто не шифруется, поскольку поиск за огромный период времени там происходит моментально. И на сервере, а не на клиенте.
Как идея... А что, если на этапе шифрования на клиенте делать парсинг по ключевым словам, шифровать их и передавать вместе с шифротекстом тоже в зашифрованном виде. На сервере сохранять эти слова-тэги в виде индексов.
Тогда при поисковом запросе можно так же в зашифрованном виде обращаться к этим шифрованным тэгам, ключевым словам...
Николай Савельев, звучит интересно.
Но тут есть небольшая проблемка. Когда я шифрую алгоритмом RSA с помощью одних и тех же неизменяемых ключей, то сообщение каждый раз получается в разном виде. Хотя и без проблем дешифруется одними и теми же ключами. Это особенность алгоритма.
Таким образом, получается, что для одного и того же текста/ключевых слов каждый раз будет разный шифротекст. А значит, невозможно построить однозначный индекс для быстрого поиска
пинок в сторону Телеграма как доказательство, что там ничто не шифруется, поскольку поиск за огромный период времени там происходит моментально
достаточно другого - push уведомления. Их текст отправляется с сервера, т.е. текст сообщения расшифровывается до отправки клиенту
и поиск в тг очень и очень паршивый. Что по чатам, что внутри чатов. Как так хреново можно было сделать не понимаю. думаю, дело в сложной архитектуре репликации и географическом распределении серверов.
Например, продолжить твое "сейчас" и на клиенте хранить индекс всех сообщений (если такое возможно). А так гугли "searchable symmetric encryption" и "полностью гомоморфное шифрование"