кошелек на блокчене (по сути пара ECC ключей публичный-приватный)
1 у нас есть сервис который хранит данные пользователя (профиль итп)
для сервиса мы генерим на клиенте pgpPrivateKey,pgpPublicKeys - он хранится в профиле на бэкэнде
в зашифрованном виде - мы шифруем/расшифровываем пользовательским паролем
вопрос - как избежать этого пароля ?
-------------
раньше мы делали вот что
генерили nonce (он хранился и на клиенте и на сервере)
nonce подписывали ECC ключем
подпись и являлась этим паролем
получалось удобно т/к/ пользователю достаточно иметь только один ключ и не надо никаких паролей
теперь появилось новое поколение всяких умных кошельков у которых подписант (этот самый ECC ключ) может меняться
и получается что использовать подпись nonce как пароль для шифрования профиля уже нельзя
что можно сделать еще?
о чем уже думали
------------------
1 разбить пароль на 3 куска через shamir secret sharing с режимом 2 из 3 для восстановления ключа
один кусок хранить у нас на беке в открытом виде
второй кусок на мобилке юзера
третий в популярном сервисе под учеткой юзера
2 рековери токены на смартфоне
те используя серьюрити смартфона эппл/андроид храть одноразовые пароли для расшифровки pgpPrivateKey
полученного с бэкенда
3 TOTP - alike secret storage
в идеале хочется прикрутить что-то похожее на Time-Based One-time Password (Google Authentificator)
но они by design хранят секрет и на клиенте и на сервере и вроде как не подходят
Ну у вас вроде как смешались аутентификация пользователя и расшифровка данных. У пользователей есть пара ECC ключей, актуальный публичный храниться у вас в беке. Можно шифровать данные симметричным шифром , а сам симметричный ключ для расшифровки шифровать публичным ключом пользователя?
так нельзя аж по 2м причинам 1ю я объяснил но вы невнимательно читали. это то что теперь в smart contract wallets сам ключ может меняться и подпись как и зашифровка потом становится невалидной тк EOA сменился 2 блокчейны пользуют ecc криптографию а не rsa, шифровать публичным ключом на ECC - это какой-то bleeding edge который пока реально нигде никто толком не умеет (может там можно 1 число зашифровать и очень плохо по хар-кам разным)
и еще момент фишка в том что пользователь владеет данными - потому мы храним его ключи и ими он общается в системе с другими и немного его данных - и это все шифруется обычным aes бэкэнд не имеет доступа к его данным совсем - not your keys not your data а те трюки с подписыванием nonce - просто удобный способ не забывать пароль
Обсуждают сегодня