🔑 IKEv2 Proposal — Cisco IOS

Configuration · Règles · Normal vs Combined · ENARSI

C'est quoi un IKEv2 Proposal ?

Rôle

Le proposal définit les algorithmes cryptographiques utilisés pour protéger le canal IKE lui-même (IKE SA = Phase 1). Il est négocié dans les messages IKE_SA_INIT (MSG 1 et 2 — en clair).

Les 4 types de transforms

TransformCommande CiscoRôleExemples
EncryptionencryptionConfidentialité du canal IKEAES-CBC-256, AES-GCM-256
IntegrityintegrityIntégrité + authenticitéSHA256, SHA512
PRFprfDérivation des clés (SKEYSEED)SHA256, SHA384
DH GroupgroupÉchange de clés Diffie-HellmanGroup 14, 19, 20, 21
⚠️ Différence IKEv1 : En IKEv2, l'authentification (PSK/cert) et la durée de vie de la SA ne sont PAS dans le proposal — elles sont gérées dans le IKEv2 Profile. IKEv1 les incluait dans le proposal (ISAKMP policy).

Lien proposal → policy → profile

! Le proposal seul ne fait rien — il doit être activé via une policy

crypto ikev2 proposal PROP-IKEv2        ← définit les algos
 encryption aes-cbc-256
 integrity  sha256
 group      14

crypto ikev2 policy POL-IKEv2          ← active le proposal
 proposal PROP-IKEv2

crypto ikev2 profile PROF-IKEv2        ← identité + auth (PSK/cert)
 match identity remote address 10.0.0.2 255.255.255.255
 authentication remote pre-share
 authentication local  pre-share
 keyring local KR-IKEv2
Proposal default : Si tu ne configures rien, Cisco utilise un proposal/policy par défaut (inclut DH2, SHA1, 3DES…). Suffisant pour un test rapide, mais jamais pour la production ni l'exam ENARSI.
Créer, référencer et supprimer un proposal
1
Créer le proposal
Entre en mode (config-ikev2-proposal). Cisco affiche un message rappelant les requirements.
Router(config)#crypto ikev2 proposal ikev2_proposal
IKEv2 proposal MUST either have a set of an encryption algorithm
other than aes-gcm, an integrity algorithm and a DH group configured
or encryption algorithm aes-gcm, a prf algorithm and a DH group configured
Router(config-ikev2-proposal)#
2
Configurer les algorithmes
Exemple avec normal cipher (AES-CBC) — integrity obligatoire
Router(config-ikev2-proposal)#encryption aes-cbc-256
Router(config-ikev2-proposal)#integrity  sha512
Router(config-ikev2-proposal)#prf        sha512
Router(config-ikev2-proposal)#group      16
3
Référencer dans une policy
Sans cette étape, le proposal n'est jamais utilisé en négociation.
Router(config)#crypto ikev2 policy ikev2_policy
Router(config-ikev2-policy)#proposal ikev2_proposal
4
Supprimer un proposal
Il faut d'abord le dé-référencer de la policy, sinon Cisco refuse.
! ❌ Tentative directe — refus :
Router(config)#no crypto ikev2 proposal ikev2_proposal
% Cannot remove as proposal is in use.

! ✅ Dé-référencer d'abord :
Router(config)#crypto ikev2 policy ikev2_policy
Router(config-ikev2-policy)#no proposal ikev2_proposal
Router(config-ikev2-policy)#exit
Router(config)#no crypto ikev2 proposal ikev2_proposal
⚠️ Proposal incomplet : Si tu oublies un transform (ex: pas de group), le proposal s'affiche avec la mention ! Proposal Incomplete dans la running-config et n'est pas utilisé en négociation.
Router#show run | begin ikev2 proposal
crypto ikev2 proposal ikev2_proposal
 ! Proposal Incomplete(MUST have atleast an encryption algorithm,
   an integrity algorithm and a dh group configured)
Normal Cipher (AES-CBC) vs Combined-Mode (AES-GCM)
🔵 Normal Cipher (AES-CBC)
🟢 Combined-Mode (AES-GCM)
EncryptionAES-CBC, AES-192, DES, 3DES
Encryption (AEAD)AES-GCM-128, AES-GCM-256
Integrity✅ Obligatoire (SHA256, SHA512…)
Integrity❌ Interdite — intégrée dans GCM
PRFOptionnel (par défaut = integrity algo)
PRF✅ Obligatoire (dérivation clés)
DH Group✅ Obligatoire
DH Group✅ Obligatoire
Perf2 passes CPU (encrypt + HMAC)
Perf1 passe CPU — plus rapide (AEAD)
🔵 Exemple — Normal cipher
crypto ikev2 proposal NORMAL
 encryption aes-cbc-256
 integrity  sha512
 ! prf optionnel ici (= integrity par défaut)
 group      16
show crypto ikev2 proposal NORMAL
IKEv2 proposal: NORMAL
  Encryption : AES-CBC-256
  Integrity  : SHA512
  PRF        : SHA512
  DH Group   : DH_GROUP_4096_MODP/Group 16
🟢 Exemple — Combined-mode (AES-GCM)
crypto ikev2 proposal GCM
 encryption aes-gcm-256 aes-gcm-128
 ! integrity → WARNING si ajoutée
 prf        sha512 sha384
 group      21 20
show crypto ikev2 proposal GCM
IKEv2 proposal: GCM
  Encryption : AES-GCM-256 AES-GCM-128
  Integrity  : none
  PRF        : SHA512 SHA384
  DH Group   : DH_GROUP_521_ECP/Group 21
               DH_GROUP_384_ECP/Group 20
⚠️ Deux proposals si besoin des deux modes : AES-GCM et AES-CBC ne peuvent pas cohabiter dans un même proposal. Il faut créer deux proposals séparés et les référencer tous les deux dans la policy.

crypto ikev2 policy POLproposal GCM + proposal NORMAL
Règles importantes & pièges ENARSI
1
Au moins 1 transform de chaque type requis
Un proposal sans encryption, sans integrity (sauf GCM), ou sans DH group est incomplet et n'est pas utilisé. Cisco l'indique avec ! Proposal Incomplete dans la running-config.
2
Ordre = priorité (du plus au moins préféré)
Si tu configures plusieurs algos : encryption aes-cbc-256 aes-cbc-128 → AES-256 est proposé en premier. Le répondeur choisit parmi les proposés.
3
L'initiateur a la priorité en cas de conflit de préférences
Si initiateur propose [SHA512, SHA256] et répondeur préfère SHA256, c'est SHA512 qui est choisi (premier de la liste de l'initiateur qu'il accepte).
4
Proposal doit être référencé dans une policy
Sans crypto ikev2 policy → proposal, le proposal est ignoré. La policy default prend le relais avec ses algos faibles.
5
Dé-référencer avant de supprimer
Cisco refuse no crypto ikev2 proposal X si X est encore référencé dans une policy. Message : % Cannot remove as proposal is in use.
6
AES-GCM et AES-CBC = deux proposals séparés
Combined-mode et normal-mode ne peuvent pas cohabiter dans un seul proposal (RFC IKEv2). Créer deux proposals et les deux référencer dans la même policy.
7
Le répondeur doit avoir au moins un proposal compatible
Si aucun des proposals de l'initiateur ne matche côté répondeur → IKE_SA_INIT échoue (NO_PROPOSAL_CHOSEN). Debug : debug crypto ikev2 error
8
Le proposal default existe toujours
Cisco a un proposal/policy par défaut (DH2, 3DES, SHA1…). Il s'applique si tu ne configures rien. Jamais utiliser en production.
9
IKEv2 Proposal ≠ IPsec Transform-Set
Le proposal protège le canal IKE (Phase 1). Le crypto ipsec transform-set protège les données (Phase 2 / Child SA). Deux configurations distinctes.
Show, vérification & debug
Voir tous les proposals configurés
Router#show crypto ikev2 proposal

IKEv2 proposal: default
  Encryption : AES-CBC-256 AES-CBC-192 AES-CBC-128
  Integrity  : SHA512 SHA384 SHA256 SHA96 MD596
  PRF        : SHA512 SHA384 SHA256 SHA1 MD5
  DH Group   : Group 5 Group 2  ← faibles !

IKEv2 proposal: PROP-IKEv2
  Encryption : AES-CBC-256
  Integrity  : SHA256
  PRF        : SHA256
  DH Group   : DH_GROUP_2048_MODP/Group 14
Vérifier la SA IKE établie
Router#show crypto ikev2 sa detail

IKEv2 SAs:
Session-id:1, Status:UP-ACTIVE
Fvrf/ivrf: none/none
  Local  10.0.0.1/500
  Remote 10.0.0.2/500
  Encr: AES-CBC, keysize: 256
  PRF: HMAC-SHA256
  Hash: HMAC-SHA256-128
  DH Grp: 14
  Auth sign: PSK
  Auth verify: PSK
Si négociation échoue
! Activer le debug
Router#terminal monitor
Router#debug crypto ikev2 error
Router#debug crypto ikev2 internal

! Forcer une nouvelle négo
Router#clear crypto ikev2 sa
Message type NO_PROPOSAL_CHOSEN → aucun algo en commun entre les deux peers. Vérifier encryption/integrity/DH des deux côtés.
Vérifier dans la running-config
Router#show run | begin ikev2 proposal
crypto ikev2 proposal PROP-IKEv2
 encryption aes-cbc-256
 integrity sha256
 group 14
!
crypto ikev2 policy POL-IKEv2
 proposal PROP-IKEv2  ← lien obligatoire
!
crypto ikev2 profile PROF-IKEv2
 match identity remote address 10.0.0.2
 authentication remote pre-share
 authentication local pre-share
 keyring local KR-IKEv2