15
Thoughts on KeySec John Viega [email protected]

Thoughts on KeySec John Viega [email protected]

Embed Size (px)

Citation preview

Page 1: Thoughts on KeySec John Viega viega@securesoftware.com

Thoughts on KeySec

John [email protected]

Page 2: Thoughts on KeySec John Viega viega@securesoftware.com

Review of phases

• In Orlando, seemed to agree on .af phases:– Discovery (insecure)– Authentication– Authorization– Key Management

Page 3: Thoughts on KeySec John Viega viega@securesoftware.com

Authentication issues

• Where does the cipher suite get negotiated?– … along with any other options

• Have to be very careful with message design in authentication phase

• Authorization phase: no real handle on req’s– To what degree are we specifying this, or is it

for vendors?

• Proposed solution:– Carefully design into authentication protocol.

Page 4: Thoughts on KeySec John Viega viega@securesoftware.com

Authentication issues

• What are the semantics for cipher suite negotiation?– If we both support A and B, and prefer different

algorithms, who wins? The initiator?

• Once we’ve authenticated a single time:– We almost certainly want fast reconnects– Can someone change algorithms on a fast

reconnect?• I think this should be possible.• Should fast reconnects occur even if the box was out

of commission for 2 months (e.g., being repaired)

Page 5: Thoughts on KeySec John Viega viega@securesoftware.com

Fast reconnects

• Initial authentication decisions usually made with help of some authority (e.g., PKI, Radius server)

• Authority’s endorsement is good for some period of validity

• Once mutual identities are established, two parties generally share a symmetric key

• We can keep using this key until it’s lifetime ends, and can leverage it to choose a replacement before that happens

Page 6: Thoughts on KeySec John Viega viega@securesoftware.com

Authentication issues

• When *shouldn’t* we use a fast reconnect?

• Authorization can still occur after a fast reconnect.

• Only time we can’t do a fast reconnect is when bootstrapping a connection for the first time

• In the two-party case, we can leave it unspecified– SNMP, enter into console, or whatever the vendor

likes– This way, very lightweight and easier to make

robust

• Central management is an issue here

Page 7: Thoughts on KeySec John Viega viega@securesoftware.com

We should not use EAP

• Even w/o methods, EAP is large and complex– Will implementations really be robust?– How often will there be a failure?– Is this a DoS risk?– No one could ever put this in hardware

• EAP is designed for a different environment– Designed for dial-up to modem pool– Popular methods fail on shared media (prone

to misuse)– Even today, the slant is customer interfacing– “customer interfacing” vs. infrastructure ports

Page 8: Thoughts on KeySec John Viega viega@securesoftware.com

More EAP issues

• “pass-through” model is not ideal– EAP effectively has both parties auth to AAA

server– Hardware should directly auth with HELP from AAA

• Does not support dual pass-through (switch-to-switch case)– Realistic, but will generally both backend to same

server– No support for trusted third parties, either!

• It makes key management decisions for us– An artifact of an ad hoc design– Ensuring conformance will add complexity

Page 9: Thoughts on KeySec John Viega viega@securesoftware.com

AAA servers

• Do we care about specifying pass-through?

• Let a vendor worry about it if they really want it

• Trusted-third party model is more useful

• “TTP, I am A and I want to connect to B. Give me a key for it.”

• B doesn’t even need to talk to the TTP to determine the key A got, just A’s identity

Page 10: Thoughts on KeySec John Viega viega@securesoftware.com

Some authentication recommendations

• Keep it simple– No EAP– No pluggable methods– Leverage the mandatory cipher suite

• We should only support “fast reconnect” authentication

• It may be useful to support a TTP protocol for centralized management

Page 11: Thoughts on KeySec John Viega viega@securesoftware.com

Towards a protocol

• Many ways to do fast reconnects– Just pick up the old connection where you left

off– Use the old key to create a new key, and

replace the old key– Use one key long-term, just to generate

transient keys

• Third solution makes key management much, much easier

Page 12: Thoughts on KeySec John Viega viega@securesoftware.com

Preliminaries

• A and B share S (long-term secret)• A and B each maintain two counters

– Last key ID set by A, last key ID set by B (nonces)

• A can say, “if this is successful, I’d like to change our long-term key”– Necessary but hopefully rare key-lifetime issue– Call additional information O– What else should go in here?

• Cipher suite?

Page 13: Thoughts on KeySec John Viega viega@securesoftware.com

Partial protocol

• A sends identities of A& B, key ID and GCM(A&B, O)

• A increments key ID• B validates the MAC• B ensures key ID of A is higher than the

previous (successful) key ID of A• B uses specified key to generate

authentication output– Key for authorization discussion– Key for use in .ae

• B Beginning authorization signals valid authentication.

• Might need to finish cipher-suite negotiation here.

Page 14: Thoughts on KeySec John Viega viega@securesoftware.com

Issues

• What happens if an attacker doesn’t allow B to respond?– A will eventually run out of nonces– Fall-back to a challenge-response protocol

• If nonce is too low, B assumes it is randomly chosen (though it could be a replay)

• B chooses his own random nonce of a particular form• B GCM-encrypts a new key and the nonce value it had

stored. It authenticates A’s original packet as well.• A validates the packet then tries to connect with new

key.• On failure, A discards new key.• On success, A discards old key.• B keeps old key until he is sure he and A agree on keys.

• What happens in race condition?– Highest MAC address wins

Page 15: Thoughts on KeySec John Viega viega@securesoftware.com

Key Management, etc.

• Time to rekey? – Redo the fast authentication protocol

• Need to choose a new random key? – Reserve a low key ID that B will reject (e.g.,

zero)– Use a trusted third party– Have it be part of the “other” data