L’agilité comporte trois volets : savoir où la cryptographie est utilisée (un inventaire, de plus en plus souvent exprimé sous forme de nomenclature cryptographique), pouvoir la modifier (identifiants d’algorithme dans les formats, négociation dans les protocoles, aucune taille de clé ou de signature codée en dur, couches d’abstraction dans le code) et pouvoir déployer le changement (rotation des clés, double publication, surveillance de ce que les pairs négocient réellement).
Les contre-exemples sont courants : bases de données aux colonnes de signature de largeur fixe, protocoles qui supposent des signatures de 64 octets, cartes à puce qui ne prennent en charge qu’une seule courbe et bibliothèques qui n’acceptent que des clés RSA. L’agilité a aussi un coût : chaque option négociable est une surface d’attaque, comme le montrent les attaques par repli et par confusion d’algorithme, si bien que les systèmes agiles devraient tout de même n’autoriser qu’une liste courte et à jour d’algorithmes.