From: dwvgulik@dialis.hacktic.nl (Dirk-Willem van Gulik)
Newsgroups: comp.sys.acorn.tech
Subject: Unique ID Reading..... this is how ?
Date: Mon, 25 Jan 1993 13:32:51

Hi Anthony,

That unique ID number, on the A5000 and other new ones can be 
asked for with:

  SYS "OS_ReadSysInfo",2 TO IOEB_Type, Periphal_Type, LCDChip_Type,
                            Unique_ID_1,Unique_ID_2

You simply get the info on the whole chip-set. The info is NOT
coded in ROM. But on one of the otther chips. If I interpret
the RO3 MC-code correctly it comes from an address in the IOEB
chip.... however I have not got an A4 to chech this ! So I am
not toooo sure about the LCD-Chippy.......
                   
I hope that this ansers your question..

-- cut -- cut -- cut-- cause there is some plugging below this.

Another remark, more or less connected to software protection,
is this:

Using these unique numbers and combining them with two keys from
a public encryption system (RSA-II, PKSE or alikes) will yield a
fairly save and simple system to 'protect' software. Each packet
gets 'coded' by a unqiue secret key. After coding this secret key
is 'thrown-away', only it public-keys are kept. 

By the way 'coding' and 'decoding' are defined reversively to the
common encoding, coding definitions in PKSE.

During an initializing procedure the keys are combined with the
unique number of the machine. This can be done prior to dispatching,
by the user and a phonecall, or by the user in a self contained 
aperation. This last option of coarse allows copying prior to the
installing procedure.

Just after loading the programme, the public keys, in combination
with an unique machine number if deseired, 'decode' the programme,
and are used as a 'base' number for all sorts of table oparations.

As these 'base' numbers can be re-calculated from the unique numbers
and a programme CRC on the spot at any time it is not possible to 
'save' the decoded programme and use it. 

The advantage of PKE and alike systems is that this recalcultion can
be done very quicly. Furthermore the software parcel supplied to 
the end-user essentially lacks some information. This missing
bit of information is extremely different to 'reconstruct' and is
vital if you want to 'hack' the programme decently.

Of cource you can leave out the unique machine ID, and you are left
with a safe way of 'marking' your programmes with a code which is
not easy to remove!. Actually 'replacing' is the only viable option.

Currently I am working on a programme, !Signature' which signs and
checks messages against a public key of the sender. A test-version
of the programme has been released on the Dutch-AcoNet network.
Sofar no flaws have been found, despite some serious hacking,
although brute-force, attempts with a Convex-Super-computer.

The final release version will contain an public-key-code which 
protects the programme and its file against any alterations. It
is installed in such a way that, taken all the information as
'symbolized' by the software, there is just a little bit missing.

Information about this little missing bit is decoded from a crc 
and a public key. However the information returned depends on
the question. There are many (10e33) questions and many answers,
the programme 'needs' all answers to run, so you could easily
hack the programme, have all questions answered, change it, and
store the question/answer file along... if it was not that big,
roughly 31x10e73 bytes.

If anybody wants to have a go at hacking these PKE signatures,
you are welcome to. Just write an Email to 

  DWvGulik@Dialis.Hacktick.nl  or
  D.W.vanGulik@Student.Utwente.nl

And I will send the whole lot (71k) UUEncoded. As soon as I have
found out how to get things INTO the lancaster server it will be
uploaded there... things bounce now you know....

Dirk.

*Signature [D/n 9w}cB(>Kq 6!@,MSU!*D+QLn[L$7+2Nm]