Как бесшовно заменить ключ шифрования

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

Что такое ротация ключей

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

Мы проводим ротацию бесшовно: во время замены DFP продолжает работать, а ваш бэкенд продолжает расшифровывать ответы. Для этого на время ротации бэкенд хранит старый и новый ключи и пробует их по очереди.

Как выполнить ротацию

  1. Сообщите нам, что хотите заменить ключ шифрования.

    Мы подготовим новый ключ key_new и передадим его вам. Старый ключ key_old пока нужно оставить: до переключения DFP продолжит шифровать ответы старым ключом.

  2. Добавьте key_new в список ключей на бэкенде.

    На время ротации ваш бэкенд будет хранить сразу два ключа:

    [
    key_new,
    key_old
    ]

    Расшифровка будет работать так: бэкенд попробует расшифровать payload первым ключом. Если ключ не подходит, бэкенд попробует следующий. Когда он дойдёт до подходящего ключа, payload расшифруется без ошибки.

  3. Попросите нас переключить шифрование на новый ключ.

    С этого момента мы будем шифровать все новые ответы DFP ключом key_new. Бэкенд попробует key_new первым и сразу расшифрует payload.

  4. Проверьте, что новые ответы расшифровываются.

    Убедитесь, что запросы DFP проходят штатно и бэкенд получает расшифрованные результаты.

  5. Подождите, пока старые ответы перестанут быть актуальными.

    Не удаляйте key_old сразу после переключения. На бэкенд ещё могут прийти ответы, которые браузер получил до смены ключа, но отправил позже. Ориентируйтесь на ваше окно проверки timestamp.

  6. Удалите старый ключ key_old.

    После этого бэкенд должен расшифровывать ответы только новым ключом. Ротация завершена.

Что делать при ошибке расшифровки

Ошибка расшифровки может означать, что:

  • бэкенд использует не тот ключ;

  • новый ключ ещё не добавлен на бэкенд;

  • мы уже переключили шифрование на новый ключ, а бэкенд ещё не обновлён;

  • в ответе повреждены payload, iv или tag;

  • ответ был изменён после выдачи.

Если расшифровка не удалась:

  1. Проверьте, что на бэкенде есть все ключи: и старый, и новый.

  2. Убедитесь, что бэкенд пробует ключи последовательно, а не останавливается после первой ошибки.

  3. Уточните, какой ключ сейчас используется для шифрования на нашей стороне.

  4. Сохраните request_id из ответа DFP.

Если причина непонятна, обратитесь в нашу поддержку и передайте request_id. Мы поможем во всё разобраться.