home *** CD-ROM | disk | FTP | other *** search
/ ARM Club 3 / TheARMClub_PDCD3.iso / hensa / security / a241_1 / AC / !Signature / !Help < prev    next >
Text File  |  1993-02-04  |  24KB  |  552 lines

  1. Open reply on NetMail, dated Sat,16 Jan 1993.18:13:58, sent
  2. From:    Dirk-Willem van Gulik
  3. To:      All
  4. Subject: Re: Signature 1.04
  5.  
  6.  
  7.                  Help file for Signature.
  8.  
  9.                  This is a TEST version.
  10.  
  11.                       version 1.04
  12.                 
  13.               © 1993 Dirk-Willem van Gulik
  14.  
  15.               - supports interactive help -
  16.  
  17.    For conditions of use, see the end of this file.
  18.  
  19. This program allows you to 'sign' and 'seal' text files with your
  20. personal signature. This seal/signature is attached to the text.
  21. Any changes made to the text will render this  signature invalid. 
  22.  
  23. A public key list allows you to check signatures from other 
  24. people. If you drag a signed message into this programme it will
  25. check the signature against the known public keys of the sender.
  26. This implies that the message must have a certain header (as
  27. WimpLink 0.96 supplies) which includes the sender.
  28.  
  29. You will have to create a personal signature first with the
  30. programme 'maker' which accompanies this application. This 
  31. programme will make both a secret and a public key. You can then
  32. distribute the public key freely. A 'public' file, which you can
  33. distrubute as a message is create in the same (root) directory as
  34. !Signature.
  35.  
  36. As the secret password is stored on disc there is an option in
  37. the program to scramble it with a secret password. You should do
  38. this as soon as possible. Just run !Signature immediately.  The
  39. programme will agressively ask for such a password, in fact it
  40. will refuse to do anything, until you have entered one. After
  41. this 'first-time-bad-behaviour' it should get into better moods,
  42. and bit will bhaves decently (I hope) on your sucsessive runs.
  43.  
  44. This password is normally a sentence of about 15 words long. 
  45. Special 'token' words will code the signature. The first time 
  46. you run the programme '!Signature' after having used Maker, you
  47. will be prompted to enter a password. In the 'Change/Enter
  48. password' window you will find a 'token-word-list'. Only words 
  49. from this list scramble your signature. Normally you would build
  50. a sentence around about 10 words chosen from this list. As an
  51. example you could make passwords like these:
  52.  
  53.  - He himself is a good rabbit.
  54.  - London is no longer a good living place to look after.
  55.  - Drink Driving is a stupid thing to do.
  56.  
  57. As you will see only half of these words actually count, i.e.
  58. code your signature. You can see how many 'valid' words you
  59. entered by pressing on 'COUNT'. At least one word should be taken
  60. from the token list in order to make a password a valid password.
  61. If not, the programme will refuse to accept the password. After
  62. you have pressed the 'Change' button your signature will be coded
  63. and stored on disc. From then on you will be prompted to enter a
  64. password each time you run  !Signature. This password is checked
  65. against the known public keys. After that it will be used
  66. together with the information on disk to sign any messages you
  67. drag into the programme. 
  68.  
  69. Be sure you remember your password as there is no way of
  70. recovering it, the 'private file', the password and at least one
  71. public key are needed to sign a message. If any of these gets
  72. missing there is no way of recovering it. You need both public
  73. keys to check the signature of someone else.
  74.  
  75. After you have ran 'Maker', to create your signature, and
  76. !Signature, to enter your personal password, and you have
  77. distributed the 'public' key-file to your friends, you are ready
  78. to go....
  79.  
  80. The RSA Public key crypto system...
  81.  
  82. In 1978 Rivest, Shamir and Adleman published a scientific paper
  83. which, in one brilliant stroke, made all problems with secret
  84. keys, reliable messengers and authorized channels history. They
  85. devized an asymetric coding scheme utilizing a set of three keys.
  86. One of these keys is a secret master key, the two other keys are
  87. known as the public keys. The scheme is called asymtric because
  88. coding and decoding is ruled by different keys. Depending on the
  89. way you use them you can either 'code' messages with the public
  90. key which can only be decoded by the secret key or you can
  91. de-code messages with the public key which can only be coded by
  92. the secret key. This last option is used in this Signature
  93. application. 
  94.  
  95. Because you 'cannot' reconstruct the secret key out of the public
  96. key this system does not rely on complicated exchanges of secret
  97. keys and passwords. This makes it possible for someone to
  98. distribute his public keys. The 'cannot' verb should not be taken
  99. too seriously, it is possible to do this reconstruction at the
  100. expense of an immense amounth of computer power. The amounth of
  101. power required relies on the lenght of the key. Signature can
  102. cope with long keys, up to 300 decimal digits. The last 'hack'
  103. reported on the RSA scheme was done by Manasse and Lemstra in
  104. 1990. Using massive parallel computer power they managed to break
  105. one individual signature of lenght 107. In the appendix you can
  106. find a short explanation of the RSA system, the way it works and
  107. how it can be broken. 
  108.  
  109. Brute force code breaking however is not a serious risk. Using
  110. something commenly known as 'human-engineering' one could fool
  111. people far more easier and cheaper. The famous example is of
  112. someone calling up and saying 'hello, this is your friendly bank
  113. manager speaking, we are having problems with our computer, and
  114. something is happening to your bank account. What is your
  115. Personal Identity Code ?' Using a 100 digits or more will
  116. certainly ensure that the 'technical side' of signing messages is
  117. dealt with and that the 'weakest' link must be found on the 
  118. organizational/human half of the story.
  119.  
  120. The signing procedure
  121.  
  122. This procedure consists of three steps; Checksum creation, Coding
  123. and adding the signature to the message. The first step creates a
  124. unique number which is dependent on every single character in the
  125. message. Changing a single character will affect the checksum in
  126. a very unpredictable way. In this 'unpredictable' is the
  127. key-word. Up till version 1.04 use a technique  classified as
  128. polinomal creation. Later version have a few more tricks up their
  129. sleeve. The reason for this is that the checksum is of cource
  130. shorter than the text. So there must be quite a number of
  131. different messages all with the same checksum. This means that in
  132. theory you could change a message and still have the same
  133. checksum. This would not be detected by the system. However the
  134. lenght of this checksum is equal to the length of the key.
  135. Because of the fairly 'inpredictable' way in which this checksum
  136. changes it is very hard to generate a message which is both
  137. meaningfull AND which has a  specific checksum. Currently a
  138. length of 39 decimal digits is considered to be safe....
  139. !Signature uses a checksum which has the same length as the
  140. secret key, in the order of 100 digits.
  141.  
  142. This checksum is then coded using your very personal and secret
  143. key. The  resultant chypher code is translated into reable ascii.
  144. This ascii string is added to the message.
  145.  
  146. The receiver removes this string. Next it again calculates the
  147. checksum. Then it 'decodes' the signature using the known public
  148. keys of the sender. This should result in the vaule of the
  149. original checksum. This must match with the newly calculated
  150. checksum. If they do you can savely assume that the message is
  151. NOT altered and that the signature has been created by somone,
  152. the sender, who knew the secret key. As you will notice only
  153. 'public' information is used and created in this process. The
  154. checksum which is calculated is of cource public, because the
  155. receiver may read the message. The information extracted from the
  156. signature is again a checksum, which contains information about
  157. the message to which you already have acces to.
  158.  
  159. Well that is the technical side.... now for the weak spots:
  160.  
  161. ..... the secret key and all the values of the variables used whilst
  162.       creating it must be kept secret. 
  163. ..... the checksum must be long enough and must be so unpredictable
  164.       that it is impossible to create a message given a certain checksum
  165. ..... the communication channel of the public key and messages must
  166.       be safe. If not an attacker could intercept the public key and 
  167.       all messages send to you, send you his own public key, and resign 
  168.       all subsequent messages from then on.
  169. ..... during the coding oparation your system should be 'closed'
  170. ..... there is no way of checking whether a message arrives, so removal
  171.       and repeated sending is possible. You can prevent this by numbering
  172.       and dating the messages if this is important.
  173.  
  174.  
  175. Usage......
  176.  
  177. How to use this pogramme...........
  178.  
  179. Outgoing mail:
  180.  
  181.  Simply write your messages as usual, using any editor, typically
  182.  !Edit. After you have written them, drop them on the icon-bar-
  183.  icon of !Signature to have them signed. After a few seconds and
  184.  some hourglass fiddling a normal 'save-as' window will appear.
  185.  
  186.  Now you can drag the -signed- message to its destination, a filer,
  187.  mail programme or editor. Of course you can always type out a full
  188.  pathname and press the return key or 'OK' button.
  189.  
  190. Incoming mail:
  191.  
  192.  Incoming mail should have a header. A typical header, like the one
  193.  WimpLink (0.96) supplies looks like
  194.  
  195.    Private message on NetMail, dated Fri,04 Dec 1992.15:10:01
  196.    From:    Dirk-Willem van Gulik
  197.    To:      Pieter Griessen
  198.    Subject: Birthday party of Adriaan.
  199.  
  200.  The exact format of the header recognized can be changed in the
  201.  'preferences window'. 
  202.  
  203.  If you drag a window with an appropriate header onto the icon-bar-
  204.  icon of signature, an analyze window will pop up. This will inform
  205.  you about the sender of the message. Whether her/his public key is
  206.  known, whether the message is signed and if this signature matches
  207.  the known public keys.
  208.  
  209. To allow a greater degree of control you can open a more elaborate
  210. window. Just press SELECT on the iconbar icon. This will open a large
  211. window in the middle of your screen. You can use the interactive help
  212. to find your way around. Typically you can drag a message into the
  213. in-tray, right-hand-top-corner. Next you can have it signed, even if
  214. it is already signed, remove the last signature or check the signature.
  215.  
  216. If there is no known sender to check the signature against, you can
  217. enforce one temporarily by choosing one from the list. You can gain
  218. access to a menu with a list of all known public-signatures owners
  219. by pressing select on the '⇨' button, to the right of the from field.
  220.  
  221. You will see that the first entry in this public list has an arrow
  222. pointing to a leaf item. This window contains a whole host of information
  223. about your public key, the age of your password (keep it fresh!) and
  224. public list. Most notably there is also a report on the signature
  225. attachted by the list-distributor of the public list.
  226.  
  227. Preferences:
  228.  
  229.  For the more expert user there is also a preference section. It can 
  230.  be reached by choosing the option 'Prefs...' in the menu. This will
  231.  open a window with various options. Changing these will normally affect
  232.  the format of your outgoing mail. This can cause serious trouble, 
  233.  because your Mailer, your Host and the people you send your mail to
  234.  expect you to use a certain format. So do not change these setting,
  235.  unless you are VERY sure about what you are doing. If a change is needed,
  236.  for example because a new version of WL appears, you will be briefed by
  237.  private netmail.
  238.  
  239. ..>> To protect the inexpert user a nasty protection scheme has been
  240. ..>> employed. This 'prefs' option will not be visible, unless you open 
  241. ..>> the menu whilst pressing 'shift'. This will ensure that ony people 
  242. ..>> who have read this help-text will be able to access it. I am sorry 
  243. ..>> if you find this tooooo paternalistic.
  244.  
  245.  The main reason for providing this option is to ensure that during the
  246.  initial testing period certain characterstics can be changed. Future
  247.  versions of this programme will most like have a more 'hidden' way
  248.  of setting up things.
  249.  
  250.  Export line separators.
  251.  
  252.   The ascii end op line codes. Currently only lf and cr are supported.
  253.   Most mailers accept both. 
  254.  
  255.  Signature specification
  256.  
  257.   Specify the signature prefix. Currently set at '*Signature ['. Also
  258.   whether to compress the signature-sequence. (saves about 62%)
  259.  
  260.  Header specification
  261.  
  262.   Specification of the header of incoming mail. Currently set to the
  263.   values which match WimpLink version 0.96.
  264.  
  265.  After you have entered any values you can do three things:
  266.  
  267.  Press the CANCEL button; this removes all your changes and ignores them.
  268.  
  269.  Press the STORE button; this will (after confirmation) save the newly
  270.  entered values to disc and use them on this and subsequent runs.
  271.  
  272.  Press the Oké button. This will use the newly entered values on the 
  273.  current run, but will NOT save them.
  274.  
  275. Entering/Changing your password:
  276.  
  277.  As said you will have to enter your password. You can also change the
  278.  password. There is a 'Password...' option in the menu. 
  279.  
  280.  The password window consist of 4 parts. Use the interactive help to
  281.  find your way around it quickly.
  282.  
  283.  Entry area:
  284.  
  285.   This is the white top rectangle. Here you type out your password. You
  286.   can use the cursor-keys to find your way around. The editor however is
  287.   not very advanced and certainly not up to the normal risc-os-standards.
  288.   As soon as you have typed part of a word you will find that the token
  289.   list scrolls to the nearest entry in the token list. You can click
  290.   SELECT on the 'insert' button, or press tab to automagicaly insert a
  291.   word from the token list. The more words from this list appear in the
  292.   password-sentence, the better the coding of your secret signature will
  293.   be. About 20% is really the minimum.
  294.  
  295.  Comment area:
  296.  
  297.   This is the small (yellowish) rectangle just below the entry area. It
  298.   tells you about the things you are currently supposed to do...
  299.  
  300.  Count/Info area:
  301.  
  302.   Bottom lefthanded square. You can find some counts on the number of words
  303.   and the number of token words in your password sentence. The more the
  304.   better. Also the 'covering' percentage is displayed, ie what part of
  305.   your signature is coded by the password sentence.
  306.  
  307.  TokenList:
  308.  
  309.   The bottom middle square. This is a list of thousand words. Each word has
  310.   a number. Every word in your password sentence which can be found in the
  311.   token list combines to on mega-long-number. This number codes your
  312.   secret signature code.
  313.  
  314.  Count button:
  315.  
  316.   Press this button to update the count area.
  317.  
  318.  Cancel button:
  319.  
  320.   Cancel and close the password entry/change window. If you are entering a
  321.   password for the first time in a run-session this will be aborted too.
  322.   This means that the programme will refuse to sign messages.
  323.  
  324.  Oké/Change button:
  325.  
  326.   Oké-state: When you press this button the password sentence entered is
  327.   translated into a long number. This number is combined with a number
  328.   from the file 'private'. Together these will make your secret signature.
  329.   Then this signature is checked against the known public keys. If they
  330.   match, the password is accepted. This means that the programme checks the
  331.   password without actually knowing the password! So you better not forget
  332.   it because there is no-one who can get it back.
  333.  
  334. Public List.
  335.  
  336.  Inside the !Signature application is a text file called 'List'. This file
  337.  contains all the public keys known to the programme. As soon as you have
  338.  ran 'maker' you will find your name added to that list along with the
  339.  public keys. From time to time you will have to update this file. This
  340.  will normaly require replaceing it by a new 'List' file. Use Shift-Double
  341.  click on the application icon in the filer dir to open de directory
  342.  inside !Signature. Rename the old 'List' into something like 'backup' and
  343.  copy the new list into the directory.
  344.  
  345.  This is, by the way, the only flaw in this otherwise secure system of
  346.  signing and sealing messages. It is absolutely required that you have an
  347.  authorized, ie unalted and correct list of public keys. From version 1.04
  348.  onwards the list is checked for a public, hard-coded, distribution key.
  349.  
  350.  A future version of this programme, for serious use, will address this
  351.  subject even further. Problems like this can, by matter of principle, 
  352.  not be solved by computer and mathematical tricks, and the solution is
  353.  one of organizing  and protocol agreements between people rather
  354.  that computing.
  355.  
  356.  In order to make sure that your public keys, which are added to the list,
  357.  are secure the following protocol is to be adhered to:
  358.  
  359.  - You should send the list distributor the file 'public' made by Maker.
  360.  
  361.  - The list distributor will return this message with his sign attached.
  362.  
  363.  - You check this signature using your secure list. You also check
  364.    your keys which are quoted in the message against the ones stored
  365.    in your private file. 
  366.  
  367.  - Only and Only if they match, and if the signature of the message if
  368.    oke, you send a confirmation to the list distributor, signed with 
  369.    your now fixed signature.
  370.  
  371.  - Your public keys will be added to the list and a new list will be
  372.    send to all users. This list is of course signed. On receival of this
  373.    list you will check it against the public keys of the OLD list. Only
  374.    if everything is correct you are to replace the old list.
  375.  
  376.  The main safety measurement is keeping your system clean. First make sure
  377.  you have a 'safe' version of the software. For the extrem schito-people,
  378.  you can order one from the address below. Next you have to keep this
  379.  version clean. This means 'locking' of the disc/directory, if possible,
  380.  as on a floppy disc, using the 'hardware' write-protection thingy on the
  381.  disc. Every time you get a new distribution list, check wether the sender
  382.  and his or her signature is correct. If in doubt, get a few copies of the
  383.  list, from several (BBS) sources, and check wether they have EXACTLY the
  384.  same signature. Ctrl-Reset your machine before updating the list; do not
  385.  use your harddisc, just a 'bare', 'clean' machine  quite sufficient!
  386.  
  387. Well that is all there is to it.
  388.  
  389. Happy signing.
  390. ....................... W A R N I N G S ...............................
  391.  
  392. WARNING for usersers of WimpLink 0.96 (and other versions perhaps)
  393.  
  394. WimpLink substitutes the '{' characters into '{/123}' whilst exporting
  395. messages if the 'Impressionize Brackets' option is on. This is to make
  396. sure that Impression does not get confused by the '{' character, which
  397. normaly defines the start of a lay-out-token. However !Signature
  398. sees this as a change of the contents of the message, effectively '/123}'
  399. is added. So make sure that the impressionize options are OFF, or check
  400. the message (and signature) for '{' tokens if a 'non-match' occurs. A
  401. 'match' situation is always save, no matter the '{' characters or 
  402. substitutions.
  403.  
  404. WARNING for users upgrading from Signature 1.03 and below.
  405.  
  406. There is always a certain trade-off between individual and system
  407. safety. After some discussion it has been deceided to change the
  408. balance a wee bit into the direction of the individual user. This
  409. means that in version 1.04 onwards a different password sentence
  410. coding system has been implemented. Full instructions can be found
  411. in a file update_103. Please study them carefully and follow then
  412. closely.
  413.  
  414. ........................................................................
  415.  
  416. Boring section:
  417.  
  418. This programme is (c) december 1992 by Dirk-Willem van Gulik.
  419.  
  420.      -   C O N D I T I O N S      O F      U S E   -
  421.  
  422.  Both the user and or the owner of the media this programme is
  423.  stored upon, as well as the user and or the owner of the
  424.  computer system this programme is loaded into agrees to the
  425.  following conditions:
  426.  
  427.  This programme shall not be changed. All its files as listed below
  428.  shall remain part of the programme unalterd and must be stored 
  429.  inside the !Signature application directory.
  430.  
  431.  This programme is ShareWare. It can be freely copied and used
  432.  by private users for recreational purposes only. Provided that
  433.  all files are kept unchanged and copied along. 
  434.  
  435.  The 'Message' file can be changed and translated for personal
  436.  use. However you should always keep the original and pass it on.
  437.  
  438.  The 'List' file can be updated. See below.
  439.  
  440.  Commercial use of this programme is prohibited. 
  441.  
  442.  Commercial Distribution of this programme is prohibited.
  443.  
  444.  Public Domain Libraries are not allowed to distribute 
  445.  this programme.
  446.  
  447.  Usage and or distribution which bears profit, by means of
  448.  money, goods, services and alike, to the user is prohibited.
  449.  
  450.  Any of these foregoing conditions can be lifted by a written
  451.  permission from the author. PD Libs can obtain a special full 
  452.  version for distribution by writing a letter to the author.
  453.  
  454.  If you do not want to fulfil the conditions of use named
  455.  above, please wipe all your copies of this programme.
  456.  
  457.  
  458. Files, 
  459.  
  460.   Inside the directory !Signature:
  461.  
  462.     name:         filetype:  short description:
  463.  
  464.     !boot         Obey       
  465.     !Help         Text       This Help text
  466.     !Run          Obey
  467.     !RunImage     Basic      Main kernel of the programme
  468.     !Sprites      Sprite     System sprites.
  469.    *List          Text       Public list of keys. Update it 
  470.                              as new lists of public keys
  471.                              become available.
  472.    *Messages      Text       Messages. Currently english. Feel 
  473.                              free to make translations or to 
  474.                              improve this one. Send the
  475.                              author a copy please!
  476.     Numbers       Module     Relocatable module doing all
  477.                              the heavy number stuff, from
  478.                              the Acorn User, Sep. 92.
  479.     NumModTxT     Text       Explanation number module.
  480.     prefs         Data       preferences
  481.     RSA           Basic      libary for the coding stuff
  482.     Sprites       Sprites    internal sprites
  483.     Templates     Template   window definitions
  484.     WimpLib       Basic      libary for the wimpy stuff
  485.     words         Text       list of token words.
  486.   
  487.    *private       Data       this file constains a part of your personal
  488.                              password. Do not copy it along!
  489.  
  490. Only the files marked with a * may be changed. All files should be
  491. copied along in their original versions. 
  492.  
  493. Version History
  494.  
  495. Versions: 1.00  First release
  496.  
  497.           1.01  better editor, more help. Wimp$Scrap improved, 
  498.                 more hourglasses, default msg-name, autoscroll-tokens,
  499.                 bug in export to WL fixed
  500.  
  501.           1.02  center windows, menu-option from, remove signature, center
  502.                 after mode change, escape implemented
  503.  
  504.           1.03  full release version, more helptext, compact bug with ']' 
  505.                 removed, preference pane bug removed, more messages, adjust
  506.                 on desk-icon, improved error trapping. improved 'assume-sender'
  507.                 options. pointer-changes (for RO3 only) implemented.
  508.  
  509.           1.04  new password coding sheme, better tradeoff between mathematical
  510.                 security and 'guess-'secure. This means that only 'exact' token
  511.                 words code, others are ignored. See user_103 file!
  512.                 Solid-sprite-drag, checking of public list for hard coded key,
  513.                 loading window, info on public-keys and list
  514.                 Some hints of my brother implemented:
  515.                 Menu-icon added to the out tray, rather than that obscure d-clic
  516.                 to open the xfer/save-as window and menu-pressing on a menu-icon
  517.                 will not yield the normal menu but the specific one.
  518.  
  519.  
  520.  
  521. Please note:
  522.  
  523.                This is a limited test version. 
  524.  
  525.     A future version will utilize longer code sequences.
  526.  
  527.           For questions contact the author:
  528.  
  529.              : Dirk-Willem van Gulik
  530.                Lionsight Residence
  531.                Lipperkerkstraat 290
  532.                7533 AK Enschede
  533.                The Netherlands
  534.  
  535.                Phone +31 53 303447
  536.                Email D.W.vanGulik@Student.UTwente.nl
  537.                      DWvGulik@Dialis.HackTick.nl
  538.  
  539.  
  540.            This programme is uses the 
  541.  
  542.           NUMBERS MODULE version 0.08
  543.  
  544.   also (C) Copyright Nick Craig-Wood 1992
  545.  
  546.           who remains the owner of the
  547.            numbers module, see the file
  548.          NumModTxt for any contrains and 
  549.              limitations imposed.
  550.  
  551. *Signature [MQ{>}jeLs^m 6&V95( 9Y_b3q4u 9OY_{q 9XL^]
  552.