Как бесшовно заменить ключ шифрования
Бэкенд получает ответ DFP в зашифрованном виде и сам расшифровывает payload секретным ключом. Если ключ нужно заменить, ротацию можно провести так, чтобы она не повлияла на работу DFP.
Что такое ротация ключей
Ротация ключей — это замена старого ключа шифрования на новый. Она может понадобиться по внутренней политике безопасности, после изменения контура интеграции или если есть риск, что старый ключ мог стать доступен посторонним.
Мы проводим ротацию бесшовно: во время замены DFP продолжает работать, а ваш бэкенд продолжает расшифровывать ответы. Для этого на время ротации бэкенд хранит старый и новый ключи и пробует их по очереди.
Как выполнить ротацию
-
Сообщите нам, что хотите заменить ключ шифрования.
Мы подготовим новый ключ
key_newи передадим его вам. Старый ключkey_oldпока нужно оставить: до переключения DFP продолжит шифровать ответы старым ключом. -
Добавьте key_new в список ключей на бэкенде.
На время ротации ваш бэкенд будет хранить сразу два ключа:
[ key_new, key_old ]
Расшифровка будет работать так: бэкенд попробует расшифровать
payloadпервым ключом. Если ключ не подходит, бэкенд попробует следующий. Когда он дойдёт до подходящего ключа,payloadрасшифруется без ошибки. -
Попросите нас переключить шифрование на новый ключ.
С этого момента мы будем шифровать все новые ответы DFP ключом
key_new. Бэкенд попробуетkey_newпервым и сразу расшифруетpayload. -
Проверьте, что новые ответы расшифровываются.
Убедитесь, что запросы DFP проходят штатно и бэкенд получает расшифрованные результаты.
-
Подождите, пока старые ответы перестанут быть актуальными.
Не удаляйте
key_oldсразу после переключения. На бэкенд ещё могут прийти ответы, которые браузер получил до смены ключа, но отправил позже. Ориентируйтесь на ваше окно проверки timestamp. -
Удалите старый ключ key_old.
После этого бэкенд должен расшифровывать ответы только новым ключом. Ротация завершена.
Что делать при ошибке расшифровки
Ошибка расшифровки может означать, что:
-
бэкенд использует не тот ключ;
-
новый ключ ещё не добавлен на бэкенд;
-
мы уже переключили шифрование на новый ключ, а бэкенд ещё не обновлён;
-
в ответе повреждены payload, iv или tag;
-
ответ был изменён после выдачи.
Если расшифровка не удалась:
-
Проверьте, что на бэкенде есть все ключи: и старый, и новый.
-
Убедитесь, что бэкенд пробует ключи последовательно, а не останавливается после первой ошибки.
-
Уточните, какой ключ сейчас используется для шифрования на нашей стороне.
-
Сохраните
request_idиз ответа DFP.
Если причина непонятна, обратитесь в нашу поддержку и передайте request_id. Мы поможем во всё разобраться.