Hi,
Comments inline.
On Mon, 15 Dec 2008, marcelo bagnulo braun wrote:
[...]
So, first we have identified the main elements that use the algortihms and
they are:
- the certificates contain both a public key and use a hash
- the SEND protocol itself sends the RSA signature option and use hash
algorithm.
- the CGA includes a public key and uses a hash algorithm
Next, we should agree of what level of backward compatibility we aim for.
First, it should be noted that SEND has two different behaviours. Some
messages are in the request response format and another ones are just a
message (like the periodic RADV).
Second, it should be noted that the public key and the hash algorithm are
tightly coupled to the CGA and also to the certificates.
So, types of nodes and elements can we have in a scenario with crypto
agility?
for hosts
H1- we can have a host that only supports crypto suite 1 and has no
capabilities of doing any operations of algorithms that are not part of this
crypto suite (e.g. the node supports only RSA and SHA1 and it is not capable
of verifying ECC nor MD5 nor any other algorithm). this node has generated
its own CGA with this suite of algorithms.
H2- we can have a host that supports multiple crypto algorithm suite but has
only one CGA, generated with one of the crypto suites. So, in this case, the
node has generated its CGA with crypto suite1, but he can also verify CGAs,
and certs and signatures using other crypto suites.
H3- we then can have a host that supports multiple crypto suites and that he
has generated as many different CGAs as crypto suites it supports.
H4- we can also have a node that supports multiple crypto suites and that he
has generated one CGA that includes multiple public keys, one per public key
algorithm it supports but using a single hash function though.
for routers
R1- a router with a single certificate generated with a given crypto suite.
The router supports only the crypto suite that was used for generating the
cert and it cannot perform crypto operations for other algorithms
R2- a router with a single cert generated with a given crypto suite, but that
it is capable of validating other crypto suites.
R3- a router with multiple certs with different crypt suites. The router
supports multiple crypto suites and can validate the different suites.
Hosts following current SEND specs are essentially H1 type and routers are R1
type, since only RSA and SHA1 is supported
One question we can ask ourselves is what type of hosts and routers will be
accetable under the crypto agility scheme?
I personally think we should have H4 type and R3 type that would provides
the wider compatibility with older nodes. This is the type of
hosts/routers we define in our draft.
H4 type are only required during a transition phase, once a specific
crypto suite is adopted, they will act as H2 type of nodes.
We can rule out H3 type as it is really hard to bind two CGA addresses
together (you have to prove you know the two secret, and sometime, you
can't prove it to a node that don't support the correct crypto suite).
I am not sure R2 will work. Only one certificate, validating multiple
crypto suite: this involves multiple keys, right? How do we link the
certificate and the multiple keys ?
R3 seems more fitted. Routers being more powerful.
Then, what type of interop can we expect?
One option is to have a type H1 host supporting crypto suite 1 that tries to
communicate with another host or router of type H1/R1 but that uses a
different crypto suite. Of course, in this case, they won't be able to use
SEND for the communication and they will fall back to normal ND. I guess that
what is needed in this is a mean to allow the hosts and routers to tell that
the crypto suite is different than the one they support. I understand that is
already available in SEND
Falling back is a good alternative when there is no other choice, for the
RFC3971 nodes.
Another option is to have a host of type H2 communicating with a router of
type R2. even though they have used differnet crypt suites to generate their
CGAs and certs, they support each other crypto suites. In this case, if they
can identify the crypto suite used by each other, they should be able to
communicate. If the crypt suites are not overlapping, i guess they need to
fall back to plain ND.
Right.
Another option is that we have two hosts of type H3 communicating. this is
complicated cause they need to find the right coupling between the different
CGAs they have. It is probbaly possible, but it probably involves some form
of probing.
In our draft, in the best case scenario (which I believe would be the more
common), we have 2 messages (as many as in SEND), when things goes wrong,
we have 3 messages.
Basically, good case is just like:
- Node A supports Type 1 and Type 2 crypto suite (in this preference
order)
- Node B supports Type 1 and Type 3 crypto suite (in this preference
order)
- Node A send a NS signed with Type 1 to Node B. The Supported Signature
Algorithm option indicates which Type of crypto suite Node A supports.
- Node B verify the signature, everything is OK, it builds up a NA signing
with Node A preferred crypto suite (First crypto suite to appear in the
list inside the Supported Signature Option): Type 1.
- Node A receives the message and checks the signature.
Worst case:
- Node A supports Type 2 and Type 1 crypto suite (in this preference
order)
- Node B supports Type 3 and Type 1 crypto suite (in this preference
order)
- Node A send a NS signed with Type 2 to Node B. The Supported Signature
Algorithm option indicates which Type of crypto suite Node A supports.
- Node B try to verify the signature: it doesn't support Type 2. It
checks the crypto suite available to communicate with A with the help
of the Supported Signature Algorithm option. It chooses Type 1. It
signs the NA with Type 1, add to the message its Supported Signature
Option that indicate that the initial message need to be resent. This
message is sent.
- Node A receives the message and checks the signature. The Supported
Signature Option indicates that node A has to has to send again the
informations. The option indicates which crypto suite is available:
Type 1. It re-sends a NS or maybe a NA with the Type 1 crypto suite.
Another option is for a host of type H4 communicate with a host of type H1.
In this case, if one of the public keys used by the H4 host is supported by
the H1 host, the communication could be possible, but hte problem is how to
choose which is the right public key to use to sign the messages.
Not a trivial problem. If a H4 type node send a message to a node he
knows nothing of, after a timeout delay, it may try to resent the packet
using a H1 type mechanism. Basically, here, it means that we will sign
using with a RSA signature using a RSA Public Key located in the Public
Key field of the CGA PDS.
I think the first thing we need to do is to define whoch of the host and
routers types we are going to support and then define what inerop modes are
we going to allow.
I agree.
Regards,
Tony Cheneau
_______________________________________________
CGA-EXT mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/cga-ext