The various Phase 1 settings of a VPN tunnel policy are fairly well-established (encryption, hashing, DH group, lifetime), but in what order are they considered applicable to a more-secure tunnel?
I am fairly certain I know which values of each tuple are more secure (please correct me if I am wrong):
- encryption: aes-256, aes-192, aes-128, 3des, des
- hashing: sha1, md5
- group: 5, 2, 1
- lifetime: 3600, 28800, 86400
But which tuples should I prioritise in combinations?
Is the encryption more 'important' than the hash? Is the hash more important than the group? Would an aes-256/md5/group5/3600 policy be deemed more secure than an aes-256/sha1/group2/3600 policy?
Background
I am running a Cisco ASA firewall, with a number of site-to-site VPNs (i.e. to client sites). In the past, we have always put these in an additive/incremental fashion and pretty much just added whatever Phase 1/ISAKMP policy the client wanted to the end of the policy list.
Recently, a client has come back and asked that we change their Phase 1 settings from 3DES to AES256. As such, we added the new phase 1 settings to the list, but it still establishes with the 3DES settings, which I did not take out in case another client VPN also used it (the ASA shares the Phase 1 policies, prioritises numerically and does not make it particularly easy to determine which policy is used by which tunnel).
It looks like, in an ASA-to-ASA tunnel, the recipient device chooses the policy from a list sent by the initiator, based on its own policy order not that of the initiator. So it looks like I will have to reorder the policies.
Now, instead of just prioritising by loudest client, I would rather do so such that a policy considered more secure is prioritised over a weaker/legacy one, which should mean that an ASA-to-ASA tunnel will automatically pick the most secure route, while any policy-per-tunnel device should just use the one it is configured to use.
Possible solution
I have read that the purpose of the hash function is for the recipient to verify the decrypted packet, which might lend itself to the Encryption tuple being more 'important' than the Hash tuple.
I have also read that the DH Group is used initially to provide a calculable challenge against the pre-shared key, so it might stand that this is more 'important' than the Hash, too.
Lifetime obviously denotes how often to re-establish the tunnel, but plays no real part in the tunnel itself.
All of which leads me to think that order of importance might be:
- Encryption
- Group
- Hash
- Lifetime
Does this seem reasonable?