[comp.protocols.tcp-ip] Exchanging serial numbers

brian@wb6rqn.UUCP (Brian Lloyd) (02/26/88)

Here at Sirius Systems we have been discussing a means to protect our
TCP/IP software without placing undue strain on the users.  The primary
concern is that someone might purchase one copy of the package and then
copy it to all his/her systems.  The concept that we came up with is to
exchange serial number information as part of the options field in the
TCP header when two TCP's exchange SYNs at session establishment.  TCP
resets the connection and returns a protocol error if both versions of
the software have the same serial number. 

Our reading of MIL-1778 and RFC-793 leads us to believe that the only
predefined option types are 0 (End of option list), 1 (No-op), and 2
(MSS).  We propose a fourth option (type 3) for exchanging serial
numbers.  The option type would be 3, the length would be 8, the next
two octets would be a vendor code, and the last four octets would be the
serial number.

The separate vendor code and serial number permits vendors to have
identical serial numbers but still allow the overall value of the
combined fields to be unique.  This would prevent potential conflicts
when communicating between different vendors' software/hardware. 

Now comes the reason for this letter: is a strange option in a TCP
header likely to break others' TCP implementations or will other TCPs
ignore an unrecognized option?

Brian Lloyd, President
Sirius Systems, Inc.
(301) 540-2066
{bellcore, syscad, cp1, irs3, n3dmc}!wb6rqn!brian
Share and enjoy!

CERF@A.ISI.EDU (02/27/88)

If you plan to break if you get the same serial number as you sent,
you will fail to provide service to processes that call themselves.
The TCP protocol specifically allows this (supports it as a
simultaneous initiation of connection case). The idea is to allow
processes, whereever situated, to use the TCP/IP as a way of communicating.
It sounds to me as if your serial number checking plan will break
that feature...

Vint

P.S. I just realized that your plan would break communications
between distinct processes in the same host should they try
to communicate via TCP/IP. In applications for which software
is moved from one place to another during or prior to execution,
a process might well call another in the same host without 
realizing it. Furthermore, you might want that feature so as to
avoid having to do something special to distinguish inter-host
and intra-host communication.

Vint

CERF@A.ISI.EDU (02/27/88)

What if your host has two interfaces into the Internet with different
Internet addresses - more checks for OK sources/sinks for a particular
serial number?

As a practical matter, if the checking causes enough difficulty, either
you will dry up your market or someone will find a way to disable the
check and then propagate copies of the "denatured" versions...

The idea, while having some surface appeal, feels a lot like copy
protect schemes which drove away the market.

Vint

brian@wb6rqn.UUCP (Brian Lloyd) (02/28/88)

I am sorry that some of you think that the concept of exchanging serial
numbers is a poor one.  I agree that it provides only limited protection
but it is a concern of the principles of the corporation. 

In the environment where it will run most frequently, i.e. in a LAN
consisting of Convergent 'S' series UNIX boxes and Convergent NGen
workstations, the scheme will be relatively effective.  NGens run a
distributed operating system called CTOS so the serial number exchange
will be effective.

I appreciate the feedback and I understand that some of you would not
choose such a mechanism.  On the other hand it will work and it will not
impact operations with other, dissimilar systems.  I reiterate my
original request: will exchange of serial numbers in the TCP options
field cause problems with the other TCP implementations?

Thanks again.

Brian Lloyd, President
Sirius Systems, Inc.
(301) 540-2066
{bellcore, syscad, cp1, irs3, n3dmc}!wb6rqn!brian
Share and enjoy!

leonid@TAURUS.BITNET (02/28/88)

In article <8802251906.AA04676@wb6rqn.UUCP> brian@wb6rqn.UUCP writes:
>Here at Sirius Systems we have been discussing a means to protect our
>TCP/IP software without placing undue strain on the users. ...

May I mention a very much similar solution done by Sun Microsystems in their
PS-NFS 2.0 product, and please excuse me if this has already been mentioned.
They just used ICMP discard packets to broadcast the serial number of each
booting system. All non-PC-NFS system dropped those packets as they should,
while all PC-NFS's look at this broadcast, make some sanity check and compare
it to their own. If a violation has been detcted, the punishment is to
stop both systems with the same number and print an appropriate message
to the screen.

To tell you the truth, I'm not really sure weather they use ICMP discard or
UDP discard packets, but all are better than try to twist TCP for one's
particular needs. Also, if a serial number problem would cause a TCP connection
to fail, how a user would know that there is a problem hah?

It seems that some vendors that really need a serial number protection scheme,
should try to define a new UDP service which would very conveniently handle
this and maybe other problems.

Leonid

brian@wb6rqn.UUCP (Brian Lloyd) (02/29/88)

Thanks for the responses.  Most of the responses have been of a
philosophical rather than a technical nature but I appreciate them
anyway.  I guess that a further comment on the proposed serial number
exchange system is warrented.

The intention behind exchanging serial numbers is very simple: to keep
the software from being useful if it is copied.  It protects by
preventing an operator from gaining an advantage from the copy while the
original is still running.  In this way it is definitely a form of copy
protection.  The intention is to provide a scheme that will help protect
our software in a manner that is totally transparent to the user.  Any
protection system that in any way impedes the operations of a legitimate
user is not acceptable to us (I don't like copy protection schemes
either but I do want to protect our software).

We accept this scheme as being imperfect but useful and, as such, worth
our time to implement.  In the environment where we operate (Convergent
Technologies workstations) this will be an effective protection scheme.

As for two clients running in the same host, we have dealt with that
problem.  In our implementation of the protection scheme we bother to
exchange serial numbers only of the source and destination addresses are
different.  Should the remote system fail to return the serial number
option the connection is permitted.  The remote system has identified
that it is not one of our software implementations simply by the
omission of the serial number option in the TCP options field. 

We have never bothered to deal with multi-homed hosts since our software
assumes a 1-to-1 correspondence between a host and an IP address.
Although that is not the case with all systems in the Internet, it is
with our software.

Now I will ask my original question again.  Will the appearance of a
strange option in the TCP header cause a problem for other
implementations of TCP?  I want to know if my serial number exchange
will confuse other TCP implementations or will they just ignore and
discard the information as I suspect they should.  As I stated in my
second paragraph, we want the protection to be transparent and if it
prevents connectivity we won't use it.

Brian Lloyd, President
Sirius Systems, Inc.
(301) 540-2066
{bellcore, syscad, cp1, irs3, n3dmc}!wb6rqn!brian
Share and enjoy!

Mills@UDEL.EDU (03/01/88)

Brian,

With all due respect, this is a terrible idea and is not worth even the
effort to determine if other implementations will/will not break if the
option is used. The IP Security Option is a much better mechanism and
understood by most implementations known to me. If your scheme is less
than ubiquitous using this option, the Protocol Police would even be
expected to cooperate, since there are a lot of folks who are concerned
about the issue. If the option does not satisfy your needs and you have
a concrete proposal to add another, ubiquitous option that does, then
please honk and I expect the INENG and/or INARC Task Forces will take it
seriously. As it is, a copy-protect option that works only at TCP initial-
connection time will not be taken seriously.

Notwithstanding my view taken here, I would very much like to encourage
you to pursue the issue vigorously. In particular, I suggest you take it
up with Steve Kent's Privacy Task Force and with Deborah Estrin's
Autonomous Networks Task force. I will certainly keep it nearby in the
INARC Task Force.

Dave

bzs@BU-CS.BU.EDU (Barry Shein) (03/02/88)

>The intention behind exchanging serial numbers is very simple: to keep
>the software from being useful if it is copied.  It protects by
>preventing an operator from gaining an advantage from the copy while the
>original is still running.  In this way it is definitely a form of copy
>protection.  The intention is to provide a scheme that will help protect
>our software in a manner that is totally transparent to the user.

>Now I will ask my original question again.  Will the appearance of a
>strange option in the TCP header cause a problem for other
>implementations of TCP?

>Brian Lloyd, President
>Sirius Systems, Inc.

What I don't understand is given as you feel so comfortable with the
idea of imposing various copy protection schemes to ensure maximizing
profits etc (or your prediction that it will maximize profits, whether
it will make your software fundamentally undesireable is argueable)
why do you expect free advice to further your profits on this network?

To respond in kind, many of us charge good money for consultations to
provide the information you desire, I suggest you change your request
to a help-wanted ad and put it somewhere appropriate. If it's not
worth anything to you it's surely not worth anything to us.

Check. Your move.

	-Barry Shein, Boston University

STJOHNS@SRI-NIC.ARPA (03/02/88)

From the ENTIRE IETF:

"Applause!"

Mike

geoff@eagle_snax.UUCP ( R.H. coast near the top) (03/04/88)

In article <669@taurus.BITNET>, leonid@TAURUS.BITNET writes:
> In article <8802251906.AA04676@wb6rqn.UUCP> brian@wb6rqn.UUCP writes:
> >Here at Sirius Systems we have been discussing a means to protect our
> >TCP/IP software without placing undue strain on the users. ...
> 
> May I mention a very much similar solution done by Sun Microsystems in their
> PS-NFS 2.0 product, and please excuse me if this has already been mentioned.
> They just used ICMP discard packets to broadcast the serial number of each
[...]
> To tell you the truth, I'm not really sure weather they use ICMP discard or
> UDP discard packets...

We use UDP discard packets (UDP port 9), and we wind up sending one about
once an hour (depending on usage pattern). It hasn't broken any nets yet,
as far as I know (and I'm sure the flames would have come thick and fast :-).
And like Leonid I'd prefer an "official" solution. Anyone interested in
talking about it?
> 
> Leonid

Geoff Arnold
PC-NFS architect


-- 
Geoff Arnold, Sun Microsystems     | "Universes are just one of those things
SPD at ECD (home of PC-NFS)        | that happen from time to time..."
UUCP:{ihnp4,decwrl...}!sun!garnold | [Dunno who said it - if you know, pass it
ARPA:garnold@sun.com               | on. G.A.]