нас в проекте есть интеграция с другими сервисами по api key (например со Stripe). То есть у каждого пользователя свои ключи, мы потом с ними с сервера обращаемся к сервисам
Что не работает:
* env файлы с шифрованием, infiscal и hashicorp/vault (потому что нужно для каждого пользователя хранить ключи и часто использовать)
* хеширование - ключ нужен в первоначальном виде чтобы обращаться к другим сервисам
* шифровать ключи другим ключом и этот другой ключ хранить у пользователя (у сервера должны быть возможность в любой момент воспользоваться ключом от другого сервиса)
на стаковерфлоу советуют что-то типо:
Ну можно hmac'ом зашифровать, но это конечно не надежно, и вообще лучше так не делать, а если и делать то надейтесь чтобы все сработало, но лучше так не делать!
Такой неуверенный ответ меня немного напрягает) Что делают в таких ситуациях?
так vault, больше вариантов не придумано (придумано, но они все одинаковые, как под копирку) https://www.vaultproject.io/
Спасибо! Там есть такой use case, но вроде vault не для этого создавался (как я понимаю он изначально был нужен чтобы на сервере безопасно хранить credentials) и поэтму он громоздкий. Возможно есть более легкие решения (не в плане интерфейса/апи, для этого есть infiscal) в плане архитектуры и интеграции
не вполне понимаю. ты хочешь у себя хранить секрет, принадлежащий пользователю?
все ли у вас там в порядке? не нужно скорую вызвать?
а зачем?
Ясно, я давно здесь не был, не думал что до такого скатилось комьюнити
та причем тут. шутки юмора же. просто ты приходишь с вопросам как из дробовика лучше стрелять в голову себе и в скобочках пишешь, что это не будет ошибкой.
мы постараемся этого избежать, но есть сервисы которые интегрируются только по апи с обращением к ключу
т.е. некие сервисы ваших клиентов работают на вашей инфраструктуре?
Я попросил вариант решения, а не копаться с моим подходом
вариант решения прям хорошее - сделать себе свою пару ключей на стотыщ битов, хранить в сверхсекретном месте и шифровать это все отдельным сервисом или как-то так, чтобы приватный ключ не расплющило равномерно по всему датацентру. а потом дешифровать. заплатите вы за это дорого, пушто алгоритмы CPU интенсивные и куча работы это в общем и целом. если так делать, то далее все упирается в то, насколько надежно вы запрячите вот тот самый главный верховный всемогущий приватный ключ.
но это прям дорога в ад, ей-Богу
https://en.wikipedia.org/wiki/Shamir%27s_secret_sharing не забыть
зачем ключи на сто тыщ битов
спасибо! Посмотрю
шоб наверняка (с) на деле на 4к битов хватит, чоб нет.
а если отказаться от RSA например?
симметрично шифровать?
ассиметричные алгоритмы не ограничиваются одним RSA, но зачем тут ассиметричные алгоритмы я тоже не совсем понял
Вместо rsa 4096 лучше уж тогда взять ecdsa 256
ecdsa не шифрует, но эллептические кривые будут поменьше весить, это да
я хз зачем ассиметричными алгоритмами меряться. ты знаешь какое-то хорошее ассиметричное шифрование, которое НЕ бьет по ЦПУ?
не знаю ничего про ecdsa
Вообще, с ростом длины ключа rsa защищенность растет намного быстрее этой самой длины.
Ну и зря. Пора бы уже узнать.
ну все, есть план на вечер
по cpu бьет не шифрование, а генерация ключей EC - в разы дешевле (но прямо для шифрования не могут использоваться)
я честно говоря в целом не знаю про нагрузку от этих операций, но тут вероятно важно что и как часто мы шифруем
А когда хмак стал шифрованием?
Шифрование тоже бьет и EC всё равно дорогой по CPU. Потому никто напрямую асимметричной криптой данные не шифрует
Для шифрования, кстати, использоваться могут
Напрямую тоже.
нагрузка этих операций такова, что надо шесть с половиной раз подумать прежде чем это внедрять в систему, где этот механизм планируется использоваться много. понятное дело, что слово "много" тут не определено.
https://en.m.wikipedia.org/wiki/RSA_(cryptosystem)#Encryption
Hashicorp как раз работает. Причём, в случае приватных ключей можно, вроде, даже не выгружать их из vault-а, а вместо этого прогонять через него данные для шифрования/дешифрования. В любом случае так или иначе вам нужно либо взять готовое решение типа волта, либо писать свой аналог хранилища секретов. Ну либо переработать архитектуру так, чтобы не хранить секреты вообще.
а если все же vault заюзать?
Ага, думаю все таки его использовать
Обсуждают сегодня