> On Dec 16, 2014, at 11:45 AM, Ashok Kumar <[email protected]> wrote:
> 
> Hi Paul,
> 
> I agree that it helps to avoid delivering duplicate packets to the end system.
> But I am not convinced about the following statement.
> 
> > The purpose is to avoid delivering duplicate packets to the end system, 
> > where (depending
> > on the protocol) they might cause applications to malfunction.
> 
> The IPsec is transparent to end system. So IIUC, end-to-end system/application
> shouldn't assume that it will never receive duplicate packets. So regardless 
> of
> whether IPsec is used/deployed or not, it is end system/application 
> responsibility
> to handle any duplicate packets. Isn't it?

Conventional protocol design concentrates on handling events that occur 
normally in a network.  For example, accidental data corruption occurs on 
physical links due to noise and the like.  Packet reordering occurs due to how 
routing works.  Packet duplication may also occur normally on occasion.  In all 
these, the design focuses on non-malicious events: random or otherwise 
intermittent events but not events constructed by an adversary intent on 
breaking things.

By contrast, security protocols such as IPSec specifically aim to handle events 
created by a malicious adversary.  Consider the data corruption case: CRC works 
very well for random bit errors, which is why data link layers (such as 
Ethernet) use it widely.  CRC and checksums work well for some other classes of 
accidental data errors, which is why SCTP and iSCSI uses CRC, and TCP uses a 
simpler checksum.

None of those are any help at all against deliberate attacks.  It is utterly 
trivial to modify packets in a way that leaves the checksum or CRC unchanged 
(or, for that matter, to adjust the checksum so it still looks correct).  So 
IPSec does not do it that way; instead, it uses a keyed secure hash, which does 
have the property that it resists deliberate malicious modification.

So too with duplicate packets.  TCP, for example, deals with duplicate packets, 
within limits, and assuming that there isn’t an active attacker modifying the 
packet stream.  But the TCP mechanisms are not designed for and do not handle a 
deliberate attack by a skillful attacker.  On the other hand, the IPSec replay 
prevention mechanism does address such attacks.

So while it may seem that IPSec does a bunch of things that other protocols 
already do, or should already do, this is generally not the case; the key 
difference is “accidental” vs. “deliberate” in each of these areas.

        paul

_______________________________________________
IPsec mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/ipsec

Reply via email to