откуда они
Каждая сторона выбирает их; то есть инициатор выбирает свои файлы cookie, а отвечающая сторона выбирает свои файлы cookie. После исходного пакета (где инициатор еще не изучил cookie-файлы ответчика) каждый пакет IKE будет содержать и то, и другое.
как они генерируются
Однако каждая сторона хочет (пока она не генерирует значение all-0 - это значение имеет особое значение). Каждая сторона могла генерировать их случайным образом. Сторона может генерировать свои файлы cookie с IP-адресом партнера (чтобы быстро отфильтровывать слепые лавинные атаки — атаки заключаются в том, что боты рассылают множество сообщений IKE). В качестве альтернативы крупномасштабная реализация может встроить «идентификатор сеанса» в свои файлы cookie (чтобы ускорить поиск).
Поскольку другая сторона не придает этому значению никакого значения (кроме того, что оно не равно нулю), это не имеет значения.
почему они используются
Некоторые причины:
Один и тот же набор пиров может реализовывать сразу несколько сеансов IKE (на самом деле это довольно распространено); файлы cookie действуют как идентификатор сеанса.
Чтобы предотвратить любую атаку в стиле «воспроизведение», когда кто-то копирует пакеты IKE из предыдущего сеанса (в надежде обмануть честного партнера); потому что честный сверстник выберет свежий файл cookie, это не сработает.
Первоначально файлы cookie были введены в IKEv1/Photuris для предотвращения слепых флуд-атак. Это больше не проблема в IKEv2 (с защитой от DoS, встроенной в IKEv2); однако механизм все еще существует.