|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T d
Length: 435123 (0x6a3b3) Types: TextFile Names: »draft-ietf-cat-dass-00.ps«
└─⟦4f9d7c866⟧ Bits:30007245 EUUGD6: Sikkerheds distributionen └─⟦this⟧ »./papers/IETF-drafts/draft-ietf-cat-dass-00.ps«
%!PS-Adobe-2.1 %%Creator: DECwrite V1.1 %%+Copyright (c) 1990 DIGITAL EQUIPMENT CORPORATION. %%+All Rights Reserved. %%DocumentFonts: (atend) %%EndComments %%BeginProcSet DEC_WRITE 1.07 /DEC_WRITE_dict 150 dict def DEC_WRITE_dict begin/$D save def/$I 0 def/$S 0 def/$C matrix def/$R matrix def/$L matrix def/$E matrix def/pat1{/px exch def/pa 8 array def 0 1 7{/py exch def/pw 4 string def 0 1 3{pw exch px py 1 getinterval putinterval}for pa py pw put}for}def/pat2{/pi exch def/cflag exch def save cflag 1 eq{eoclip}{clip}ifelse newpath{clippath pathbbox}stopped not{/ph exch def/pw exch def/py exch def/px exch def/px px 3072 div floor 3072 mul def/py py 3072 div floor 3072 mul def px py translate/pw pw px sub 3072 div floor 1 add cvi def/ph ph py sub 3072 div floor 1 add cvi def pw 3072 mul ph 3072 mul scale/pw pw 32 mul def/ph ph 32 mul def/px 0 def/py 0 def pw ph pi[pw 0 0 ph 0 0]{pa py get/px px 32 add def px pw ge{/px 0 def/py py 1 add 8 mod def}if}pi type/booleantype eq{imagemask}{image}ifelse}if restore}def/PS{/_op exch def/_np 8 string def 0 1 7{/_ii exch def/num _op _ii get def _np 7 _ii sub num -4 bitshift PX num 15 and 4 bitshift -4 bitshift PX 4 bitshift or put}for _np}def/PX{[15 7 11 3 13 5 9 1 14 6 10 2 12 4 8 0]exch get}def/FR{0.7200 0 $E defaultmatrix dtransform/yres exch def/xres exch def xres dup mul yres dup mul add sqrt}def/SU{/_sf exch def/_sa exch def/_cs exch def/_mm $C currentmatrix def/rm _sa $R rotate def/sm _cs dup $L scale def sm rm _mm _mm concatmatrix _mm concatmatrix pop 1 0 _mm dtransform/y1 exch def/x1 exch def/_vl x1 dup mul y1 dup mul add sqrt def/_fq FR _vl div def/_na y1 x1 atan def _mm 2 get _mm 1 get mul _mm 0 get _mm 3 get mul sub 0 gt{{neg}/_sf load concatprocs/_sf exch def}if _fq _na/_sf load setscreen}def/BO{/_yb exch def/_xb exch def/_bv _bs _yb _bw mul _xb 8 idiv add get def/_mk 1 7 _xb 8 mod sub bitshift def _bv _mk and 0 ne $I 1 eq xor}def/BF{DEC_WRITE_dict begin/_yy exch def/_xx exch def/_xi _xx 1 add 2 div _bp mul cvi def/_yi _yy 1 add 2 div _bp mul cvi def _xi _yi BO{/_nb _nb 1 add def 1}{/_fb _fb 1 add def 0}ifelse end}def/setpattern{/_cz exch def/_bw exch def/_bp exch def/_bs exch PS def/_nb 0 def/_fb 0 def _cz 0/BF load SU{}settransfer _fb _fb _nb add div setgray/$S 1 def}def/invertpattern{$S 0 eq{{1 exch sub}currenttransfer concatprocs settransfer}if}def/invertscreen{/$I 1 def/$S 0 def}def/revertscreen{/$I 0 def}def/setrect{/$h exch def/$w exch def/$y exch def/$x exch def newpath $x $y moveto $w $x add $y lineto $w $x add $h $y add lineto $x $h $y add lineto closepath}def/concatprocs{/_p2 exch cvlit def/_p1 exch cvlit def/_pn _p1 length _p2 length add array def _pn 0 _p1 putinterval _pn _p1 length _p2 putinterval _pn cvx}def/OF/findfont load def/findfont{dup DEC_WRITE_dict exch known{DEC_WRITE_dict exch get}if DEC_WRITE_dict/OF get exec}def mark/ISOLatin1Encoding 8#000 1 8#001{StandardEncoding exch get}for /emdash/endash 8#004 1 8#025{StandardEncoding exch get}for /quotedblleft/quotedblright 8#030 1 8#054{StandardEncoding exch get}for /minus 8#056 1 8#217 {StandardEncoding exch get}for/dotlessi 8#301 1 8#317{StandardEncoding exch get}for/space/exclamdown/cent/sterling/currency/yen/brokenbar/section /dieresis/copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered /macron/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph /periodcentered/cedilla/onesuperior/ordmasculine/guillemotright/onequarter /onehalf/threequarters/questiondown/Agrave/Aacute/Acircumflex/Atilde /Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave /Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde /Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn /germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla /egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis /eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave /uacute/ucircumflex/udieresis/yacute/thorn/ydieresis 256 array astore def cleartomark /encodefont{findfont dup maxlength dict begin{1 index/FID ne{def}{pop pop}ifelse}forall/Encoding exch def dup/FontName exch def currentdict definefont end}def/loads{/$/ISOLatin1Encoding load def/&/encodefont load def/*/invertpattern load def/+/revertscreen load def/-/invertscreen load def/:/concatprocs load def/^/setpattern load def/~/pat1 load def/_/pat2 load def/@/setrect load def/A/arcn load def/B/ashow load def/C/curveto load def/D/def load def/E/eofill load def/F/findfont load def/G/setgray load def/H/closepath load def/I/clip load def/J/fill load def/K/kshow load def/L/lineto load def/M/moveto load def/N/newpath load def/O/rotate load def/P/pop load def/R/grestore load def/S/gsave load def/T/translate load def/U/sub load def/V/div load def/W/widthshow load def/X/exch load def/Y/awidthshow load def/a/save load def/c/setlinecap load def/d/setdash load def/e/restore load def/f/setfont load def/g/initclip load def/h/show load def/i/setmiterlimit load def/j/setlinejoin load def/k/stroke load def/l/rlineto load def/m/rmoveto load def/n/currentfont load def/o/scalefont load def/p/currentpoint load def/q/setrgbcolor load def/r/currenttransfer load def/s/scale load def/t/setmatrix load def/u/settransfer load def/w/setlinewidth load def/x/matrix load def/y/currentmatrix load def}def end %%EndProcSet %%EndProlog %%BeginSetup DEC_WRITE_dict begin loads version cvi 23.0 gt { currentdict {dup type /arraytype eq {bind def} {pop pop} ifelse} forall} if 0.0100 0.0100 s %%EndSetup %%Page: 1 1 /$P a D g N 0 79200 T S S 8504 -68794 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26458 -900 M 43224 -900 M (Page ) h (1) h 0 -2284 M -8504 68794 T R R S 38380 -3137 T N 0 G 8034 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 964 -2350 M ( ) h (Digital Equipment Corporation) h 10033 -4500 M (October 1991) h -38380 3137 T R S 8590 -12749 T N 0 G 21124 -1350 M /Times-Bold-ISOLatin1 $ /Times-Bold & P /Times-Bold-ISOLatin1 F 1800 o f (DASS) h 6601 -4450 M (Distributed Authentication Security Service) h -8590 12749 T R S 8504 -22707 T N 0 G 0 -1050 M /Times-Bold-ISOLatin1 F 1400 o f (DRAFT) h 0 -3553 M (STATUS OF THIS MEMO) h 0 -5756 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1000 o f 2.6 0 32 (This DRAFT document specifies the Services, Interfaces, Operation,and Protocols of the DASS Authentication Serv\255) W 0 -6806 M 10.7 0 32 (ice. The DASS Authentication Service is used by applications to strongly authenticate and establish shared keys with) W 0 -7856 M (peer applications. Distribution of this memo is unlimited.) h 0 -10759 M /Times-Bold-ISOLatin1 F 1400 o f (Contents) h 0 -14462 M 709 -14462 M n 0.857 o f (1 ) h 4252 -14462 M (Introduction) h 11000 -14462 M /Times-Roman-ISOLatin1 F 1000 o f (....................................................................... ......................................................................) h 46527 -14462 M (3) h 0 -16565 M 4252 -16565 M (1.1 ) h 7087 -16565 M (What is DASS?) h 13750 -16565 M (....................................................................... ...........................................................) h 46527 -16565 M (3) h 0 -18418 M 4252 -18418 M (1.2 ) h 7087 -18418 M (Central Concepts) h 14250 -18418 M (....................................................................... .........................................................) h 46527 -18418 M (4) h 0 -20271 M 4252 -20271 M (1.3 ) h 7087 -20271 M (What This Document Won't Tell You) h 22500 -20271 M (....................................................................... ........................) h 46527 -20271 M (8) h 0 -22124 M 4252 -22124 M (1.4 ) h 7087 -22124 M (T) h (he Relationship between DASS and ISO Standards) h 28250 -22124 M (......................................................................) h 46027 -22124 M (11) h 0 -23977 M 4252 -23977 M (1.5 ) h 7087 -23977 M (An Authentication Walkthrough) h 20250 -23977 M (....................................................................... ...............................) h 46027 -23977 M (13) h 0 -25980 M 709 -25980 M /Times-Bold-ISOLatin1 F 1200 o f (2 ) h 4252 -25980 M (Services Used) h 11500 -25980 M /Times-Roman-ISOLatin1 F 1000 o f (....................................................................... ..................................................................) h 46027 -25980 M (17) h 0 -28083 M 4252 -28083 M (2.1 ) h 7087 -28083 M (Time Service) h 12750 -28083 M (....................................................................... .............................................................) h 46027 -28083 M (17) h 0 -29936 M 4252 -29936 M (2.2 ) h 7087 -29936 M (Random Numbers) h 14500 -29936 M (....................................................................... ......................................................) h 46027 -29936 M (17) h 0 -31789 M 4252 -31789 M (2.3 ) h 7087 -31789 M (Naming Service) h 13750 -31789 M (....................................................................... .........................................................) h 46027 -31789 M (18) h 0 -33792 M 709 -33792 M /Times-Bold-ISOLatin1 F 1200 o f (3 ) h 4252 -33792 M (Services Provided) h 13750 -33792 M /Times-Roman-ISOLatin1 F 1000 o f (....................................................................... .........................................................) h 46027 -33792 M (25) h 0 -35895 M 4252 -35895 M (3.1 ) h 7087 -35895 M (Certificate Contents) h 15250 -35895 M (....................................................................... ...................................................) h 46027 -35895 M (25) h 0 -37748 M 4252 -37748 M (3.2 ) h 7087 -37748 M (Encrypted Private Key Structure) h 20250 -37748 M (....................................................................... ...............................) h 46027 -37748 M (27) h 0 -39601 M 4252 -39601 M (3.3 ) h 7087 -39601 M (Authentication Tokens) h 16500 -39601 M (....................................................................... ..............................................) h 46027 -39601 M (27) h 0 -41454 M 4252 -41454 M (3.4 ) h 7087 -41454 M (Credentials) h 11750 -41454 M (....................................................................... .................................................................) h 46027 -41454 M (28) h 0 -43307 M 4252 -43307 M (3.5 ) h 7087 -43307 M (CA State) h 11000 -43307 M (....................................................................... ....................................................................) h 46027 -43307 M (31) h -8504 22707 T R S 8469 -3137 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Network Working Group) h 0 -2400 M (Internet Draft ) h ( ) h 0 -3784 M -8469 3137 T R showpage $P e %%Page: 2 2 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24824 -900 M (DASS) h 39768 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -68756 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26458 -900 M 43236 -900 M (Page ) h (2) h 0 -2284 M -8642 68756 T R R S 8502 -8501 T N 0 G 0 -750 M 4252 -750 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1000 o f (3.6 ) h 7087 -750 M (Data types used in the routines) h 19500 -750 M (....................................................................... ..................................) h 46031 -750 M (32) h 0 -2550 M 4252 -2550 M (3.7 ) h 7087 -2550 M (Error conditions) h 13750 -2550 M (....................................................................... .........................................................) h 46031 -2550 M (33) h 0 -4350 M 4252 -4350 M (3.8 ) h 7087 -4350 M (Certificate Maintenance Functions) h 21250 -4350 M (....................................................................... ...........................) h 46031 -4350 M (33) h 0 -6150 M 4252 -6150 M (3.9 ) h 7087 -6150 M (Credential Maintenance Functions) h 21000 -6150 M (....................................................................... ............................) h 46031 -6150 M (37) h 0 -7950 M 4252 -7950 M (3.10 ) h 7087 -7950 M (Authentication Procedures) h 18000 -7950 M (....................................................................... ........................................) h 46031 -7950 M (42) h 0 -9750 M 4252 -9750 M (3.11 ) h 7087 -9750 M (DASSlessness Determination Functions) h 23250 -9750 M (....................................................................... ...................) h 46031 -9750 M (57) h 0 -11700 M 709 -11700 M /Times-Bold-ISOLatin1 $ /Times-Bold & P /Times-Bold-ISOLatin1 F 1200 o f (4 ) h 4252 -11700 M (Certificate and message formats) h 21000 -11700 M /Times-Roman-ISOLatin1 F 1000 o f (....................................................................... ............................) h 46031 -11700 M (59) h 0 -13750 M 4252 -13750 M (4.1 ) h 7087 -13750 M (ASN.1 encoding) h 14000 -13750 M (....................................................................... ........................................................) h 46031 -13750 M (59) h 0 -15550 M 4252 -15550 M (4.2 ) h 7087 -15550 M (Encoding Rules) h 13750 -15550 M (....................................................................... .........................................................) h 46031 -15550 M (65) h 0 -17350 M 4252 -17350 M (4.3 ) h 7087 -17350 M (Version numbers and forward compatibility) h 24750 -17350 M (....................................................................... .............) h 46031 -17350 M (65) h 0 -19150 M 4252 -19150 M (4.4 ) h 7087 -19150 M (Cryptographic Encoding) h 17250 -19150 M (....................................................................... ...........................................) h 46031 -19150 M (66) h 0 -21100 M 720 -21100 M /Times-Bold-ISOLatin1 F 1200 o f (Annex A ) h 5920 -21100 M (Typical Usage) h 13500 -21100 M /Times-Roman-ISOLatin1 F 1000 o f (....................................................................... ..........................................................) h 46031 -21100 M (69) h 0 -23150 M 4252 -23150 M (A.1 ) h 7087 -23150 M (Creating a CA) h 13000 -23150 M (....................................................................... ............................................................) h 46031 -23150 M (69) h 0 -24950 M 4252 -24950 M (A.2 ) h 7087 -24950 M (Creating a User Principal) h 17500 -24950 M (....................................................................... ..........................................) h 46031 -24950 M (69) h 0 -26750 M 4252 -26750 M (A.3 ) h 7087 -26750 M (Creating a Server Principal) h 18250 -26750 M (....................................................................... .......................................) h 46031 -26750 M (70) h 0 -28550 M 4252 -28550 M (A.4 ) h 7087 -28550 M (Booting a Server Principal) h 18000 -28550 M (....................................................................... ........................................) h 46031 -28550 M (70) h 0 -30350 M 4252 -30350 M (A.5 ) h 7087 -30350 M (A user logs on to the network) h 19250 -30350 M (....................................................................... ...................................) h 46031 -30350 M (70) h 0 -32150 M 4252 -32150 M (A.6 ) h 7087 -32150 M (An Rlogin \(TCP/IP\) connection is made) h 23500 -32150 M (....................................................................... ..................) h 46031 -32150 M (71) h 0 -33950 M 4252 -33950 M (A.7 ) h 7087 -33950 M (A Transport\255Independent Connection) h 22250 -33950 M (....................................................................... .......................) h 46031 -33950 M (71) h 0 -35900 M 720 -35900 M /Times-Bold-ISOLatin1 F 1200 o f (Annex B ) h 5854 -35900 M (Support of the GSSAPI) h 18000 -35900 M /Times-Roman-ISOLatin1 F 1000 o f (....................................................................... ........................................) h 46031 -35900 M (72) h 0 -37950 M 4252 -37950 M (B.1 ) h 7087 -37950 M (Summary of GSSAPI) h 16000 -37950 M (....................................................................... ................................................) h 46031 -37950 M (72) h 0 -39750 M 4252 -39750 M (B.2 ) h 7087 -39750 M (Implementation of GSSAPI over DASS) h 23250 -39750 M (....................................................................... ...................) h 46031 -39750 M (73) h 0 -41550 M 4252 -41550 M (B.3 ) h 7087 -41550 M (Syntax) h 10000 -41550 M (....................................................................... ........................................................................) h 46031 -41550 M (75) h 0 -43500 M 720 -43500 M /Times-Bold-ISOLatin1 F 1200 o f (Annex C ) h 5920 -43500 M (Imported ASN.1 definitions) h 20250 -43500 M /Times-Roman-ISOLatin1 F 1000 o f (....................................................................... ...............................) h 46031 -43500 M (78) h 0 -45850 M 720 -45850 M /Times-Bold-ISOLatin1 F 1400 o f (Glossary) h 6409 -45850 M 6750 -45850 M /Times-Roman-ISOLatin1 F 1000 o f (....................................................................... ........................................................................ .............) h 46031 -45850 M (81) h 0 -49450 M /Times-Bold-ISOLatin1 F 1400 o f (Figures) h 0 -51550 M 709 -51550 M /Times-Roman-ISOLatin1 F 1000 o f (Figure 1 \255 ) h 5303 -51550 M (Authentication Exchange Overview) h 19750 -51550 M (....................................................................... .................................) h 46031 -51550 M (16) h -8502 8501 T R showpage $P e %%Page: 3 3 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 43237 -900 M (Page ) h (3) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 0 -1200 M /Times-Bold-ISOLatin1 $ /Times-Bold & P /Times-Bold-ISOLatin1 F 1600 o f (1 ) h 1417 -1200 M (Introduction) h 0 -4179 M n 0.875 o f (1.1 ) h 2126 -4179 M (What is DASS?) h 0 -6808 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1000 o f 107.3 0 32 (Authentication is a security service. The goal of authentication is to reliably learn the name of the originator of a) W 0 -7858 M 59.8 0 32 (message or request. The classic way by which people authenticate to computers \(and by which computers authenti\255) W 0 -8908 M 127.8 0 32 (cate to one another\) is by supplying a password. There are a number of problems with existing password based) W 0 -9958 M 114.6 0 32 (schemes which DASS attempts to solve. The goal of DASS is to provide authentication services in a distributed) W 0 -11008 M 46.5 0 32 (environment which are both more secure \(more difficult for a bad guy to impersonate a good guy\) and easier to use) W 0 -12058 M (than existing mechanisms.) h 0 -14237 M 52.7 0 32 (In a distributed environment, authentication is particularly challenging. Users do not simply log on to one machine) W 0 -15287 M 123.6 0 32 (and use resources there. Users start processes on one machine which may request services on another. In some) W 0 -16337 M 121.9 0 32 (cases, the second system must request services from ) W 121.9 0 32 (a ) W 121.9 0 32 (third system on behalf of the user. Further, given current) W 0 -17387 M 80.6 0 32 (network technology, it is fairly easy to eavesdrop on conversations between computers and pick up any passwords) W 0 -18437 M (that might be going by.) h 0 -20616 M 23.2 0 32 (DASS uses cryptographic mechanisms to provide "strong, mutual" authentication. Mutual authentication means that) W 0 -21666 M 105.5 0 32 (the two parties communicating each reliably learn the name of the other. Strong authentication means that in the) W 0 -22716 M 86.6 0 32 (exchange neither obtains any information that it could use to impersonate the other to a third party. This can't be) W 0 -23766 M 65.3 0 32 (done with passwords alone. Mutual authentication can be done with passwords by having a "sign" and a "counter\255) W 0 -24816 M 123.7 0 32 (sign" which the two parties must utter to assure one another of their identities. But whichever party speaks first) W 0 -25866 M 87.6 0 32 (reveals information which can be used by the second \(unauthenticated\) party to impersonate it. Longer sequences) W 0 -26916 M 3.6 0 32 (\(often seen in spy movies\) cannot solve the problem in general. Further, anyone who can eavesdrop on the conversa\255) W 0 -27966 M 4.2 0 32 (tion can impersonate either party in a subsequent conversation \(unless passwords are only good once\). Cryptography) W 0 -29016 M (provides a means whereby one can prove knowledge of a secret without revealing it.) h 0 -31195 M 92.0 0 32 (People cannot execute cryptographic algorithms in their heads, and thus cannot strongly authenticate to computers) W 0 -32245 M 29.6 0 32 (directly. DASS lays the groundwork for "smart cards": microcomputers sealed in credit cards which when activated) W 0 -33295 M 110.3 0 32 (by a PIN will strongly authenticate to a computer. Until smart cards are available, the first link from a user to a) W 0 -34345 M 11.1 0 32 (DASS node remains vulnerable to eavesdropping. DASS mechanisms are constructed so that after the initial authen\255) W 0 -35395 M (tication, smart card or password based authentication looks the same.) h 0 -37574 M 76.8 0 32 (Today, systems are constructed to think of user identities in terms of accounts on individual computers. If I have) W 0 -38624 M 17.3 0 32 (accounts on ten machines, there is no way a priori to see that those ten accounts all belong to the same individual. If) W 0 -39674 M 10.3 0 32 (I want to be able to access a resource through any of the ten machines, I must tell the resource about all ten accounts. ) W 0 -40724 M (I must also tell the resource when I get an eleventh account.) h 0 -42903 M 92.1 0 32 (DASS supports the concept of global identity and network login. A user is assigned a name from a global name\255) W 0 -43953 M 4.5 0 32 (space and that name will be recognized by any node in the network. \(In some cases, a resource may be configured as) W 0 -45003 M 107.6 0 32 (accessible only by a particular user acting through a particular node. That is an access control decision, and it is) W 0 -46053 M 73.0 0 32 (supported by DASS, but the user is still known by his global identity\). From a practical point of view, this means) W 0 -47103 M 27.1 0 32 (that a user can have a single password \(or smart card\) which can be used on all systems which allow him access and) W 0 -48153 M 147.8 0 32 (access control mechanisms can conveniently give access to a user through any computer the user happens to be) W 0 -49203 M 75.4 0 32 (logged into. Because a single user secret is good on all systems, it should never be necessary for a user to enter a) W 0 -50253 M 26.8 0 32 (password other than at initial login. Because cryptographic mechanisms are used, the password should never appear) W 0 -51303 M (on the network beyond the initial login node.) h 0 -53482 M 32.4 0 32 (DASS was designed as a component of the Distributed System Security Architecture \(DSSA\) \(see "The Digital Dis\255) W 0 -54532 M 106.7 0 32 (tributed System Security Architecture" by M. Gasser, A. Goldstein, C. Kaufman, and B. Lampson, 1989 National) W 0 -55582 M 75.5 0 32 (Computer Security Conference\). It is a goal of DSSA that access control on all systems be based on users' global) W 0 -56632 M 31.4 0 32 (names and the concept of "accounts" on computers eventually be replaced with unnamed rights to execute processes) W 0 -57682 M 52.4 0 32 (on those computers. Until this happens, computers will continue to support the concept of "local accounts" and ac\255) W -8503 8502 T R showpage $P e %%Page: 4 4 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 43237 -900 M (Page ) h (4) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 0 -750 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1000 o f 17.1 0 32 (cess controls on resources on those systems will still be based on those accounts. There is today within the Berkeley) W 0 -1800 M 122.0 0 32 (rtools running over the Internet Protocol suite ) W 122.0 0 32 (the concept of a ".rhosts database" which gives access to local ac\255) W 0 -2850 M 40.7 0 32 (counts from remote accounts. We envision that those databases will be extended to support granting access to local) W 0 -3900 M 66.3 0 32 (accounts based on DASS global names as a bridge between the past and the future. DASS should greatly simplify) W 0 -4950 M 20.8 0 32 (the administration of those databases for the \(presumably common\) case where a user should be granted access to an) W 0 -6000 M (account ignoring his choice of intermediate systems.) h 0 -8403 M /Times-Bold-ISOLatin1 $ /Times-Bold & P /Times-Bold-ISOLatin1 F 1400 o f (1.2 ) h 2126 -8403 M (Central Concepts) h 0 -11106 M n 0.857 o f (1.2.1 ) h 2834 -11106 M (Strong Authentication with Public Keys) h 0 -13309 M /Times-Roman-ISOLatin1 F 1000 o f 55.9 0 32 (DASS makes heavy use of the RSA Public Key cryptosystem. The important properties of the RSA algorithms for) W 0 -14359 M (purposes of this discussion are:) h 709 -16462 M /Symbol F 1000 o f (-) h 2154 -16462 M /Times-Roman-ISOLatin1 F 1000 o f 2.9 0 32 (It supports the creation of a public/private key pair, where operations with one key of the pair reverse the opera\255) W 2154 -17512 M (tions of the other, but it is computationally infeasible to derive the private key from the public key.) h 709 -19615 M /Symbol F 1000 o f (-) h 2154 -19615 M /Times-Roman-ISOLatin1 F 1000 o f 113.3 0 32 (It supports the "signing" of a message with the private key, after which anyone knowing the public key can) W 2154 -20665 M 22.3 0 32 ("verify" the signature and know that it was constructed with knowledge of the private key and that the message) W 2154 -21715 M (was not subsequently altered.) h 709 -23818 M /Symbol F 1000 o f (-) h 2154 -23818 M /Times-Roman-ISOLatin1 F 1000 o f 129.7 0 32 (It supports the "enciphering" of a message by anyone knowing the public key such that only someone with) W 2154 -24868 M (knowledge of the private key can recover the message.) h 0 -26971 M 64.7 0 32 (With access to the RSA algorithms, it is easy to see how one could construct a "strong" authentication mechanism. ) W 0 -28021 M 1.8 0 32 (Each "principal" \(user or computer\) would construct a public/private key pair, publish the public key, and keep secret) W 0 -29071 M 88.5 0 32 (the private key. To authenticate to you, I would write a message, sign it with my private key, and send it to you. ) W 0 -30121 M 40.0 0 32 (You would verify the message using my public key and know the message came from me. If mutual authentication) W 0 -31171 M 17.3 0 32 (were desired, you could create an acknowledgment and sign it with your private key; I could verify it with your pub\255) W 0 -32221 M (lic key and I would know you received my message.) h 0 -34324 M 60.0 0 32 (The authentication algorithms used by DASS are considerably more complex than those described in the paragraph) W 0 -35374 M 28.5 0 32 (above in order to deal with a large number of practical concerns including subtle security threats. Some of these are) W 0 -36424 M (discussed below.) h 0 -38677 M /Times-Bold-ISOLatin1 F 1200 o f (1.2.2 ) h 2834 -38677 M (Timestamps vs. Challenge/Response) h 0 -40880 M /Times-Roman-ISOLatin1 F 1000 o f 23.9 0 32 (Cryptosystems give you the ability to sign messages so that the receiver has assurance that the signer of the message) W 0 -41930 M 102.5 0 32 (knew some cryptographic secret. Free\255standing public key based authentication is sufficiently expensive that it is) W 0 -42980 M 68.4 0 32 (unlikely that anyone would want to sign every message of an interactive communication, and even if they did they) W 0 -44030 M 18.5 0 32 (would still face the threat of someone rearranging the messages or playing them multiple times. Authentication gen\255) W 0 -45080 M 17.1 0 32 (erally takes place in the context of establishing some sort of "connection," where a conversation will ensue under the) W 0 -46130 M 0.7 0 32 (auspices of the single peer\255entity authentication. This connection might be cryptographically protected against modi\255) W 0 -47180 M 91.0 0 32 (fication or reordering of the messages, but any such protection would be largely independent of the authentication) W 0 -48230 M 89.5 0 32 (which occurred at the start of the connection. DASS provides as a side effect of authentication the provision of a) W 0 -49280 M (shared key which may be used for this purpose.) h 0 -51383 M 43.0 0 32 (If in our simple minded authentication above, I signed the message "It's really me!" with my private key and sent it) W 0 -52433 M 75.5 0 32 (to you, you could verify the signature and know the message came from me and give the connection in which this) W 0 -53483 M 44.9 0 32 (message arrived access to my resources. Anyone watching this message over the network, however, could replay it) W 0 -54533 M 91.4 0 32 (to any server \(just like a password!\) and impersonate me. It is important that the message I send you only be ac\255) W 0 -55583 M 99.8 0 32 (cepted by you and only once. I can prevent the message from being useful at any other server by including your) W 0 -56633 M 17.4 0 32 (name in the message. You will only accept the message if you see your name in it. Keeping you from accepting the) W 0 -57683 M (message twice is harder.) h -8503 8502 T R showpage $P e %%Page: 5 5 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 43237 -900 M (Page ) h (5) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 0 -750 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1000 o f 29.4 0 32 (There are two "standard" ways of providing this replay protection. One is called challenge/response and the other is) W 0 -1800 M 15.8 0 32 (called timestamp\255based. In a challenge response type scheme, I tell you I want to authenticate, you generate a "chal\255) W 0 -2850 M 36.3 0 32 (lenge" \(generally a number\), and I include the challenge in the message I sign. You will only accept a message if it) W 0 -3900 M 94.9 0 32 (contains the recently generated challenge and you will make sure you never issue the same challenge to me twice) W 0 -4950 M 29.8 0 32 (\(either by using a sequence number, a timestamp, or a random number big enough that the probability of a duplicate) W 0 -6000 M 49.4 0 32 (is negligible\). In the timestamp\255based scheme, I include the current time in my message. You have a rule that you) W 0 -7050 M 72.5 0 32 (will not accept messages more than \255 say \255 five minutes old and you keep track of all messages you've seen in the) W 0 -8100 M 29.7 0 32 (last five minutes. If someone replays the message within five minutes, you will reject it because you will remember) W 0 -9150 M (you've seen it before; if someone replays it after five minutes, you will reject it as timed out.) h 0 -11337 M 28.7 0 32 (The disadvantage of the challenge/response based scheme is that it requires extra messages. While one\255way authen\255) W 0 -12387 M 79.1 0 32 (tication could otherwise be done with a single message and mutual authentication with one message in each direc\255) W 0 -13437 M (tion, the challenge/response scheme always requires at least three messages.) h 0 -15624 M 120.0 0 32 (The disadvantage of the timestamp\255based scheme is that it requires secure synchronized time. If our clocks drift) W 0 -16674 M 19.0 0 32 (apart by more than five minutes, you will reject all of my attempts to authenticate. If a network time service spoofer) W 0 -17724 M 3.6 0 32 (can convince you to turn back your clock and then subsequently replays an expired message, you will accept it again. ) W 0 -18774 M 11.9 0 32 (The multicast nature of existing distributed time services and the likelihood of detection make this an unlikely threat,) W 0 -19824 M 111.6 0 32 (but it must be considered in any analysis of the security of the scheme. The timestamp scheme also requires the) W 0 -20874 M 92.7 0 32 (server to keep state about all messages seen in the clock skew interval. To be secure, this must be kept on stable) W 0 -21924 M (storage \(unless rebooting takes longer than the permitted clock skew interval\).) h 0 -24111 M 54.2 0 32 (DASS uses the timestamp\255based scheme. The primary motivations behind this decision were so that authentication) W 0 -25161 M 16.4 0 32 (messages could be "piggybacked" on existing connection establishment messages) W 16.4 0 32 ( ) W 16.4 0 32 (and so that DASS would fit within) W 0 -26211 M (the same "form factor" \(number and direction of messages\) as Kerberos.) h 0 -28548 M /Times-Bold-ISOLatin1 $ /Times-Bold & P /Times-Bold-ISOLatin1 F 1200 o f (1.2.3 ) h 2834 -28548 M (Delegation) h 0 -30835 M /Times-Roman-ISOLatin1 F 1000 o f 28.1 0 32 (In a distributed environment, authentication alone is not enough. When I log onto a computer, not only do I want to) W 0 -31885 M 41.5 0 32 (prove my identity to that computer, I want to use that computer to access network resources \(e.g. file systems, data\255) W 0 -32935 M 60.0 0 32 (base systems\) on my behalf. My files should \(normally\) be protected so that I can access them through any node I) W 0 -33985 M 83.5 0 32 (log in through. DASS allows them to be so protected without allowing all of the systems that I might ever use ) W 83.5 0 32 (to) W 0 -35035 M 32.0 0 32 (access ) W 32.0 0 32 (those files in my absence. In the process of logging in, my password gives my login node access to my RSA) W 0 -36085 M 25.4 0 32 (secret. It can use that secret to "impersonate" me on any requests it makes on my behalf. It should forget all secrets) W 0 -37135 M 54.7 0 32 (associated with me when I log off. This limits the trust placed in computer systems. If someone takes control of a) W 0 -38185 M (computer, they can impersonate all people who use that computer after it is taken over but no others.) h 0 -40372 M 30.8 0 32 (Normally when I access a network service, I want to strongly authenticate to it. That is, I want to prove my identity) W 0 -41422 M 54.6 0 32 (to that service, but I don't want to allow that service to learn anything that would allow it to impersonate me. This) W 0 -42472 M 58.6 0 32 (allows me to use a service without trusting it for more than the service it is delivering. When using some services,) W 0 -43522 M 29.7 0 32 (for example remote login services, I may want that service to act on my behalf in calling additional services. DASS) W 0 -44572 M (provides a mechanism whereby I can pass secrets to such services that allow them to impersonate me.) h 0 -46759 M 24.8 0 32 (Future versions of this architecture may a) W 24.8 0 32 (llow "limited delegation" so that a user may delegate to a server only those) W 0 -47809 M 43.9 0 32 (rights the server needs to carry out the user's wishes. This version ) W 43.9 0 32 ( ) W 43.9 0 32 (can limit delegation only in terms of time. The) W 0 -48859 M 14.4 0 32 (information a user gives a server \(other than the initial login node\) can be used to impersonate the user but only for a) W 0 -49909 M (limited period of time. Smart cards will permit that time limitation to apply to the initial login node as well.) h 0 -52246 M /Times-Bold-ISOLatin1 F 1200 o f (1.2.4 ) h 2834 -52246 M (Certification Authorities) h 0 -54533 M /Times-Roman-ISOLatin1 F 1000 o f 102.9 0 32 (A flaw in the strong authentication mechanism described above is that it assumes that every "principal" \(user and) W 0 -55583 M 46.0 0 32 (node\) knows the public key of every other principal it wants to authenticate. If I can fool a server into thinking my) W 0 -56633 M 7.0 0 32 (public key is actually your public key, I can impersonate you by signing a message, saying it is from you, and having) W 0 -57683 M (the server verify the message with what it thinks is your public key.) h -8503 8502 T R showpage $P e %%Page: 6 6 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 43237 -900 M (Page ) h (6) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 0 -750 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1000 o f 83.9 0 32 (To avoid the need to securely install the public key of every principal in the database of every other principal, the) W 0 -1800 M 20.5 0 32 (concept of a "Certification Authority" was invented. A certification authority is a principal trusted to act as an intro\255) W 0 -2850 M 7.9 0 32 (duction service. Each principal goes to the certification authority, presents its public key, and proves it has a particu\255) W 0 -3900 M 8.1 0 32 (lar name \(the exact mechanisms for this vary with the type of principal and the level of security to be provided\). The) W 0 -4950 M 17.7 0 32 (CA then creates a "certificate" which is a message containing the name and public key of the principal, an expiration) W 0 -6000 M 95.7 0 32 (date, and bookkeeping information signed by the CA's private key. All "subscribers" to a particular CA can then) W 0 -7050 M 0.8 0 32 (authenticated to one another by presenting their certificates and proving knowledge of the corresponding secret. CAs) W 0 -8100 M 66.6 0 32 (need only act when new principals are being named and new private keys created, so that can be maintained under) W 0 -9150 M (tight physical security.) h 0 -11243 M (The two problems with the scheme as described so far are "revocation" and "scaleability".) h 0 -13411 M /Times-Bold-ISOLatin1 $ /Times-Bold & P /Times-Bold-ISOLatin1 F 1100 o f (1.2.4.1 ) h 3300 -13411 M (Certificate Revocation) h 0 -15579 M /Times-Roman-ISOLatin1 F 1000 o f 110.2 0 32 (Revocation is the process of announcing that a key has \(or may have\) fallen into the wrong hands and should no) W 0 -16629 M 79.3 0 32 (longer be accepted as proof of some particular identity. With certificates as described above, someone who learns) W 0 -17679 M 11.1 0 32 (your secret and your certificate can impersonate you indefinitely \255 even after you have learned of the compromise. It) W 0 -18729 M 24.7 0 32 (lacks the ability corresponding to changing your password. DASS supports two independent mechanisms for revok\255) W 0 -19779 M (ing certificates.) h ( In the future, a third may be added.) h 0 -21872 M 100.6 0 32 ( One method for revocation is using timeouts and renewals of certificates. Part of the signed message which is a) W 0 -22922 M 0.7 0 32 (certificate may be a time after which the certificate should not be believed. Periodically, the CA would renew certifi\255) W 0 -23972 M 100.4 0 32 (cates by signing one with a later timeout. If a key were compromised, a new key would be generated and a new) W 0 -25022 M 125.6 0 32 (certificate signed. The old certificate would only be valid until its timeout. Timeouts are not perfect revocation) W 0 -26072 M 68.3 0 32 (mechanisms because they provide only slow revocation \(timeouts are typically measured in months for the load on) W 0 -27122 M 20.8 0 32 (the CA and communication with users to be kept manageable\) and they depend on servers having an accurate source) W 0 -28172 M (of the current time. Someone who can trick a server into turning back its clock can use expired certificates.) h 0 -30265 M 120.4 0 32 (The second method is by listing all non\255revoked certificates in the naming service and believing only certificates) W 0 -31315 M 37.9 0 32 (found there. The advantage of this method is that it is almost immediate \(the only delay is for name service "skulk\255) W 0 -32365 M 65.4 0 32 (ing" and caching delays\). The disadvantages are: \(1\) the availability of authentication is only as good as the avail\255) W 0 -33415 M (ability of the naming service and \(2\) the security of revocation is only as good as the security of the naming service.) h 0 -35508 M 2.1 0 32 (A third method for revocation \255 not) W 2.1 0 32 ( currently) W 2.1 0 32 ( supported by DASS \255 is for certification authorities to periodically issue) W 0 -36558 M ("revocation lists" which list certificates which should no longer be accepted.) h 0 -38726 M /Times-Bold-ISOLatin1 F 1100 o f (1.2.4.2 ) h 3300 -38726 M (Certification Authority Hierarchy) h 0 -40894 M /Times-Roman-ISOLatin1 F 1000 o f 58.1 0 32 (While using a certification authority as an introduction service scales much better than having every principal learn) W 0 -41944 M 6.5 0 32 (the public key of every other principal by some out of band means, it has the problem that it creates a central point of) W 0 -42994 M 120.1 0 32 (trust. The certification authority can impersonate any principal by inventing a new key and creating a certificate) W 0 -44044 M 82.5 0 32 (stating that the new key represents the principal. In a large organization, there may be no individual who is suffi\255) W 0 -45094 M 61.5 0 32 (ciently trusted to operate the CA. Even if there were, in a large organization it would be impractical to have every) W 0 -46144 M 41.2 0 32 (individual authenticate to that single person. Replicating the CA solves the availability problem but makes the trust) W 0 -47194 M 28.3 0 32 (problem worse. When authentication is to be used in a global context \255 between companies \255 the concept of a single) W 0 -48244 M (CA is untenable.) h 0 -50337 M 0.5 0 32 (DASS addresses this problem by creating a hierarchy of CAs. The CA hierarchy is tied to the naming hierarchy. For) W 0 -51387 M 18.6 0 32 (each directory in the namespace, there is a single CA responsible for certifying the public keys of its members. That) W 0 -52437 M 59.6 0 32 (CA will also certify the public keys of the CAs of all child directories and of the CA of the parent directory. With) W 0 -53487 M 36.1 0 32 (this cross\255certification, it is possible knowing the public key of any CA to verify the public keys of a series of inter\255) W 0 -54537 M (mediate CAs and finally to verify the public key of any principal.) h 0 -56630 M 7.6 0 32 (Because the CA hierarchy is tied to the naming hierarchy, the trust placed in any individual CA is limited. If a CA is) W 0 -57680 M 16.9 0 32 (compromised, it can impersonate any of the principals listed in its directory, but it cannot impersonate arbitrary prin\255) W -8503 8502 T R showpage $P e %%Page: 7 7 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 43237 -900 M (Page ) h (7) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 0 -750 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1000 o f 15.2 0 32 (qcipals. DASS provides mechanisms for every principal to know the public key of its "parent" CA \255 the CA control\255) W 0 -1800 M (ling the directory in which it is named. The result is the following rules for the implications of a compromised CA:) h 709 -4067 M (a\)) h 2154 -4067 M (A CA can impersonate any principal named in its directory.) h 709 -6334 M (b\)) h 2154 -6334 M (A CA can impersonate any principal to a server named in its directory.) h 709 -8601 M (c\)) h 2154 -8601 M (A CA can impersonate any principal named in a subdirectory to any server not named in the same subdirectory.) h 709 -10868 M (d\)) h 2154 -10868 M (A CA can impersonate to any server in a subdirectory any principal not named in the same subdirectory.) h 0 -13135 M 124.6 0 32 (The implication is that a compromise low in the naming tree will compromise all principals below that directory) W 0 -14185 M 88.4 0 32 (while a compromise high in the naming tree will compromise only the authentication of principals far apart in the) W 0 -15235 M 70.2 0 32 (naming hierarchy. In particular, when multiple organizations share a namespace \(as they do in the case of X.500\),) W 0 -16285 M (the compromise of a CA in one organization can not result in false authentication within another organization.) h 0 -18552 M 57.7 0 32 (DASS uses the X.500 directory hierarchy for principal naming. At the top of the hierarchy are names of countries. ) W 0 -19602 M 43.3 0 32 (National authorities are not expected to establish certification authorities \(at least initially\), so an alternative mecha\255) W 0 -20652 M 20.6 0 32 (nism must be used to authenticate entities "distant" in the naming hierarchy. The mechanism for this in DASS is the) W 0 -21702 M 48.6 0 32 ("cross\255certificate" where a CA certifies the public key for some CA or principal not its parent or child. By limiting) W 0 -22752 M 24.8 0 32 (the chains of certificates they will use to parent certificates followed by a single "cross certificate" followed by child) W 0 -23802 M 86.6 0 32 (certificates, a DASS implementation ) W 86.6 0 32 (can avoid the need to have CAs near the root of the tree or can avoid the re\255) W 0 -24852 M 7.1 0 32 (quirement to trust them even if they do exist. A special case can also be supported whereby a global authority whose) W 0 -25902 M (name is not the root can certify the local roots of independent "islands".) h 0 -28319 M /Times-Bold-ISOLatin1 $ /Times-Bold & P /Times-Bold-ISOLatin1 F 1200 o f (1.2.5 ) h 2834 -28319 M (User vs. Node Authentication) h 0 -30686 M /Times-Roman-ISOLatin1 F 1000 o f 32.1 0 32 (In concept, DASS mechanisms support the mutual authentication of two principals regardless of whether those prin\255) W 0 -31736 M 31.8 0 32 (cipals are people, computers, or applications. Those mechanisms have been extended, however, to deal with a com\255) W 0 -32786 M 110.4 0 32 (mon case of a pair of principals acting together \(a user and a node\) authenticating to a single principal \(a remote) W 0 -33836 M 28.4 0 32 (server\). This is done by having optionally in each credentials structure two sets of secrets \255 one for the user and one) W 0 -34886 M 15.2 0 32 (for the node. When authentication is done using such credentials, both secrets sign the request so the receiving party) W 0 -35936 M (can verify that both principals are present.) h 0 -38203 M 73.3 0 32 (This setup has a number of advantages. It permits access controls to be enforced based on both the identity of the) W 0 -39253 M 58.4 0 32 (user ) W /Times-BoldItalic-ISOLatin1 $ /Times-BoldItalic & P /Times-BoldItalic-ISOLatin1 F 1000 o f 58.4 0 32 (and) W /Times-Roman-ISOLatin1 F 1000 o f 58.4 0 32 ( the identity of the originating node. It also makes it possible to define users of systems who have no net\255) W 0 -40303 M 3.5 0 32 (work wide identities who can access network resources on the basis of node credentials alone. The security of such a) W 0 -41353 M 38.0 0 32 (setup is less because a node can impersonate all of its users even when they are not logged in, but it offers an easier) W 0 -42403 M 38.1 0 32 (transition from existing ) W /Times-BoldItalic-ISOLatin1 F 1000 o f 38.1 0 32 (.rhosts) W /Times-Roman-ISOLatin1 F 1000 o f 38.1 0 32 ( based mechanisms because it does not require creation of global identities for all us\255) W 0 -43453 M (ers.) h 0 -45870 M /Times-Bold-ISOLatin1 F 1200 o f (1.2.6 ) h 2834 -45870 M (Protection of User Keys) h 0 -48237 M /Times-Roman-ISOLatin1 F 1000 o f 6.3 0 32 (DASS mechanisms generally deal with authentication between principals each knowing a private key. For principals) W 0 -49287 M 5.0 0 32 (who are people, special mechanisms are provided for maintaining that private key. In particular, it many cases it will) W 0 -50337 M 118.1 0 32 (be most convenient to keep passwords as secrets rather than private keys. This architecture specifies a means of) W 0 -51387 M 19.6 0 32 (storing private keys encrypted under passwords. This would provide security as good as hiding a private key were it) W 0 -52437 M 16.4 0 32 (not that people tend to choose passwords from a small space \(like words in a dictionary\) such that a password can be) W 0 -53487 M 88.6 0 32 (more easily guessed than a private key. To address this potential weakness, DASS specifies a protocol between a) W 0 -54537 M 33.3 0 32 (login node and a login agent whereby the login agent can audit and limit the rate of password guesses. Use of these) W 0 -55587 M 35.0 0 32 (features is optional. A user with a smart card could store a private key directly and bypass all of these mechanisms. ) W 0 -56637 M 108.0 0 32 (If users can be forced to choose "good" passwords, the login agent could be eliminated and encrypted credentials) W 0 -57687 M (could be stored directly in the naming service.) h -8503 8502 T R showpage $P e %%Page: 8 8 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 43237 -900 M (Page ) h (8) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 0 -750 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1000 o f 65.1 0 32 (Another way in which user keys are protected is that the architecture does not require that they be available except) W 0 -1800 M 58.9 0 32 (briefly at login. This reduces the threat of a user walking away from a logged on workstation and having someone) W 0 -2850 M 94.5 0 32 (take over the workstation and extract his key. It also makes the use of RSA based smart cards practical; the card) W 0 -3900 M (could keep the user's private key and execute one signature operation at login time to authenticate an entire session.) h 0 -6302 M /Times-Bold-ISOLatin1 $ /Times-Bold & P /Times-Bold-ISOLatin1 F 1400 o f (1.3 ) h 2126 -6302 M (What This Document Won't Tell You) h 0 -8854 M /Times-Roman-ISOLatin1 F 1000 o f 32.9 0 32 (Architecture documents are by their nature difficult to read. This one is no exception. The reason is that an architec\255) W 0 -9904 M 52.6 0 32 (ture document contains the details sufficient to build interoperable implementations, but it is not a design specifica\255) W 0 -10954 M 34.1 0 32 (tion. It goes out of its way to leave out any details which an implementation could choose without affecting interop\255) W 0 -12004 M 16.9 0 32 (erability. It also does not specify all the uses of the services provided because these services are properly regarded as) W 0 -13054 M (general purpose tools.) h 0 -15156 M 59.7 0 32 (T) W 59.7 0 32 (he remainder of this section includes information which is not properly part of the authentication architecture, but) W 0 -16206 M (which may be useful in understanding why the architecture is the way it is.) h 0 -18458 M /Times-Bold-ISOLatin1 F 1200 o f (1.3.1 ) h 2834 -18458 M (How DASS is Embedded in an Operating System) h 0 -20660 M /Times-Roman-ISOLatin1 F 1000 o f 131.3 0 32 (While architecturally DASS does not require any operating system support in order to be used by an application) W 0 -21710 M 5.9 0 32 (\(other than the services listed in Section 2\), it is expected that actual implementations of DASS will be closely tied to) W 0 -22760 M (the operating systems of host computers. This is done both for security and for convenience.) h 0 -24862 M 4.0 0 32 (In particular, it is expected that when a user logs into a node, a set of credentials will be created for that user and then) W 0 -25912 M 0.5 0 32 (associated by the operating system with all processes initiated by or on behalf of the user. When a user delegates to a) W 0 -26962 M 99.4 0 32 (service, the remote operating system is expected to accept the delegation and start up the remote process with the) W 0 -28012 M 43.2 0 32 (delegated credentials. Most nodes are expected to have credentials of their own and support the concept of user ac\255) W 0 -29062 M 119.1 0 32 (counts. When user credentials are created, the node is expected to verify them in its own context, determine the) W 0 -30112 M (appropriate user account, and add node credentials to the created credentials set.) h 0 -32364 M /Times-Bold-ISOLatin1 F 1200 o f (1.3.2 ) h 2834 -32364 M (Forms of Credentials) h 0 -34566 M /Times-Roman-ISOLatin1 F 1000 o f 52.6 0 32 (In the DASS architecture, there is a single data structure called "Credentials" with a large number of optional parts. ) W 0 -35616 M 65.3 0 32 (In an implementation, it is possible that not all of the architecturally allowed subsets will be supported and creden\255) W 0 -36666 M (tials structures with different subsets of the data may be implemented quite differently.) h 0 -38768 M (The major categories of credentials likely to be supported in an implementation are:) h 709 -40870 M /Symbol F 1000 o f (-) h 2154 -40870 M /Times-Bold-ISOLatin1 F 1000 o f 110.9 0 32 (Claimant credentials) W /Times-Roman-ISOLatin1 F 1000 o f 110.9 0 32 ( \255 these are the credentials which would normally be associated with a user process in) W 2154 -41920 M 37.7 0 32 (order that it be able to create authentication tokens. It would contain the user's name, login ticket, session pri\255) W 2154 -42970 M (vate key, and \(at least logically\) local node credentials and cached outgoing contexts.) h 709 -45072 M /Symbol F 1000 o f (-) h 2154 -45072 M /Times-Bold-ISOLatin1 F 1000 o f 62.4 0 32 (Verifier credentials \255) W /Times-Roman-ISOLatin1 F 1000 o f 62.4 0 32 ( these are the credentials which would normally be associated with a server which must) W 2154 -46122 M 81.5 0 32 (verify tokens and produce mutual authentication response tokens. Since servers may be started by a node on) W 2154 -47172 M 10.2 0 32 (demand, some representation of verifier credentials must exist independent of a process. If an operating system) W 2154 -48222 M 49.2 0 32 (wishes to authenticate a request before starting a server process, the credentials must exist in usable form. An) W 2154 -49272 M 121.8 0 32 (implementation may choose to have all services on a "node" share a verifier credentials structure, or it may) W 2154 -50322 M (choose to have each service have its own.) h 709 -52424 M /Symbol F 1000 o f (-) h 2154 -52424 M /Times-Bold-ISOLatin1 F 1000 o f 73.9 0 32 (Combined credentials ) W /Times-Roman-ISOLatin1 F 1000 o f 73.9 0 32 (\255 architecturally, a server may have a structure which is both claimant credentials and) W 2154 -53474 M 78.8 0 32 (verifier credentials combined so that the server may act in either role using a single structure. There is some) W 2154 -54524 M (overlap in the contents. There is no requirement, however, that an implementation support such a structure.) h 709 -56626 M /Symbol F 1000 o f (-) h 2154 -56626 M /Times-Bold-ISOLatin1 F 1000 o f 49.4 0 32 (Stub credentials ) W /Times-Roman-ISOLatin1 F 1000 o f 49.4 0 32 (\255 In the architecture, a credentials structure is created whenever a token is accepted. If dele\255) W 2154 -57676 M 83.1 0 32 (gation took place, these are ) W /Times-Bold-ISOLatin1 F 1000 o f 83.1 0 32 (claimant credentials) W /Times-Roman-ISOLatin1 F 1000 o f 83.1 0 32 ( usable by their possessor to create additional tokens. If no) W -8503 8502 T R showpage $P e %%Page: 9 9 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 43237 -900 M (Page ) h (9) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 2154 -750 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1000 o f 136.6 0 32 (delegation took place, this structure exists as an architectural place holder against which an implementation) W 2154 -1800 M 95.0 0 32 (may attempt to authenticate user and node names. An implementation might choose to implement ) W /Times-Bold-ISOLatin1 $ /Times-Bold & P /Times-Bold-ISOLatin1 F 1000 o f 95.0 0 32 (stub cre\255) W 2154 -2850 M 83.1 0 32 (dentials) W /Times-Roman-ISOLatin1 F 1000 o f 83.1 0 32 ( with a different mechanism than claimant or verifier credentials. In particular, it might do whatever) W 2154 -3900 M (user and node authentication is useful itself and not support this structure at all.) h 0 -6262 M /Times-Bold-ISOLatin1 F 1200 o f (1.3.3 ) h 2834 -6262 M (Support for Alternative Certification Authority Implementations) h 0 -8574 M /Times-Roman-ISOLatin1 F 1000 o f 31.3 0 32 (A motivating factor in much of the design of DASS is the need to protect certification authorities from compromise.) W 0 -9624 M 45.6 0 32 (CAs are only used to create certificates for new principals and to renew them on expiration \(expiration intervals are) W 0 -10674 M 99.2 0 32 (likely to be measured in months\). They therefore do not need to be highly available. For maximum security, CAs) W 0 -11724 M 62.2 0 32 (could be implemented on ) W 62.2 0 32 (standalone ) W 62.2 0 32 (PC) W 62.2 0 32 (s ) W 62.2 0 32 (where the hardware, software, and keys can be locked in a safe when the) W 0 -12774 M 72.0 0 32 (CA is not in use. The certificates the CA generates must be delivered to the naming service to be registered, and a) W 0 -13824 M 18.5 0 32 (possible mechanism for this is for the CA to have an RS232 line to an on\255line component which can pass certificates) W 0 -14874 M 19.3 0 32 (and related information but not login sessions. The intent would be to make it implausible to mount a network attack) W 0 -15924 M (against the CA.) h ( Alternatively, certificates could be carried to the network on a floppy disk.) h 0 -18136 M 17.2 0 32 (For CAs to be secure, a whole host of design details must be done right. The most important of these is the design of) W 0 -19186 M 74.6 0 32 (user and system manager interfaces that make it difficult to "trick" a user or system manager into doing the wrong) W 0 -20236 M 8.9 0 32 (thing and certifying an impostor or revealing a key. Mechanisms for generating keys must also be carefully protected) W 0 -21286 M 129.5 0 32 (to assure that the generated key cannot be guessed \(because of lack of randomness\) and is not recorded where a) W 0 -22336 M 13.5 0 32 (penetrator can get it. Because a certificate contains relatively little human intelligible information \(it) W 13.5 0 32 (s ) W 13.5 0 32 (most important) W 0 -23386 M 11.8 0 32 (components are UIDs and public keys\), it will be a challenge to design a user interface that assures the human opera\255) W 0 -24436 M 59.8 0 32 (tor only authorizes the signing of intented certificates. Such considerations are beyond the scope of the architecture) W 0 -25486 M 108.8 0 32 (\(since they do not affect interoperability\), but they did affect the design in subtle ways. In particular, it does not) W 0 -26536 M 35.6 0 32 (assume uniform security throughout the CA hierarchy and is designed to assure that the compromise of a CA in one) W 0 -27586 M (part of the hierarchy does not have global implications.) h 0 -29798 M 25.8 0 32 (The architecture does not require that CAs be off\255line. ) W 25.8 0 32 (The CA could be software that can run on any node when the) W 0 -30848 M 25.0 0 32 (proper secret is installed. Administrative convenience can be gained by integrating the CA with account registration) W 0 -31898 M 38.0 0 32 (utilities and naming service maintenance. ) W 38.0 0 32 (As such, the CA would have to be on\255line when in use in order to register) W 0 -32948 M 72.8 0 32 (certificates in the naming service. The CA key ) W 72.8 0 32 (could ) W 72.8 0 32 (be unlocked with a password and the password ) W 72.8 0 32 (could ) W 72.8 0 32 (be en\255) W 0 -33998 M 29.6 0 32 (tered on each use both to authenticate the CA operator and to assure that compromise of the host node while the CA) W 0 -35048 M 2.8 0 32 (is not in use will not compromise the CA. This design w) W 2.8 0 32 (ould ) W 2.8 0 32 (be subject to attacks based on planting Trojan horses in) W 0 -36098 M 43.1 0 32 (the CA software) W 43.1 0 32 (, but ) W 43.1 0 32 (is entirely interoperable with a more secure implementation) W 43.1 0 32 (. Realistic tradeoffs must be made) W 0 -37148 M 20.7 0 32 (between security, cost, and administrative convenience bearing in mind that a system is only as secure as its weakest) W 0 -38198 M (link and that there is no benefit in making the CA substantially more secure than the other components of the system.) h 0 -40560 M /Times-Bold-ISOLatin1 F 1200 o f (1.3.4 ) h 2834 -40560 M (Services Provided vs. Application Program Interface) h 0 -42872 M /Times-Roman-ISOLatin1 F 1000 o f 23.1 0 32 (Section 3 of this document specifies "abstract interfaces" to the services provided by DASS. This means it tells what) W 0 -43922 M 66.6 0 32 (services are provided, what parameters are supplied by the caller, and what data is returned. It does not specify the) W 0 -44972 M 26.8 0 32 (calling interfaces. Calling interfaces may be platform, operating system, and language dependent. They do not affect) W 0 -46022 M 41.3 0 32 (interoperability; different implementations which implement completely different calling interfaces can still interop\255) W 0 -47072 M 65.1 0 32 (erate over a network. They do, however, affect portability. A program which runs on one platform can only run on) W 0 -48122 M (another which implements an identical API.) h 0 -50334 M 23.0 0 32 (In order to support portability of applications \255 not just between implementations of DASS but between implementa\255) W 0 -51384 M 77.2 0 32 (tions of DASS and implementations of Kerberos \255 a "Generic Security Service API" has been designed and is ) W 77.2 0 32 (out\255) W 0 -52434 M 35.0 0 32 (lined in Annex B. This API ) W 35.0 0 32 (could be the only "published" interface to DASS services. This interface does not, how\255) W 0 -53484 M 70.6 0 32 (ever, give access to all the functions provided by DASS and it provides some non\255DASS services. It does not give) W 0 -54534 M 17.6 0 32 (access to the "login" service, for example, so the login function cannot be implemented in a portable way. Clearly an) W 0 -55584 M 105.9 0 32 (implementation must provide some implementation of the login function, though perhaps only to one system pro\255) W 0 -56634 M 0.6 0 32 (gram and the implementation need not be portable. Similarly, the Generic API provides no access to ) W 0.6 0 32 (node authentica\255) W 0 -57684 M (tion information,) h ( so applications which use these services may not be portable.) h -8503 8502 T R showpage $P e %%Page: 10 10 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 42570 -900 M (Page ) h (10) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 0 -750 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1000 o f 45.0 0 32 (The Generic API provides services for encryption of user data for integrity and possibly privacy. These services are) W 0 -1800 M 16.7 0 32 (not specified as a part of the DASS architecture. This is because we envisioned that such services would be provided) W 0 -2850 M 111.9 0 32 (by the communications network and not in applications. These services are provided by the Generic API because) W 0 -3900 M 14.7 0 32 (these services are provided by Kerberos, there exist applications which use these services, and they are desired in the) W 0 -4950 M 90.9 0 32 (context of the IETF\255CAT work. The DASS architecture) W 90.9 0 32 ( include) W 90.9 0 32 (s) W 90.9 0 32 ( a Key Distribution service so that the encryption) W 0 -6000 M 65.6 0 32 (functions of the Generic API can be supported and integrated. Annex B specifies how those services can be imple\255) W 0 -7050 M (mented using DASS services.) h 0 -9117 M 10.5 0 32 (The Services Provided also differ from the ) W 10.5 0 32 (GSSAPI ) W 10.5 0 32 (because there are important extensions envisioned to the API for) W 0 -10167 M 110.2 0 32 (future applications and it was important to assure that architecturally those services were available. In particular,) W 0 -11217 M 61.9 0 32 (DASS provides the ability for a principal to have multiple aliases and for the receiver of an authentication token to) W 0 -12267 M 39.8 0 32 (verify any one of them. We want DASS to support the case where a server only learns the name it is trying to vali\255) W 0 -13317 M 69.4 0 32 (date in the course of evaluating an ACL. This may be long after a connection is accepted. The Services Provided) W 0 -14367 M 24.9 0 32 (section therefore separates the Accept_token function from the Verify Principal Name. The other motivation behind) W 0 -15417 M 91.7 0 32 (a different interface is that DASS provides node authentication \255 the ability to authenticate the node from which a) W 0 -16467 M 11.4 0 32 (request originates as well as the user. Because Kerberos provides no such mechanism, the capability is missing from) W 0 -17517 M (the GSSAPI, but we expect some applications will ) h (want to ) h (make use of it.) h 0 -19734 M /Times-Bold-ISOLatin1 $ /Times-Bold & P /Times-Bold-ISOLatin1 F 1200 o f (1.3.5 ) h 2834 -19734 M (Use of a Naming Service) h 0 -21901 M /Times-Roman-ISOLatin1 F 1000 o f 68.5 0 32 (With the exception of the syntactical representation of names, which is tied to X.500, the DASS architecture is de\255) W 0 -22951 M 149.3 0 32 (signed to be independent of the particular underlying naming service. While the intention is that certificates be) W 0 -24001 M 45.4 0 32 (stored in an X.500 naming service in the fields architecturally reserved for this purpose in the standard, this specifi\255) W 0 -25051 M 87.1 0 32 (cation allows for the possibility of different forms of certificate stores. The SPX implementation of DASS imple\255) W 0 -26101 M 0.6 0 32 (ments its own certificate distribution service because) W 0.6 0 32 ( we did not want to introduce a dependency on an X.500 naming) W 0 -27151 M (service.) h 0 -29368 M /Times-Bold-ISOLatin1 F 1200 o f (1.3.6 ) h 2834 -29368 M (Key Hiding \255 Credentials) h 0 -31535 M /Times-Roman-ISOLatin1 F 1000 o f 22.7 0 32 (The abstract interfaces described in section 3 specify that "credentials" and "keys" are the inputs and outputs of vari\255) W 0 -32585 M 77.0 0 32 (ous routines. Credentials structures in particular contain secret information which should not be made available to) W 0 -33635 M 38.5 0 32 (the calling application. In most cases, keeping this information from applications is simply a matter of prudence \255 a) W 0 -34685 M 56.2 0 32 (misbehaving application can do nearly as much damage using the credentials as it can by using the secrets directly. ) W 0 -35735 M 91.2 0 32 (Having access to the keys themselves may allow an application to bypass auditing or leak a key to an accomplice) W 0 -36785 M 87.4 0 32 (who can use it on another node where a large amount of activity is less likely to be noticed. In some cases, most) W 0 -37835 M 62.5 0 32 (dramatically where a "node key" is present in user credentials, it is vital that the contents of the credentials be kept) W 0 -38885 M (out of the hands of applications.) h 0 -40952 M 140.7 0 32 (To accomplish this, a concrete interface is expected to create "credentials handles" that are passed in and out of) W 0 -42002 M 136.0 0 32 (DASS routines. The credentials themselves would be kept in some portion of memory where unprivileged code) W 0 -43052 M (can't get at them.) h 0 -45119 M 36.7 0 32 (There is another aspect of the way credentials are used which is important to the design of real implementations. In) W 0 -46169 M 76.6 0 32 (normal use, a user will create a set of credentials in the process of logging on to a system and then use them from) W 0 -47219 M 27.1 0 32 (many processes or jobs. When many processes share a set of credentials, it is important for the sake of performance) W 0 -48269 M 102.6 0 32 (that they share one set of credentials rather than having a copy of the credentials made for each. This is because) W 0 -49319 M 42.5 0 32 (information is cached in credentials as a side effect of some requests and for good performance those caches should) W 0 -50369 M (be shared.) h 0 -52436 M 85.4 0 32 (As an example, consider a) W 85.4 0 32 ( ) W 85.4 0 32 (system executing a series of copy commands moving files from one system to another. ) W 0 -53486 M 27.1 0 32 (The credentials of the user will have been established when the user logged on. The first time a copy is requested, a) W 0 -54536 M 25.5 0 32 (new process will start up, open a connection to the destination system, and create a token to authenticate itself. Cre\255) W 0 -55586 M 104.5 0 32 (ating that token will be an expensive operation, but information will be computed and "cached" in the credentials) W 0 -56636 M 22.8 0 32 (structure which will allow any subsequent tokens on behalf of that user to that server to be computed cheaply. After) W 0 -57686 M 63.5 0 32 (the copy completes, the connection is closed and the process terminates. In response to a second copy request, an\255) W -8503 8502 T R showpage $P e %%Page: 11 11 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 42570 -900 M (Page ) h (11) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 0 -750 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1000 o f 56.3 0 32 (other new process will be created and a new token computed. For this operation to get a performance benefit from) W 0 -1800 M (the caching, the information computed by the first process must somehow make it to the second.) h 0 -3998 M 39.7 0 32 (A model for how this caching might work can be seen in the way Kerberos caches credentials. Kerberos keeps cre\255) W 0 -5048 M 37.5 0 32 (dentials in a file whose name can be computed from the name of the local user. This file is initialized as part of the) W 0 -6098 M 69.3 0 32 (login process and its protection is set so that only processes running under the UID of the user may read and write) W 0 -7148 M (the file. Processes cache information there; all processes running on behalf of the user share the file.) h 0 -9346 M 58.8 0 32 (There are two problems with this scheme: first, on a diskless node putting information in a file exposes it to eaves\255) W 0 -10396 M 70.2 0 32 (droppers on the network; second, it does not accomplish the "key hiding" function described earlier in this section. ) W 0 -11446 M 23.3 0 32 (In a more secure implementation, the kernel or a privileged process would ) W 23.3 0 32 (manage some "pool" of credentials for all) W 0 -12496 M 66.4 0 32 (processes on a node and w) W 66.4 0 32 (ould ) W 66.4 0 32 (grant access to them only through the DASS calls. Credentials structures are com\255) W 0 -13546 M 83.8 0 32 (plex and varying length; DASS may organize them as a set of pools rather than as contiguous blocks of data. All) W 0 -14596 M (such design issues are "beyond the scope of the architecture".) h 0 -16794 M 35.0 0 32 (Implementations must decide how to control access to credentials. They could copy the Kerberos scheme of having) W 0 -17844 M 59.5 0 32 (credentials available to processes with the UID of the login session which created them and to privileged processes) W 0 -18894 M 32.6 0 32 (or there may be a more elaborate mechanism for "passing" credentials handles from process to process. This design) W 0 -19944 M (should probably follow the operating system mechanisms for passing around local privileges.) h 0 -22292 M /Times-Bold-ISOLatin1 $ /Times-Bold & P /Times-Bold-ISOLatin1 F 1200 o f (1.3.7 ) h 2834 -22292 M (Key Hiding \255 Contexts) h 0 -24590 M /Times-Roman-ISOLatin1 F 1000 o f 30.6 0 32 (The ") W 30.6 0 32 (GSSA) W 30.6 0 32 (PI" has a concept of a security context which has some of the same key hiding problems as a credentials) W 0 -25640 M 64.4 0 32 (structure. Security contexts are used in calls to cryptographically protect user data \(from modification or from dis\255) W 0 -26690 M 81.2 0 32 (closure and modification\) using keys established during authentication. The "services provided" specification says) W 0 -27740 M 49.0 0 32 (that create_ and accept_token return a "shared key" and "instance identifier". The G) W 49.0 0 32 (SSA) W 49.0 0 32 (PI says that a context han\255) W 0 -28790 M 25.5 0 32 (dle is returned which is an integer. A secure implementation would keep the key and instance identifier in protected) W 0 -29840 M (memory and only allow access to them through provided interfaces.) h 0 -32038 M 99.8 0 32 (Unlike credentials, there is probably no need to provide mechanisms for contexts to be shared between processes. ) W 0 -33088 M 48.4 0 32 (Contexts will normally be associated with some notion of a communications "connection" and ends of a connection) W 0 -34138 M 90.9 0 32 (are not normally shared. I) W 90.9 0 32 (f ) W 90.9 0 32 (an implementation chooses to provide additional services to applications like message) W 0 -35188 M 88.9 0 32 (sequencing or duplicate detection, contexts will have to contain additional fields. These can be created and main\255) W 0 -36238 M (tained without any additional authentication services.) h 0 -38736 M /Times-Bold-ISOLatin1 F 1400 o f (1.4 ) h 2126 -38736 M (T) h (he Relationship between DASS and ISO Standards) h 0 -41384 M /Times-Roman-ISOLatin1 F 1000 o f 244.5 0 32 (This section provides an introduction to DASS authentication in terms of the ISO Authentication Framework) W 0 -42434 M 92.5 0 32 (\(DP10181\2552\). The purpose of this introduction is to give the reader an intuitive understanding of the way DASS) W 0 -43484 M 3.7 0 32 (works and how its mechanisms and terminology relate to standards. Important details have been omitted here but are) W 0 -44534 M (spelled out in section 3. ) h 0 -46882 M /Times-Bold-ISOLatin1 F 1200 o f (1.4.1 ) h 2834 -46882 M (Concepts) h 0 -49180 M /Times-Roman-ISOLatin1 F 1000 o f 5.4 0 32 (The primary goal of authentication is to prevent impersonation, that is, the pretense to a false identity. Authentication) W 0 -50230 M 197.0 0 32 (always involves identification in some form. Without authentication, anyone could claim to be whomever they) W 0 -51280 M (wished and get away with it. ) h 0 -53478 M 98.9 0 32 (If it didn't matter with whom one was communicating, elaborate procedures for authentication would be unneces\255) W 0 -54528 M 37.5 0 32 (sary. However, in most systems, and in timesharing and distributed processing environments in particular, the rights) W 0 -55578 M 58.4 0 32 (of individuals are often circumscribed by security policy. In particular, authorization \(identity based access control\)) W 0 -56628 M 34.4 0 32 (and accountability \(audit\) provisions could be circumvented if masquerading attempts were impossible to prevent or) W 0 -57678 M (detect.) h -8503 8502 T R showpage $P e %%Page: 12 12 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 42570 -900 M (Page ) h (12) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 0 -750 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1000 o f 117.6 0 32 (Almost all practical authentication mechanisms suitable for use in distributed environments rely on knowledge of) W 0 -1800 M 238.6 0 32 (some secret information. Most differences lie in how one presents evidence that they know the secret. Some) W 0 -2850 M 56.2 0 32 (schemes, in particular the familiar simple use of passwords, are quite susceptible to attack. Generally, the threats to) W 0 -3900 M (authentication may be classified as:) h 709 -5985 M /Symbol F 1000 o f (-) h 2154 -5985 M /Times-Bold-ISOLatin1 $ /Times-Bold & P /Times-Bold-ISOLatin1 F 1000 o f (forgery, ) h /Times-Roman-ISOLatin1 F 1000 o f (attempting to guess or otherwise fabricate evidence;) h 709 -8070 M /Symbol F 1000 o f (-) h 2154 -8070 M /Times-Bold-ISOLatin1 F 1000 o f 162.3 0 32 (replay, ) W /Times-Roman-ISOLatin1 F 1000 o f 162.3 0 32 (where one can eavesdrop upon another's authentication exchange and learn enough to impersonate) W 2154 -9120 M (them; and) h 709 -11205 M /Symbol F 1000 o f (-) h 2154 -11205 M /Times-Bold-ISOLatin1 F 1000 o f 104.7 0 32 (interception, ) W /Times-Roman-ISOLatin1 F 1000 o f 104.7 0 32 (where one slips between the communicants and is able to modify the communications channel) W 2154 -12255 M (unnoticed.) h 0 -14340 M 41.4 0 32 (Most such attacks can be countered by using what is known as strong authentication. Strong authentication refers to) W 0 -15390 M 20.7 0 32 (techniques that permit one to provide evidence that they know a particular secret without revealing even a hint about) W 0 -16440 M 5.3 0 32 (the secret. Thus neither the entity to whom one is authenticating, nor an eavesdropper on the conversation can further) W 0 -17490 M 134.5 0 32 (their ability to impersonate the authenticating principal at some future time as the result of an authentication ex\255) W 0 -18540 M (change. ) h 0 -20625 M 167.5 0 32 (Strong authentication mechanisms, in particular those used here, rely on cryptographic techniques. In particular,) W 0 -21675 M 143.6 0 32 (DASS uses public key cryptography. Note that interception attacks cannot be countered by strong authentication) W 0 -22725 M 23.1 0 32 (alone, but generally need additional security mechanisms to secure the communication channel, such as data encryp\255) W 0 -23775 M (tion.) h 0 -26010 M /Times-Bold-ISOLatin1 F 1200 o f (1.4.2 ) h 2834 -26010 M (Principals and Their Roles) h 0 -28195 M /Times-Roman-ISOLatin1 F 1000 o f (All authentication is on behalf of principals. In DASS the following types of principals are recognized:) h 709 -30280 M /Symbol F 1000 o f (-) h 2154 -30280 M /Times-Bold-ISOLatin1 F 1000 o f 40.2 0 32 (user principals) W /Times-Roman-ISOLatin1 F 1000 o f 40.2 0 32 (, normally people with accounts who are responsible for performing particular tasks. Generally) W 2154 -31330 M 39.0 0 32 (it is users that are authorized to do things by virtue of having been granted access rights, or who are to be held) W 2154 -32380 M (accountable for specific actions subject to being audited.) h 709 -34465 M /Symbol F 1000 o f (-) h 2154 -34465 M /Times-Bold-ISOLatin1 F 1000 o f (server principals) h /Times-Roman-ISOLatin1 F 1000 o f (, which are accessed by users.) h 709 -36550 M /Symbol F 1000 o f (-) h 2154 -36550 M /Times-Bold-ISOLatin1 F 1000 o f 81.1 0 32 (node principals, ) W /Times-Roman-ISOLatin1 F 1000 o f 81.1 0 32 (corresponding to locations where users and servers, or more accurately, processes acting on) W 2154 -37600 M (behalf of principals can reside.) h 0 -39685 M (Principals can act in one of two capacities:) h 709 -41770 M /Symbol F 1000 o f (-) h 2154 -41770 M /Times-Roman-ISOLatin1 F 1000 o f (the ) h /Times-Bold-ISOLatin1 F 1000 o f (claimant ) h /Times-Roman-ISOLatin1 F 1000 o f (is the active entity seeking to authenticate itself, and) h 709 -43855 M /Symbol F 1000 o f (-) h 2154 -43855 M /Times-Roman-ISOLatin1 F 1000 o f (the ) h /Times-Bold-ISOLatin1 F 1000 o f (verifier ) h /Times-Roman-ISOLatin1 F 1000 o f (is the passive entity to whom the claimant is authenticating.) h 0 -45940 M 78.7 0 32 (Users normally are claimants, whereas servers are usually verifiers, although sometimes servers can also be claim\255) W 0 -46990 M (ants.) h 0 -49075 M (There is another kind of principal:) h 709 -51160 M /Symbol F 1000 o f (-) h 2154 -51160 M /Times-Bold-ISOLatin1 F 1000 o f (certification authorities ) h /Times-Roman-ISOLatin1 F 1000 o f ( \(CA's\) issue certificates which attest to another principal's public key.) h 0 -53395 M /Times-Bold-ISOLatin1 F 1200 o f (1.4.3 ) h 2834 -53395 M (Representation, Delegation and Representation Transfer) h 0 -55580 M /Times-Roman-ISOLatin1 F 1000 o f 0.6 0 32 (Of course, although it is users that are responsible for what the computer does, human beings are physically unable to) W 0 -56630 M 114.2 0 32 (directly do anything within a computer system. In point of fact, it is a ) W /Times-Italic-ISOLatin1 $ /Times-Italic & P /Times-Italic-ISOLatin1 F 1000 o f 114.2 0 32 (process) W /Times-Roman-ISOLatin1 F 1000 o f 114.2 0 32 ( executing on behalf of a user that) W 0 -57680 M 23.5 0 32 (actually performs useful work. From the point of view of performing security controlled functions, the process is the) W -8503 8502 T R showpage $P e %%Page: 13 13 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 42570 -900 M (Page ) h (13) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 0 -750 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1000 o f 19.8 0 32 (agent, or representative, of the user, and is authorized by that user to do things on his behalf. In the terms used in the) W 0 -1800 M (ISO Authentication Framework, the user is said to have a ) h /Times-Italic-ISOLatin1 $ /Times-Italic & P /Times-Italic-ISOLatin1 F 1000 o f (representation ) h /Times-Roman-ISOLatin1 F 1000 o f (in the process.) h 0 -3983 M 46.6 0 32 (The representation has to come into existence somehow. ) W /Times-Bold-ISOLatin1 $ /Times-Bold & P /Times-Bold-ISOLatin1 F 1000 o f 46.6 0 32 (Delegation ) W /Times-Roman-ISOLatin1 F 1000 o f 46.6 0 32 (refers to the act of creating a representation. A) W 0 -5033 M 65.2 0 32 (user is said to create a representation for themselves by delegating to a process. If the user creates another process,) W 0 -6083 M 68.8 0 32 (say by doing an rlogin on a different computer, a representation may be needed there as well. This may be accom\255) W 0 -7133 M 87.3 0 32 (plished automatically by a process known as ) W /Times-Italic-ISOLatin1 F 1000 o f 87.3 0 32 (representation transfer. ) W /Times-Roman-ISOLatin1 F 1000 o f 87.3 0 32 (DASS uses the term delegation to also mean) W 0 -8183 M (the act of creating additional representations on a remote systems.) h 0 -10366 M 74.0 0 32 (A representation is instantiated in DASS as ) W /Times-Bold-ISOLatin1 F 1000 o f 74.0 0 32 (credentials. ) W /Times-Roman-ISOLatin1 F 1000 o f 74.0 0 32 (Credentials include the identity of the principal as well as) W 0 -11416 M 64.2 0 32 (the cryptographic "state" needed to engage in strong authentication procedures. Claimant information in credentials) W 0 -12466 M 4.8 0 32 (enable principals to authenticate themselves to others, whereas verifier information in credentials permit principals to) W 0 -13516 M 39.5 0 32 (verify the claims of others. Credentials intended primarily for use by a claimant will be referred to as ) W /Times-Italic-ISOLatin1 F 1000 o f 39.5 0 32 (claimant cre\255) W 0 -14566 M 4.9 0 32 (dentials) W /Times-Roman-ISOLatin1 F 1000 o f 4.9 0 32 ( in the text which follows. Credentials intended primarily for use in verification will be referred to as ) W /Times-Italic-ISOLatin1 F 1000 o f 4.9 0 32 (verifier) W 0 -15616 M 27.0 0 32 (credentials) W /Times-Roman-ISOLatin1 F 1000 o f 27.0 0 32 (. A particular set of credentials may or may not contain all of the data necessary to be used in both roles. ) W 0 -16666 M (That will depend on the mechanisms by which the credentials were created.) h 0 -18849 M 110.2 0 32 (In some contexts, but not here, the concept of representation and/or delegation is sometimes referred to as proxy.) W 0 -19899 M 13.0 0 32 (This term is used in ECMA TR/46. We avoid use of the term because of possible confusion with an unrelated use of) W 0 -20949 M (the term in the context of DECnet.) h 0 -23282 M /Times-Bold-ISOLatin1 F 1200 o f (1.4.4 ) h 2834 -23282 M (Key Distribution, Replay, Mutual Authentication and Trust) h 0 -25565 M /Times-Roman-ISOLatin1 F 1000 o f 20.4 0 32 (Strong authentication uses cryptographic techniques. The particular mechanisms used in DASS result in the distribu\255) W 0 -26615 M 43.1 0 32 (tion of cryptographic keys as a side effect. These keys are suitable for use for providing a data origin authentication) W 0 -27665 M (service and/or a data confidentiality service between a pair of authenticated principals.) h 0 -29848 M 134.9 0 32 (Replay detection is provided using timestamps on relevant authentication messages, combined with remembering) W 0 -30898 M 1.6 0 32 (previously accepted messages until they become "stale". This is in contrast to other techniques, such as challenge and) W 0 -31948 M (response exchanges.) h 0 -34131 M 77.0 0 32 (Authentication can be one\255way or ) W /Times-Bold-ISOLatin1 F 1000 o f 77.0 0 32 (mutual. ) W /Times-Roman-ISOLatin1 F 1000 o f 77.0 0 32 (One\255way authentication is when only one party, in DASS the claimant,) W 0 -35181 M 176.5 0 32 (authenticates to the other. Mutual authentication provides, in addition, authentication of the verifier back to the) W 0 -36231 M 102.8 0 32 (claimant. In certain communications schemes, for example connectionless transfer, only one\255way authentication is) W 0 -37281 M 69.1 0 32 (meaningful. DASS supports mutual authentication as a simple extension of one\255way authentication for use in envi\255) W 0 -38331 M (ronments where it makes sense.) h 0 -40514 M 107.6 0 32 (DASS potentially can allow many different "trust relationships" to exist. All principals trust one or more CA's to) W 0 -41564 M 56.3 0 32 (safeguard the certification process. Principals use certificates as the basis for authenticating identities, and trust that) W 0 -42614 M 63.4 0 32 (CA's which issue certificates act responsibly. Users expect CA's to make sure that certificates \(and related secrets\)) W 0 -43664 M (are only made for principals that the CA knows or has properly authenticated on its own.) h 0 -46147 M /Times-Bold-ISOLatin1 F 1400 o f (1.5 ) h 2126 -46147 M (An Authentication Walkthrough) h 0 -48780 M /Times-Roman-ISOLatin1 F 1000 o f 44.4 0 32 (The OSI Authentication Framework characterizes authentication as occurring in six phases. This section attempts to) W 0 -49830 M (describe DASS in these terms.) h 0 -52163 M /Times-Bold-ISOLatin1 F 1200 o f (1.5.1 ) h 2834 -52163 M (Installation) h 0 -54446 M /Times-Roman-ISOLatin1 F 1000 o f 23.8 0 32 (In this phase, principal certificates are created, as is the additional information needed to create claimant and verifier) W 0 -55496 M (credentials. OSI defines three sub\255phases:) h 709 -57679 M /Symbol F 1000 o f (-) h 2154 -57679 M /Times-Bold-ISOLatin1 F 1000 o f (Enrollment. ) h /Times-Roman-ISOLatin1 F 1000 o f (In DASS, this is the definition of a principal in terms of a key, name and UID.) h -8503 8502 T R showpage $P e %%Page: 14 14 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 42570 -900 M (Page ) h (14) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 709 -750 M /Symbol F 1000 o f (-) h 2154 -750 M /Times-Bold-ISOLatin1 $ /Times-Bold & P /Times-Bold-ISOLatin1 F 1000 o f (Validation, ) h /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1000 o f (confirmation of identity to the satisfaction of the CA, after which the CA generates a certificate.) h 709 -2875 M /Symbol F 1000 o f (-) h 2154 -2875 M /Times-Bold-ISOLatin1 F 1000 o f 31.8 0 32 (Confirmation. ) W /Times-Roman-ISOLatin1 F 1000 o f 31.8 0 32 (In DASS, this is the act of providing the user with the certificate and with the CA's own name,) W 2154 -3925 M 60.8 0 32 (key and UID, followed up by the user creating a ) W /Times-Italic-ISOLatin1 $ /Times-Italic & P /Times-Italic-ISOLatin1 F 1000 o f 60.8 0 32 (trusted authority ) W /Times-Roman-ISOLatin1 F 1000 o f 60.8 0 32 (for that CA. A trusted authority is a certifi\255) W 2154 -4975 M (cate for the CA signed by the user.) h 0 -7100 M 29.4 0 32 (Included in this step in DASS is the posting of the certificate so as to be available to principals wishing to verify the) W 0 -8150 M 103.9 0 32 (principal's identity. In addition, the user principal saves the trusted authority so as to be available when it creates) W 0 -9200 M (credentials.) h 0 -11475 M /Times-Bold-ISOLatin1 F 1200 o f (1.5.2 ) h 2834 -11475 M (Distribution) h 0 -13700 M /Times-Roman-ISOLatin1 F 1000 o f (DASS distributes certificates by placing them in the name service.) h 0 -15975 M /Times-Bold-ISOLatin1 F 1200 o f (1.5.3 ) h 2834 -15975 M (Acquisition) h 0 -18200 M /Times-Roman-ISOLatin1 F 1000 o f 105.0 0 32 (Whenever principals wish to authenticate to one another, they access the Name Service to obtain whatever public) W 0 -19250 M (key certificates they need and create the necessary credentials. In DASS, acquisition means obtaining credentials.) h 0 -21375 M 73.8 0 32 (Claimant credentials implement the representation of a principal in a process, or, more accurately, provide a repre\255) W 0 -22425 M 60.8 0 32 (sentation of the principal for use by a process. In making this representation, the principal delegates to a temporary) W 0 -23475 M (delegation key. In this fashion the claimant's long term principal key need not remain in the system.) h 0 -25600 M 87.7 0 32 (Claimant credentials are made by invoking the get credentials primitive. Claimant credentials are a DASS specific) W 0 -26650 M (data structure containing:) h 709 -28775 M /Symbol F 1000 o f (-) h 2154 -28775 M /Times-Roman-ISOLatin1 F 1000 o f (a ) h /Times-Bold-ISOLatin1 F 1000 o f (name) h 709 -30900 M /Symbol F 1000 o f (-) h 2154 -30900 M /Times-Roman-ISOLatin1 F 1000 o f (a ) h /Times-Bold-ISOLatin1 F 1000 o f (ticket, ) h /Times-Roman-ISOLatin1 F 1000 o f (a data structure containing ) h 2154 -32825 M /Symbol F 1000 o f (\267) h 3600 -32825 M /Times-Roman-ISOLatin1 F 1000 o f (a validity interval,) h 2154 -34750 M /Symbol F 1000 o f (\267) h 3600 -34750 M /Times-Roman-ISOLatin1 F 1000 o f (UID, and) h 2154 -36675 M /Symbol F 1000 o f (\267) h 3600 -36675 M /Times-Roman-ISOLatin1 F 1000 o f (\(temporary\) delegation public key, along with a) h 2154 -38600 M /Symbol F 1000 o f (\267) h 3600 -38600 M /Times-Roman-ISOLatin1 F 1000 o f (digital signature on the above made with the principal private key) h 709 -40725 M /Symbol F 1000 o f (-) h 2154 -40725 M /Times-Roman-ISOLatin1 F 1000 o f (the ) h /Times-Bold-ISOLatin1 F 1000 o f (delegation private key) h 0 -42850 M /Times-Roman-ISOLatin1 F 1000 o f 75.0 0 32 (Optionally in addition, there may be credential information relating to the node on which the user is logged in and) W 0 -43900 M (the account on that node. A detailed description of all the information found in credentials can be found in section 3.) h 0 -46025 M 4.7 0 32 (Verifier credentials are made with initialize_server. Verifier credentials consist of a principal \(long term\) private key.) W 0 -47075 M 50.3 0 32 (The rationale is that these credentials are usually needed by servers that must be able to run indefinitely without re\255) W 0 -48125 M (entry of any long term key.) h 0 -50250 M 135.9 0 32 (In addition, claimants and verifiers have ) W /Times-Bold-ISOLatin1 F 1000 o f 135.9 0 32 (a trusted authority) W /Times-Roman-ISOLatin1 F 1000 o f 135.9 0 32 (, which consists of information about a trusted CA. ) W 0 -51300 M (That information is its:) h 709 -53425 M /Symbol F 1000 o f (-) h 2154 -53425 M /Times-Roman-ISOLatin1 F 1000 o f (name \(this will appear in the "issuer" field in principal certificates\),) h 709 -55550 M /Symbol F 1000 o f (-) h 2154 -55550 M /Times-Roman-ISOLatin1 F 1000 o f (public key \(to use in verifying certificates issued by that CA\), and) h 709 -57675 M /Symbol F 1000 o f (-) h 2154 -57675 M /Times-Roman-ISOLatin1 F 1000 o f (UID.) h -8503 8502 T R showpage $P e %%Page: 15 15 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 42570 -900 M (Page ) h (15) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 0 -750 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1000 o f 19.3 0 32 (Trusted authorities are used by principals to verify certificates for other principals' public keys. CAs are arranged in) W 0 -1800 M 58.1 0 32 (a hierarchy corresponding to the naming hierarchy, where each directory in the naming hierarchy is controlled by a) W 0 -2850 M 46.8 0 32 (single CA. Each CA certifies the CA of its parent directory, the CAs of each of its child directories, and optionally) W 0 -3900 M 27.0 0 32 (CAs elsewhere in the naming hierarchy \(mainly to deal with the case where the directories up to a common ancestor) W 0 -4950 M 24.4 0 32 (lack CAs\). Even though a principal has only a single CA as a trusted authority, it can securely obtain the public key) W 0 -6000 M (of any principal in the namespace by "walking the CA hierarchy".) h 0 -8200 M /Times-Bold-ISOLatin1 $ /Times-Bold & P /Times-Bold-ISOLatin1 F 1200 o f (1.5.4 ) h 2834 -8200 M (Transfer) h 0 -10350 M /Times-Roman-ISOLatin1 F 1000 o f 237.6 0 32 (The DASS exchange of authentication information is illustrated in Figure ) W /NewCenturySchlbk-Roman-ISOLatin1 $ /NewCenturySchlbk-Roman & P /NewCenturySchlbk-Roman-ISOLatin1 F 1000 o f 237.6 0 32 (1\2551) W /Times-Roman-ISOLatin1 F 1000 o f 237.6 0 32 (. During the transfer phase, the) W 0 -11400 M 52.6 0 32 (DASS claimant sends an ) W /Times-Bold-ISOLatin1 F 1000 o f 52.6 0 32 (authentication token ) W /Times-Roman-ISOLatin1 F 1000 o f 52.6 0 32 (to the verifier. Authentication tokens are made by invoking the cre\255) W 0 -12450 M 56.4 0 32 (ate_token primitive. The authentication token is cryptographically protected and specified as a DASS data structure) W 0 -13500 M (in ASN.1. The authentication token includes:) h 709 -15550 M /Symbol F 1000 o f (-) h 2154 -15550 M /Times-Roman-ISOLatin1 F 1000 o f (a ticket,) h 709 -17600 M /Symbol F 1000 o f (-) h 2154 -17600 M /Times-Roman-ISOLatin1 F 1000 o f (a DES authenticating key encrypted using the intended verifier's public key) h 709 -19650 M /Symbol F 1000 o f (-) h 2154 -19650 M /Times-Roman-ISOLatin1 F 1000 o f (one of the following:) h 2154 -21500 M /Symbol F 1000 o f (\267) h 3600 -21500 M /Times-Roman-ISOLatin1 F 1000 o f 38.8 0 32 (if delegation is not being performed, a digital signature on the encrypted DES key using the delegation pri\255) W 3600 -22550 M (vate key, or) h 2154 -24400 M /Symbol F 1000 o f (\267) h 3600 -24400 M /Times-Roman-ISOLatin1 F 1000 o f 34.7 0 32 (if delegation is being performed, sending the delegation private key, DES encrypted using the DES authen\255) W 3600 -25450 M (ticating key) h 709 -27500 M /Symbol F 1000 o f (-) h 2154 -27500 M /Times-Roman-ISOLatin1 F 1000 o f 122.0 0 32 (an ) W /Times-Bold-ISOLatin1 F 1000 o f 122.0 0 32 (authenticator, ) W /Times-Roman-ISOLatin1 F 1000 o f 122.0 0 32 (which is a cryptographic checksum made using the DES authenticating key over a buffer) W 2154 -28550 M (containing) h 2154 -30400 M /Symbol F 1000 o f (\267) h 3600 -30400 M /Times-Roman-ISOLatin1 F 1000 o f (a timestamp) h 2154 -32250 M /Symbol F 1000 o f (\267) h 3600 -32250 M /Times-Roman-ISOLatin1 F 1000 o f 30.7 0 32 (any application supplied "channel bindings". For example, addresses or other context information. The pur\255) W 3600 -33300 M (pose of this field is to thwart substitution and replay attacks.) h 709 -35350 M /Symbol F 1000 o f (-) h 2154 -35350 M /Times-Roman-ISOLatin1 F 1000 o f (additional optional information concerning node authentication and context.) h 0 -37400 M 17.6 0 32 (As a side effect, after init_authentication_context, the caller receives a) W /Times-Bold-ISOLatin1 F 1000 o f 17.6 0 32 ( local) W /Times-Roman-ISOLatin1 F 1000 o f 17.6 0 32 ( ) W /Times-Bold-ISOLatin1 F 1000 o f 17.6 0 32 (authentication context, ) W /Times-Roman-ISOLatin1 F 1000 o f 17.6 0 32 (a data structure) W 0 -38450 M (containing:) h 709 -40500 M /Symbol F 1000 o f (-) h 2154 -40500 M /Times-Roman-ISOLatin1 F 1000 o f (the DES key, and) h 709 -42550 M /Symbol F 1000 o f (-) h 2154 -42550 M /Times-Roman-ISOLatin1 F 1000 o f (if mutual authentication is being requested, the expected response.) h 0 -44600 M 74.4 0 32 (In order to construct an authentication token, the claimant needs to access the verifier's public key certificate from) W 0 -45650 M (the Name Service \(labeled CDC, for Certificate Distribution Center, in the figure\).) h 0 -47700 M 28.3 0 32 (Note that while an authenticator can only be used once, it is permissible to re\255establish the same local authentication) W 0 -48750 M 85.4 0 32 (context multiple times. That is, the ticket and DES key establishment components of the authentication token may) W 0 -49800 M 56.3 0 32 (have a relatively long lifetime. This permits a performance improvement in that repeated applications of public key) W 0 -50850 M 50.8 0 32 (operations can be alleviated if one caches authentication contexts, along with other components from a successfully) W 0 -51900 M 42.4 0 32 (used authentication token and the associated verified principal public key value. It is a relatively inexpensive opera\255) W 0 -52950 M (tion to create \(and verify\) "fresh" authenticators based on cached authentication context.) h -8503 8502 T R showpage $P e %%Page: 16 16 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 42570 -900 M (Page ) h (16) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 0 -750 M /Courier-ISOLatin1 $ /Courier & P /Courier-ISOLatin1 F 1000 o f ( Claimant Actions | Communications | Verifier Actions) h 0 -1972 M ( | |) h 0 -3194 M ( verifier name | |) h 0 -4416 M ( | | |) h 0 -5638 M ( | | +\255\255\255+|) h 0 -6860 M ( \\\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\2 55\255>| ||) h 0 -8082 M ( trusted | | ||) h 0 -9304 M (authorities | |CDC||) h 0 -10526 M ( | +\255\255\255\255\255\255\255\255\255\255\255+ |certificate| ||) h 0 -11748 M ( | | Verify |<\255\255\255\255\255\255\255\255\255\255\255\255\255| ||) h 0 -12970 M ( \\\255\255\255>|Certificate| | +\255\255\255+| ) h 0 -14192 M ( +\255\255\255\255\255\255\255\255\255\255\255+ | |) h 0 -15414 M ( Claimant | | |) h 0 -16636 M (credentials Verifier | | Verifier) h 0 -17858 M ( | Public Key | | Credentials) h 0 -19080 M ( | | | | |) h 0 -20302 M ( | V | | V) h 0 -21524 M ( | +\255\255\255\255\255\255\255\255\255\255\255+ | Authentication | +\255\255\255\255\255\255\255\255\255\255\255+) h 0 -22746 M ( | | Make | | Token | | Check | Replay) h 0 -23968 M ( \\\255\255\255>| Token |\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\25 5\255\255>| Token |<\255\255>Cache) h 0 -25190 M ( +\255\255\255\255\255\255\255\255\255\255\255+ | | +\255\255\255\255\255\255\255\255\255\255\255+) h 0 -26412 M ( DES <\255\255\255/ | | | | | \\\255\255\255\255\255>DES) h 0 -27634 M ( key | | | /Claimant key) h 0 -28856 M ( | | |/Public Key ) h 0 -30078 M ( | | / | trusted ) h 0 -31300 M ( | | Claimant /| V authorities) h 0 -32522 M ( | |+\255\255\255+ Name / | +\255\255\255\255\255\255\255\255\255\255\255+ |) h 0 -33744 M ( authentication || |<\255\255\255\255\255\255\255/ | | Verify |<\255\255\255\255/) h 0 -34966 M ( context || |certificate| |Certificate|) h 0 -36188 M ( | ||CDC|\255\255\255\255\255\255\255\255\255\255\255\255>| |\255\255>accept/) h 0 -37410 M ( | || | | +\255\255\255\255\255\255\255\255\255\255\255+ reject) h 0 -38632 M ( | || | | | \\) h 0 -39854 M ( | |+\255\255\255+ |authentication\\) h 0 -41076 M ( V | mutual | context V) h 0 -42298 M ( +\255\255\255\255\255\255\255\255\255\255\255+ | authentication | | claimant) h 0 -43520 M ( /\255\255| Accept | | response | +\255\255\255\255\255\255\255\255\255\255+credentials) h 0 -44742 M ( V | Mutual |<\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\2 55\255\255| Make |\(delegation\)) h 0 -45964 M ( accept/ +\255\255\255\255\255\255\255\255\255\255\255+ | | | Response |) h 0 -47186 M ( reject | | +\255\255\255\255\255\255\255\255\255\255+) h 0 -48408 M ( | |) h 0 -49630 M 11766 -51002 M /Times-Bold-ISOLatin1 $ /Times-Bold & P /Times-Bold-ISOLatin1 F 1200 o f (Figure 1 \255 ) h 17065 -51002 M (Authentication Exchange Overview) h 23515 -52202 M 0 -54424 M (1.5.5 ) h 2834 -54424 M (Verification) h 0 -56596 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1000 o f 49.8 0 32 (Upon receipt of an authentication token, the verifier extracts the DES key using its verifier credentials, accesses the) W 0 -57646 M 52.7 0 32 (Name Service \(labeled CDC for Certificate Distribution Center\) to obtain the certificates needed to perform crypto\255) W -8503 8502 T R showpage $P e %%Page: 17 17 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 42570 -900 M (Page ) h (17) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 0 -750 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1000 o f 110.2 0 32 (graphic checks on the incoming information, and verifies all of the signatures on the received certificates and the) W 0 -1800 M (authentication token. Verification can result in creation of new claimant credentials if delegation is performed. ) h 0 -3910 M (As part of this process, verified authenticators are retained for a suitable timeout period.) h 0 -6170 M /Times-Bold-ISOLatin1 $ /Times-Bold & P /Times-Bold-ISOLatin1 F 1200 o f (1.5.6 ) h 2834 -6170 M (Unenrolment) h 0 -8380 M /Times-Roman-ISOLatin1 F 1000 o f 22.4 0 32 (This is the removal of information from the Name Service. The only other form of revocation supported by DASS is) W 0 -9430 M 5.1 0 32 (certificate timeout. Every certificate contains an expiration time \(expected in ordinary use to be about a year from its) W 0 -10480 M (signing date\). DASS does not ) h (currently ) h (support the revocation lists in X.509.) h 0 -14640 M /Times-Bold-ISOLatin1 F 1600 o f (2 ) h 1417 -14640 M (Services Used) h 0 -17250 M /Times-Roman-ISOLatin1 F 1000 o f 34.8 0 32 (Aside from operating system services needed to maintain its internal state, DASS relies on a global distributed data\255) W 0 -18300 M 35.5 0 32 (base in which to store its certificates, a reliable source of time, and a source of random numbers for creating crypto\255) W 0 -19350 M (graphic keys.) h 0 -21760 M /Times-Bold-ISOLatin1 F 1400 o f (2.1 ) h 2126 -21760 M (Time Service) h 0 -24320 M /Times-Roman-ISOLatin1 F 1000 o f 53.4 0 32 (DASS requires access to the current time in several of its algorithms. Some of its uses of time are security critical. ) W 0 -25370 M 167.2 0 32 (In others, network synchronization of clocks is required. DASS does ) W /Times-BoldItalic-ISOLatin1 $ /Times-BoldItalic & P /Times-BoldItalic-ISOLatin1 F 1000 o f 167.2 0 32 (not) W /Times-Roman-ISOLatin1 F 1000 o f 167.2 0 32 (, however, depend on having a single) W 0 -26420 M (source of time which is both secure and tightly synchronized.) h 0 -28530 M (The requirements on system provided time are:) h 709 -30640 M /Symbol F 1000 o f (-) h 2154 -30640 M /Times-Roman-ISOLatin1 F 1000 o f 52.1 0 32 (For purposes of validating certificates and tickets, the system needs access to know the date and time accurate) W 2154 -31690 M 118.9 0 32 (to within a few hours with no particular synchronization requirements. If this time is inaccurate, then valid) W 2154 -32740 M 39.9 0 32 (requests may be rejected and expired messages may be accepted. Certificate expiration is a backup revocation) W 2154 -33790 M 8.4 0 32 (mechanism, so this can only cause a security compromise in the event of multiple failures. ) W 8.4 0 32 (In theory, this could) W 2154 -34840 M 17.6 0 32 (be provided by having ) W 17.6 0 32 (a local clock on every node accurate to within a few hours over the life of the product to) W 2154 -35890 M 123.2 0 32 (provide this function. If an insecure network time service) W 123.2 0 32 ( ) W 123.2 0 32 (is used to provide this time, there are theoretical) W 2154 -36940 M (security threats, but they are expected to be logistically impractical to exploit.) h 709 -39050 M /Symbol F 1000 o f (-) h 2154 -39050 M /Times-Roman-ISOLatin1 F 1000 o f 36.0 0 32 (For purposes of detecting replay of authentication tokens, the system needs access to a ) W /Times-BoldItalic-ISOLatin1 F 1000 o f 36.0 0 32 (strictly monotonic) W /Times-Roman-ISOLatin1 F 1000 o f 36.0 0 32 ( time) W 2154 -40100 M 22.6 0 32 (source which is reasonably synchronized across the network \(within a few minutes\) for the system to work, but) W 2154 -41150 M 48.9 0 32 (inaccuracy does not present a security threat) W 48.9 0 32 ( except as noted below. It) W 48.9 0 32 ( may constitute an availability threat be\255) W 2154 -42200 M 104.1 0 32 (cause valid requests may be rejected. In order to get strict monotonicity in the presence of a rapid series of) W 2154 -43250 M 103.3 0 32 (requests, time must be returned with high precision. There is no requirement for a high degree of accuracy.) W 103.3 0 32 ( ) W 2154 -44300 M 37.4 0 32 (Inaccurate time could present a security threat in the following scenario: if a client's clock is made sufficiently) W 2154 -45350 M 29.1 0 32 (fast that its tokens are rejected, someone harvesting those tokens from the wire could replay them later and im\255) W 2154 -46400 M 53.6 0 32 (personate the client. In some environments, this might be an easier threat than harvesting tokens and prevent\255) W 2154 -47450 M (ing their delivery.) h 709 -49560 M /Symbol F 1000 o f (-) h 2154 -49560 M /Times-Roman-ISOLatin1 F 1000 o f 14.5 0 32 (For purposes of aging stale entries from caches, DASS requires reasonably accurate timing of ) W /Times-BoldItalic-ISOLatin1 F 1000 o f 14.5 0 32 (intervals) W /Times-Roman-ISOLatin1 F 1000 o f 14.5 0 32 (. To the) W 2154 -50610 M 88.5 0 32 (extent that intervals are reported as shorter than the actually were, revocation of certificates from the naming) W 2154 -51660 M (service may not be as timely as ) h (it ) h (should be.) h 0 -54070 M /Times-Bold-ISOLatin1 F 1400 o f (2.2 ) h 2126 -54070 M (Random Numbers) h 0 -56630 M /Times-Roman-ISOLatin1 F 1000 o f 41.8 0 32 (In order to generate keys, DASS needs a source of "cryptographic quality" random numbers. Cryptographic quality) W 0 -57680 M 30.8 0 32 (means that knowing any of the "random numbers" returned from a series and knowing all state information which is) W -8503 8502 T R showpage $P e %%Page: 18 18 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 42570 -900 M (Page ) h (18) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 0 -750 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1000 o f 3.6 0 32 (not protected, an attacker cannot predict any of the other numbers in the series. Hardware sources are ideal, but there) W 0 -1800 M 114.2 0 32 (are alternative techniques which ) W 114.2 0 32 (may ) W 114.2 0 32 (also ) W 114.2 0 32 (be ) W 114.2 0 32 (acceptable. ) W 114.2 0 32 (A ) W 114.2 0 32 (56 bit "truly random" seed \(say from a series of coin) W 0 -2850 M 1.6 0 32 (tosses\) ) W 1.6 0 32 (could be ) W 1.6 0 32 (used as a DES key to encrypt an infinite length known text block in CBC mode) W 1.6 0 32 ( to ) W 1.6 0 32 (produce a) W 1.6 0 32 ( ) W 1.6 0 32 (pseudo\255) W 0 -3900 M 51.6 0 32 (random sequence ) W 51.6 0 32 (p) W 51.6 0 32 (rovided the key and current point in the sequence were adequately protected) W 51.6 0 32 (. There is consider\255) W 0 -4950 M 132.4 0 32 (able controversy surrounding what constitutes cryptographic quality random numbers, and it is not a goal of this) W 0 -6000 M (document to resolve it.) h 0 -8357 M /Times-Bold-ISOLatin1 $ /Times-Bold & P /Times-Bold-ISOLatin1 F 1400 o f (2.3 ) h 2126 -8357 M (Naming Service) h 0 -10864 M /Times-Roman-ISOLatin1 F 1000 o f 55.7 0 32 (DASS stores creates and uses "certificates" associated with every principal in the system, and encrypted credentials) W 0 -11914 M 72.4 0 32 (associated with most. This information ) W 72.4 0 32 (is ) W 72.4 0 32 (stored in ) W 72.4 0 32 (an on\255line service ) W 72.4 0 32 (associated with the principal being certified. ) W 0 -12964 M 88.1 0 32 (The long term vision is for DASS to use an X.500 naming service, and DASS will from its inception authenticate) W 0 -14014 M 86.8 0 32 (X.500 names. ) W 86.8 0 32 (To avoid a dependence on having an ) W 86.8 0 32 (X.500 ) W 86.8 0 32 (naming service available \(and to gain the benefits of a) W 0 -15064 M 170.3 0 32 ("login agent" that controls password guessing\), an alternative certificate distribution center protocol is also de\255) W 0 -16114 M (scribed.) h 0 -18171 M (The specific requirements DASS places on the naming service are:) h 709 -20228 M /Symbol F 1000 o f (-) h 2154 -20228 M /Times-Roman-ISOLatin1 F 1000 o f 60.6 0 32 (It must be highly available. A user's naming service entry must be available to any node where the user is to) W 2154 -21278 M 72.4 0 32 (obtain services \(or service will be denied\). A server's naming service entry must be available from any node) W 2154 -22328 M (from which the service is to be invoked \(or service will be denied\).) h 709 -24385 M /Symbol F 1000 o f (-) h 2154 -24385 M /Times-Roman-ISOLatin1 F 1000 o f 16.7 0 32 (It must be timely. The presence of "stale" information in the naming service may cause some problems. When) W 2154 -25435 M 35.3 0 32 (a password changes, the old password may remain valid \(and the new password invalid\) to the extent the nam\255) W 2154 -26485 M 101.6 0 32 (ing service provides stale information. When a user or server is added to the network, it will not be able to) W 2154 -27535 M 17.6 0 32 (participate in authentication until the information added to the naming service is available at the node doing the) W 2154 -28585 M 67.7 0 32 (authentication. In the unusual circumstance that a key changes, the entity whose key has changed will not be) W 2154 -29635 M (able to use the new key until the new certificate is uniformly available.) h 709 -31692 M /Symbol F 1000 o f (-) h 2154 -31692 M /Times-Roman-ISOLatin1 F 1000 o f 21.6 0 32 (It must be secure with regard to certain specific properties. In general, the security of DASS protected applica\255) W 2154 -32742 M 101.1 0 32 (tions does not depend on the security of the naming service. It is expected that the availability needs of the) W 2154 -33792 M 48.5 0 32 (naming service will prevent it from being as secure as some applications need to be.) W 48.5 0 32 ( There are two aspects of) W 2154 -34842 M 114.3 0 32 (DASS security which do depend on the security of the naming service: timely revocation of certificates and) W 2154 -35892 M 18.3 0 32 (protection of user secrets against dictionary based password guessing. ) W 18.3 0 32 (DASS ) W 18.3 0 32 (d) W 18.3 0 32 (epend) W 18.3 0 32 (s) W 18.3 0 32 ( on the removal of certifi\255) W 2154 -36942 M 18.2 0 32 (cates from the naming service in order to revoke them more quickly than waiting for them to time out. For this) W 2154 -37992 M 124.8 0 32 (mechanism to provide any actual security, it must not be possible for a network entity to "impersonate" the) W 2154 -39042 M 21.2 0 32 (naming service and the naming service must be able to enforce access controls which prevent a revoked certifi\255) W 2154 -40092 M 88.6 0 32 (cate from being reinstated by an unauthorized entity. In the long run, it is expected that DASS itself will be) W 2154 -41142 M 64.1 0 32 (used to secure the naming service, which presents certain potential recursion problems \(to be addressed in the) W 2154 -42192 M 117.5 0 32 (naming service ) W 117.5 0 32 (design\)) W 117.5 0 32 (. If th) W 117.5 0 32 (e naming service) W 117.5 0 32 ( is not authenticated \(as is expected in early versions\) a) W 117.5 0 32 (ttacks) W 2154 -43242 M (where a revoked certificate is "reinstated" through impersonation of the naming service are possible.) h 0 -45299 M (The specific functions DASS requests of the naming service are simple:) h 709 -47356 M /Symbol F 1000 o f (-) h 2154 -47356 M /Times-Roman-ISOLatin1 F 1000 o f (Given an X.500 name, store a set of certificates associated with that name.) h 709 -49413 M /Symbol F 1000 o f (-) h 2154 -49413 M /Times-Roman-ISOLatin1 F 1000 o f (Given an X.500 name, retrieve the set of certificates associated with that name.) h 709 -51470 M /Symbol F 1000 o f (-) h 2154 -51470 M /Times-Roman-ISOLatin1 F 1000 o f (Given an X.500 name, store a set of encrypted credentials associated with that name.) h 709 -53527 M /Symbol F 1000 o f (-) h 2154 -53527 M /Times-Roman-ISOLatin1 F 1000 o f (Given and X.500 name, retrieve a set of encrypted credentials associated with that name.) h 0 -55584 M 169.6 0 32 (Implementation over a particular naming service may implement more specialized functions for reasons of effi\255) W 0 -56634 M 31.7 0 32 (ciency. For example, the certificates associated with a name may be separated into several sets \(child, parent, cross,) W 0 -57684 M 47.4 0 32 (self\) so that only the relevant ones may be retrieved. In order that access to the naming service itself be secure, the) W -8503 8502 T R showpage $P e %%Page: 19 19 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 42570 -900 M (Page ) h (19) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 0 -750 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1000 o f 28.5 0 32 (protocols should be authenticated. Certificates should generally be readable without authentication in order to avoid) W 0 -1800 M 0.8 0 32 (recursion problems. Requests to read encrypted credentials should be specialized and should include proof of knowl\255) W 0 -2850 M (edge of the password in order that the naming service can audit and slow down false password guesses.) h 0 -4978 M (The following sections describe the interfaces to specific naming services) h (:) h 0 -7256 M /Times-Bold-ISOLatin1 $ /Times-Bold & P /Times-Bold-ISOLatin1 F 1200 o f (2.3.1 ) h 2834 -7256 M (Interface to X.500) h 0 -9484 M /Times-Roman-ISOLatin1 F 1000 o f 69.4 0 32 (Certificates associated with a particular name are stored as attributes of the entry as specified in X.509. X.509 de\255) W 0 -10534 M 10.4 0 32 (fines attributes appropriate for parent and cross certificates \(CrossCertificatePair, CACertificate\) for some principals;) W 0 -11584 M 2.1 0 32 (we will have to define a DASSUserPrincipal object class including these attributes in order to properly use them with) W 0 -12634 M 44.7 0 32 (ordinary users. Retrieval is via normal X.500 protocols. Certificates should be world readable and modifiable only) W 0 -13684 M (by appropriate authorities.) h 0 -15812 M 72.4 0 32 (Encrypted credentials are stored with the entry of the principal under a yet to be defined attribute. The credentials) W 0 -16862 M 40.8 0 32 (should be encoded as specified in section 4. In the absence of extensions to the X.500 protocol to control password) W 0 -17912 M 87.6 0 32 (guessing, the encrypted credentials should be world readable and updatable only by the named principal and other) W 0 -18962 M (appropriate authorities.) h 0 -21240 M /Times-Bold-ISOLatin1 F 1200 o f (2.3.2 ) h 2834 -21240 M (Interface to CDC) h 0 -23468 M /Times-Roman-ISOLatin1 F 1000 o f 48.1 0 32 (The CDC \(Certificate Distribution Center) W 48.1 0 32 (\)) W 48.1 0 32 ( is a special purpose name server created to service DASS until an X.500) W 0 -24518 M 11.7 0 32 (service is available in all of the environments where DASS needs to operate. The CDC uses a special purpose proto\255) W 0 -25568 M 72.4 0 32 (col to communicate with DASS clients. The protocol was designed for efficiency, simplicity, and security. CDCs) W 0 -26618 M (use DASS as an authentication mechanism and to protect encrypted credentials from unaudited password guessing.) h 0 -28746 M 69.9 0 32 (Each DASS client maintains a list of CDCs and the portion of the namespace served by that CDC. Each directory) W 0 -29796 M 121.8 0 32 (has a master replica which is the only one which will accept updates. The CDCs maintain consistency with one) W 0 -30846 M 117.2 0 32 (another using protocols beyond the scope of this document. When a DASS client wishes to make a request of a) W 0 -31896 M 35.2 0 32 (CDC, it opens a TCP or DECnet connection to the CDC and sends an ASN.1 \(BER\) encoded request and receives a) W 0 -32946 M 118.4 0 32 (corresponding ASN.1 \(BER\) encoded response. ) W 118.4 0 32 (Clients are expected to learn the IP or DECnet address and port) W 0 -33996 M 118.4 0 32 (number of the CDC supporting a particular name from a local configuration file. T) W 118.4 0 32 (o maximize performance, the) W 0 -35046 M 16.7 0 32 (requests bundle what would be several requests if made in terms of requests for individual certificates. It is intended) W 0 -36096 M 89.7 0 32 (that all certificates needed for an authentication operation be retrievable with a) W 89.7 0 32 (t most two ) W 89.7 0 32 (CDC request) W 89.7 0 32 (s) W 89.7 0 32 (/response) W 89.7 0 32 (s) W 0 -37146 M (\(one to the CDC of the client and one to the CDC of the server\).) h 0 -39274 M 85.6 0 32 (Documented here ) W 85.6 0 32 (is ) W 85.6 0 32 (the protocol) W 85.6 0 32 ( ) W 85.6 0 32 (a DASS client would use to retrieve certificates and credentials from a CDC and) W 0 -40324 M 27.0 0 32 (update a user password. ) W 27.0 0 32 (This protocol does not provide for updates to the certificate and credential databases. Such) W 0 -41374 M 42.1 0 32 (updates must be supported for a practical system, but could be done either by extensions to this protocol or by local) W 0 -42424 M 70.9 0 32 (security mechanisms implemented on nodes supporting the CDC. Similarly, availability can be enhanced by repli\255) W 0 -43474 M 77.5 0 32 (cating the CDC. Automating the replication of updates could be implemented by extensions to this protocol or by) W 0 -44524 M 42.3 0 32 (some other mechanism. This specification assumes that updates and replication are local matters solved by individ\255) W 0 -45574 M (ual CA/CDC implementations.) h 0 -47702 M (Requests and responses are encoded as follows:) h 0 -49905 M /Times-Bold-ISOLatin1 F 1100 o f (2.3.2.1 ) h 3300 -49905 M (ReadPrinCertRequest) h 0 -52108 M /Times-Roman-ISOLatin1 F 1000 o f 85.7 0 32 (This request asks the CDC to return the child certificates and selected incoming cross certificates for the specified) W 0 -53158 M (object. The format of the request is:) h 3600 -55286 M /Courier-ISOLatin1 $ /Courier & P /Courier-ISOLatin1 F 1000 o f (ReadPrinCertRequest ::= [4] IMPLICIT SEQUENCE {) h 3600 -56486 M 7072 -56486 M (flags [0] BIT STRING DEFAULT {},) h 3600 -57686 M 7072 -57686 M (index [1] IMPLICIT INTEGER DEFAULT 0,) h -8503 8502 T R showpage $P e %%Page: 20 20 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 42570 -900 M (Page ) h (20) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 3600 -750 M 7072 -750 M /Courier-ISOLatin1 $ /Courier & P /Courier-ISOLatin1 F 1000 o f (resolveFrom [2] Name OPTIONAL,) h 3600 -1950 M 7072 -1950 M (principal Name,) h 3600 -3150 M 7072 -3150 M (crossCertIssuers ListOfIssuers OPTIONAL) h 3600 -4350 M 7072 -4350 M (}) h 3600 -6159 M (ListOfIssuers ::= SEQUENCE OF Name) h 0 -7968 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1000 o f 33.7 0 32 (The first 24 bits of ) W /Times-Bold-ISOLatin1 $ /Times-Bold & P /Times-Bold-ISOLatin1 F 1000 o f 33.7 0 32 (flags, ) W /Times-Roman-ISOLatin1 F 1000 o f 33.7 0 32 (if present, contain a protocol version number. Clients following this spec should place the) W 0 -9018 M 44.6 0 32 (value 2.0.0 in the three bytes. Servers following this spec should accept any value of the form 1.x.x or 2.x.x. ) W /Times-Bold-ISOLatin1 F 1000 o f 44.6 0 32 (flag) W 44.6 0 32 (s) W 0 -10068 M /Times-Roman-ISOLatin1 F 1000 o f 34.9 0 32 (bits beyond the first 24 are reserved for future use \(should not be supplied by clients and should be ignored by serv\255) W 0 -11118 M (ers\).) h 0 -13177 M /Times-Bold-ISOLatin1 F 1000 o f 18.1 0 32 (index ) W /Times-Roman-ISOLatin1 F 1000 o f 18.1 0 32 (is only used if the response exceeds the size of a single message; in that case, the query is repeated with ) W /Times-Bold-ISOLatin1 F 1000 o f 18.1 0 32 (index) W 0 -14227 M /Times-Roman-ISOLatin1 F 1000 o f (set to the value that was returned by ReadPrinCertResponse.) h 0 -16286 M /Times-Bold-ISOLatin1 F 1000 o f 64.5 0 32 (resolveFrom ) W /Times-Roman-ISOLatin1 F 1000 o f 64.5 0 32 (and ) W /Times-Bold-ISOLatin1 F 1000 o f 64.5 0 32 (principal ) W /Times-Roman-ISOLatin1 F 1000 o f 64.5 0 32 (imply a set of entities for which certificates should be retrieved. ) W /Times-Bold-ISOLatin1 F 1000 o f 64.5 0 32 (resolveFrom ) W /Times-Roman-ISOLatin1 F 1000 o f 64.5 0 32 (\(if pre\255) W 0 -17336 M 44.4 0 32 (sent\) must be an ancestor of ) W /Times-Bold-ISOLatin1 F 1000 o f 44.4 0 32 (principal) W /Times-Roman-ISOLatin1 F 1000 o f 44.4 0 32 ( and ) W 44.4 0 32 (child ) W 44.4 0 32 (certificates will be retrieved for ) W /Times-Bold-ISOLatin1 F 1000 o f 44.4 0 32 (principal ) W /Times-Roman-ISOLatin1 F 1000 o f 44.4 0 32 (and) W /Times-Bold-ISOLatin1 F 1000 o f 44.4 0 32 ( ) W /Times-Roman-ISOLatin1 F 1000 o f 44.4 0 32 (all names which are) W 0 -18386 M 110.2 0 32 (ancestors of ) W /Times-Bold-ISOLatin1 F 1000 o f 110.2 0 32 (principal ) W /Times-Roman-ISOLatin1 F 1000 o f 110.2 0 32 (but descendants of ) W /Times-Bold-ISOLatin1 F 1000 o f 110.2 0 32 (resolveFrom.) W /Times-Roman-ISOLatin1 F 1000 o f 110.2 0 32 ( The encoding of names is per X.500 and is specified in) W 0 -19436 M 21.8 0 32 (more detail in section 4. The CDC returns the certificates in order of the object they came from, parents before chil\255) W 0 -20486 M (dren. ) h 0 -22545 M /Times-Bold-ISOLatin1 F 1000 o f 32.7 0 32 (c) W 32.7 0 32 (ross) W 32.7 0 32 (CertIssuers ) W /Times-Roman-ISOLatin1 F 1000 o f 32.7 0 32 (is a list of cross certifiers that would be believed in the context of this authentication. ) W 32.7 0 32 (If supplied,) W 0 -23595 M 116.4 0 32 (the CDC may return a chain of certificates starting with one of the named ) W /Times-Bold-ISOLatin1 F 1000 o f 116.4 0 32 (crossCertIssuers ) W /Times-Roman-ISOLatin1 F 1000 o f 116.4 0 32 (and ending with the) W 0 -24645 M 42.3 0 32 (named ) W /Times-Bold-ISOLatin1 F 1000 o f 42.3 0 32 (principal. ) W /Times-Roman-ISOLatin1 F 1000 o f 42.3 0 32 (One of ) W /Times-Bold-ISOLatin1 F 1000 o f 42.3 0 32 (resolveFrom ) W /Times-Roman-ISOLatin1 F 1000 o f 42.3 0 32 (or ) W /Times-Bold-ISOLatin1 F 1000 o f 42.3 0 32 (crossCertIssuers) W /Times-Roman-ISOLatin1 F 1000 o f 42.3 0 32 ( must be present in any request; if both are present, the) W 0 -25695 M (CDC may return either chain. ) h 0 -27829 M /Times-Bold-ISOLatin1 F 1100 o f (2.3.2.2 ) h 3300 -27829 M (ReadPrinCertResponse) h 0 -29963 M /Times-Roman-ISOLatin1 F 1000 o f (This is the response a CDC sends to a ReadPrinCertRequest. Its syntax is:) h 3600 -32022 M /Courier-ISOLatin1 F 1000 o f (ReadPrinCertResponse ::= [5] IMPLICIT SEQUENCE {) h 3600 -33222 M 7072 -33222 M (status [0] IMPLICIT CDCstatus DEFAULT success,) h 3600 -34422 M 7072 -34422 M (index [1] INTEGER OPTIONAL,) h 3600 -35622 M 7072 -35622 M (resolveTo [2] Name OPTIONAL,) h 3600 -36822 M 7072 -36822 M (certSequence [3] IMPLICIT CertSequence,) h 3600 -38022 M 7072 -38022 M (indexInvalidator [4] OCTET STRING \(SIZE\(8\)\) ) h 38976 -38022 M 42523 -38022 M 3600 -39222 M 7072 -39222 M 8511 -39222 M 15893 -39222 M 19440 -39222 M 23083 -39222 M (OPTIONAL,) h 3600 -40422 M 7072 -40422 M (flags [5] BIT STRING OPTIONAL) h 3600 -41622 M 7072 -41622 M (}) h 3600 -43431 M (CertSequence ::= SEQUENCE OF Certificate) h 0 -45240 M /Times-Bold-ISOLatin1 F 1000 o f (status ) h /Times-Roman-ISOLatin1 F 1000 o f (indicates success or the cause of the failure.) h 0 -47299 M /Times-Bold-ISOLatin1 F 1000 o f 54.5 0 32 (index ) W /Times-Roman-ISOLatin1 F 1000 o f 54.5 0 32 (if present indicates that the request could not be fully satisfied in a single request because of size limitations. ) W 0 -48349 M (The request should be repeated with this index supplied in the request to get more.) h 0 -50408 M /Times-Bold-ISOLatin1 F 1000 o f (resolveTo ) h /Times-Roman-ISOLatin1 F 1000 o f (will be present if ) h /Times-Bold-ISOLatin1 F 1000 o f (index) h /Times-Roman-ISOLatin1 F 1000 o f ( is present and should be supplied in the request for more certificates.) h 0 -52467 M /Times-Bold-ISOLatin1 F 1000 o f (certSequence) h /Times-Roman-ISOLatin1 F 1000 o f ( ) h (contains ) h (certificates found matching the search criteria.) h 0 -54526 M /Times-Bold-ISOLatin1 F 1000 o f 6.2 0 32 (indexInvalidator) W /Times-Roman-ISOLatin1 F 1000 o f 6.2 0 32 ( may be present and indicates the version of the database being read. If a set of certificates is being) W 0 -55576 M 66.5 0 32 (read in multiple requests \(because there were too many to return in a single message\), the reader should check that) W 0 -56626 M 90.5 0 32 (the value for indexInvalidator is the same on each request. If it is not, the server may have skipped or duplicated) W 0 -57676 M (some certificates. This field must not be present if the version number in the request was missing or version 1.x.x.) h -8503 8502 T R showpage $P e %%Page: 21 21 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 42570 -900 M (Page ) h (21) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 0 -750 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1000 o f 53.3 0 32 (The first 24 bits of ) W /Times-Bold-ISOLatin1 $ /Times-Bold & P /Times-Bold-ISOLatin1 F 1000 o f 53.3 0 32 (flags, ) W /Times-Roman-ISOLatin1 F 1000 o f 53.3 0 32 (if present, indicate the protocol version number.) W 53.3 0 32 ( Implementers of this version of the spec) W 0 -1800 M (should supply 2.0.0 and should accept any version number of the form 1.x.x or 2.x.x.) h 0 -4120 M /Times-Bold-ISOLatin1 F 1100 o f (2.3.2.3 ) h 3300 -4120 M (ReadOutgoingCertRequest) h 0 -6440 M /Times-Roman-ISOLatin1 F 1000 o f 13.1 0 32 (This requests from the CDC a list of all parent and outgoing cross certificates for a specified object. ) W 13.1 0 32 (A CDC is capa\255) W 0 -7490 M 94.5 0 32 (ble of storing cross certificates either with the subject or the issuer of the cross certificate. In response to this re\255) W 0 -8540 M 9.8 0 32 (quest, the CDC will return all parent and cross certificates stored with the issuer for the named principal and all of its) W 0 -9590 M (ancestors. I) h (ts syntax is:) h 3600 -11835 M /Courier-ISOLatin1 $ /Courier & P /Courier-ISOLatin1 F 1000 o f (ReadOutgoingCertRequest ::= [6] IMPLICIT SEQUENCE {) h 3600 -13035 M 7072 -13035 M (flags [0] BIT STRING DEFAULT {},) h 3600 -14235 M 7072 -14235 M (index [1] IMPLICIT INTEGER DEFAULT 0,) h 3600 -15435 M 7072 -15435 M (principal Name) h 3600 -16635 M 7072 -16635 M (}) h 0 -18630 M /Times-Roman-ISOLatin1 F 1000 o f 32.5 0 32 (The first 24 bits of ) W /Times-Bold-ISOLatin1 F 1000 o f 32.5 0 32 (flags) W /Times-Roman-ISOLatin1 F 1000 o f 32.5 0 32 ( is a protocol version number and should contain 2.0.0 for clients implementing this version) W 0 -19680 M 83.8 0 32 (of the spec. Servers implementing this version of the spec should accept any version number of the form 1.x.x or) W 0 -20730 M 54.7 0 32 (2.x.x. The remaining bits are reserved for future use \(they should not be supplied by clients and they should be ig\255) W 0 -21780 M (nored by servers\).) h 0 -24025 M /Times-Bold-ISOLatin1 F 1000 o f (index ) h /Times-Roman-ISOLatin1 F 1000 o f (is used for continuation \(see ReadPrinCertRequest\).) h 0 -26270 M /Times-Bold-ISOLatin1 F 1000 o f (principal ) h /Times-Roman-ISOLatin1 F 1000 o f (is the name for which certificates are requested.) h 0 -28590 M /Times-Bold-ISOLatin1 F 1100 o f (2.3.2.4 ) h 3300 -28590 M (ReadOutgoingCertResponse) h 0 -30910 M /Times-Roman-ISOLatin1 F 1000 o f (This is the response to a Read) h (OutgoingC) h (ertRequest. Its syntax is:) h 3600 -33155 M /Courier-ISOLatin1 F 1000 o f (ReadOutgoingCertResponse::= [7] IMPLICIT SEQUENCE {) h 3600 -34355 M 7072 -34355 M (status [0] IMPLICIT CDCStatus DEFAULT success,) h 3600 -35555 M 7072 -35555 M (index [1] INTEGER OPTIONAL,) h 3600 -36755 M 7072 -36755 M (certSequence [2] IMPLICIT CertSequence,) h 3600 -37955 M 7072 -37955 M (indexInvalidator [3] OCTET STRING \(SIZE\(8\)\) ) h 38976 -37955 M 42523 -37955 M 3600 -39155 M 7072 -39155 M 8511 -39155 M 15893 -39155 M 19440 -39155 M 23083 -39155 M 30155 -39155 M (OPTIONAL,) h 3600 -40355 M 7072 -40355 M (flags [4] BIT STRING OPTIONAL) h 3600 -41555 M 7072 -41555 M (}) h 3600 -43550 M (CertSequence ::= SEQUENCE OF Certificate) h 0 -45545 M /Times-Bold-ISOLatin1 F 1000 o f (status ) h /Times-Roman-ISOLatin1 F 1000 o f (indicates success of the cause of failure of the operation.) h 0 -47790 M /Times-Bold-ISOLatin1 F 1000 o f (index ) h /Times-Roman-ISOLatin1 F 1000 o f (is used for continuation; see ReadPrinCertRequest.) h 0 -50035 M /Times-Bold-ISOLatin1 F 1000 o f (certSequence ) h /Times-Roman-ISOLatin1 F 1000 o f (is the list of parent and outgoing cross certificates.) h 0 -52280 M /Times-Bold-ISOLatin1 F 1000 o f 54.1 0 32 (indexInvalidator ) W /Times-Roman-ISOLatin1 F 1000 o f 54.1 0 32 (is used for continuation; see ReadPrinCertResponse \(the same rules apply with respect to version) W 0 -53330 M (numbers\).) h 0 -55575 M 66.1 0 32 (The first 24 bits of ) W /Times-Bold-ISOLatin1 F 1000 o f 66.1 0 32 (flags, ) W /Times-Roman-ISOLatin1 F 1000 o f 66.1 0 32 (if present, contain the protocol version number. Clients implementing this version of the) W 0 -56625 M 32.2 0 32 (spec should supply the value 2.0.0. Servers should accept any values of the form 1.x.x or 2.x.x. The remaining bits) W 0 -57675 M (are reserved for future use \(they should not be supplied by clients and should be ignored by servers\).) h -8503 8502 T R showpage $P e %%Page: 22 22 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 42570 -900 M (Page ) h (22) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 0 -825 M /Times-Bold-ISOLatin1 $ /Times-Bold & P /Times-Bold-ISOLatin1 F 1100 o f (2.3.2.5 ) h 3300 -825 M (ReadCredentialRequest) h 0 -3034 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1000 o f 58.0 0 32 (This request is made to retrieve an principal's encrypted credentials. To prevent unaudited password guessing, this) W 0 -4084 M 69.4 0 32 (structure includes an encrypted value that proves that the requester knows the password that will decrypt the struc\255) W 0 -5134 M (ture. The syntax of the request is:) h 3600 -7268 M /Courier-ISOLatin1 $ /Courier & P /Courier-ISOLatin1 F 1000 o f (ReadCredentialRequest ::= [2] IMPLICIT SEQUENCE {) h 3600 -8468 M 7072 -8468 M (flags [0] BIT STRING DEFAULT {}) h 3600 -9668 M 7072 -9668 M (principal) h ( ) h (Name,) h 3600 -10868 M 7072 -10868 M (logindata [2] BIT STRING DEFAULT {},) h 3600 -12068 M 7072 -12068 M (token [3] BIT STRING OPTIONAL) h 3600 -13268 M 7072 -13268 M (}) h 0 -15152 M /Times-Roman-ISOLatin1 F 1000 o f 13.6 0 32 (The first 24 bits of ) W /Times-Bold-ISOLatin1 F 1000 o f 13.6 0 32 (flags ) W /Times-Roman-ISOLatin1 F 1000 o f 13.6 0 32 (contains the version number of the protocol. The value 2.0.0 should be supplied. Any value) W 0 -16202 M 28.4 0 32 (of the form 1.x.x or 2.x.x should be accepted. Any additional bits are reserved for future use \(should not be supplied) W 0 -17252 M (by clients and should be ignored by servers\).) h 0 -19386 M /Times-Bold-ISOLatin1 F 1000 o f (principal ) h /Times-Roman-ISOLatin1 F 1000 o f (is the name of the principal for whom encrypted credentials are desired.) h 0 -21520 M /Times-Bold-ISOLatin1 F 1000 o f 36.6 0 32 (logindata ) W /Times-Roman-ISOLatin1 F 1000 o f 36.6 0 32 (is an encrypted value. It may only be present if the version number is 2.0.0 or higher. It must be present) W 0 -22570 M 7.1 0 32 (to read credentials which are protected by the login agent functionality of the CDC. It is constructed as a single RSA) W 0 -23620 M 19.7 0 32 (block ) W 19.7 0 32 (e) W 19.7 0 32 (ncrypted under the public key of the CDC. ) W 19.7 0 32 (The public key of the CDC is learned by some local means. Pos\255) W 0 -24670 M 7.4 0 32 (sibilities include a local configuration file or by using DASS to read and verify a chain of certificates ending with the) W 0 -25720 M 64.8 0 32 (CDC [the CDC serving a directory should have its public key listed under a name consisting of the directory name) W 0 -26770 M (with the RDN "CSS=X509"; the OID for the type CSS is 1.3.24.9.1]. T) h (he contents of the block are as follows:) h 709 -28904 M /Symbol F 1000 o f (-) h 2154 -28904 M /Times-Roman-ISOLatin1 F 1000 o f 63.7 0 32 (The low order eight bytes contain a randomly generated DES key with the last byte of the DES key placed in) W 2154 -29954 M 6.6 0 32 (the l) W 6.6 0 32 (ast ) W 6.6 0 32 (byte of the RSA block. This DES key will be used by the CDC to encrypt the response.) W 6.6 0 32 ( Key parity bits) W 2154 -31004 M (are ignored.) h 709 -33138 M /Symbol F 1000 o f (-) h 2154 -33138 M /Times-Roman-ISOLatin1 F 1000 o f 61.7 0 32 (The next ) W 61.7 0 32 (to last eight ) W 61.7 0 32 (bytes contain a ) W 61.7 0 32 (long ) W 61.7 0 32 (Posix time ) W 61.7 0 32 (with the integer time encoded as a byte string using big) W 2154 -34188 M (endian order.) h 709 -36322 M /Symbol F 1000 o f (-) h 2154 -36322 M /Times-Roman-ISOLatin1 F 1000 o f 53.8 0 32 (The next eight) W 53.8 0 32 ( ) W 53.8 0 32 (bytes) W 53.8 0 32 ( \(from the end\) ) W 53.8 0 32 (contain a hash of the password. The algorithm for computing this hash is) W 2154 -37372 M 81.4 0 32 (listed in section 4.4.2. The CDC never computes this hash; it simply compares the value it receives with the) W 2154 -38422 M (value associated with the credentials.) h 709 -40556 M /Symbol F 1000 o f (-) h 2154 -40556 M /Times-Roman-ISOLatin1 F 1000 o f (The next six) h (teen ) h (bytes ) h (\(from the end\) ) h (contain zero.) h 709 -42690 M /Symbol F 1000 o f (-) h 2154 -42690 M /Times-Roman-ISOLatin1 F 1000 o f 30.3 0 32 (The remainder of the RSA block ) W 30.3 0 32 (\(which should be the same size as the public modulus of the CDC\) c) W 30.3 0 32 (ontains a) W 2154 -43740 M 50.0 0 32 (random number. The ) W 50.0 0 32 (first ) W 50.0 0 32 (byte should be chosen to be non\255zero but so the value in the block does not exceed) W 2154 -44790 M 200.5 0 32 (the RSA modulus. Servers should ignore these bits.) W 200.5 0 32 ( This random number need not be of cryptographic) W 2154 -45840 M (strength, but should not be the same value for all encryptions. Repeating the DES key would be adequate.) h 709 -47974 M /Symbol F 1000 o f (-) h 2154 -47974 M /Times-Roman-ISOLatin1 F 1000 o f 52.6 0 32 (The byte string thus constructed is encrypted using the RSA algorithm by treating the string of bytes as a "big) W 2154 -49024 M (endian" integer and treating the integer result as "big endian" to make a string of bytes.) h 0 -51158 M /Times-Bold-ISOLatin1 F 1000 o f 88.4 0 32 (token ) W /Times-Roman-ISOLatin1 F 1000 o f 88.4 0 32 (will not be present in the initial implementation but a space is reserved in case some future implementation) W 0 -52208 M (wants to authenticate and audit the node from which a user is logging in.) h 0 -54417 M /Times-Bold-ISOLatin1 F 1100 o f (2.3.2.6 ) h 3300 -54417 M (R) h (eadCredentialProtectedResponse) h 0 -56626 M /Times-Roman-ISOLatin1 F 1000 o f 74.2 0 32 (This is the second possible response to a ReadPrinLoginRequest. It is returned when the encrypted credentials are) W 0 -57676 M (protected from password guessing by the CDC acting as a login agent. Its syntax is:) h -8503 8502 T R showpage $P e %%Page: 23 23 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 42570 -900 M (Page ) h (23) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 0 -750 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1000 o f (ReadCredentialProtectedResponse::=[16] IMPLICIT SEQUENCE {) h 0 -1800 M 5760 -1800 M (status [0] IMPLICIT CDCStatus DEFAULT success,) h 0 -2850 M 5760 -2850 M (encryptedCredential [1] BIT STRING,) h 0 -3900 M 5760 -3900 M (flags [2] BIT STRING OPTIONAL) h 0 -4950 M 5760 -4950 M (}) h 0 -7084 M 0 -9218 M /Times-Bold-ISOLatin1 $ /Times-Bold & P /Times-Bold-ISOLatin1 F 1000 o f (status) h /Times-Roman-ISOLatin1 F 1000 o f ( indicates that the request succeeded or the cause of the failure.) h 0 -11352 M /Times-Bold-ISOLatin1 F 1000 o f 101.3 0 32 (encryptedCredential ) W /Times-Roman-ISOLatin1 F 1000 o f 101.3 0 32 (contains the DASSPrivateKey structure \(defined in section 4.1\) encrypted under a DES key) W 0 -12402 M 48.6 0 32 (computed from the user's name and password as specified in section 4.4.2 and then reencrypted under the DES key) W 0 -13452 M (provided in the ReadPrinLoginRequest.) h 0 -15586 M 17.6 0 32 (The first 24 bits of ) W /Times-Bold-ISOLatin1 F 1000 o f 17.6 0 32 (flags) W /Times-Roman-ISOLatin1 F 1000 o f 17.6 0 32 (, if present, contains the version number of the protocol. ) W 17.6 0 32 (Implementers of this version of the) W 0 -16636 M 34.0 0 32 (spec should supply 2.0.0 and should accept any version number of the form 2.x.x. O) W 34.0 0 32 (ther bits are reserved for future) W 0 -17686 M (use) h ( \(they should not be supplied and they should be ignored\).) h 0 -19895 M /Times-Bold-ISOLatin1 F 1100 o f (2.3.2.7 ) h 3300 -19895 M (WriteCredentialRequest) h 0 -22104 M /Times-Roman-ISOLatin1 F 1000 o f 12.0 0 32 (This is a request to update the encrypted credential structure. It is used when a user's key or password changes. The) W 0 -23154 M (syntax of the request is:) h 3600 -25288 M /Courier-ISOLatin1 $ /Courier & P /Courier-ISOLatin1 F 1000 o f (WriteCredentialRequest ::= [17] IMPLICIT SEQUENCE {) h 3600 -26488 M 7072 -26488 M (flags [0] BIT STRING DEFAULT {},) h 3600 -27688 M 7072 -27688 M (authtoken [) h (2]) h ( BIT STRING OPTIONAL,) h 3600 -28888 M 7072 -28888 M (principal [) h (3]) h ( Name,) h 3600 -30088 M 7072 -30088 M (logindata [) h (4]) h ( BIT STRING DEFAULT {},) h 3600 -31288 M 7072 -31288 M (furtherSensitiveStuff [) h (5]) h ( BIT STRING) h 3600 -32488 M 7072 -32488 M (}) h 0 -34372 M /Times-Roman-ISOLatin1 F 1000 o f 101.6 0 32 (The first 24 bits of ) W /Times-Bold-ISOLatin1 F 1000 o f 101.6 0 32 (flags ) W /Times-Roman-ISOLatin1 F 1000 o f 101.6 0 32 (is a version number. Clients implementing this version of the spec should supply 2.0.0. ) W 0 -35422 M 110.3 0 32 (Servers should accept any value of the form) W 110.3 0 32 ( ) W 110.3 0 32 (2.x.x. Additional bits are reserved for future use \(clients should not) W 0 -36472 M (supply them and servers should ignore them\).) h 0 -38606 M /Times-Bold-ISOLatin1 F 1000 o f 124.1 0 32 (token) W /Times-Roman-ISOLatin1 F 1000 o f 124.1 0 32 (, if present, authenticates the entity making the request. A request will be accepted either from ) W 124.1 0 32 (a principal) W 0 -39656 M 39.1 0 32 (proving knowledge of the password \(see ) W /Times-Bold-ISOLatin1 F 1000 o f 39.1 0 32 (logindata) W /Times-Roman-ISOLatin1 F 1000 o f 39.1 0 32 ( below\) or a principal presenting a token in this field and satisfy\255) W 0 -40706 M 57.3 0 32 (ing the authorization policy of the CDC.) W 57.3 0 32 ( This field need not be present if logindata includes the hash2 of the pass\255) W 0 -41756 M (word \(anyone knowing the old password may set a new one\).) h 0 -43890 M /Times-Bold-ISOLatin1 F 1000 o f (principal) h /Times-Roman-ISOLatin1 F 1000 o f ( is the name of the object for which encrypted credentials should be updated.) h 0 -46024 M /Times-Bold-ISOLatin1 F 1000 o f 9.7 0 32 (logindata ) W /Times-Roman-ISOLatin1 F 1000 o f 9.7 0 32 (is encrypted as in ReadPrinLoginRequest. It proves that the requester knows the old password of the prin\255) W 0 -47074 M 0.6 0 32 (cipal to be updated \(unless the token supplied is from the user's CA\) and includes the key which encrypts furtherSen\255) W 0 -48124 M (sitiveStuff.) h 0 -50258 M /Times-Bold-ISOLatin1 F 1000 o f (furtherSensitiveStuff ) h /Times-Roman-ISOLatin1 F 1000 o f (is an encrypted field constructed as follows:) h 709 -52392 M /Symbol F 1000 o f (-) h 2154 -52392 M /Times-Roman-ISOLatin1 F 1000 o f 85.8 0 32 (The first eight bytes consist of the hash2 defined in section 4.4.2 with the last byte of the hash2 value stored) W 2154 -53442 M 66.0 0 32 (first. The CDC stores this value and compares it with the values supplied in future requests of ) W /Times-Bold-ISOLatin1 F 1000 o f 66.0 0 32 (ReadCreden\255) W 2154 -54492 M (tialRequest ) h /Times-Roman-ISOLatin1 F 1000 o f (and ) h /Times-Bold-ISOLatin1 F 1000 o f (WriteCredentialRequest.) h 709 -56626 M /Symbol F 1000 o f (-) h 2154 -56626 M /Times-Roman-ISOLatin1 F 1000 o f 40.6 0 32 (The next \(variable number of\) bytes contains a DASSPrivateKey structure \(defined in section 4.1\). This is the) W 2154 -57676 M (new credential structure that will be returned by the CDC on future ) h /Times-Bold-ISOLatin1 F 1000 o f (ReadCredentialRequest) h /Times-Roman-ISOLatin1 F 1000 o f (s.) h -8503 8502 T R showpage $P e %%Page: 24 24 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 42570 -900 M (Page ) h (24) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 709 -750 M /Symbol F 1000 o f (-) h 2154 -750 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1000 o f (The result is padded with zero bytes to a multiple of eight bytes.) h 709 -2818 M /Symbol F 1000 o f (-) h 2154 -2818 M /Times-Roman-ISOLatin1 F 1000 o f 107.4 0 32 (The entire padded string is encrypted using the key from ) W /Times-Bold-ISOLatin1 $ /Times-Bold & P /Times-Bold-ISOLatin1 F 1000 o f 107.4 0 32 (logindata ) W /Times-Roman-ISOLatin1 F 1000 o f 107.4 0 32 (or ) W /Times-Bold-ISOLatin1 F 1000 o f 107.4 0 32 (token) W /Times-Roman-ISOLatin1 F 1000 o f 107.4 0 32 ( using DES in CBC mode with) W 2154 -3868 M (zero IV.) h 0 -5936 M 57.5 0 32 (the new eight byte "hash2" defined in section 4.4.2 concatenated with the DASSPrivateKey structure encrypted un\255) W 0 -6986 M (der the new "hash1" all encrypted under the DES key included ) h (i) h (n logindata.) h 0 -9129 M /Times-Bold-ISOLatin1 F 1100 o f (2.3.2.8 ) h 3300 -9129 M (HereIsStatus) h 0 -11272 M /Times-Roman-ISOLatin1 F 1000 o f (This is the response message to ) h (ill\255formed ) h (requests ) h (and requests ) h (that only return a status and no data. It's syntax is:) h 3600 -13340 M /Courier-ISOLatin1 $ /Courier & P /Courier-ISOLatin1 F 1000 o f (HereIsStatus ::= [1] IMPLICIT SEQUENCE {) h 3600 -14540 M 7072 -14540 M (status [0] IMPLICIT CDCStatus DEFAULT success) h 3600 -15740 M 7072 -15740 M (}) h 0 -17558 M /Times-Bold-ISOLatin1 F 1000 o f (status) h /Times-Roman-ISOLatin1 F 1000 o f ( indicates success or the cause of the failure.) h 0 -19701 M /Times-Bold-ISOLatin1 F 1100 o f (2.3.2.9 ) h 3300 -19701 M (Status Codes) h 0 -21844 M /Times-Roman-ISOLatin1 F 1000 o f 31.0 0 32 (The following are the CDCStatus codes that can be returned by servers. Not all of these values are possible with all) W 0 -22894 M (calls, and some of the status codes are not possible with any of the calls described in this document.) h 3600 -24962 M /Courier-ISOLatin1 F 1000 o f (CDCStatus ::= INTEGER {) h 3600 -26780 M 7072 -26780 M (success\(0\),) h 3600 -28598 M 7072 -28598 M (accessDenied\(1\),) h 3600 -30416 M 7072 -30416 M (wrongCDC\(2\),) h 15893 -30416 M 19440 -30416 M (\255\255this CDC does not store the) h 3600 -32234 M 7072 -32234 M 8511 -32234 M 15893 -32234 M 19440 -32234 M (\255\255requested information) h 3600 -34052 M 7072 -34052 M (unrecognizedCA\(3\),) h 3600 -35870 M 7072 -35870 M (unrecognizedPrincipal\(4\),) h 3600 -37688 M 7072 -37688 M (decodeRequestError\(5\),) h 23083 -37688 M (\255\255invalid BER) h 3600 -39506 M 7072 -39506 M (illegalRequest\(6\),) h 19440 -39506 M (\255\255request not recognised) h 3600 -41324 M 7072 -41324 M (objectDoesNotExist\(7\),) h 3600 -43142 M 7072 -43142 M (illegalAttribute\(8\),) h 3600 -44960 M 7072 -44960 M (notPrimaryCDC\(9\),) h 19440 -44960 M (\255\255write requests not accepted) h 3600 -46778 M 7072 -46778 M 8511 -46778 M 15893 -46778 M 19440 -46778 M (\255\255at this CDC replica) h 3600 -48596 M 7072 -48596 M (authenticationFailure\(11\),) h 3600 -50414 M 7072 -50414 M (incorrectPassword\(12\),) h 3600 -52232 M 7072 -52232 M (objectAlreadyExists\(13\),) h 3600 -54050 M 7072 -54050 M (objectWouldBeOrphan\(15\),) h 3600 -55868 M 7072 -55868 M (objectIsPermanent\(16\),) h 3600 -57686 M 7072 -57686 M (objectIsTentative\(17\),) h -8503 8502 T R showpage $P e %%Page: 25 25 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 42570 -900 M (Page ) h (25) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 3600 -750 M 7072 -750 M /Courier-ISOLatin1 $ /Courier & P /Courier-ISOLatin1 F 1000 o f (parentIsTentative\(18\),) h 3600 -2691 M 7072 -2691 M (certificateNotFound\(19\),) h 3600 -4632 M 7072 -4632 M (attributeNotFound\(20\),) h 3600 -6573 M 7072 -6573 M (ioErrorOnCertifDatabase\(100\),) h 3600 -8514 M 7072 -8514 M (databaseFull\(101\),) h 3600 -10455 M 7072 -10455 M (serverInternalError\(102\),) h 3600 -12396 M 7072 -12396 M (serverFatalError\(103\),) h 3600 -14337 M 7072 -14337 M (insufficientResources\(104\)) h 3600 -16278 M 7072 -16278 M (}) h 0 -20269 M /Times-Bold-ISOLatin1 $ /Times-Bold & P /Times-Bold-ISOLatin1 F 1600 o f (3 ) h 1417 -20269 M (Services Provided) h 0 -22960 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1000 o f 22.2 0 32 (This section specifies the services provided by DASS in terms of abstract interfaces and a model implementation. A) W 0 -24010 M 159.9 0 32 (particular implementation may support only a subset of these services and may provide them through interfaces) W 0 -25060 M 95.2 0 32 (which combine functions and supply some parameters implicitly. The specific calling interfaces are in some cases) W 0 -26110 M 47.1 0 32 (language and operating system specific. An actual implementation may choose, for example, to structure interfaces) W 0 -27160 M 88.6 0 32 (so that security contexts are established and then passed implicitly in calls rather than explicitly including them in) W 0 -28210 M 28.3 0 32 (every call. It might also bundle keys into opaque structures to be used with supplied encryption and decryption rou\255) W 0 -29260 M 100.3 0 32 (tines in order to enhance security and modularity and better comply with export regulations. Annex ) W 100.3 0 32 (B ) W 100.3 0 32 (describes a) W 0 -30310 M 91.4 0 32 (Portable API designed so that applications using a limited subset of the capabilities of DASS can be easily ported) W 0 -31360 M 88.1 0 32 (between operating systems and between DASS and Kerberos based environments. The model implementation de\255) W 0 -32410 M 32.9 0 32 (scribes data structures which include cached values to enhance performance. Implementations may choose different) W 0 -33460 M 122.6 0 32 (contents or different caching strategies so long as the same sequence of calls would produce the same output for) W 0 -34510 M (some caching policy.) h 0 -36701 M 46.3 0 32 (DASS operates on four kinds of data structures: Certificates, Credentials, Tokens, and Certification Authority State.) W 0 -37751 M 161.6 0 32 (Certificates and Tokens are passed between implementations and thus their exact format must be architecturally) W 0 -38801 M 54.3 0 32 (specified. This detailed bit\255for\255bit specification is in section ) W 54.3 0 32 (4) W 54.3 0 32 (. Credentials generally exist only within a single node) W 0 -39851 M 63.5 0 32 (and their format is therefore not specified here. The contents of all of these data structures is listed below followed) W 0 -40901 M (by the algorithms for manipulating them.) h 0 -43092 M 30.8 0 32 (There are three kinds of services provided by DASS: Certificate Maintenance, Credential Maintenance, and Authen\255) W 0 -44142 M 78.9 0 32 (tication. The first two kinds exist only in support of the third. Certificate maintenance functions maintain the data\255) W 0 -45192 M 25.5 0 32 (base of public keys in the naming service. These functions tend to be fairly specialized and may not be supported on) W 0 -46242 M 56.5 0 32 (all platforms. Before authentication can take place, both authenticating principals must have constructed credentials) W 0 -47292 M 26.6 0 32 (structures. These are built using the Credential Maintenance calls. The Authentication functions use credential infor\255) W 0 -48342 M 58.1 0 32 (mation and certificates, produce and consume authentication tokens and tell the two communicating parties one an\255) W 0 -49392 M (other's names.) h 0 -51883 M /Times-Bold-ISOLatin1 F 1400 o f (3.1 ) h 2126 -51883 M (Certificate Contents) h 0 -54524 M /Times-Roman-ISOLatin1 F 1000 o f 71.7 0 32 (For purposes of this architecture, a certificate is a data structure posted in the naming service which proclaims that) W 0 -55574 M 111.9 0 32 (knowledge of the private key associated with a stated public key authenticates a named principal. Certificates are) W 0 -56624 M 86.4 0 32 ("signed" by some authority, are readable by anyone, and can be verified by anyone knowing the public key of the) W 0 -57674 M (authority.) h -8503 8502 T R showpage $P e %%Page: 26 26 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 42570 -900 M (Page ) h (26) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 0 -750 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1000 o f 11.1 0 32 (DASS organizes the CA trust hierarchy around the naming hierarchy. There exists a trusted authority associated with) W 0 -1800 M 54.8 0 32 (each directory in the naming hierarchy. Generally, each authority creates certificates stating the public keys of each) W 0 -2850 M 35.0 0 32 (of its children \(in the naming hierarchy\) and the public key of its parent \(in the naming hierarchy\). In this way, any\255) W 0 -3900 M 8.9 0 32 (one knowing the public ) W 8.9 0 32 (key ) W 8.9 0 32 (of any authority can learn the public key of any other by "walking the tree". In order that) W 0 -4950 M 77.1 0 32 (principals may authenticate even when all of their ancestor directories do not participate in DASS, authorities may) W 0 -6000 M 67.4 0 32 (also create "cross\255certificates" which certify the public key of a named entity which is not a descendent. Rules for) W 0 -7050 M 117.5 0 32 (finding and following these cross\255certificates are described in the Get_Pub_Keys routines. Every principal is ex\255) W 0 -8100 M 53.5 0 32 (pected to know the public key of the CA of the directory in which it is named. This must be securely learned when) W 0 -9150 M 104.6 0 32 (the principal is initialized and may be maintained in some form of local storage or by having the principal sign a) W 0 -10200 M (certificate listing the name and public key of its parent and posting that certificate in the naming service.) h 0 -12380 M 33.8 0 32 (The syntax and content of DASS certificates are defined in terms of X.509 \(Directory \255 Authentication Framework\). ) W 0 -13430 M (While that standard prescribes a single syntax for certificates, DASS considers certificates to be of one of six types:) h 709 -15610 M /Symbol F 1000 o f (-) h 2154 -15610 M /Times-Roman-ISOLatin1 F 1000 o f 56.9 0 32 (Normal Principal certificates are signed by a CA and certify the name and public key of a principal where the) W 2154 -16660 M (name of the CA is a prefix of the name of the principal and is one component shorter.) h 709 -18840 M /Symbol F 1000 o f (-) h 2154 -18840 M /Times-Roman-ISOLatin1 F 1000 o f 99.5 0 32 (Trusted Authority certificates are signed by an ordinary principal and certify the name and public key of the) W 2154 -19890 M (principal's CA \(i.e. the CA whose name is a prefix of the principal's name and is one component shorter\).) h 709 -22070 M /Symbol F 1000 o f (-) h 2154 -22070 M /Times-Roman-ISOLatin1 F 1000 o f 88.8 0 32 (Child certificates are signed by a CA and certify the name and public key of a CA of a descendent directory) W 2154 -23120 M (\(i.e. where the name of the issuing CA is a prefix of the name of the subject CA and is one component shorter\).) h 709 -25300 M /Symbol F 1000 o f (-) h 2154 -25300 M /Times-Roman-ISOLatin1 F 1000 o f 14.5 0 32 (Parent certificates are signed by a CA and certify the name and public key of the CA of its parent directory \(i.e.) W 2154 -26350 M (whose name is a prefix of the name of the issuer and is one component shorter\).) h 709 -28530 M /Symbol F 1000 o f (-) h 2154 -28530 M /Times-Roman-ISOLatin1 F 1000 o f 33.0 0 32 (Cross certificates are signed by a CA and certify the name and public key of a CA of a directory where neither) W 2154 -29580 M (name is a prefix of the other.) h 709 -31760 M /Symbol F 1000 o f (-) h 2154 -31760 M /Times-Roman-ISOLatin1 F 1000 o f 51.7 0 32 (Self certificates are signed by a principal or a CA and the issuer and subject name are the same. They are not) W 2154 -32810 M 51.0 0 32 (used in this version of the architecture but are defined as a convenient data structure in which in which imple\255) W 2154 -33860 M 58.4 0 32 (mentations may insecurely pass public keys and they may be used in the future in certain key roll\255over proce\255) W 2154 -34910 M (dures.) h 0 -37090 M 113.4 0 32 (It is intended that some future version of the architecture relax the restrictions above where prefixes must be one) W 0 -38140 M 0.9 0 32 (component shorter. Being able to handle ) W 0.9 0 32 (certifi) W 0.9 0 32 (cates) W 0.9 0 32 ( where prefixes are two or more components shorter ) W 0.9 0 32 (complicates) W 0 -39190 M (the logic of treewalking somewhat and is not immediately necessary, so such certificates are disallowed for now.) h 0 -41370 M 67.7 0 32 (The syntax of certificates is defined in section ) W 67.7 0 32 (4) W 67.7 0 32 (. For purposes of the algorithms which follow, the following is the) W 0 -42420 M (portion of the content which is used \(names in brackets refer to the field names in the ASN.1 encoded structure\):) h 709 -44600 M /Symbol F 1000 o f (-) h 2154 -44600 M /Times-Roman-ISOLatin1 F 1000 o f (UID of the issuer \(optional\)) h 709 -46780 M /Symbol F 1000 o f (-) h 2154 -46780 M /Times-Roman-ISOLatin1 F 1000 o f (Full name of the issuer \(the authority or principal signing\) [issuer]) h 709 -48960 M /Symbol F 1000 o f (-) h 2154 -48960 M /Times-Roman-ISOLatin1 F 1000 o f (UID of the subject \(optional\)) h 709 -51140 M /Symbol F 1000 o f (-) h 2154 -51140 M /Times-Roman-ISOLatin1 F 1000 o f (Full name of the subject \(the authority or principal whose key is being certified\) [subject]) h 709 -53320 M /Symbol F 1000 o f (-) h 2154 -53320 M /Times-Roman-ISOLatin1 F 1000 o f (Public Key of the subject [subjectPublicKey]) h 709 -55500 M /Symbol F 1000 o f (-) h 2154 -55500 M /Times-Roman-ISOLatin1 F 1000 o f (Period of validity \(effective date and expiration date\) [valid]) h 709 -57680 M /Symbol F 1000 o f (-) h 2154 -57680 M /Times-Roman-ISOLatin1 F 1000 o f (Signature over the entire content of the certificate created using the private key of the issuer.) h -8503 8502 T R showpage $P e %%Page: 27 27 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 42570 -900 M (Page ) h (27) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 0 -750 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1000 o f 76.8 0 32 (When parsing a certificate, the reader compares the two name fields to determine what type of certificate it is. For) W 0 -1800 M 17.1 0 32 (Parent and Trusted Authority certificates, the names are ignored for purposes of all further processing. For Child and) W 0 -2850 M 16.7 0 32 (Normal Principal certificates, only the suffix by which the child's name is longer than the parent's is used for further) W 0 -3900 M 19.5 0 32 (processing. The reason for this is so that if a branch of the namespace is renamed, all of the certificates in the moved) W 0 -4950 M 61.1 0 32 (branch remain valid for purposes of DASS processing. The only purposes of having full names in these certificates) W 0 -6000 M 4.1 0 32 (are \(1\) to comply with X.509, \(2\) for possible interoperability with other architectures using different algorithms, and) W 0 -7050 M 4.8 0 32 (\(3\) to allow principals to securely store their own names in trusted authority certificates in the case where they do not) W 0 -8100 M (have enough local storage to keep it.) h 0 -10495 M /Times-Bold-ISOLatin1 $ /Times-Bold & P /Times-Bold-ISOLatin1 F 1400 o f (3.2 ) h 2126 -10495 M (Encrypted Private Key Structure) h 0 -13040 M /Times-Roman-ISOLatin1 F 1000 o f 45.1 0 32 (In order that humans need only remember a password rather than a full set of credentials, and also to make installa\255) W 0 -14090 M 48.9 0 32 (tion of nodes and servers easier, there is a defined format for encrypting RSA secrets under a password and posting) W 0 -15140 M 96.3 0 32 (in the naming service. This structure need only exist when passwords are used to protect RSA secrets; for servers) W 0 -16190 M (which keep their secrets in non\255volatile memory or users who carry smart cards, they are unnecessary.) h 0 -18285 M 48.8 0 32 (This structure includes the RSA private/public key pair encrypted under a DES key. The DES key is computed as a) W 0 -19335 M 4.3 0 32 (one\255way hash of the password. This structure also optionally includes the UID of the principal. It is needed only if a) W 0 -20385 M (single RSA key is shared by multiple principals \(with multiple UIDs\).) h 0 -22480 M 60.3 0 32 (Since this structure is posted in the name service and may be used by multiple implementations, its format must be) W 0 -23530 M (architecturally defined. The exact encoding is listed in section ) h (4) h (.) h 0 -25925 M /Times-Bold-ISOLatin1 F 1400 o f (3.3 ) h 2126 -25925 M (Authentication Tokens) h 0 -28470 M /Times-Roman-ISOLatin1 F 1000 o f 30.1 0 32 (This section of the document defines the contents of the authentication tokens which are produced and consumed by) W 0 -29520 M 34.6 0 32 (Create_token and Accept_token. With DASS, the token passed from the client to the server is complex, with a large) W 0 -30570 M 57.5 0 32 (number of optional parts, while the token passed from server to client \(in the case of mutual authentication only\) is) W 0 -31620 M (small and simple.) h 0 -33715 M 64.3 0 32 (The authentication token potentially contains a large number of parts, most of which are optional depending on the) W 0 -34765 M 44.5 0 32 (type of authentication. The following defines the content and purpose of each of the parts, but does not describe the) W 0 -35815 M (actual encoding \(in the belief that such details would be distracting\). The encoding is in section ) h (4) h (.) h 0 -37910 M 44.8 0 32 (The authentication process begins when the initiator calls Create_token with the name of the target. This routine re\255) W 0 -38960 M 99.2 0 32 (turns an authentication token, which is sent to the target. The target calls Accept_token passing it the token. Both) W 0 -40010 M 94.1 0 32 (routines produce a second "mutual authentication token". The target returns this to the initiator to prove that it re\255) W 0 -41060 M (ceived the token.) h 0 -43305 M /Times-Bold-ISOLatin1 F 1200 o f (3.3.1 ) h 2834 -43305 M (Initial Authentication Token) h 0 -45500 M /Times-Roman-ISOLatin1 F 1000 o f 46.9 0 32 (The components of the initial authentication token are \(names in brackets refer to the field names within the ASN.1) W 0 -46550 M (encoded structures defined in section 4\):) h 709 -48645 M (a\)) h 2154 -48645 M 3.0 0 32 (Encrypted Shared Key \255 [authenticatingKey] \255 This is a Shared \(DES\) key encrypted under the public key of the) W 2154 -49695 M 75.4 0 32 (target. Also included in the encrypted structure is a validity interval and a recognizable pattern so that the re\255) W 2154 -50745 M (ceiver can tell whether the decryption was successful.) h 709 -52840 M (b\)) h 2154 -52840 M 23.1 0 32 (Login Ticket \255 [sourcePrincipal.userTicket] \255 This is a "delegation certificate" signed by a principal's long term) W 2154 -53890 M (private key delegating to a short term public key. Its "active ingredients" are: ) h 2154 -55785 M (1\)) h 3600 -55785 M (UID of delegating principal [subjectUID]) h 2154 -57680 M (2\)) h 3600 -57680 M (Period of validity [validity]) h -8503 8502 T R showpage $P e %%Page: 28 28 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 42570 -900 M (Page ) h (28) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 2154 -750 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1000 o f (3\)) h 3600 -750 M (Delegation public key [delegatingPublicKey]) h 2154 -2609 M (4\)) h 3600 -2609 M (Signature by private key of principal) h 3600 -3659 M 51.6 0 32 (The existence of this signature is testimony that the private key corresponding to the delegation public key) W 3600 -4709 M (speaks for the user during the validity interval.) h 3600 -5759 M 3600 -6809 M 79.9 0 32 (This data structure is optional and will be missing if the authentication is only on behalf of a Local User\255) W 3600 -7859 M (name on a node \(i.e. proxy\) rather than on behalf of a real principal with a real key.) h 709 -9918 M (c\)) h 2154 -9918 M 51.2 0 32 (Shared Key Ticket \255 [sourcePrincipal.sharedKeyTicketSignature] \255 This is a signature of the Encrypted Shared) W 2154 -10968 M 92.7 0 32 (Key by the Delegation Public key in the Login Ticket. The existence of this signature is testimony that the) W 2154 -12018 M (DES key in the encrypted shared key speaks for the user.) h 2154 -14077 M 59.6 0 32 (This data structure is optional and will be missing if the authentication is only on behalf of a Local Username) W 2154 -15127 M 36.1 0 32 (on a node \(i.e. proxy\) rather than on behalf of a real principal with a real key. It will also be missing if delega\255) W 2154 -16177 M (tion is taking place.) h 709 -18236 M (d\)) h 2154 -18236 M 49.1 0 32 (Node Ticket \255 [sourceNode.nodeTicketSignature] \255 This is a signature of the Encrypted Shared key and a "Lo\255) W 2154 -19286 M 50.2 0 32 (cal Username" on the host node by the node's private key. The existence of this signature is testimony by the) W 2154 -20336 M (node that the DES key in the encrypted shared key speaks for the named account on that node.) h 709 -22395 M (e\)) h 2154 -22395 M 49.5 0 32 (Delegator \255 [sourcePrincipal.delegator] \255 This data structure contains the private login key encrypted under the) W 2154 -23445 M (Shared key. It is optional and is present only if the initiator is delegating to the destination.) h 709 -25504 M (f\)) h 2154 -25504 M 6.8 0 32 (Authenticator \255 [authenticatorData] \255 This data structure contains a timestamp and a message digest of the chan\255) W 2154 -26554 M (nel bindings signed by the Shared Key. It is always present.) h 709 -28613 M (g\)) h 2154 -28613 M 7.8 0 32 (Principal name \255 [sourcePrincipal.userName] \255 This is the name of the initiating principal. It is optional and will) W 2154 -29663 M 94.3 0 32 (be missing for strong proxy where bits on the wire are at a premium and where the destination is capable of) W 2154 -30713 M (independently constructing the name.) h 709 -32772 M (h\)) h 2154 -32772 M 39.2 0 32 (Node name \255 [sourceNode.nodeName] \255 This is the name of the initiating node. It is optional and will be miss\255) W 2154 -33822 M 33.0 0 32 (ing for strong proxy where bits on the wire are at a premium and the name is present elsewhere in the message) W 2154 -34872 M (being passed.) h 709 -36931 M (i\)) h 2154 -36931 M 21.4 0 32 (Local Username \255 [sourceNode.username] \255 This is the local user name on the initiating node. It is optional and) W 2154 -37981 M 67.3 0 32 (will be missing for strong proxy where bits on the wire are at a premium and where the name is present else\255) W 2154 -39031 M (where in the message being passed.) h 0 -41240 M /Times-Bold-ISOLatin1 $ /Times-Bold & P /Times-Bold-ISOLatin1 F 1200 o f (3.3.2 ) h 2834 -41240 M (Mutual Authentication Token) h 0 -43399 M /Times-Roman-ISOLatin1 F 1000 o f 46.8 0 32 (The authentication buffer sent from the target to the initiator \(in the case of mutual authentication\) is much simpler.) W 0 -44449 M 18.1 0 32 (It contains only the timestamp taken from the authenticator encrypted under the Shared Key. It is ASN.1 encoded to) W 0 -45499 M (allow for future extensions. ) h 0 -47858 M /Times-Bold-ISOLatin1 F 1400 o f (3.4 ) h 2126 -47858 M (Credentials) h 0 -50367 M /Times-Roman-ISOLatin1 F 1000 o f 106.8 0 32 ( DASS organizes its internal state with Credentials structures. There are many kinds of information which can be) W 0 -51417 M 76.7 0 32 (stored in credentials. Rather than making a different kind of data structure for each kind of data, DASS provides a) W 0 -52467 M (single credentials structure where most of its fields are optional.) h 0 -54526 M 87.9 0 32 (Operating systems must provide some mechanism for having several processes share credentials. An example of a) W 0 -55576 M 18.5 0 32 (mechanism for doing this would be for credentials to be stored in a file and the name of the file is used as a "handle") W 0 -56626 M 84.0 0 32 (by all processes which use those credentials. Some of the calls which follow cause credentials structures to be up\255) W 0 -57676 M 86.8 0 32 (dated. It is important to the performance of a system that updates to credentials \(such as occur during the routines) W -8503 8502 T R showpage $P e %%Page: 29 29 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 42570 -900 M (Page ) h (29) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 0 -750 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1000 o f 84.5 0 32 (Verify_Principal_Name and Verify_Node_Name, where the caches are updated\) be visible to all processes sharing) W 0 -1800 M (those credentials.) h 0 -3863 M 20.4 0 32 (In many of the calls which follow, the credentials passed may be labeled: claimant credentials, verifier credentials or) W 0 -4913 M 52.9 0 32 (some such. This indicates whose credentials are being passed rather than a type of credentials. DASS supports only) W 0 -5963 M 104.4 0 32 (one type of credentials, though the fields present in the credentials of one sort of principal may be quite different) W 0 -7013 M (from those present in the credentials of another.) h 0 -9076 M 33.1 0 32 (An implementation may choose to support multiple kinds of credentials structures each of which will support only a) W 0 -10126 M 33.8 0 32 (subset of the functions available if it is not implementing the full architecture. This would be the case, for example,) W 0 -11176 M 48.6 0 32 (if an implementation did not support the case where a server both received requests from other principals and made) W 0 -12226 M (requests on its own behalf using a single set of credentials.) h 0 -14289 M 39.5 0 32 (The following are a list of the fields that may be contained in a credentials structure. They are grouped according to) W 0 -15339 M (common usage.) h 0 -17552 M /Times-Bold-ISOLatin1 $ /Times-Bold & P /Times-Bold-ISOLatin1 F 1200 o f (3.4.1 ) h 2834 -17552 M (Claimant information) h 0 -19715 M /Times-Roman-ISOLatin1 F 1000 o f (This is the information used when the holder of these credentials is requesting something. It includes: ) h 709 -21778 M (a\)) h 2154 -21778 M (Full X.500 name of the principal) h 709 -23841 M (b\)) h 2154 -23841 M (Public Key of the principal) h 709 -25904 M (c\)) h 2154 -25904 M (Login Ticket \255 a login ticket contains:) h 2154 -27767 M (1\)) h 3600 -27767 M (the UID of the principal) h 2154 -29630 M (2\)) h 3600 -29630 M (a period of validity \(effective date & expiration date\)) h 2154 -31493 M (3\)) h 3600 -31493 M (a delegation public key) h 2154 -33356 M (4\)) h 3600 -33356 M (a signature of the ticket contents by the principal's long term key) h 709 -35419 M (d\)) h 2154 -35419 M (Delegati) h (on ) h (Private Key \(corresponding to the public key in ) h (c) h (3) h (\)) h 709 -37482 M (e\)) h 2154 -37482 M 19.8 0 32 (Encrypted Shared Key \(present only when credentials were created by accept_token) W 19.8 0 32 (; this information is needed) W 2154 -38532 M (to verify a node ticket after credentials are accepted\)) h 0 -40745 M /Times-Bold-ISOLatin1 F 1200 o f (3.4.2 ) h 2834 -40745 M (Verifier information) h 0 -42908 M /Times-Roman-ISOLatin1 F 1000 o f 43.8 0 32 (This is the information needed by a server to decrypt incoming requests. It is also used by generate_server_ticket to) W 0 -43958 M (generate a login ticket. ) h 709 -46021 M (a\)) h 2154 -46021 M (RSA private key.) h 0 -48234 M /Times-Bold-ISOLatin1 F 1200 o f (3.4.3 ) h 2834 -48234 M (Trusted Authority) h 0 -50397 M /Times-Roman-ISOLatin1 F 1000 o f 104.7 0 32 (This is information used to seed the walk of the CA hierarchy to reliably find the public key\(s\) associated with a) W 0 -51447 M 79.7 0 32 (name. Normally, the trusted authority in a set of credentials will be the directory parent of the principal named in) W 0 -52497 M 62.0 0 32 (Claimant information. In some circumstances, it may instead be the directory parent of the node on which the cre\255) W 0 -53547 M (dentials reside.) h 709 -55610 M (a\)) h 2154 -55610 M (Full X.500 name of a CA) h 709 -57673 M (b\)) h 2154 -57673 M (Corresponding RSA Public Key) h -8503 8502 T R showpage $P e %%Page: 30 30 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 42570 -900 M (Page ) h (30) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 709 -750 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1000 o f (c\)) h 2154 -750 M (Corresponding UID) h 0 -2989 M /Times-Bold-ISOLatin1 $ /Times-Bold & P /Times-Bold-ISOLatin1 F 1200 o f (3.4.4 ) h 2834 -2989 M (Remote node authentication) h 0 -5178 M /Times-Roman-ISOLatin1 F 1000 o f 66.7 0 32 (This information is present only for credentials generated by "Accept_token". It includes information about any re\255) W 0 -6228 M (mote node which vouched for the request.) h 709 -8317 M (a\)) h 2154 -8317 M (Full X.500 name of the node) h 709 -10406 M (b\)) h 2154 -10406 M (Local Username on the node) h 709 -12495 M (c\)) h 2154 -12495 M (Node ticket.) h 0 -14734 M /Times-Bold-ISOLatin1 F 1200 o f (3.4.5 ) h 2834 -14734 M (Local node credentials) h 0 -16923 M /Times-Roman-ISOLatin1 F 1000 o f 21.7 0 32 (This information is added by Combine_credentials, and is used by Create_token to add a node signature to outbound) W 0 -17973 M (requests.) h 709 -20062 M (a\)) h 2154 -20062 M (Full X.500 name of the node) h 709 -22151 M (b\)) h 2154 -22151 M (Local Username on the node) h 709 -24240 M (c\)) h 2154 -24240 M (RSA private key of the node) h 0 -26479 M /Times-Bold-ISOLatin1 F 1200 o f (3.4.6 ) h 2834 -26479 M (Cached outgoing contexts) h 0 -28668 M /Times-Roman-ISOLatin1 F 1000 o f 0.9 0 32 (There may be one \(or more\) such structures for each server for which this principal has created authentication tokens.) W 0 -29718 M 34.6 0 32 (These represent a cache: they may be discarded at any time with no effect except on performance. For each associa\255) W 0 -30768 M (tion, the following information is kept: ) h 709 -32857 M (a\)) h 2154 -32857 M (Destination RSA Public Key \(index\)) h 709 -34946 M (b\)) h 2154 -34946 M (Encrypted Shared key) h 709 -37035 M (c\)) h 2154 -37035 M (Shared Key Ticket \(optional, included if there has been a non\255delegating connection\)) h 709 -39124 M (d\)) h 2154 -39124 M (Node Ticket) h 709 -41213 M (e\)) h 2154 -41213 M (Delegator \(optional, included if there has been a delegating connection\)) h 709 -43302 M (f\)) h 2154 -43302 M (Validity interval) h 709 -45391 M (g\)) h 2154 -45391 M (Shared Key) h 0 -47630 M /Times-Bold-ISOLatin1 F 1200 o f (3.4.7 ) h 2834 -47630 M (Cached Incoming Contexts) h 0 -49819 M /Times-Roman-ISOLatin1 F 1000 o f 41.0 0 32 (There may be one such structure for each client from which this server has received an authentication token.) W n 0.666 o f 0.0 448.0 m 41.0 0 32 (1) W 0 -448.0 m n 1.502 o f 41.0 0 32 ( These) W 0 -50869 M 18.4 0 32 (represent a cache: they may be discarded at any time with no effect except on performance. For each association, the) W 0 -51919 M (following information is kept: ) h 709 -54008 M (a\)) h 2154 -54008 M (Encrypted Shared key \(index\)) h 709 -56097 M (b\)) h 2154 -56097 M (Shared Key) h -8503 8502 T R S 8496 -66304 T N 0 G 576 -900 M /Times-Roman-ISOLatin1 F 800 o f 0.0 358.0 m (1) h 0 -358.0 m 976 -900 M 69.9 0 32 (An implementation may choose to keep one System\255wide Cache \(and list of incoming timestamps\). While it is unlikely that the same En\255) W 576 -1800 M 32.5 0 32 (crypted Shared Key will result from encryption of Shared keys generated by different clients or for different servers, an implementation must) W 576 -2600 M 65.9 0 32 (ensure that an entry made for one client/server can not be reused by another client/server. Similarly an implementation may choose to keep) W 576 -3400 M 356.1 0 32 (separate caches for the Shared Key/Validity Interval/Delegation Public Key, the Nodename/UID/key/username and the Principal) W 576 -4200 M (name/UID/key.) h -8496 66304 T R showpage $P e %%Page: 31 31 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 42570 -900 M (Page ) h (31) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 709 -750 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1000 o f (c\)) h 2154 -750 M (Validity Interval) h 709 -2805 M (d\)) h 2154 -2805 M (Full X.500 name of Client Principal) h 709 -4860 M (e\)) h 2154 -4860 M (UID of Client Principal) h 709 -6915 M (f\)) h 2154 -6915 M (Public Key of Client Principal) h 709 -8970 M (g\)) h 2154 -8970 M (Name of Client Node) h 709 -11025 M (h\)) h 2154 -11025 M (UID of Client Node) h 709 -13080 M (i\)) h 2154 -13080 M (Public Key of Client Node) h 709 -15135 M (j\)) h 2154 -15135 M (Local Username on Client node) h 709 -17190 M (k\)) h 2154 -17190 M (Delegation Public key of Client Principal's Login Ticket) h 0 -19245 M 111.8 0 32 (The Name, UID and Public key of the Principal are all entered together once the Login Ticket has been verified.) W 0 -20295 M 134.9 0 32 (Similarly the Node name, Node key and Username are entered together once the Node Ticket has been verified.) W 0 -21345 M (These pieces of information are only present if they have been verified.) h 0 -23550 M /Times-Bold-ISOLatin1 $ /Times-Bold & P /Times-Bold-ISOLatin1 F 1200 o f (3.4.8 ) h 2834 -23550 M (Received Authenticators) h 0 -25705 M /Times-Roman-ISOLatin1 F 1000 o f 57.5 0 32 (A record of all the authenticators received is kept. This is used to detect replayed messages) W n 0.666 o f 0.0 448.0 m 57.5 0 32 (2) W 0 -448.0 m n 1.502 o f 57.5 0 32 (. The entries in this list) W 0 -26755 M 69.9 0 32 (may be deleted when the timestamp is old enough that they would no longer be accepted. This list is kept separate) W 0 -27805 M 51.6 0 32 (from the Cached incoming context in order that the information in the cached incoming context can be discarded at) W 0 -28855 M 57.6 0 32 (any time. An implementation could choose to save these timestamps with the cached incoming context if it ensures) W 0 -29905 M 28.5 0 32 (that it can never purge entries from the cache before the timestamp has aged sufficiently. This list is accessed based) W 0 -30955 M 37.1 0 32 (on an extract from the signature from the Authenticator. The extract must be at least 64 bits, to ensure that it is very) W 0 -32005 M (unlikely that 2 authenticators will be received with matching signatures.) h 709 -34060 M (a\)) h 2154 -34060 M (Extract from Signature from Authenticator) h 709 -36115 M (b\)) h 2154 -36115 M (Timestamp) h 0 -38170 M 46.8 0 32 (If an implementation runs out of space to store additional authenticators, it may either reject the token which would) W 0 -39220 M 32.4 0 32 (have overflowed the table or it may temporarily narrow the allowed clock skew to allow it to free some of the space) W 0 -40270 M 106.5 0 32 (used to hold "old" authenticators. The first strategy will always falsely reject tokens; the second may cause false) W 0 -41320 M (rejection of tokens if the allowed clock skew gets narrowed beyond the actual clock skew in the network.) h 0 -43675 M /Times-Bold-ISOLatin1 F 1400 o f (3.5 ) h 2126 -43675 M (CA State) h 0 -46180 M /Times-Roman-ISOLatin1 F 1000 o f 5.0 0 32 (The CA needs to maintain some internal state in order to generate certificates. This internal state must be protected at) W 0 -47230 M 40.7 0 32 (all times, and great care must be taken to prevent its being disclosed. A CA may choose to maintain additional state) W 0 -48280 M 29.6 0 32 (information in order to enhance security. In particular, it is the responsibility of the CA to assure that the same UID) W 0 -49330 M 82.6 0 32 (is not serially reused by two holders of a single name. In most cases, this can be done by creating the UID at the) W 0 -50380 M 35.3 0 32 (time the user is registered. To securely permit users to keep their UIDs when transferring from another CA, the CA) W 0 -51430 M 56.1 0 32 (must keep a record of any UIDs used by previous holders of the name. Since actions of a CA are so security sensi\255) W 0 -52480 M 44.1 0 32 (tive, the CA should also maintain an audit trail of all certificates signed so that a history can be reconstructed in the) W 0 -53530 M 46.9 0 32 (event of a compromise. Finally, for the convenience of the CA operator, the CA should record a list of the directo\255) W 0 -54580 M 30.6 0 32 (ries for which it is responsible and their UIDs so that these need not be entered whenever the CA is to be used. The) W 0 -55630 M (state includes at least the following information:) h 709 -57685 M /Symbol F 1000 o f (-) h 2154 -57685 M /Times-Roman-ISOLatin1 F 1000 o f (Public Key of CA) h -8503 8502 T R S 8496 -68704 T N 0 G 576 -900 M /Times-Roman-ISOLatin1 F 800 o f 0.0 358.0 m (2) h 0 -358.0 m 976 -900 M 39.3 0 32 (This list must be common to all targets that could accept the same authenticator \(channel bindings will prevent other targets from accepting) W 576 -1800 M (the same authenticator\). This includes different `servers' sharing the same key.) h -8496 68704 T R showpage $P e %%Page: 32 32 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 42570 -900 M (Page ) h (32) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 709 -750 M /Symbol F 1000 o f (-) h 2154 -750 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1000 o f (Private Key of CA) h 709 -2819 M /Symbol F 1000 o f (-) h 2154 -2819 M /Times-Roman-ISOLatin1 F 1000 o f (Serial number of next certificate to be issued) h 0 -5188 M /Times-Bold-ISOLatin1 $ /Times-Bold & P /Times-Bold-ISOLatin1 F 1400 o f (3.6 ) h 2126 -5188 M (Data types used in the routines) h 0 -7707 M /Times-Roman-ISOLatin1 F 1000 o f (There are several abstract data types used as parameters to the routines described in this section. These are listed here) h 709 -9776 M (a\)) h 2154 -9776 M (Integer) h 709 -11845 M (b\)) h 2154 -11845 M (Name) h 2154 -12895 M 42.9 0 32 (Names unless otherwise noted are always X.500 names. While most of the design of DASS is naming service) W 2154 -13945 M 28.9 0 32 (independent, the syntax of certificates and tokens only permits X.500 names to be used. If DASS is to be used) W 2154 -14995 M 22.8 0 32 (in an environment where some other form of name is used, those names must be translated into something syn\255) W 2154 -16045 M 110.7 0 32 (tactically compliant with X.500 using some mechanism which is beyond the scope of this architecture. The) W 2154 -17095 M 45.5 0 32 (only other form of name appearing in this architecture is a "local user name", which corresponds to the simple) W 2154 -18145 M (name of an "account" on a node. As a type, such names appear in parameter lists as "Strings".) h 709 -20214 M (c\)) h 2154 -20214 M (String) h 2154 -21264 M (A String is a sequence of printable characters.) h 709 -23333 M (d\)) h 2154 -23333 M (Absolute Time) h 2154 -24383 M 57.8 0 32 (A UTC time. The precision of these Times is not stated. A precision of the order of one second in all times is) W 2154 -25433 M (sufficient.) h 709 -27502 M (e\)) h 2154 -27502 M (Time Interval) h 2154 -28552 M (A Time interval is composed of 2 times. A Start Time and an End Time, both of which are Absolute Times) h 709 -30621 M (f\)) h 2154 -30621 M (Timestamp) h 2154 -31671 M 8.5 0 32 (A Timestamp is a time in POSIX format. I.e. two 32 bit Integers. The first representing seconds, and the second) W 2154 -32721 M (representing nanoseconds.) h 709 -34790 M (g\)) h 2154 -34790 M (Duration) h 2154 -35840 M (A Duration is the length of a time interval.) h 709 -37909 M (h\)) h 2154 -37909 M (Octet String) h 2154 -38959 M (A sequence of bytes containing binary data) h 709 -41028 M (i\)) h 2154 -41028 M (Boolean) h 2154 -42078 M (A value of either True or False) h 709 -44147 M (j\)) h 2154 -44147 M (UID) h 2154 -45197 M (A UID is an bit string of 128 bits.) h 709 -47266 M (k\)) h 2154 -47266 M (OID) h 2154 -48316 M (An OID is an ISO Object Identifier.) h 709 -50385 M (l\)) h 2154 -50385 M (Shared key) h 2154 -51435 M (A Shared key is a DES key, a sequence of 8 bytes) h 709 -53504 M (m\)) h 2154 -53504 M (CA State) h 2154 -54554 M (A structure of the form described in \247) h (3.5) h 709 -56623 M (n\)) h 2154 -56623 M (Credentials) h 2154 -57673 M (A structure of the form described in \247) h (3.4) h -8503 8502 T R showpage $P e %%Page: 33 33 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 42570 -900 M (Page ) h (33) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 709 -750 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1000 o f (o\)) h 2154 -750 M (Certificate) h 2154 -1800 M (An ASN.1 encoding of the structure described in \247) h (3.1) h 709 -3946 M (p\)) h 2154 -3946 M (Authentication Token) h 2154 -4996 M (An ASN.1 encoding of the structure described in \247) h (3.3.1) h 709 -7142 M (q\)) h 2154 -7142 M (Mutual Authentication Token) h 2154 -8192 M (An ASN.1 encoding of the structure described in \247) h (3.3.2) h 709 -10338 M (r\)) h 2154 -10338 M (Encrypted Credentials) h 2154 -11388 M (An ASN.1 encoding of the structure described in \247) h (3.2) h 709 -13534 M (s\)) h 2154 -13534 M (Public key) h 2154 -14584 M 34.8 0 32 (A representation of an RSA Public key, including all the information needed to encode the public key in a cer\255) W 2154 -15634 M (tificate.) h 709 -17780 M (t\)) h 2154 -17780 M (Set of Public key/UID pairs) h 2154 -18830 M 26.2 0 32 (A set of Public key/UID pairs. This Data type is only used internally in DASS \255 it does not appear in any inter\255) W 2154 -19880 M (face used to other architectures.) h 0 -22326 M /Times-Bold-ISOLatin1 $ /Times-Bold & P /Times-Bold-ISOLatin1 F 1400 o f (3.7 ) h 2126 -22326 M (Error conditions) h 0 -24922 M /Times-Roman-ISOLatin1 F 1000 o f 92.7 0 32 (These routines can return the following error conditions) W 92.7 0 32 ( \(an implementation may indicate errors with more or less) W 0 -25972 M (precision\):) h 709 -28118 M (a\)) h 2154 -28118 M (I) h (ncomplete chain of trustworthy CAs) h 709 -30264 M (b\)) h 2154 -30264 M (Target has no keys which can be trusted.) h 709 -32410 M (c\)) h 2154 -32410 M (Invalid Authentication Token) h 709 -34556 M (d\)) h 2154 -34556 M (Login Ticket Expired) h 709 -36702 M (e\)) h 2154 -36702 M (Invalid Password) h 709 -38848 M (f\)) h 2154 -38848 M (Invalid Credentials) h 709 -40994 M (g\)) h 2154 -40994 M (Invalid Authenticator) h 709 -43140 M (h\)) h 2154 -43140 M (Duplicate Authenticator) h 0 -45586 M /Times-Bold-ISOLatin1 F 1400 o f (3.8 ) h 2126 -45586 M (Certificate Maintenance Functions) h 0 -48182 M /Times-Roman-ISOLatin1 F 1000 o f 53.2 0 32 (Authentication services depend on a set of data structures maintained in the naming service. There are two kinds of) W 0 -49232 M 12.6 0 32 (information: Certificates, which associate names and public keys and are signed by off\255line Certification Authorities;) W 0 -50282 M 60.4 0 32 (and Encrypted Credentials, which contain RSA Private Keys and certain context information encrypted under pass\255) W 0 -51332 M 54.6 0 32 (words. Encrypted Credentials are only necessary in environments where passwords are used. Credentials may alter\255) W 0 -52382 M (natively be stored in some other secure manner \(for example on a smart card\).) h 0 -54528 M 39.3 0 32 (The certificate maintenance services are designed so that the most sensitive \255 the actual signing of certificates \255 may) W 0 -55578 M 23.0 0 32 (be done by an off\255line authority. Once signed, certificates must be posted in the naming service to be believed. The) W 0 -56628 M 14.8 0 32 (precise mechanisms for moving certificates between off\255line CAs and the on\255line naming service are implementation) W 0 -57678 M 65.7 0 32 (dependent. For the off\255line mechanisms to provide any actual security, the CAs must be told what to sign in some) W -8503 8502 T R showpage $P e %%Page: 34 34 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 42570 -900 M (Page ) h (34) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 0 -750 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1000 o f 39.9 0 32 (reliable manner. The mechanisms for doing this are implementation dependent. The abstract interface says that the) W 0 -1800 M (CA is given all of the information that goes into a certificate and it produces the signed certificate.) h 0 -3850 M 5.4 0 32 (There are requirements surrounding the auditing of a CA's actions. The details of what actions are audited, where the) W 0 -4900 M 57.4 0 32 (audit trail is maintained, and what utilities exist to search that audit trail ) W 57.4 0 32 (are not specified here.) W 57.4 0 32 ( The functions a CA) W 0 -5950 M (must provide are:) h 0 -8150 M /Times-Bold-ISOLatin1 $ /Times-Bold & P /Times-Bold-ISOLatin1 F 1200 o f (3.8.1 ) h 2834 -8150 M (Install CA) h 0 -10300 M /Times-Roman-ISOLatin1 F 1000 o f (Install_CA\() h 0 -11400 M ( \255\255inputs) h 0 -12500 M 14256 -12500 M (keysize) h 30212 -12500 M (Integer,) h 0 -13600 M ( \255\255outputs) h 0 -14700 M 14256 -14700 M (CA_state) h 30212 -14700 M (CA State,) h 0 -15800 M 14256 -15800 M (CA_Public_Key) h 30212 -15800 M (Public Key\)) h 0 -16900 M 10.8 0 32 (This routine need only generate a public/private key pair of the requested size. Keysize is likely to be in implementa\255) W 0 -17950 M 29.4 0 32 (tion constant rather than a parameter. The value is likely to be either 512 or 640. Key sizes throughout will have to) W 0 -19000 M 54.7 0 32 (increase over time as factoring technology and CPU speeds improve. Both keys are stored as part of the CA_state;) W 0 -20050 M 52.0 0 32 (the public key is returned so that other CAs may cross\255certify this one. The `Next Serial number' in the CA state is) W 0 -21100 M (set to 1.) h 0 -23300 M /Times-Bold-ISOLatin1 F 1200 o f (3.8.2 ) h 2834 -23300 M (Create Certificate) h 0 -25450 M /Times-Roman-ISOLatin1 F 1000 o f (Create_certificate\() h 0 -26550 M ( \255\255inputs) h 0 -27650 M 14256 -27650 M (Renewal) h 30212 -27650 M (Boolean,) h 0 -28750 M 14256 -28750 M (Include_UID) h 30212 -28750 M (Boolean,) h 0 -29850 M 14256 -29850 M (Issuer_name) h 30212 -29850 M (Name,) h 0 -30950 M 14256 -30950 M (Issuer_UID) h 30212 -30950 M (UID,) h 0 -32050 M 14256 -32050 M (Effective_date) h 30212 -32050 M (Absolute Time,) h 0 -33150 M 14256 -33150 M (Expiration_date) h 30212 -33150 M (Absolute Time,) h 0 -34250 M 14256 -34250 M (Subject_name) h 30212 -34250 M (Name,) h 0 -35350 M 14256 -35350 M (Subject_UID) h 30212 -35350 M (UID,) h 0 -36450 M 14256 -36450 M (Subject_public_key) h 30212 -36450 M (Public Key,) h 0 -37550 M ( \255\255updated) h 0 -38650 M 14256 -38650 M (CA_state) h 30212 -38650 M (CA State,) h 0 -39750 M ( \255\255outputs) h 0 -40850 M 14256 -40850 M (Certificate) h 30212 -40850 M (Certificate\)) h 0 -41950 M 0.8 0 32 (This procedure creates and signs a certificate. Note that the various contents of the certificate must be communicated) W 0 -43000 M 115.7 0 32 (to the CA in some reliable fashion. The Issuer_name and UID are the name and UID of the directory on whose) W 0 -44050 M (behalf the certificate is being signed.) h 0 -46100 M 63.5 0 32 (This routine formats and signs a certificate with the private key in CA_state. It audits the creation of the certificate) W 0 -47150 M 39.5 0 32 (and updates the sequence number which is part of CA_state. The Issuer and Subject names are X.500 names. If the) W 0 -48200 M 4.4 0 32 (CA state includes a history of what UIDs have previously been used by what names, this call will only succeed ) W 4.4 0 32 (in the) W 0 -49250 M 45.5 0 32 (collision case ) W 45.5 0 32 (if the Renewal boolean is set true. If the Include_UID boolean is set true, this routine will generate a) W 0 -50300 M (1992 format X.509 certificate; otherwise it will generate a 1988 format X.509 certificate.) h -8503 8502 T R showpage $P e %%Page: 35 35 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 42570 -900 M (Page ) h (35) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 0 -900 M /Times-Bold-ISOLatin1 $ /Times-Bold & P /Times-Bold-ISOLatin1 F 1200 o f (3.8.3 ) h 2834 -900 M (Create Principal) h 0 -3529 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1000 o f (Create_principal\() h 0 -4629 M ( \255\255inputs) h 0 -5729 M 14256 -5729 M (Password) h 30212 -5729 M (String,) h 0 -6829 M 14256 -6829 M (keysize) h 30212 -6829 M (Integer,) h 0 -7929 M 14256 -7929 M (Principal_name) h 30212 -7929 M (Name,) h 0 -9029 M 14256 -9029 M (Principal_UID) h 30212 -9029 M (UID,) h 0 -10129 M 14256 -10129 M (Parent_Public_key) h 30212 -10129 M (Public Key,) h 0 -11229 M 14256 -11229 M (Parent_UID) h 30212 -11229 M (UID,) h 0 -12329 M ( \255\255outputs) h 0 -13429 M 14256 -13429 M (Encrypted_Credentials) h 30212 -13429 M (Encrypted Credentials,) h 0 -14529 M 14256 -14529 M (Trusted_authority_certificate) h 30212 -14529 M (Certificate\)) h 0 -16108 M 12.3 0 32 (This procedure creates a new principal by generating a new public/private key pair, encrypting the public and private) W 0 -17158 M 119.4 0 32 (keys under the password, and signing a trusted authority certificate for the parent CA. In an implementation not) W 0 -18208 M 17.6 0 32 (using passwords \(e.g. smart cards\), an alternative mechanism must be used for initially creating principals. If a prin\255) W 0 -19258 M 5.6 0 32 (cipal has protected storage for trusted authority information, it is not necessary to create a trusted authority certificate) W 0 -20308 M 58.8 0 32 (and store it in the naming service. Some procedure analogous to this one must be executed, however, in which the) W 0 -21358 M (principal learns the public key and UID of its CA and its own name. ) h 0 -23887 M (This routine creates two output structures with the following steps:) h 709 -26416 M (a\)) h 2154 -26416 M 29.2 0 32 (Generate a public/private key pair using the indicated keysize. An implementation will likely fix the keysize as) W 2154 -27466 M 124.7 0 32 (an implementation constant, most likely 512 or 640 bits, rather than accepting it as a parameter. Key sizes) W 2154 -28516 M (generally will have to increase over time as factoring technology and CPU speeds improve.) h 709 -31045 M (b\)) h 2154 -31045 M 90.4 0 32 (Form the encrypted credentials by using the public key, private key, and Principal_UID and encrypting them) W 2154 -32095 M (using a hash of the password as the key.) h 709 -34624 M (c\)) h 2154 -34624 M 91.3 0 32 (Generate a trusted authority certificate \(which is identical in format to a "parent" certificate\) getting fields as) W 2154 -35674 M (follows:) h 2154 -38003 M (1\)) h 3600 -38003 M (Certificate version is X.509 1992.) h 2154 -40332 M (2\)) h 3600 -40332 M (Issuer name is the Principal name \(which is an X.500 name\).) h 2154 -42661 M (3\)) h 3600 -42661 M (Issuer UID is the Principal UID.) h 2154 -44990 M (4\)) h 3600 -44990 M (Validity is for all time.) h 2154 -47319 M (5\)) h 3600 -47319 M 44.7 0 32 (Subject name is constructed from the Principal name by removing the last simple name from the hierarchi\255) W 3600 -48369 M (cal name.) h 2154 -50698 M (6\)) h 3600 -50698 M (Subject UID is the CA_UID.) h 2154 -53027 M (7\)) h 3600 -53027 M (Subject Public Key is the CA_Public_Key) h 2154 -55356 M (8\)) h 3600 -55356 M (Sequence number is 1.) h 2154 -57685 M (9\)) h 3600 -57685 M (Sign the certificate with the newly generated private key of the principal.) h -8503 8502 T R showpage $P e %%Page: 36 36 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 42570 -900 M (Page ) h (36) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 0 -900 M /Times-Bold-ISOLatin1 $ /Times-Bold & P /Times-Bold-ISOLatin1 F 1200 o f (3.8.4 ) h 2834 -900 M (Change Password) h 0 -3092 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1000 o f (Change_password\() h 0 -4192 M ( \255\255inputs) h 0 -5292 M 14256 -5292 M (Encrypted_credentials) h 30212 -5292 M (Encrypted Credentials,) h 0 -6392 M 14256 -6392 M (Old_password) h 30212 -6392 M (String,) h 0 -7492 M 14256 -7492 M (New_password) h 30212 -7492 M (String,) h 0 -8592 M ( \255\255outputs) h 0 -9692 M 14256 -9692 M (Encrypted_credentials) h 30212 -9692 M (Encrypted Credentials\)) h 0 -10834 M 68.7 0 32 (If credentials are stored encrypted under a password, it is possible to change the password if the old one is known. ) W 0 -11884 M 22.7 0 32 (Note that it is insufficient to just change a user's password if the password has been disclosed. Anyone knowing the) W 0 -12934 M 15.5 0 32 (old password may have already learned the user's private key. If a password has been disclosed, the secure recovery) W 0 -13984 M (procedure is to call create_principal again followed by create_certificate to certify the new key.) h 0 -16076 M 53.1 0 32 (Using DASS, it may not be appropriate for users to periodically change their passwords as a precaution unless they) W 0 -17126 M 51.9 0 32 (also change their private keys by the procedure above. The only likely use of the change_password procedure is to) W 0 -18176 M 8.6 0 32 (handle the case where an administrator has chosen a password for the user in the course of setting up the account and) W 0 -19226 M 61.7 0 32 (the user wishes to change it to something the user can remember. A future version of the architecture may smooth) W 0 -20276 M 0.2 0 32 (key roll\255over by having the change_password command also generate a new key and sign a "self" certificate in which) W 0 -21326 M 113.0 0 32 (the old key certifies the new one. As a separate step, a CA which notices a self certificate posted in the naming) W 0 -22376 M 23.0 0 32 (service could certify the new key instead of the old one when the user's certificate is renewed. While this procedure) W 0 -23426 M 49.6 0 32 (is not as rapid or as reliable as having the user directly interact with the CA, it offers a reasonable tradeoff between) W 0 -24476 M (security and convenience when there is no evidence of password compromise.) h 0 -26568 M 102.5 0 32 (This routine simply decrypts the encrypted credentials structure supplied using the password supplied. It returns a) W 0 -27618 M 8.4 0 32 (bad status if the ) W 8.4 0 32 (format of the decrypted information is bad ) W 8.4 0 32 (\(indicating an incorrect password\). Otherwise, it creates a) W 0 -28668 M 12.2 0 32 (new encrypted credentials structure by encrypting the same data with the new password. It would be highly desirable) W 0 -29718 M 92.1 0 32 (for the user interface to this function to provide the capability to randomly generate passwords and prohibit easily) W 0 -30768 M 42.4 0 32 (guessed user chosen passwords using length, character set, and dictionary lookup rules, but such capabilities are be\255) W 0 -31818 M (yond the scope of this document.) h 0 -33910 M 38.3 0 32 (If encrypted credentials are stored in some local secure storage, the above function is all that is necessary \(in fact, if) W 0 -34960 M 151.2 0 32 (the storage is sufficiently secure, no password is needed; credentials could be stored unenciphered\). If they are) W 0 -36010 M 6.8 0 32 (stored in a naming service, this function must be coupled with one which retrieves the old encrypted credentials from) W 0 -37060 M 72.8 0 32 (the naming service and stores the new. The full protocol is likely to include access control checks that require the) W 0 -38110 M 19.9 0 32 (principal to acquire credentials and produce tokens. For best security, the encrypted credentials should be accessible) W 0 -39160 M 52.4 0 32 (only through a login agent. The role of the login agent is to audit and limit the rate of password guessing. If pass\255) W 0 -40210 M 5.7 0 32 (words are well chosen, there is no significant threat from password guessing because searching the space is computa\255) W 0 -41260 M 14.4 0 32 (tionally infeasible. In the context of a login agent, change password will be implemented with a specialized protocol) W 0 -42310 M 122.6 0 32 (requiring knowledge of the password and \(for best security\) a trusted authority from which the public key of the) W 0 -43360 M (login agent can be learned. See section 2.3.2 for the plans for ) h (the non\255X.500 credential storage facility.) h 0 -45602 M /Times-Bold-ISOLatin1 F 1200 o f (3.8.5 ) h 2834 -45602 M (Change Name) h 0 -47794 M /Times-Roman-ISOLatin1 F 1000 o f (Change_name\() h 0 -48894 M ( \255\255inputs) h 0 -49994 M 14256 -49994 M (Claimant_Credentials) h 30212 -49994 M (Credentials,) h 0 -51094 M 14256 -51094 M (New_name) h 30212 -51094 M (Name,) h 0 -52194 M 14256 -52194 M (CA_Public_Key) h 30212 -52194 M (Public Key,) h 0 -53294 M 14256 -53294 M (CA_UID) h 30212 -53294 M (UID,) h 0 -54394 M ( \255\255outputs) h 0 -55494 M 14256 -55494 M (Trusted_Authority_Certificate) h 30212 -55494 M (Certificate\)) h 0 -56636 M 116.4 0 32 (DASS permits a principal to have many current aliases, but only one current name. A principal can authenticate) W 0 -57686 M 37.9 0 32 (itself as any of its aliases but verifies the names of others relative to the name by which it knows itself. Aliases can) W -8503 8502 T R showpage $P e %%Page: 37 37 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 42570 -900 M (Page ) h (37) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 0 -750 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1000 o f 91.5 0 32 (be created simply by using the create_certificate function once for each alias. To change the name of a principal,) W 0 -1800 M 154.9 0 32 (however, requires that the principal securely learn the public key and UID of its new parent CA. As with cre\255) W 0 -2850 M 11.6 0 32 (ate_principal, if a principal has secure private storage for its trusted authority information, it need not create a certifi\255) W 0 -3900 M (cate, but some analogous procedure must be able to install new naming information.) h 0 -6099 M (This routine produces a new Trusted Authority Certificate with contents as follows:) h 709 -8298 M (a\)) h 2154 -8298 M (Issuer name is New_name \(an X.500 name\)) h 709 -10497 M (b\)) h 2154 -10497 M (Issuer_UID is Principal UID from Credentials.) h 709 -12696 M (c\)) h 2154 -12696 M (Validity is for all time.) h 709 -14895 M (d\)) h 2154 -14895 M 159.4 0 32 (Subject name is constructed from the Issuer name by removing the last simple name from the hierarchical) W 2154 -15945 M (name, and converting to an X.500 name.) h 709 -18144 M (e\)) h 2154 -18144 M (Subject UID is CA_UID) h 709 -20343 M (f\)) h 2154 -20343 M (Subject Public Key is CA_Public_Key) h 709 -22542 M (g\)) h 2154 -22542 M (Sequence number is 1.) h 709 -24741 M (h\)) h 2154 -24741 M 55.3 0 32 (The certificate is signed with the private key of the principal from the credentials. Note that this call will only) W 2154 -25791 M 5.8 0 32 (succeed if the principal's private key is in the credentials, which will only be true if the credentials were created) W 2154 -26841 M (by calling Create_server_credentials.) h 0 -29340 M /Times-Bold-ISOLatin1 $ /Times-Bold & P /Times-Bold-ISOLatin1 F 1400 o f (3.9 ) h 2126 -29340 M (Credential Maintenance Functions) h 0 -31989 M /Times-Roman-ISOLatin1 F 1000 o f 94.9 0 32 (DASS credentials can potentially have information about two principals. This functionality is included to support) W 0 -33039 M 82.7 0 32 (the case where a user on a node has two identities that might be recognized for purposes of managing access con\255) W 0 -34089 M 70.1 0 32 (trols. First, there is the user's network identity; second, there is an identity as controlling a particular "account" or) W 0 -35139 M 43.3 0 32 ("username" on that node. There are two reasons for recognizing this second identity: first, access controls might be) W 0 -36189 M 124.9 0 32 (specified such that only a user is only permitted access to certain resources when coming through certain trusted) W 0 -37239 M 40.2 0 32 (nodes \(e.g. files that can't be accessed from a terminal at home\); and second, before the transition strategy to global) W 0 -38289 M 152.9 0 32 (identities is complete, as a way to refer to ) W 152.9 0 32 (U) W 152.9 0 32 (SER) W 152.9 0 32 (@NODE) W 152.9 0 32 ( in a way analogous to existing mechanisms but with) W 0 -39339 M (greater security.) h 0 -41538 M 69.2 0 32 (The mapping of global usernames to local user names on a node is outside the scope of DASS. This is done via a) W 0 -42588 M 67.8 0 32 ("proxy database" or some analogous local mechanism. What DASS provides are mechanisms for adding node ori\255) W 0 -43638 M 24.6 0 32 (ented credentials into a user's credentials structure, carrying the dual authentication information in authentication to\255) W 0 -44688 M (kens, and extracting the information from the credentials structure created by Accept_token.) h 0 -46887 M 53.1 0 32 (Some applications of DASS will not make use of the node authentication related extensions. In that case, they will) W 0 -47937 M (never use the Combine_credentials, Create_credentials, Get_node_info, or Verify_node_name functions.) h 0 -50136 M (The "normal" sequence of events surrounding a user logging into a node are as follows:) h 709 -52335 M (a\)) h 2154 -52335 M 82.0 0 32 (When the user logs in, he types either a local user ID known to the node or a global name \(the details of the) W 2154 -53385 M 72.7 0 32 (user interface are implementation specific\). Through some sort of local mapping, the node determines both a) W 2154 -54435 M (global name and a local account name. The user also enters a password corresponding to the global name.) h 709 -56634 M (b\)) h 2154 -56634 M 55.3 0 32 (The node calls network_login specifying the user's global name and the supplied password. The result is cre\255) W 2154 -57684 M (dentials which can be used to access network services but which have not yet been verified to be valid.) h -8503 8502 T R showpage $P e %%Page: 38 38 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 42570 -900 M (Page ) h (38) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 709 -750 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1000 o f (c\)) h 2154 -750 M 64.6 0 32 (The node calls verify_principal_name using its own credentials to verify the authenticity of the user's creden\255) W 2154 -1800 M 116.3 0 32 (tials \(these ) W 116.3 0 32 (node crede) W 116.3 0 32 (ntials must have previously been established by a call to initialize_server during node) W 2154 -2850 M (initialization\).) h 709 -4942 M (d\)) h 2154 -4942 M (If that test succeeds, the node adds its credentials to those of the user by calling combine_credentials.) h 0 -7034 M (The set of facilities for manipulating credentials follow:) h 0 -9276 M /Times-Bold-ISOLatin1 $ /Times-Bold & P /Times-Bold-ISOLatin1 F 1200 o f (3.9.1 ) h 2834 -9276 M (Network login) h 0 -11468 M /Times-Roman-ISOLatin1 F 1000 o f (Network_login\() h 0 -12568 M ( \255\255inputs) h 0 -13668 M 14256 -13668 M (Name) h 30212 -13668 M (Name,) h 0 -14768 M 14256 -14768 M (password) h 30212 -14768 M (String,) h 0 -15868 M 14256 -15868 M (keysize) h 30212 -15868 M (Integer,) h 0 -16968 M 14256 -16968 M (expiration) h 30212 -16968 M (Time interval,) h 0 -18068 M 14256 -18068 M (TA_credentials) h 30212 -18068 M (Credentials, \255\255optional) h 0 -19168 M ( \255\255outputs) h 0 -20268 M 14256 -20268 M (Claimant_credentials) h 30212 -20268 M (Credentials\)) h 0 -21410 M (This function creates credentials for a principal when the principal "logs into the network".) h 0 -23502 M /Times-BoldItalic-ISOLatin1 $ /Times-BoldItalic & P /Times-BoldItalic-ISOLatin1 F 1000 o f (Name) h /Times-Roman-ISOLatin1 F 1000 o f ( is the X.500 name of the principal.) h 0 -25594 M /Times-BoldItalic-ISOLatin1 F 1000 o f (Password) h /Times-Roman-ISOLatin1 F 1000 o f ( is a secret which authenticates the principal to the network.) h 0 -27686 M /Times-BoldItalic-ISOLatin1 F 1000 o f 17.5 0 32 (Keysize ) W /Times-Roman-ISOLatin1 F 1000 o f 17.5 0 32 (specifies the size of the temporary "login" or "delegation" key. In a real implementation, it is expected to be) W 0 -28736 M (an implementation constant \(most likely 384 or 512 bits\).) h 0 -30828 M /Times-BoldItalic-ISOLatin1 F 1000 o f 29.5 0 32 (Expiration) W /Times-Roman-ISOLatin1 F 1000 o f 29.5 0 32 ( sets a lifetime for the credentials created. For a normal login, this is likely to be an implementation con\255) W 0 -31878 M 22.9 0 32 (stant on the order of 8\255) W 22.9 0 32 (72 ) W 22.9 0 32 (hours. Some mechanism for overriding it must be provided to make it possible \(for exam\255) W 0 -32928 M (ple\) to submit ) h (a ) h (background job) h ( ) h (that might run days or even months after ) h (they are ) h (submitted.) h 0 -35020 M /Times-BoldItalic-ISOLatin1 F 1000 o f 14.6 0 32 (TA_credentials ) W /Times-Roman-ISOLatin1 F 1000 o f 14.6 0 32 (are used if the encrypted credentials are protected by a login agent. If they are missing, the password) W 0 -36070 M (will be less well protected from guessing attacks.) h 0 -38162 M 87.1 0 32 (This routine does not \(as one might expect\) securely authenticate the principal to the calling procedure. Since the) W 0 -39212 M 51.5 0 32 (password is used to obtain the principal's private key, this call will normally fail if the principal supplies an invalid) W 0 -40262 M 46.0 0 32 (password. A penetrator who has compromised the naming service could plant fake encrypted credentials under any) W 0 -41312 M 20.5 0 32 (name and impersonate that name as far as this call is concerned. A caller that wishes to authenticate the user in addi\255) W 0 -42362 M 5.2 0 32 (tion to obtaining credentials to be able to act on the user's behalf should call Verify_principal_name \(below\) with the) W 0 -43412 M (created credentials and the credentials of the calling process.) h 0 -45504 M 12.8 0 32 (This routine constructs a credentials structure from information found in the naming service encrypted using the sup\255) W 0 -46554 M (plied password.) h 709 -48646 M (a\)) h 2154 -48646 M (If the encrypted credentials structure is protected with a login agent, retrieve the public key of the login agent:) h 2154 -50538 M (1\)) h 3600 -50538 M 26.0 0 32 (If TA_credentials are available, use them in a call to Get_Pub_Keys to get the public key of the login agent) W 3600 -51588 M 42.1 0 32 (\(whose name is derived from the name of the principal) W 42.1 0 32 ( by truncating the last element of the RDN and add\255) W 3600 -52638 M (ing CSS=X509\)) h (.) h 2154 -54530 M (2\)) h 3600 -54530 M (If TA_credentials are not available, look up the public key of the login agent in the naming service.) h 2154 -56622 M 45.4 0 32 (L) W 45.4 0 32 (ogin agents limit and audit password guesses, and are important when passwords may not be well chosen \(as) W 2154 -57672 M 96.2 0 32 (when users are allowed to choose their own\). To fully prevent the password guessing threat, principals may) W -8503 8502 T R showpage $P e %%Page: 39 39 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 42570 -900 M (Page ) h (39) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 2154 -750 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1000 o f 93.9 0 32 (only log onto nodes that already have TA_credentials which can be used to authenticate the login agent. To) W 2154 -1800 M 19.2 0 32 (support nodes which have no credentials of their own and to allow this procedure to support node initialization,) W 2154 -2850 M (it is possible to network login without TA credentials.) h 2154 -4918 M 41.3 0 32 (A principal who logs into a node ) W 41.3 0 32 (that lacks TA ) W 41.3 0 32 (credentials is subject to the following subtle security threat: A) W 2154 -5968 M 2.8 0 32 (penetrator who impersonates the naming service could post his own public key and address as those of the login) W 2154 -7018 M 29.1 0 32 (agent. This procedure would then in the process of logging in reveal the the penetrator enough information for) W 2154 -8068 M (the penetrator to mount an unaudited password guessing attack against the principal's credentials.) h 709 -10136 M (b\)) h 2154 -10136 M 74.4 0 32 (Retrieve the encrypted credentials from the naming service or login agent. In the case of the login agent, the) W 2154 -11186 M 2.9 0 32 (password is one\255way hashed to produce proof of knowledge of the password and the hashed value is supplied to) W 2154 -12236 M (the login agent encrypted under its public key as part of the request.) h 709 -14304 M (c\)) h 2154 -14304 M 55.4 0 32 (Decrypt the encrypted credentials structure using a the supplied password. Verify that the decryption was suc\255) W 2154 -15354 M 317.5 0 32 (cessful by verifying that the resulting structure can be parsed according the the ASN.1 rules for En\255) W 2154 -16404 M 46.5 0 32 (crypted_Credentials and that the two included primes when multiplied together produce the included modulus) W 46.5 0 32 (.) W 2154 -17454 M 62.8 0 32 (If the decryption was unsuccessful then the routine returns the `Invalid password' error status. The decryption) W 2154 -18504 M (results in both the Private Key and the Public Key.) h 709 -20572 M (d\)) h 2154 -20572 M 49.2 0 32 (Generate a public/private key pair for the Delegation Key, using the indicated keysize. Key size is likely to be) W 2154 -21622 M 76.4 0 32 (an implementation constant rather than a supplied parameter, with likely values being 384 and 512 bits. Key) W 2154 -22672 M 77.9 0 32 (sizes generally will have to increase over time as factoring technology and CPU speeds improve. Delegation) W 2154 -23722 M 12.1 0 32 (keys can be relatively shorter than long term keys because DASS is designed so that compromise of the delega\255) W 2154 -24772 M 55.3 0 32 (tion key after it has expired does not result in a security compromise. An important advantage of making key) W 2154 -25822 M 78.2 0 32 (size an implementation constant is that nodes can generate key pairs in advance, thus speeding up this proce\255) W 2154 -26872 M (dure. Key generation is the most CPU intensive RSA procedure and could make login annoyingly slow.) h 709 -28940 M (e\)) h 2154 -28940 M 43.5 0 32 (Construct a Login Ticket by signing with the user's private key a combination of the public key, a validity pe\255) W 2154 -29990 M 37.8 0 32 (riod constructed from the current time and the expiration passed in the call, and the principal UID found in the) W 2154 -31040 M (encrypted\255key structure.) h 709 -33108 M (f\)) h 2154 -33108 M (Forget the user's private key.) h 709 -35176 M (g\)) h 2154 -35176 M 8.5 0 32 (Retrieve from the naming service any trusted authority certificates stored with the user's entry. Discard any that) W 2154 -36226 M 15.0 0 32 (are not signed by the user's public key and UID. An implementation in which the login node has credentials of) W 2154 -37276 M 16.2 0 32 (its own may choose its trusted authority information instead of retrieving and verifying trusted authority certifi\255) W 2154 -38326 M (cates from the naming service. This will have a subtle effect on the security of the resulting system) h (.) h 709 -40394 M (h\)) h 2154 -40394 M (Construct a credentials structure from:) h 2154 -42262 M (1\)) h 3600 -42262 M (Claimant credentials:) h 3600 -43930 M (\(i\)) h 5669 -43930 M (Name of the principal from calling parameter) h 3600 -45598 M (\(ii\)) h 5669 -45598 M (Login Ticket as constructed in \() h (e) h (\)) h 3600 -47266 M (\(iii\)) h 5669 -47266 M (Delegation Private key as constructed in \() h (d) h (\)) h 3600 -48934 M (\(iv\)) h 5669 -48934 M (Public key from the encrypted credentials structure) h 2154 -50802 M (2\)) h 3600 -50802 M (No verifier credentials) h 2154 -52670 M (3\)) h 3600 -52670 M (Trusted Authorities: for the most recently signed trusted authority certificate) h n 0.666 o f 0.0 448.0 m (3) h 0 -448.0 m n 1.502 o f (:) h 3600 -54338 M (\(i\)) h 5669 -54338 M (Name of the CA from the subject field of the certificate) h 3600 -56006 M (\(ii\)) h 5669 -56006 M (Public Key of the CA from the subject public key field) h 3600 -57674 M (\(iii\)) h 5669 -57674 M (UID of the CA from the subject UID field) h -8503 8502 T R S 8496 -68704 T N 0 G 576 -900 M /Times-Roman-ISOLatin1 F 800 o f 0.0 358.0 m (3) h 0 -358.0 m 976 -900 M 36.8 0 32 (There is normally only one Trusted Authority Certificate. If there is more than one then an implementation may choose to maintain a list of) W 576 -1800 M (all the valid keys. They should all refer to the same CA \(UID and name\).) h -8496 68704 T R showpage $P e %%Page: 40 40 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 42570 -900 M (Page ) h (40) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 2154 -750 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1000 o f (4\)) h 3600 -750 M (no remote node credentials) h 2154 -3002 M (5\)) h 3600 -3002 M (no local node credentials) h 2154 -5254 M (6\)) h 3600 -5254 M (no cached outgoing associations) h 2154 -7506 M (7\)) h 3600 -7506 M (no cached incoming associations) h 0 -10108 M /Times-Bold-ISOLatin1 $ /Times-Bold & P /Times-Bold-ISOLatin1 F 1200 o f (3.9.2 ) h 2834 -10108 M (Create Credentials) h 0 -12660 M /Times-Roman-ISOLatin1 F 1000 o f (Create_credentials\() h 0 -13760 M ( \255\255outputs) h 0 -14860 M 14256 -14860 M (Claimant_credentials) h 30212 -14860 M (Credentials\)) h 0 -16362 M 56.9 0 32 (This routine creates an "empty" credentials structure. It is needed in the case of a user logging into a node and ob\255) W 0 -17412 M 41.8 0 32 (taining node oriented credentials but no global username credentials. Because the "combine_credentials" call wants) W 0 -18462 M 92.3 0 32 (to modify a set of user credentials rather than create a new set, this call is needed to produce the "shell" for com\255) W 0 -19512 M (bine_credentials to fill in.) h 0 -21964 M 41.2 0 32 (It is unlikely that any real implementation would support this function, but rather would have some functions which) W 0 -23014 M (combine network_login, create_credentials, and combine_credentials in whatever ways are supported by that node.) h 0 -25616 M /Times-Bold-ISOLatin1 F 1200 o f (3.9.3 ) h 2834 -25616 M (Combine Credentials) h 0 -28168 M /Times-Roman-ISOLatin1 F 1000 o f (Combine_credentials\() h 0 -29268 M ( \255\255inputs) h 0 -30368 M 14256 -30368 M (node_credentials) h 30212 -30368 M (Credentials,) h 0 -31468 M 14256 -31468 M (localusername) h 30212 -31468 M (String,) h 0 -32568 M ( \255\255updated) h 0 -33668 M 14256 -33668 M (user_credentials) h 30212 -33668 M (Credentials\)) h 0 -35170 M 49.8 0 32 (This routine is provided by implementations which support the notion of local node credentials. After the node has) W 0 -36220 M 77.8 0 32 (verified to its own satisfaction that the user_credentials are entitled to access to a particular local account, this call) W 0 -37270 M 65.6 0 32 (adds node credential information to the user_credential structure. This function may be applied to user_credentials) W 0 -38320 M (created by network_login, create_credentials, or accept_token.) h 709 -40772 M (a\)) h 2154 -40772 M (Fill in the local node credentials substructure of user_credentials as follows:) h 2154 -43024 M (1\)) h 3600 -43024 M (Full name of the node: from Full name of the Principal in node_credentials) h 2154 -45276 M (2\)) h 3600 -45276 M (Local username on the node: from proxy lookup) h 2154 -47528 M (3\)) h 3600 -47528 M (RSA private key of the node: from verifier credentials in node_credentials) h 709 -49980 M (b\)) h 2154 -49980 M /Times-Italic-ISOLatin1 $ /Times-Italic & P /Times-Italic-ISOLatin1 F 1000 o f 37.2 0 32 (Optionally, ) W /Times-Roman-ISOLatin1 F 1000 o f 37.2 0 32 (change the trusted authorities to match the trusted authorities from the node credentials. This is an) W 2154 -51030 M 114.1 0 32 (implementation option, done most likely as a performance optimization. The only case where this option is) W 2154 -52080 M 191.0 0 32 (required is where no trusted authorities existed in the user credentials \(because they were created by cre\255) W 2154 -53130 M (ate_credentials of accept_token\). Server credentials should generally keep their own trusted authorities.) h 0 -55582 M 3.4 0 32 (It is likely that an implementation will choose not to replicate its node credentials in every credentials structure that it) W 0 -56632 M 22.0 0 32 (supports, but rather will maintain some sort of pointer to a single copy. This algorithm is stated as it is only for ease) W 0 -57682 M (of specification.) h -8503 8502 T R showpage $P e %%Page: 41 41 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 42570 -900 M (Page ) h (41) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 0 -900 M /Times-Bold-ISOLatin1 $ /Times-Bold & P /Times-Bold-ISOLatin1 F 1200 o f (3.9.4 ) h 2834 -900 M (Initialize_server) h 0 -3246 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1000 o f (initialize_server\() h 0 -4346 M ( \255\255inputs) h 0 -5446 M 14256 -5446 M (Name) h 30212 -5446 M (Name,) h 0 -6546 M 14256 -6546 M (password) h 30212 -6546 M (String,) h 0 -7646 M 14256 -7646 M (TA_credentials) h 30212 -7646 M (Credentials, \255\255optional) h 0 -8746 M ( \255\255outputs) h 0 -9846 M 14256 -9846 M (Server_credentials) h 30212 -9846 M (Credentials\)) h 0 -11142 M 7.2 0 32 (Somehow a server must get access to its credentials. One way is for the credentials to be stored in the naming service) W 0 -12192 M 72.4 0 32 (like user credentials encrypted under a service password. The service then needs to gain at startup time access to a) W 0 -13242 M 52.0 0 32 (service password. This may be easier to manage and is not insecure so long as the service password is well chosen.) W 0 -14292 M 68.6 0 32 (Alternately, the service needs some mechanism to gain access directly to its credentials. The credentials created by) W 0 -15342 M 126.0 0 32 (this call are intended to be very long lived. They do not time out, so a node or server might store them in Non\255) W 0 -16392 M 2.9 0 32 (Volatile memory after "initial installation" rather than calling this routine at each "boot". These credentials are shared) W 0 -17442 M (between all servers which use the same key. This routine works as follows:) h 709 -19688 M (a\)) h 2154 -19688 M 83.1 0 32 (Retrieve from the naming service or login agent the encrypted credentials structure corresponding to the sup\255) W 2154 -20738 M (plied name. See Network_login for a discussion of the use of TA_credentials and login agents.) h 709 -22984 M (b\)) h 2154 -22984 M 50.2 0 32 (Decrypt that structure using a one\255way hash of the supplied password. Verify that the decryption was success\255) W 2154 -24034 M (ful. Verify that the public key in the structure matches the private key.) h 709 -26280 M (c\)) h 2154 -26280 M 18.3 0 32 (Retrieve from the naming service any trusted authority certificates stored under the supplied name. Discard any) W 2154 -27330 M 69.3 0 32 (which do not contain the UID from the encrypted credentials structure or are not signed by the key in the en\255) W 2154 -28380 M (crypted credentials structure.) h 709 -30626 M (d\)) h 2154 -30626 M ( Construct a credentials structure from: ) h 2154 -32672 M (1\)) h 3600 -32672 M (Claimant credentials:) h 3600 -34518 M (\(i\)) h 5669 -34518 M (Name of the principal from the calling parameter) h 3600 -36364 M (\(ii\)) h 5669 -36364 M (UID of the principal from the encrypted\255key structure) h 3600 -38210 M (\(iii\)) h 5669 -38210 M (No login ticket) h 3600 -40056 M (\(iv\)) h 5669 -40056 M (No login secret key) h 2154 -42102 M (2\)) h 3600 -42102 M (Verifier credentials:) h 3600 -43948 M (\(i\)) h 5669 -43948 M (Server secret key from the encrypted\255key structure) h 2154 -45994 M (3\)) h 3600 -45994 M (Trusted Authorities: from the most recently signed Trusted Authority Certificate:) h 3600 -47840 M (\(i\)) h 5669 -47840 M (Name of CA from the Subject Name field) h 3600 -49686 M (\(ii\)) h 5669 -49686 M (UID of the CA from the Subject UID field) h 3600 -51532 M (\(iii\)) h 5669 -51532 M (Public Key of the CA from the Subject Public Key field) h 2154 -53578 M (4\)) h 3600 -53578 M (no node credentials) h 2154 -55624 M (5\)) h 3600 -55624 M (no cached outgoing associations) h 2154 -57670 M (6\)) h 3600 -57670 M (no cached incoming associations) h -8503 8502 T R showpage $P e %%Page: 42 42 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 42570 -900 M (Page ) h (42) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 0 -900 M /Times-Bold-ISOLatin1 $ /Times-Bold & P /Times-Bold-ISOLatin1 F 1200 o f (3.9.5 ) h 2834 -900 M (Generate Server Ticket) h 0 -3088 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1000 o f (generate_server_ticket\() h 0 -4188 M ( \255\255inputs) h 0 -5288 M 14256 -5288 M (expiration) h 30212 -5288 M (Time interval,) h 0 -6388 M ( \255\255updated) h 0 -7488 M 14256 -7488 M (Server_credentials) h 30212 -7488 M (Credentials\)) h 0 -8626 M 86.0 0 32 (Server credentials created by initialize_server can be used to accept incoming authentication tokens and can act as) W 0 -9676 M 110.1 0 32 (node_credentials for outgoing authentications, but cannot create user_credentials of their own. If a server initiates) W 0 -10726 M 50.6 0 32 (connections on its own behalf, it must have a ticket just like any other user might have. That ticket has limited life\255) W 0 -11776 M 60.2 0 32 (time and the right to act on behalf of the server can be delegated. The server cannot, however, delegate the right to) W 0 -12826 M 31.4 0 32 (receive connections intended for it. An implementation must come up with a policy for the expiration of server tick\255) W 0 -13876 M 36.2 0 32 (ets and how long before expiration they are renewed. A likely policy is for this procedure to be implicitly called by) W 0 -14926 M (Create_token if there is no current ticket present in the credentials. If so, this interface need not be exposed.) h 0 -17014 M (This routine is implemented as follows:) h 709 -19102 M (a\)) h 2154 -19102 M (Generate an RSA public/private key pair.) h 709 -21190 M (b\)) h 2154 -21190 M (Compute a validity interval from the current time and the expiration supplied.) h 709 -23278 M (c\)) h 2154 -23278 M 27.5 0 32 (Construct a login ticket from the RSA public key \(from ) W 27.5 0 32 (a) W 27.5 0 32 (\), validity interval \(from ) W 27.5 0 32 (b) W 27.5 0 32 (\), the UID from the creden\255) W 2154 -24328 M (tials, and signed with the server key in the credentials. \(Discard previous Login Ticket if there was one\).) h 709 -26416 M (d\)) h 2154 -26416 M (Discard all information in the Cached Outgoing Contexts.) h 0 -28654 M /Times-Bold-ISOLatin1 F 1200 o f (3.9.6 ) h 2834 -28654 M (Delete Credentials) h 0 -30842 M /Times-Roman-ISOLatin1 F 1000 o f (delete_credentials\() h 0 -31942 M ( \255\255updated) h 0 -33042 M 14256 -33042 M (credentials) h 30212 -33042 M (Credentials\)) h 0 -34180 M (Erases the secrets in the credentials structure and deallocates the storage.) h 0 -36568 M /Times-Bold-ISOLatin1 F 1400 o f (3.10 ) h 2800 -36568 M (Authentication Procedures) h 0 -39106 M /Times-Roman-ISOLatin1 F 1000 o f 19.6 0 32 (The guts of the authentication process takes place in the next two calls. When one principal wishes to authenticate to) W 0 -40156 M 85.6 0 32 (another, it calls Create_token and sends the token which results to the other. The recipient calls Accept_token and) W 0 -41206 M 13.9 0 32 (creates a new set of credentials. The other calls in this section manipulate the received credentials in order to retrieve) W 0 -42256 M (its contents and verify the identity of the token creator.) h 0 -44494 M /Times-Bold-ISOLatin1 F 1200 o f (3.10.1 ) h 3300 -44494 M ( Create Token) h 0 -46682 M /Times-Roman-ISOLatin1 F 1000 o f (Create_token\() h 0 -47782 M ( \255\255inputs) h 0 -48882 M 14256 -48882 M (target_name) h 30212 -48882 M (Name,) h 0 -49982 M 14256 -49982 M (deleg_req_flag) h 30212 -49982 M (Boolean,) h 0 -51082 M 14256 -51082 M (mutual_req_flag) h 30212 -51082 M (Boolean,) h 0 -52182 M 14256 -52182 M (replay_det_req_flag) h 30212 -52182 M (Boolean,) h 0 -53282 M 14256 -53282 M (sequence_req_flag) h 30212 -53282 M (Boolean,) h 0 -54382 M 14256 -54382 M (chan_bindings) h 30212 -54382 M (Octet String,) h 0 -55482 M 14256 -55482 M (Include_principal_name) h 30212 -55482 M (Boolean,) h 0 -56582 M 14256 -56582 M (Include_node_name) h 30212 -56582 M (Boolean,) h 0 -57682 M 14256 -57682 M (Include_username) h 30212 -57682 M (Boolean,) h -8503 8502 T R showpage $P e %%Page: 43 43 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 42570 -900 M (Page ) h (43) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 0 -750 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1000 o f ( \255\255updated) h 0 -1850 M 14256 -1850 M (claimant_credentials) h 30212 -1850 M (Credentials,) h 0 -2950 M ( \255\255outputs) h 0 -4050 M 14256 -4050 M (authentication_token) h 30212 -4050 M (Authentication token,) h 0 -5150 M 14256 -5150 M (mutual_authentication_token) h 30212 -5150 M (Mutual Authentication token,) h 0 -6250 M 14256 -6250 M (Shared_key) h 30212 -6250 M (Shared Key) h 0 -7350 M 14256 -7350 M (instance_identifier) h 30212 -7350 M (Timestamp\)) h 0 -8481 M 33.8 0 32 (This routine is used by the initiator of a connection to create an authentication token which will prove its identity. If) W 0 -9531 M (the claimant credentials includes node/account information, the token will include node authentication.) h 0 -11612 M /Times-BoldItalic-ISOLatin1 $ /Times-BoldItalic & P /Times-BoldItalic-ISOLatin1 F 1000 o f 37.5 0 32 (target_name ) W /Times-Roman-ISOLatin1 F 1000 o f 37.5 0 32 (is the X.500 name of the intended recipient of the token. Only an entity with access to the private key) W 0 -12662 M (associated with that name will be able to verify the created token and generate the mutual_authentication_token.) h 0 -14743 M /Times-BoldItalic-ISOLatin1 F 1000 o f 138.1 0 32 (deleg_req_flag) W /Times-Roman-ISOLatin1 F 1000 o f 138.1 0 32 ( indicates whether the caller wishes to delegate to the recipient of the token. If it is set, the dele\255) W 0 -15793 M 28.8 0 32 (gated_credentials returned by Accept_token will be capable of generating tokens on behalf of the caller. Node based) W 0 -16843 M 41.1 0 32 (authentication information cannot be delegated. The ) W /Times-BoldItalic-ISOLatin1 F 1000 o f 41.1 0 32 (mutual_req_flag, replay_det_req_flag) W /Times-Roman-ISOLatin1 F 1000 o f 41.1 0 32 (, and ) W /Times-BoldItalic-ISOLatin1 F 1000 o f 41.1 0 32 (sequence_req_flag) W 0 -17893 M /Times-Roman-ISOLatin1 F 1000 o f 115.4 0 32 (are put in the authentication token and passed to the target. This information is included in the token to make it) W 0 -18943 M (easier to implement the GSSAPI over DASS. DASS itself makes no use of this information.) h 0 -21024 M 57.5 0 32 (In most applications, the purpose of a token exchange is to authenticate the principals controlling the two ends of a) W 0 -22074 M 50.1 0 32 (communication channel. ) W /Times-BoldItalic-ISOLatin1 F 1000 o f 50.1 0 32 (chan_bindings) W /Times-Roman-ISOLatin1 F 1000 o f 50.1 0 32 ( contains an identifier of the channel which is being authenticated, and thus) W 0 -23124 M 64.1 0 32 (its format and content should be tied to the underlying communication protocol. DASS only guarantees that the in\255) W 0 -24174 M 63.2 0 32 (formation has been communicated reliably to the named target. If DASS is used with a cryptographically protected) W 0 -25224 M 3.2 0 32 (channel \(such as SP4\), this data should contain a one\255way hash of the key used to encrypt the channel. If that channel) W 0 -26274 M 75.5 0 32 (is multiplexed, ) W 75.5 0 32 (the data ) W 75.5 0 32 (should also include the ID of the subchannel. If the channel is not encrypted, the network) W 0 -27324 M 70.1 0 32 (must be trusted not to modify data on a connection. The source and target network addresses and a connection ID) W 0 -28374 M 9.8 0 32 (should be included in the chan_bindings at the source and checked at the target. A token exchange also results in the) W 0 -29424 M 86.9 0 32 (two ends sharing a key and an instance identifier. If that key and instance identifier are used to cryptographically) W 0 -30474 M 79.7 0 32 (protect subsequent communications, then ) W /Times-BoldItalic-ISOLatin1 F 1000 o f 79.7 0 32 (chan_bindings) W /Times-Roman-ISOLatin1 F 1000 o f 79.7 0 32 ( need not have any cryptographic significance but may be) W 0 -31524 M 23.4 0 32 (used to differentiate multiple entities sharing the public keys of communicating principals.) W 23.4 0 32 ( For example, if a service) W 0 -32574 M 47.8 0 32 (is replicated and all replicas share a public key, ) W /Times-BoldItalic-ISOLatin1 F 1000 o f 47.8 0 32 (chan_bindings) W /Times-Roman-ISOLatin1 F 1000 o f 47.8 0 32 ( should include something that identifies a single in\255) W 0 -33624 M 24.4 0 32 (stance of the service \(such as current address\) so that the token cannot be successfully presented to more than one of) W 0 -34674 M (the servers.) h 0 -36755 M /Times-BoldItalic-ISOLatin1 F 1000 o f 58.9 0 32 (include_principal_name, include_node_name, ) W /Times-Roman-ISOLatin1 F 1000 o f 58.9 0 32 (and) W /Times-BoldItalic-ISOLatin1 F 1000 o f 58.9 0 32 ( include_username ) W /Times-Roman-ISOLatin1 F 1000 o f 58.9 0 32 (are flags which determine whether the prin\255) W 0 -37805 M 2.2 0 32 (cipal name, node name, and/or username from the credentials structure are to be included in the token. This informa\255) W 0 -38855 M 85.3 0 32 (tion is made optional in a token so that applications which communicate this information out of band can produce) W 0 -39905 M 10.1 0 32 ("compressed" tokens. If this information is included in the token, it will be used to populate the corresponding fields) W 0 -40955 M (in the credentials structure created by Accept_token.) h 0 -43036 M /Times-BoldItalic-ISOLatin1 F 1000 o f 41.6 0 32 (claimant_credentials ) W /Times-Roman-ISOLatin1 F 1000 o f 41.6 0 32 (are the credentials of the calling procedure. The secrets contained therein are used to sign the) W 0 -44086 M 3.4 0 32 (token and the trusted authorities are used to securely learn the public key of the target. The cached outgoing contexts) W 0 -45136 M (portion of the credentials may be updated as a side effect of this call.) h 0 -47217 M 6.2 0 32 (The major output of this routine is an ) W /Times-BoldItalic-ISOLatin1 F 1000 o f 6.2 0 32 (authentication_token ) W /Times-Roman-ISOLatin1 F 1000 o f 6.2 0 32 (which can be passed to the target in order to authenticate) W 0 -48267 M (the caller.) h 0 -50348 M 62.2 0 32 (In addition to returning an authentication token, this routine returns a ) W /Times-BoldItalic-ISOLatin1 F 1000 o f 62.2 0 32 (mutual_authentication_token, ) W /Times-Roman-ISOLatin1 F 1000 o f 62.2 0 32 (a ) W /Times-BoldItalic-ISOLatin1 F 1000 o f 62.2 0 32 (shared_key,) W 0 -51398 M /Times-Roman-ISOLatin1 F 1000 o f 83.9 0 32 (and an ) W /Times-BoldItalic-ISOLatin1 F 1000 o f 83.9 0 32 (instance_identifier) W /Times-Roman-ISOLatin1 F 1000 o f 83.9 0 32 (. The mutual authentication token is the same as the one generated by the Accept_token) W 0 -52448 M 41.3 0 32 (call at the target. If the protocol using DASS wishes mutual authentication, the target should return this token to the) W 0 -53498 M 97.9 0 32 (source. The source will compare it to the one returned by this routine using Compare_Mutual_Token \(below\) and) W 0 -54548 M (know that the token was accepted at its proper destination.) h 0 -56629 M 4.1 0 32 (The DES key and instance identifier can be used to encrypt or sign data to be sent to this target. The key and instance) W 0 -57679 M 26.9 0 32 (will be given to the target by Accept_token, and the key will only be known by the two parties to the authentication.) W -8503 8502 T R showpage $P e %%Page: 44 44 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 42570 -900 M (Page ) h (44) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 0 -750 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1000 o f 35.5 0 32 (If a single set of credentials is used to authenticate to the same target more than once, the same DES key is likely to) W 0 -1800 M 57.5 0 32 (be returned each time. If the parties wish to protect against the possibility of an outside agent mixing and matching) W 0 -2850 M 136.0 0 32 (messages from one authenticated session with those of another, they should include the instance identifier in the) W 0 -3900 M 19.1 0 32 (messages. The instance identifier is a timestamp and it is guaranteed that the DES key/instance identifier pair will be) W 0 -4950 M (unique.) h 0 -7114 M 92.3 0 32 (An implementation may wish to "hide" the DES key from calling applications by placing it in system storage and) W 0 -8164 M (providing calls which encrypt/decrypt/sign/verify using the key. ) h 0 -10328 M 143.6 0 32 (The primary tasks of this routine are to create its output parameters. As a side effect, it may also update claim\255) W 0 -11378 M (ant_credentials. It's algorithm is as follows:) h 709 -13542 M (a\)) h 2154 -13542 M 11.8 0 32 (The login ticket is checked. If it has passed the end of its lifetime an `Login Ticket Expired' error is returned. If) W 2154 -14592 M 8.6 0 32 (there is a login ticket, but no corresponding private key then an `Invalid credentials' error is returned \(this is the) W 2154 -15642 M 144.3 0 32 (case if the credentials were created by an authentication\255without\255delegation operation\). If there is no login) W 2154 -16692 M 78.7 0 32 (ticket or an expired one and if the long term private key is present in the credentials, an implementation may) W 2154 -17742 M (choose to automatically call create_server_ticket to renew the ticket.) h 709 -19906 M (b\)) h 2154 -19906 M (Create new timestamp using the current time.) h n 0.666 o f 0.0 448.0 m (4) h 0 -448.0 m 709 -22070 M n 1.502 o f (c\)) h 2154 -22070 M 39.0 0 32 (The public key and UID of target_name are looked up by calling get_pub_keys, using the target_name and the) W 2154 -23120 M 133.1 0 32 (Trusted Authority section of the claimant_credentials structure. If none is found, an error status is returned.) W 2154 -24170 M 25.7 0 32 (Otherwise, the cached outbound connections portion of credentials are searched \(indexed by target Public Key\)) W 2154 -25220 M 30.1 0 32 (for a cached Shared key with a validity interval which has not expired. If a suitable one is found skip to step ) W 30.1 0 32 (g) W 30.1 0 32 (,) W 2154 -26270 M (else create a cache entry as follows:) h 709 -28434 M (d\)) h 2154 -28434 M 15.7 0 32 (Destination Public Key is the one found looking up the target. A Shared Key is generated at random. A validity) W 2154 -29484 M 21.6 0 32 (interval is chosen according to node policy but not to exceed the validity interval of the ticket in the credentials) W 2154 -30534 M (\(if any\).) h 709 -32698 M (e\)) h 2154 -32698 M (Create the Encrypted Shared Key, using the public key of the Target, and place in the cache.) h 709 -34862 M (f\)) h 2154 -34862 M 23.4 0 32 (If node authentication credentials are available in the credentials structure, create a "Node Ticket" signature us\255) W 2154 -35912 M (ing the node secret and include it in the cache.) h 709 -38076 M (g\)) h 2154 -38076 M 47.8 0 32 (If delegation is requested and no delegator is present in the cache, create one by encrypting the delegation pri\255) W 2154 -39126 M 24.4 0 32 (vate key under the Shared key. The delegation private key is represented as an ASN.1 data structure containing) W 2154 -40176 M (only one of the primes \(p\).) h 709 -42340 M (h\)) h 2154 -42340 M 54.0 0 32 (If delegation is not requested and no Shared Key Ticket is in the cache, create one by signing the requisite in\255) W 2154 -43390 M (formation with the delegation private key.) h 709 -45554 M (i\)) h 2154 -45554 M 51.6 0 32 (Create the Authenticator. The contents of the Authenticator \(including the channel bindings\) are encoded into) W 2154 -46604 M 118.6 0 32 (ASN.1, and the signature is computed. The Authenticator is then re\255encoded, without including the Channel) W 2154 -47654 M (Bindings but using the same signature.) h 709 -49818 M (j\)) h 2154 -49818 M (Create output_token as follows: ) h 2154 -51782 M (1\)) h 3600 -51782 M (Encrypted Shared Key from cache) h 2154 -53746 M (2\)) h 3600 -53746 M (Login Ticket from Claimant Credentials \(if present\)) h 2154 -55710 M (3\)) h 3600 -55710 M (Shared Key Ticket from cache \(if no delegation and if present\)) h 2154 -57674 M (4\)) h 3600 -57674 M (Node Ticket from cache \(if present\)) h -8503 8502 T R S 8496 -68704 T N 0 G 576 -900 M /Times-Roman-ISOLatin1 F 800 o f 0.0 358.0 m (4) h 0 -358.0 m 976 -900 M 11.1 0 32 (This timestamp must be unique for this Shared Key. The timestamp is a 64 bit POSIX time, with a resolution of 1 nanosecond An implemen\255) W 576 -1800 M (tation must ensure that timestamps cannot be reused.) h -8496 68704 T R showpage $P e %%Page: 45 45 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 42570 -900 M (Page ) h (45) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 2154 -750 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1000 o f (5\)) h 3600 -750 M (Delegator from cache \(if delegation and if present\)) h 2154 -2810 M (6\)) h 3600 -2810 M (Authenticator) h 2154 -4870 M (7\)) h 3600 -4870 M (Principal name from credentials \(if present and parameter requests this\)) h 2154 -6930 M (8\)) h 3600 -6930 M (Node name from credentials \(if present and parameter request this\)) h 2154 -8990 M (9\)) h 3600 -8990 M (Local Username from credentials \(if present and parameter requests this\)) h 709 -11250 M (k\)) h 2154 -11250 M 133.1 0 32 (C) W 133.1 0 32 (ompute Mutual_authentication_token by encrypting ) W 133.1 0 32 (the ) W 133.1 0 32 (timestamp) W 133.1 0 32 ( from the authenticator) W 133.1 0 32 ( ) W 133.1 0 32 (using ) W 133.1 0 32 (the Shared) W 2154 -12300 M (key.) h 709 -14560 M (l\)) h 2154 -14560 M 57.0 0 32 (The instance_identifier is the timestamp. This and the Shared key are returned for use by the caller for further) W 2154 -15610 M (encryption operations \(if these are supported\).) h 0 -18020 M /Times-Bold-ISOLatin1 $ /Times-Bold & P /Times-Bold-ISOLatin1 F 1200 o f (3.10.2 ) h 3300 -18020 M (Accept_token) h 0 -20380 M /Times-Roman-ISOLatin1 F 1000 o f (Accept_token\() h 0 -21480 M ( \255\255inputs) h 0 -22580 M 14256 -22580 M (authentication_token) h 30212 -22580 M (Authentication Token,) h 0 -23680 M 14256 -23680 M (chan_bindings) h 30212 -23680 M (Octet String,) h 0 -24780 M ( \255\255updated) h 0 -25880 M 14256 -25880 M (verifying_credentials) h 30212 -25880 M (Credentials,) h 0 -26980 M ( \255\255outputs) h 0 -28080 M 14256 -28080 M (accepted_credentials) h 30212 -28080 M (Credentials,) h 0 -29180 M 14256 -29180 M (deleg_req_flag) h 30212 -29180 M (Boolean,) h 0 -30280 M 14256 -30280 M (mutual_req_flag) h 30212 -30280 M (Boolean,) h 0 -31380 M 14256 -31380 M (replay_det_req_flag) h 30212 -31380 M (Boolean,) h 0 -32480 M 14256 -32480 M (sequence_req_flag) h 30212 -32480 M (Boolean,) h 0 -33580 M 14256 -33580 M (mutual_authentication_token) h 30212 -33580 M (Mutual authentication token) h 0 -34680 M 14256 -34680 M (shared_key ) h 30212 -34680 M (Shared Key,) h 0 -35780 M 14256 -35780 M (instance_identifier) h 30212 -35780 M (Timestamp\)) h 0 -37090 M 68.9 0 32 (This routine is used by the recipient of an authentication token to validate it. ) W /Times-BoldItalic-ISOLatin1 $ /Times-BoldItalic & P /Times-BoldItalic-ISOLatin1 F 1000 o f 68.9 0 32 (authentication_token ) W /Times-Roman-ISOLatin1 F 1000 o f 68.9 0 32 (is the token as) W 0 -38140 M 18.0 0 32 (received; ) W /Times-BoldItalic-ISOLatin1 F 1000 o f 18.0 0 32 (chan_bindings ) W /Times-Roman-ISOLatin1 F 1000 o f 18.0 0 32 (is the identifier of the channel being authenticated. See the description of Create_token for) W 0 -39190 M 185.9 0 32 (information on the appropriate contents for chan_bindings. DASS does not enforce any particular content, but) W 0 -40240 M (checks to assure that the same value is supplied to both Create_token and Accept_token.) h 0 -42500 M /Times-BoldItalic-ISOLatin1 F 1000 o f 43.0 0 32 (Verifying_credentials ) W /Times-Roman-ISOLatin1 F 1000 o f 43.0 0 32 (are the credentials of the recipient of the token. They must include the private key of the en\255) W 0 -43550 M 47.8 0 32 (tity named as the target in Create_token or the call will fail. The cached incoming contexts section of the verifying) W 0 -44600 M (credentials may be modified as a side effect of this call.) h 0 -46860 M /Times-BoldItalic-ISOLatin1 F 1000 o f 47.8 0 32 (Accepted_credentials) W /Times-Roman-ISOLatin1 F 1000 o f 47.8 0 32 ( will contain additional information about the token creator. If delegation was requested, these) W 0 -47910 M 71.1 0 32 (credentials can be used to make additional calls to Create_token on the creator's behalf. Whether or not delegation) W 0 -48960 M (was requested, they can also be used in the calls which follow to gain additional information about the token creator.) h 0 -51220 M 7.0 0 32 (The ) W /Times-BoldItalic-ISOLatin1 F 1000 o f 7.0 0 32 (deleg_req_flag ) W /Times-Roman-ISOLatin1 F 1000 o f 7.0 0 32 (indicates whether the accepted_credentials include delegation which can be used by the recipient) W 0 -52270 M 24.5 0 32 (to act on behalf of the principal. ) W /Times-BoldItalic-ISOLatin1 F 1000 o f 24.5 0 32 (Mutual_req_flag, replay_det_req_flag, ) W /Times-Roman-ISOLatin1 F 1000 o f 24.5 0 32 (and ) W /Times-BoldItalic-ISOLatin1 F 1000 o f 24.5 0 32 (sequence_req_flag) W /Times-Roman-ISOLatin1 F 1000 o f 24.5 0 32 ( are passed through) W 0 -53320 M (from Create_token in support of the GSSAPI. DASS makes no use of these fields) h (.) h 0 -55580 M 82.1 0 32 (The ) W /Times-BoldItalic-ISOLatin1 F 1000 o f 82.1 0 32 (mutual_authentication_token) W /Times-Roman-ISOLatin1 F 1000 o f 82.1 0 32 ( can be returned to the token creator as proof of receipt. In many protocols, this) W 0 -56630 M 214.4 0 32 (will be used by a client to authenticate a server. Only the genuine server would be able to compute the mu\255) W 0 -57680 M (tual_authentication_token from the token.) h -8503 8502 T R showpage $P e %%Page: 46 46 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 42570 -900 M (Page ) h (46) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 0 -750 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1000 o f 56.2 0 32 (The ) W /Times-BoldItalic-ISOLatin1 $ /Times-BoldItalic & P /Times-BoldItalic-ISOLatin1 F 1000 o f 56.2 0 32 (shared_key) W /Times-Roman-ISOLatin1 F 1000 o f 56.2 0 32 ( and ) W /Times-BoldItalic-ISOLatin1 F 1000 o f 56.2 0 32 (instance_identifier) W /Times-Roman-ISOLatin1 F 1000 o f 56.2 0 32 ( can be used to encrypt or sign data between the two authenticating parties.) W 0 -1800 M (See Create_token.) h 0 -3875 M 23.8 0 32 (This routine verifies the contents of the authentication token in the context of the verifying credentials) W n 0.666 o f 0.0 448.0 m 23.8 0 32 (5) W 0 -448.0 m n 1.502 o f 23.8 0 32 ( and returns a) W 0 -4925 M 54.5 0 32 (information about it. The algorithm updates a cache of information. This cache is not updated if the algorithm exits) W 0 -5975 M (with an error. The algorithm is as follows:) h 709 -8050 M (a\)) h 2154 -8050 M 13.1 0 32 (If there is a Login Ticket, but no Shared Key Ticket or Delegator then exit with error `Invalid Authenticator'. If) W 2154 -9100 M 29.1 0 32 (there is a Shared Key Ticket or Delegator, but no Login Ticket then exit with error `Invalid Authentication To\255) W 2154 -10150 M (ken'. ) h 2154 -12225 M 93.8 0 32 (Look up the Encrypted Shared key in the Cached Incoming Contexts of the credentials structure) W n 0.666 o f 0.0 448.0 m 93.8 0 32 (6) W 0 -448.0 m n 1.502 o f 93.8 0 32 (. If it is not) W 2154 -13275 M (found then create a new cache entry as follows:) h 2154 -15150 M (1\)) h 3600 -15150 M (Encrypted Shared Key, from the Authentication Token. ) h 2154 -17025 M (2\)) h 3600 -17025 M 63.9 0 32 (Shared Key and Validity Interval, by decrypting the Encrypted Shared Key using the server private key in) W 3600 -18075 M (credentials. If the decryption fails then exit with error `Invalid Authentication Token'. ) h 709 -20150 M (b\)) h 2154 -20150 M 101.6 0 32 (Check that the Validity Interval \(in the cache entry\) ) W 101.6 0 32 (includes the current time; r) W 101.6 0 32 (eturn `Invalid Authentication) W 2154 -21200 M (Token' if not.) h 2154 -23275 M 100.8 0 32 (Check the Timestamp is within max\255clock\255skew of the current time, return `invalid Authentication Token' if) W 2154 -24325 M (not.) h 2154 -26400 M (Reconstruct the Authenticator including the Channel Bindings passed as a parameter.) h 2154 -28475 M 143.5 0 32 (Check that the reconstructed Authenticator is signed by the Shared key. If not then exit with error `Invalid) W 2154 -29525 M (Authentication Token'.) h 2154 -31600 M 64.9 0 32 (Look up the Authenticator Signature in the Received Authenticators. If the same Signature is found in the list) W 2154 -32650 M (then exit with error `Duplicate Authenticator'. Otherwise add the Signature and timestamp to the list.) h 2154 -34725 M 64.2 0 32 (If there is a Login Ticket and the Delegation Public key is in the cache entry, then check that the same key is) W 2154 -35775 M 76.1 0 32 (specified in the Login Ticket, if not then exit with error `Invalid Authentication Token'. Place the Delegation) W 2154 -36825 M (Public key in the cache if it is not already there.) h 2154 -38900 M 3.8 0 32 (If there is a Login Ticket, the Delegation Public key was not previously in the cache entry, and there is a Shared) W 2154 -39950 M 117.4 0 32 (Key Ticket in the Authentication Token, then check that the Shared Key Ticket is signed by the Delegation) W 2154 -41000 M (Public Key in the Login Ticket. If not then exit with error `Invalid Authentication Token'.) h 2154 -43075 M 31.9 0 32 (If a delegator is present in the message then decrypt the delegator using the Shared key. If the private key does) W 2154 -44125 M (not match the Delegation Public key then exit with error `Invalid Authentication Token') h n 0.666 o f 0.0 448.0 m (7) h 0 -448.0 m n 1.502 o f (.) h 2154 -46200 M (Build the delegation credentials data structure as follows: ) h 2154 -48075 M /NewCenturySchlbk-Roman-ISOLatin1 $ /NewCenturySchlbk-Roman & P /NewCenturySchlbk-Roman-ISOLatin1 F 1000 o f (1\)) h 3600 -48075 M (Claimant credentials:) h 3600 -48800 M (\(i\)) h 5669 -48800 M (Login Ticket from the Authentication token) h 3600 -49525 M (\(ii\)) h 5669 -49525 M (Delegation Private key from the decrypted delegator if the token is delegating.) h 3600 -50250 M (\(iii\)) h 5669 -50250 M (Encrypted Shared Key from the Authentication token.) h 2154 -51175 M (2\)) h 3600 -51175 M (There are no verifier credentials.) h 2154 -52100 M (3\)) h 3600 -52100 M (Trusted authorities are copied from the verifying_credentials passed to this routine.) h n 0.666 o f 0.0 464.0 m (8) h 0 -464.0 m -8503 8502 T R S 8496 -62304 T N 0 G 576 -900 M /Times-Roman-ISOLatin1 F 800 o f 0.0 358.0 m (5) h 0 -358.0 m 976 -900 M (In particular the Private Key of the server is used. Also the Cached Incoming Contexts and Incoming Timestamp list is used.) h 576 -2500 M 0.0 358.0 m (6) h 0 -358.0 m 976 -2500 M 62.1 0 32 (This cache entry is used during the execution of this routine. An implementation must ensure that references to the cache entry can not be) W 576 -3400 M (affected by other users modifying the cache. One way is to use a copy of the cache entry, and update it at exit.) h 576 -4900 M 0.0 358.0 m (7) h 0 -358.0 m 976 -4900 M 1.8 0 32 (The prime in the delegator is used to find the other prime \(from the modulus\). The division must not have a remainder. Neither prime may be) W 576 -5800 M (1. The two primes are then used to reconstruct any other information needed to perform cryptographic operations.) h 576 -7300 M 0.0 358.0 m (8) h 0 -358.0 m 976 -7300 M 14.9 0 32 (If an implementation is able to obtain the original Trusted Authorities for the Principal then it may do so instead of using the Servers Trusted) W 576 -8200 M (Authorities) h -8496 62304 T R showpage $P e %%Page: 47 47 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 42570 -900 M (Page ) h (47) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 2154 -750 M /NewCenturySchlbk-Roman-ISOLatin1 $ /NewCenturySchlbk-Roman & P /NewCenturySchlbk-Roman-ISOLatin1 F 1000 o f (4\)) h 3600 -750 M (Remote node credentials \(Node name, Username, Node Ticket\) taken from the Authentication) h 3600 -1850 M (token.) h 2154 -3336 M (5\)) h 3600 -3336 M (There are no local node credentials.) h 2154 -4822 M (6\)) h 3600 -4822 M (There are no cached contexts.) h 709 -6508 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1000 o f (c\)) h 2154 -6508 M (The returned boolean values are obtained from the Authenticator.) h 709 -9144 M (d\)) h 2154 -9144 M 31.8 0 32 (Mutual_authentication_token is computed by encrypting the timestamp from the Authenticator with the Shared) W 2154 -10194 M (key from the cache.) h 709 -12830 M (e\)) h 2154 -12830 M 60.6 0 32 (Instance_identifier is the timestamp from the Authenticator. This and the Shared key are returned to the caller) W 2154 -13880 M (for further encryption operations \(if these are supported\).) h 0 -16666 M /Times-Bold-ISOLatin1 $ /Times-Bold & P /Times-Bold-ISOLatin1 F 1200 o f (3.10.3 ) h 3300 -16666 M (Compare Mutual Token) h 0 -19402 M /Times-Roman-ISOLatin1 F 1000 o f (Compare_mutual_token\() h 0 -20502 M ( \255\255inputs) h 0 -21602 M 14256 -21602 M (Generated_token) h 30212 -21602 M (Mutual authentication token,) h 0 -22702 M 14256 -22702 M (Received_token) h 30212 -22702 M (Mutual authentication token,) h 0 -23802 M ( \255\255outputs) h 0 -24902 M 14256 -24902 M (equality_flag) h 30212 -24902 M (Boolean\)) h 0 -26588 M 42.2 0 32 (This routine compares two mutual authentication tokens and tells whether they match. In the expected use, the first) W 0 -27638 M 12.3 0 32 (is the token generated by Create_token at the initiating end and the second is the token generated by Accept_token at) W 0 -28688 M 45.0 0 32 (the accepting end and returned to the initiating end. This routine can be implemented as a byte by byte comparison) W 0 -29738 M (of the two parameters.) h 0 -32524 M /Times-Bold-ISOLatin1 F 1200 o f (3.10.4 ) h 3300 -32524 M (Get Node Info) h 0 -35260 M /Times-Roman-ISOLatin1 F 1000 o f (get_node_info\() h 0 -36360 M ( \255\255inputs) h 0 -37460 M 14256 -37460 M (accepted_credentials) h 30212 -37460 M (Credentials,) h 0 -38560 M ( \255\255outputs) h 0 -39660 M 14256 -39660 M (nodename) h 30212 -39660 M (Name,) h 0 -40760 M 14256 -40760 M (username) h 30212 -40760 M (String\)) h 0 -42446 M 49.8 0 32 (This routine extracts from accepted credentials the name of the node from which the authentication token came and) W 0 -43496 M 89.1 0 32 (the named account on that node. Because this information is not cryptographically protected within the token, this) W 0 -44546 M 87.9 0 32 (information can only be regarded as a "hint" by the receiving application. It can, however, be verified using Ver\255) W 0 -45596 M 105.0 0 32 (ify_node_name in a cryptographically secure manner. This information will only be present if these are accepted) W 0 -46646 M (credentials and it the caller of Create_token set the ) h /Times-BoldItalic-ISOLatin1 $ /Times-BoldItalic & P /Times-BoldItalic-ISOLatin1 F 1000 o f (include_node_name ) h /Times-Roman-ISOLatin1 F 1000 o f (and/or ) h /Times-BoldItalic-ISOLatin1 F 1000 o f (include_username) h /Times-Roman-ISOLatin1 F 1000 o f ( flags.) h 0 -49282 M 129.2 0 32 (An actual implementation is not likely to have get_node_info and verify_node_name as separate calls. They are) W 0 -50332 M 26.8 0 32 (specified this way because there are different ways this information might be used. For most applications, the node\255) W 0 -51382 M 83.8 0 32 (name and username will be included in the token, and a single function might extract and verify them \(it might in) W 0 -52432 M 40.3 0 32 (fact be part of accept token\). For other applications) W 40.3 0 32 (,) W 40.3 0 32 ( the nodename and username will not be in the token but rather) W 0 -53482 M 88.4 0 32 (will be computed from other information ) W 88.4 0 32 (passed during connection initiation ) W 88.4 0 32 (so a call would have to take these as) W 0 -54532 M 18.9 0 32 (inputs. Still other applications ) W 18.9 0 32 (such as ) W 18.9 0 32 (ACL evaluators) W 18.9 0 32 ( that want to support the renaming and aliasing capabilities of) W 0 -55582 M 29.9 0 32 (DASS) W 29.9 0 32 ( would defer verifying node information until they came upon an ACL which allowed access only from a par\255) W 0 -56632 M 117.2 0 32 (ticular node. ) W 117.2 0 32 (They ) W 117.2 0 32 (would then verify that the name on the ACL was an authenticatable alias for the node which) W 0 -57682 M (created the token. All of these uses can be defined in terms of calls to get_node_info and verify_node_name.) h -8503 8502 T R showpage $P e %%Page: 48 48 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 42570 -900 M (Page ) h (48) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 0 -900 M /Times-Bold-ISOLatin1 $ /Times-Bold & P /Times-Bold-ISOLatin1 F 1200 o f (3.10.5 ) h 3300 -900 M (Get Principal UID) h 0 -3072 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1000 o f (get_principal_uid\() h 0 -4172 M ( \255\255inputs) h 0 -5272 M 14256 -5272 M (accepted_credentials) h 30212 -5272 M (Credentials,) h 0 -6372 M ( \255\255outputs) h 0 -7472 M 14256 -7472 M (uid) h 30212 -7472 M (UID\)) h 0 -8594 M (This routine extracts a principal UID from a set of credentials.) h 0 -10666 M 29.8 0 32 (As with Get_Node_Info, this interface is not likely to appear in an actual implementation, but rather will be bundled) W 0 -11716 M 47.8 0 32 (with other routines. It is specified this way because there might be a variety of algorithms by which credentials are) W 0 -12766 M (evaluated and all of them can be defined in terms of these primitives.) h 0 -14838 M 43.6 0 32 (In DASS, it is possible for a principal to have many aliases. This can happen either because the principal was given) W 0 -15888 M 6.4 0 32 (multiple names to limit the number of CAs that need to be trusted when authenticating to different servers or because) W 0 -16938 M 90.2 0 32 (the principal's name has changed and the old name remains behind as an alias. Accept_token returns the name by) W 0 -17988 M 79.3 0 32 (which the principal identified itself when creating its credentials. A service may know the user by some alias. The) W 0 -19038 M 38.1 0 32 (normal way to handle this is for the service to know the principal's UID \(which is constant over name changes\) and) W 0 -20088 M 49.8 0 32 (to compare it with the UID in the token to identify a likely alias situation. It gets the UID from the token using this) W 0 -21138 M (routine. It then confirms the alias by calling verify_principal_name.) h 0 -23210 M 44.2 0 32 (The UID is in a signed portion of accepted credentials, but the signature may not have been verified at the time this) W 0 -24260 M 160.9 0 32 (call is issued. The information returned by this routine must therefore be regarded as a hint. If a call to Ver\255) W 0 -25310 M 20.4 0 32 (ify_principal_name succeeds, however, then the caller can securely know that the name given to that routine ) W /Times-BoldItalic-ISOLatin1 $ /Times-BoldItalic & P /Times-BoldItalic-ISOLatin1 F 1000 o f 20.4 0 32 (and) W /Times-Roman-ISOLatin1 F 1000 o f 20.4 0 32 ( the) W 0 -26360 M (UID returned by this one are the authenticated source of the token.) h 0 -28582 M /Times-Bold-ISOLatin1 F 1200 o f (3.10.6 ) h 3300 -28582 M (Get Principal Name) h 0 -30754 M /Times-Roman-ISOLatin1 F 1000 o f (get_principal_name\() h 0 -31854 M ( \255\255inputs) h 0 -32954 M 14256 -32954 M (accepted_credentials) h 30212 -32954 M (Credentials,) h 0 -34054 M ( \255\255outputs) h 0 -35154 M 14256 -35154 M (name) h 30212 -35154 M (Name\)) h 0 -36276 M 22.5 0 32 (This routine extracts a principal name from a set of credentials. This name is the name most recently associated with) W 0 -37326 M 28.5 0 32 (the principal. It may be the name that the principal supplied when the credentials were created \(in which case it may) W 0 -38376 M (not have been verified yet\) or it may be a different name that has been verified.) h 0 -40448 M 30.0 0 32 (As with Get_Node_Info and Get_Principal_UID, this routine is not likely to appear in an actual implementation, but) W 0 -41498 M 51.8 0 32 (will be bundled in some fashion with related procedures. The name returned by this procedure is not guaranteed to) W 0 -42548 M (have been cryptographically verified. Verify_Principal_Name performs that function.) h 0 -44770 M /Times-Bold-ISOLatin1 F 1200 o f (3.10.7 ) h 3300 -44770 M (Get Lifetime) h 0 -46942 M /Times-Roman-ISOLatin1 F 1000 o f (get_lifetime\() h 0 -48042 M ( \255\255inputs) h 0 -49142 M 14256 -49142 M (Claimant_credentials) h 30212 -49142 M (Credentials,) h 0 -50242 M ( \255\255outputs) h 0 -51342 M 14256 -51342 M (lifetime) h 30212 -51342 M (Duration\)) h 0 -52464 M 73.1 0 32 (This routine computes the life remaining in a set of credentials. Its most common use would be to know to renew) W 0 -53514 M (credentials before they expire.) h 0 -55586 M 72.8 0 32 (Returns the remaining lifetime of the login ticket in the credentials. This can either be the done on the node where) W 0 -56636 M 41.0 0 32 (the original login took place, or at a server which has been delegated to. It indicates how much longer these creden\255) W 0 -57686 M 41.5 0 32 (tials can be used for further delegations. This routine will return 0 if the login ticket has passed the end of its life, if) W -8503 8502 T R showpage $P e %%Page: 49 49 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 42570 -900 M (Page ) h (49) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 0 -750 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1000 o f 99.0 0 32 (there is no login ticket, or if the credentials do not contain the private key certified by the ticket \(i.e. where they) W 0 -1800 M (were created by an authentication\255without\255delegation operation\).) h 0 -4095 M /Times-Bold-ISOLatin1 $ /Times-Bold & P /Times-Bold-ISOLatin1 F 1200 o f (3.10.8 ) h 3300 -4095 M (Verify Node Name) h 0 -6340 M /Times-Roman-ISOLatin1 F 1000 o f (Verify_node_name\() h 0 -7440 M ( \255\255inputs) h 0 -8540 M 14256 -8540 M (nodename) h 30212 -8540 M (Name,) h 0 -9640 M 14256 -9640 M (username) h 30212 -9640 M (String,) h 0 -10740 M ( \255\255updated) h 0 -11840 M 14256 -11840 M (verifying_credentials) h 30212 -11840 M (Credentials,) h 0 -12940 M 14256 -12940 M (accepted_credentials) h 30212 -12940 M (Credentials,) h 0 -14040 M ( \255\255outputs) h 0 -15140 M 14256 -15140 M (Name matches) h 30212 -15140 M (Boolean\)) h 0 -16335 M 108.5 0 32 (This routine tests whether the originating node of an authentication token can be authenticated as having the pro\255) W 0 -17385 M 15.2 0 32 (vided name. Like a principal, a node may have multiple aliases. One of them may be returned by Get_node_info, but) W 0 -18435 M 75.4 0 32 (this call allows a suspected alias to be verified. The verifying credentials supplied with this call must be the same) W 0 -19485 M (credentials as were used in the Accept_token call. The procedure for completing this request is as follows:) h 709 -21630 M (a\)) h 2154 -21630 M (If there is no Node Ticket in the claimant credentials then return False.) h 709 -23775 M (b\)) h 2154 -23775 M 168.4 0 32 (Search the incoming context cache of the verifying credentials for an entry containing the same encrypted) W 2154 -24825 M 35.4 0 32 (shared key as the encrypted shared key subfield of the claimant information of the accepted credentials. In the) W 2154 -25875 M 96.6 0 32 (steps which follow, references to "the cache" refer to this entry. If none is found, initialize such an entry as) W 2154 -26925 M (follows:) h 2154 -28870 M (1\)) h 3600 -28870 M 90.5 0 32 (Encrypted shared key from the encrypted shared key subfield of the claimant information of the accepted) W 3600 -29920 M (credentials.) h 2154 -31865 M (2\)) h 3600 -31865 M 44.8 0 32 (The shared key and validity interval are determined by decrypting the encrypted shared key using the RSA) W 3600 -32915 M 108.1 0 32 (private key in the verifier information of the server credentials. If this procedure is called after a call to) W 3600 -33965 M 53.7 0 32 (Accept_token using the same server credentials \(as is required for correct use\), the shared key and validity) W 3600 -35015 M 50.6 0 32 (interval must correctly decrypt. If called in some other context, the results are undefined. The validity in\255) W 3600 -36065 M (terval is not checked.) h 2154 -38010 M (3\)) h 3600 -38010 M (Initialize all other entries in the cache to missing.) h 709 -40155 M (c\)) h 2154 -40155 M 121.0 0 32 (If there is a "local username on client node" in the cache and it does not match the username supplied as a) W 2154 -41205 M (parameter, return False.) h 709 -43350 M (d\)) h 2154 -43350 M (If there is a "name of client node" in the cache and it matches the nodename supplied as a parameter:) h 2154 -45295 M (1\)) h 3600 -45295 M 41.5 0 32 (Set the "Full name of the node" subfield of the remote node authentication field of the accepted credentials) W 3600 -46345 M (to be the nodename supplied as a parameter.) h 2154 -48290 M (2\)) h 3600 -48290 M 44.9 0 32 (Set the "Local Username on the node" subfield of the remote node authentication field of the accepted cre\255) W 3600 -49340 M (dentials to be the username supplied as a parameter.) h 2154 -51285 M (3\)) h 3600 -51285 M (return True.) h 709 -53430 M (e\)) h 2154 -53430 M 172.8 0 32 (Call the Get_Pub_Keys subroutine with the server_credentials, the nodename supplied as a parameter, and) W 2154 -54480 M (Try_Hard=False.) h 709 -56625 M (f\)) h 2154 -56625 M 85.2 0 32 (If "Public Key of Client Node" is missing from the cache, check all of the Public keys returned to see if one) W 2154 -57675 M 1.3 0 32 (verifies the node ticket. If one does, set the "Public Key of Client Node" and "UID of Client Node" fields in the) W -8503 8502 T R showpage $P e %%Page: 50 50 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 42570 -900 M (Page ) h (50) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 2154 -750 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1000 o f 17.9 0 32 (cache to be the PK/UID pair that verified the ticket and set the "Local Username on Client node" field to be the) W 2154 -1800 M (username supplied as a parameter..) h 709 -4032 M (g\)) h 2154 -4032 M 43.1 0 32 (If any of the Public Key/UID pairs match the "Public Key of Client Node" and "UID of Client Node" fields in) W 2154 -5082 M (the cache, then:) h 2154 -7114 M (1\)) h 3600 -7114 M (Set the "name of client node" in the cache equal to the nodename supplied as a parameter.) h 2154 -9146 M (2\)) h 3600 -9146 M 41.5 0 32 (Set the "Full name of the node" subfield of the remote node authentication field of the accepted credentials) W 3600 -10196 M (to be the nodename supplied as a parameter.) h 2154 -12228 M (3\)) h 3600 -12228 M 44.9 0 32 (Set the "Local Username on the node" subfield of the remote node authentication field of the accepted cre\255) W 3600 -13278 M (dentials to be the username supplied as a parameter.) h 2154 -15310 M (4\)) h 3600 -15310 M (Return True.) h 709 -17542 M (h\)) h 2154 -17542 M 29.9 0 32 (If none of them match, call Get_Pub_Keys again with Try_Hard=True and repeat steps 6 & 7. If Step 7 fails a) W 2154 -18592 M (second time, return False.) h 0 -20974 M /Times-Bold-ISOLatin1 $ /Times-Bold & P /Times-Bold-ISOLatin1 F 1200 o f (3.10.9 ) h 3300 -20974 M (Verify Principal Name) h 0 -23306 M /Times-Roman-ISOLatin1 F 1000 o f (Verify_principal_name\() h 0 -24406 M ( \255\255inputs) h 0 -25506 M 14256 -25506 M (principal_name) h 30212 -25506 M (Name,) h 0 -26606 M ( \255\255updated) h 0 -27706 M 14256 -27706 M (verifier_credentials) h 30212 -27706 M (Credentials,) h 0 -28806 M 14256 -28806 M (claimant_credentials) h 30212 -28806 M (Credentials,) h 0 -29906 M ( \255\255outputs) h 0 -31006 M 14256 -31006 M (Name matches) h 30212 -31006 M (Boolean\)) h 0 -32288 M 85.9 0 32 (This routine tests \(in the context of the verifier credentials\) whether the claimant credentials are authenticatable as) W 0 -33338 M 60.6 0 32 (being those of the named principal. This procedure is called with a set of accepted credentials to authenticate the) W 60.6 0 32 (ir) W 0 -34388 M 27.1 0 32 (source) W 27.1 0 32 (,) W 27.1 0 32 ( or with a set of credentials produced by network_login to authenticate the creator of those credentials. If the) W 0 -35438 M 139.7 0 32 (claimant ) W 139.7 0 32 (credentials were created by Accept_token, then the verifier credentials supplied in this call must be the) W 0 -36488 M (same as those used in that call. The procedure for completing this request is as follows:) h 709 -38720 M (a\)) h 2154 -38720 M (If there is no Login Ticket in the claimant credentials, then return False.) h 709 -40952 M (b\)) h 2154 -40952 M (If the current time is not within the validity interval of the Login Ticket, then return False.) h 709 -43184 M (c\)) h 2154 -43184 M 52.1 0 32 (If there is an Encrypted Shared Key present in the Claimant information field of the claimant credentials, then) W 2154 -44234 M 78.9 0 32 (find or create a matching cache entry in the Cached Incoming Contexts of the verifier credentials. In the de\255) W 2154 -45284 M 112.0 0 32 (scription which follows, references to "the cache" refer to this entry. If the cache entry must be created, its) W 2154 -46334 M (contents is set to be as follows:) h 2154 -48366 M (1\)) h 3600 -48366 M 90.5 0 32 (Encrypted shared key from the encrypted shared key subfield of the claimant information of the accepted) W 3600 -49416 M (credentials.) h 2154 -51448 M (2\)) h 3600 -51448 M 44.8 0 32 (The shared key and validity interval are determined by decrypting the encrypted shared key using the RSA) W 3600 -52498 M 108.1 0 32 (private key in the verifier information of the server credentials. If this procedure is called after a call to) W 3600 -53548 M 53.7 0 32 (Accept_token using the same server credentials \(as is required for correct use\), the shared key and validity) W 3600 -54598 M 50.6 0 32 (interval must correctly decrypt. If called in some other context, the results are undefined. The validity in\255) W 3600 -55648 M (terval is not checked.) h 2154 -57680 M (3\)) h 3600 -57680 M (Initialize all other entries in the cache to missing.) h -8503 8502 T R showpage $P e %%Page: 51 51 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 42570 -900 M (Page ) h (51) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 709 -750 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1000 o f (d\)) h 2154 -750 M 88.1 0 32 (If there is a cache entry and if the "Public Key of Client Principal" field is present and if the "UID of Client) W 2154 -1800 M (Principal" field is present and matches the UID in the Login Ticket, then:) h 2154 -3727 M (1\)) h 3600 -3727 M 50.6 0 32 (Set the Public Key of the principal field in the Claimant information to be the Public Key of Client Princi\255) W 3600 -4777 M (pal.) h 2154 -6704 M (2\)) h 3600 -6704 M 3.8 0 32 (If the "Full name of the principal" field is missing from the claimant information of the claimant credentials,) W 3600 -7754 M (then set it to the "Name of Client Principal" field from the cache.) h 709 -9881 M (e\)) h 2154 -9881 M 99.9 0 32 (If there is a cache entry and if the "Name of Client Principal" field is present and if it matches the principal) W 2154 -10931 M (name supplied to this routine and if the UID in the cache matches the UID in the Login Ticket, return True.) h 709 -13058 M (f\)) h 2154 -13058 M 316.9 0 32 (Call the Get_Pub_Keys subroutine with the name and verifier credentials supplied to this routine and) W 2154 -14108 M 119.1 0 32 (Try_Hard=FALSE. Ignore any keys retrieved where the corresponding UID does not match the UID in the) W 2154 -15158 M (claimant credentials.) h 709 -17285 M (g\)) h 2154 -17285 M 117.2 0 32 (If the Public Key of the principal is missing from the claimant information of the claimant credentials, then) W 2154 -18335 M 32.2 0 32 (attempt to verify the signature on the login ticket with each public key returned by Get_Pub_Keys. If verifica\255) W 2154 -19385 M (tion succeeds:) h 2154 -21312 M (1\)) h 3600 -21312 M 61.2 0 32 (Set the Public Key of the principal in the claimant information of the claimant credentials to be the Public) W 3600 -22362 M (Key that verified the ticket.) h 2154 -24289 M (2\)) h 3600 -24289 M 49.2 0 32 (If the Full name of the principal in the claimant information of the claimant credentials is missing, set it to) W 3600 -25339 M (the name supplied to this routine.) h 2154 -27266 M (3\)) h 3600 -27266 M 14.9 0 32 (If there is a cache entry, set the Name of Client Principal to be the name supplied to this routine, the UID of) W 3600 -28316 M 0.9 0 32 (Client Principal to be the UID from the Login Ticket, and the Public Key of Client Principal to be the Public) W 3600 -29366 M (Key that verified the ticket.) h 2154 -31293 M (4\)) h 3600 -31293 M (Return True.) h 709 -33420 M (h\)) h 2154 -33420 M 9.4 0 32 (If the Public Key of the principal is present in the claimant information of the claimant credentials, then see if it) W 2154 -34470 M (matches any of the public keys returned by Get_Pub_Keys. If one of them matches:) h 2154 -36397 M (1\)) h 3600 -36397 M 49.2 0 32 (If the Full name of the principal in the claimant information of the claimant credentials is missing, set it to) W 3600 -37447 M (the name supplied to this routine.) h 2154 -39374 M (2\)) h 3600 -39374 M 14.9 0 32 (If there is a cache entry, set the Name of Client Principal to be the name supplied to this routine, the UID of) W 3600 -40424 M 0.9 0 32 (Client Principal to be the UID from the Login Ticket, and the Public Key of Client Principal to be the Public) W 3600 -41474 M (Key that verified the ticket.) h 2154 -43401 M (3\)) h 3600 -43401 M (Return True.) h 709 -45528 M (i\)) h 2154 -45528 M 78.9 0 32 (If steps 7 & 8 fail, retry the call to Get_Pub_Keys with Try_Hard=TRUE, and retry steps 7 & 8. If they fail) W 2154 -46578 M (again, return false.) h 0 -48855 M /Times-Bold-ISOLatin1 $ /Times-Bold & P /Times-Bold-ISOLatin1 F 1200 o f (3.10.10 ) h 3900 -48855 M (Get Pub Keys) h 0 -51082 M /Times-Roman-ISOLatin1 F 1000 o f (Get_Pub_Keys\() h 0 -52182 M ( \255\255inputs) h 0 -53282 M 14256 -53282 M (TA_credentials) h 30212 -53282 M (Credentials) h 0 -54382 M 14256 -54382 M (Try_Hard) h 30212 -54382 M (Boolean,) h 0 -55482 M 14256 -55482 M (Target Name) h 30212 -55482 M (Name,) h 0 -56582 M ( \255\255outputs) h 0 -57682 M 14256 -57682 M (Pub_keys) h 30212 -57682 M (Set of Public key/UID pairs) h -8503 8502 T R showpage $P e %%Page: 52 52 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 42570 -900 M (Page ) h (52) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 0 -750 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1000 o f 521.7 0 32 (This common subroutine is used in the execution of Create_Token, Verify_Principal_Name, and Ver\255) W 0 -1800 M 88.7 0 32 (ify_Node_Name. Given the name of a principal, it retrieves a set of public key/UID pairs which authenticate that) W 0 -2850 M 38.7 0 32 (principal \(normally only one pair\). It does this by retrieving from the naming service a series of certificates, verify\255) W 0 -3900 M (ing the signatures on those certificates, and verifying that the sequence of certificates constitute a valid "treewalk".) h 0 -6107 M 19.3 0 32 (The credentials structure passed into this procedure represent a starting point for the treewalk. Included in these cre\255) W 0 -7157 M 105.7 0 32 (dentials will be the public key, UID, and name of an authority that is trusted to authenticate all remote principals) W 0 -8207 M (\(directly or indirectly\).) h 0 -10414 M 52.5 0 32 (The "Try_Hard" bit is a specification anomaly resulting from the fact that caches maintained by this routine are not) W 0 -11464 M 45.9 0 32 (transparent to the calling routines. It tells this procedure to bypass caches when doing all name service lookups be\255) W 0 -12514 M 38.6 0 32 (cause the information in caches is believed to be stale. In general, a routine will call Get_Pub_Keys with Try_Hard) W 0 -13564 M 80.2 0 32 (set false and try to use the keys returned. If use of those keys fails, the calling routine may call this routine again) W 0 -14614 M 57.4 0 32 (with Try_Hard set true in hopes of getting additional keys. Routinely calling this routine with Try_Hard set true is) W 0 -15664 M (likely to have adverse performance implications but would not affect the correctness or the security of the operation.) h 0 -17871 M 9.8 0 32 (The name supplied is the full X.500 name of the principal for whom public keys are needed as part of some authenti\255) W 0 -18921 M (cation process.) h 0 -21128 M 5.4 0 32 (This procedure securely learns the public keys and UIDs of foreign principals by constructing a valid chain of certifi\255) W 0 -22178 M 21.5 0 32 (cates between its trusted TA and the certificate naming the foreign principal. In the simplest case, where the TA has) W 0 -23228 M 124.2 0 32 (signed a certificate for the foreign principal, the chain consists of a single certificate. Otherwise, the chain must) W 0 -24278 M 37.2 0 32 (consist of a series of certificates where the first is signed by the TA, the last is a certificate for the foreign principal,) W 0 -25328 M (and the subject of each principal in the chain is the issuer of the next.) h 0 -27535 M 137.8 0 32 (What follows is first a definition of what constitutes a valid chain of certificates followed by a model algorithm) W 0 -28585 M (which constructs all of \(and only\) the valid chains which exist between the TA and the target name.) h 0 -30792 M 25.5 0 32 (In order to limit the implications of the compromise of a single CA, and also to limit the complexity of the search of) W 0 -31842 M 51.9 0 32 (the certificate space, there are restrictions on what constitutes a valid chain of certificates from the TA to the Name) W 0 -32892 M 80.4 0 32 (provided. The only CAs whose compromise should be able to compromise an authentication are those controlling) W 0 -33942 M 82.7 0 32 (directories that are ancestors of one of the two names and that are not above a common ancestor. Therefore, only) W 0 -34992 M 54.8 0 32 (certificates signed by those CAs will be considered valid in a certificate chain. Normally, the CA for a directory is) W 0 -36042 M 84.0 0 32 (expected to certify a public key and UID for the CA of each child directory and one parent directory. A CA may) W 0 -37092 M 19.9 0 32 (also certify another CA for some remote part of the naming hierarchy, and such certificates are necessary if there are) W 0 -38142 M (no CAs assigned to directories high in the naming hierarchy.) h 0 -40349 M (A certificate chain is considered ) h /Times-BoldItalic-ISOLatin1 $ /Times-BoldItalic & P /Times-BoldItalic-ISOLatin1 F 1000 o f (valid) h /Times-Roman-ISOLatin1 F 1000 o f ( if it meets the following criteria:) h 709 -42556 M (a\)) h 2154 -42556 M 40.0 0 32 (It must consist of zero or more ) W /Times-BoldItalic-ISOLatin1 F 1000 o f 40.0 0 32 (parent) W /Times-Roman-ISOLatin1 F 1000 o f 40.0 0 32 ( certificates, followed by zero or one ) W /Times-BoldItalic-ISOLatin1 F 1000 o f 40.0 0 32 (cross) W /Times-Roman-ISOLatin1 F 1000 o f 40.0 0 32 ( certificates, followed by zero) W 2154 -43606 M (or more ) h /Times-BoldItalic-ISOLatin1 F 1000 o f (child) h /Times-Roman-ISOLatin1 F 1000 o f ( certificates.) h 709 -45813 M (b\)) h 2154 -45813 M 93.0 0 32 (The number of ) W /Times-BoldItalic-ISOLatin1 F 1000 o f 93.0 0 32 (parent) W /Times-Roman-ISOLatin1 F 1000 o f 93.0 0 32 ( certificates may not exceed the number of levels in the naming hierarchy between the) W 2154 -46863 M 83.2 0 32 (TA name and the name of the least common ancestor in the naming hierarchy between the TA name and the) W 2154 -47913 M (target name.) h 709 -50120 M (c\)) h 2154 -50120 M (Each ) h /Times-BoldItalic-ISOLatin1 F 1000 o f (parent) h /Times-Roman-ISOLatin1 F 1000 o f ( certificate must be stored in the naming service under the entry of its issuer.) h 709 -52327 M (d\)) h 2154 -52327 M 64.7 0 32 (The subject of the ) W /Times-BoldItalic-ISOLatin1 F 1000 o f 64.7 0 32 (cross) W /Times-Roman-ISOLatin1 F 1000 o f 64.7 0 32 ( certificate \(if any\) must be an ancestor of the target name but m) W 64.7 0 32 (ust ) W 64.7 0 32 (be a ) W 64.7 0 32 (longe) W 64.7 0 32 (r name) W 2154 -53377 M (than the least common ancestor of the TA name and the target name.) h 709 -55584 M (e\)) h 2154 -55584 M 49.9 0 32 (The ) W /Times-BoldItalic-ISOLatin1 F 1000 o f 49.9 0 32 (cross) W /Times-Roman-ISOLatin1 F 1000 o f 49.9 0 32 ( certificate \(if any\) must have been stored in the naming service under the entry of its issuer or there) W 2154 -56634 M 95.3 0 32 (must have been an indication in the naming service that certificates signed by this issuer may be stored with) W 2154 -57684 M (their subjects.) h -8503 8502 T R showpage $P e %%Page: 53 53 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 42570 -900 M (Page ) h (53) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 709 -750 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1000 o f (f\)) h 2154 -750 M 51.0 0 32 (The issuer of each ) W /Times-BoldItalic-ISOLatin1 $ /Times-BoldItalic & P /Times-BoldItalic-ISOLatin1 F 1000 o f 51.0 0 32 (parent) W /Times-Roman-ISOLatin1 F 1000 o f 51.0 0 32 ( certificate does not have stored with it in the naming service a ) W /Times-BoldItalic-ISOLatin1 F 1000 o f 51.0 0 32 (cross) W /Times-Roman-ISOLatin1 F 1000 o f 51.0 0 32 ( certificate) W 51.0 0 32 ( with) W 2154 -1800 M (the same issuer) h ( whose subject is an ancestor of the target name.) h 709 -3868 M (g\)) h 2154 -3868 M (Each ) h /Times-BoldItalic-ISOLatin1 F 1000 o f (child) h /Times-Roman-ISOLatin1 F 1000 o f ( certificate must be stored in the naming service under the entry of its subject.) h 709 -5936 M (h\)) h 2154 -5936 M 80.1 0 32 (The subject of each ) W /Times-BoldItalic-ISOLatin1 F 1000 o f 80.1 0 32 (child ) W /Times-Roman-ISOLatin1 F 1000 o f 80.1 0 32 (certificate does not have associated with it in the naming service a ) W /Times-BoldItalic-ISOLatin1 F 1000 o f 80.1 0 32 (cross ) W /Times-Roman-ISOLatin1 F 1000 o f 80.1 0 32 (certificate) W 2154 -6986 M 11.7 0 32 (with the same subject) W 11.7 0 32 ( whose issuer is the same as the issuer of any of the ) W /Times-BoldItalic-ISOLatin1 F 1000 o f 11.7 0 32 (parent) W /Times-Roman-ISOLatin1 F 1000 o f 11.7 0 32 ( certificates or the ) W /Times-BoldItalic-ISOLatin1 F 1000 o f 11.7 0 32 (cross ) W /Times-Roman-ISOLatin1 F 1000 o f 11.7 0 32 (certifi\255) W 2154 -8036 M (cate of the chain.) h 709 -10104 M (i\)) h 2154 -10104 M 62.3 0 32 (The subject of each certificate must be the issuer of the certificate ) W 62.3 0 32 (that ) W 62.3 0 32 (follows in the chain. The equality test) W 2154 -11154 M (can be met by either of two methods:) h 2154 -13022 M (1\)) h 3600 -13022 M 39.3 0 32 (The public key of the subject in the earlier certificate verifies the signature of the later and the subject UID) W 3600 -14072 M (in the earlier certificate is equal to the issuer UID in the later; or) h 2154 -15940 M (2\)) h 3600 -15940 M 78.8 0 32 (The public key of the subject in the earlier certificate verifies the signature of the later,) W 78.8 0 32 ( the earlier lacks a) W 3600 -16990 M 2.7 0 32 (subject UID and/or the later lacks an issuer UID a) W 2.7 0 32 (nd the name of the subject in the earlier certificate is equal) W 3600 -18040 M (to the name of the issuer in the later.) h 709 -20108 M (j\)) h 2154 -20108 M (The Public Key of the TA verifies the signature of the first certificate.) h 709 -22176 M (k\)) h 2154 -22176 M 90.4 0 32 (The UID of the TA equals the UID of the issuer of the first certificate ) W /Times-BoldItalic-ISOLatin1 F 1000 o f 90.4 0 32 (or) W /Times-Roman-ISOLatin1 F 1000 o f 90.4 0 32 ( the UID is missing on one or both) W 2154 -23226 M (places and the name of the TA equals the name of the issuer of the first certificate.) h 709 -25294 M (l\)) h 2154 -25294 M (All of the certificates are valid X.509 encodings and the current time is within all of their validity intervals.) h 0 -27362 M (If a chain is ) h /Times-BoldItalic-ISOLatin1 F 1000 o f (valid) h /Times-Roman-ISOLatin1 F 1000 o f (, the name which it authenticates can be constructed as follows:) h 709 -29430 M (a\)) h 2154 -29430 M 62.0 0 32 (If the chain contains a ) W /Times-BoldItalic-ISOLatin1 F 1000 o f 62.0 0 32 (cross) W /Times-Roman-ISOLatin1 F 1000 o f 62.0 0 32 ( certificate, the name authenticated can be constructed by taking the subject name) W 2154 -30480 M 14.6 0 32 (from the cross certificate and appending to it a relative name for each child certificate which follows. The rela\255) W 2154 -31530 M (tive name is the extension by which the subject name in the child certificate extends the issuer name.) h 709 -33598 M (b\)) h 2154 -33598 M 97.1 0 32 (If the chain does not contain a ) W /Times-BoldItalic-ISOLatin1 F 1000 o f 97.1 0 32 (cross) W /Times-Roman-ISOLatin1 F 1000 o f 97.1 0 32 ( certificate, the name authenticated can be constructed by taking the TA) W 2154 -34648 M 39.2 0 32 (name, truncating from it the last ) W /Times-BoldItalic-ISOLatin1 F 1000 o f 39.2 0 32 (n) W /Times-Roman-ISOLatin1 F 1000 o f 39.2 0 32 ( name components where ) W /Times-BoldItalic-ISOLatin1 F 1000 o f 39.2 0 32 (n) W /Times-Roman-ISOLatin1 F 1000 o f 39.2 0 32 ( is the number of ) W /Times-BoldItalic-ISOLatin1 F 1000 o f 39.2 0 32 (parent) W /Times-Roman-ISOLatin1 F 1000 o f 39.2 0 32 ( certificates in the chain,) W 2154 -35698 M 105.2 0 32 (and appending to the result a relative name for each child certificate. The relative name is the extension by) W 2154 -36748 M (which the subject name in the child certificate extends the issuer name.) h 0 -38816 M 18.7 0 32 ( In the common case, the authenticated name will be the subject name in the last certificate. The authenticated name) W 0 -39866 M 75.4 0 32 (is constructed by the rules above to deal with namespace reorganization. If a branch of the namespace is renamed) W 0 -40916 M 61.3 0 32 (\(due to, for example, a corporate acquisition or reorganization\), only the certificates around the break point need to) W 0 -41966 M 94.8 0 32 (be regenerated. Certificates below the break will continue to contain the old names \(until renewed\), but the algo\255) W 0 -43016 M 124.2 0 32 (rithms above assure the principals in that branch will be able to authenticate as their new names. Further, if the) W 0 -44066 M 20.0 0 32 (certificates at the branch point are maintained for both the old and new names for an interim period, principals in the) W 0 -45116 M 99.9 0 32 (moved branch will be able to authenticate as either their old or new names for that interim period without having) W 0 -46166 M (duplicate certificates.) h 0 -48234 M 44.8 0 32 (A final complication that the algorithm must deal with is the location of ) W /Times-BoldItalic-ISOLatin1 F 1000 o f 44.8 0 32 (cross) W /Times-Roman-ISOLatin1 F 1000 o f 44.8 0 32 ( certificates. If a key is compromised) W 0 -49284 M 31.0 0 32 (or for some other reason it is important to revoke a certificate ahead of its expiration, it is removed from the naming) W 0 -50334 M 11.4 0 32 (service. This algorithm will only use certificates that it has recently retrieved from the naming service, so revocation) W 0 -51384 M 69.4 0 32 (is as effective as the mechanisms that prevent impersonation of the naming service. There are plans to eventually) W 0 -52434 M 22.2 0 32 (use DASS mechanisms to secure access to the naming service; until they are in place, name service impersonation is) W 0 -53484 M 48.2 0 32 (a theoretical threat to the security of revocation. Opinions differ as to whether it is a practical threat. ) W /Times-BoldItalic-ISOLatin1 F 1000 o f 48.2 0 32 (Child) W /Times-Roman-ISOLatin1 F 1000 o f 48.2 0 32 ( certifi\255) W 0 -54534 M 10.6 0 32 (cates are always stored with the subject and will not be found unless stored in the name server of the subject. ) W /Times-BoldItalic-ISOLatin1 F 1000 o f 10.6 0 32 (Parent) W 0 -55584 M /Times-Roman-ISOLatin1 F 1000 o f 10.6 0 32 (certificates are always stored with the issuer and will not be found unless stored in the name server of the issuer. For) W 0 -56634 M 63.5 0 32 (best security, ) W /Times-BoldItalic-ISOLatin1 F 1000 o f 63.5 0 32 (cross) W /Times-Roman-ISOLatin1 F 1000 o f 63.5 0 32 ( certificates should be stored with the issuer because the name server for the subject may not be) W 0 -57684 M 72.4 0 32 (adequately trustworthy to perform revocation. There are performance and availability penalties, however, in doing) W -8503 8502 T R showpage $P e %%Page: 54 54 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 42570 -900 M (Page ) h (54) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 0 -750 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1000 o f 71.7 0 32 (so. The architecture and the algorithm therefore support storing ) W /Times-BoldItalic-ISOLatin1 $ /Times-BoldItalic & P /Times-BoldItalic-ISOLatin1 F 1000 o f 71.7 0 32 (cross ) W /Times-Roman-ISOLatin1 F 1000 o f 71.7 0 32 (certificates with either the issuer or the sub\255) W 0 -1800 M 17.3 0 32 (ject. There must be some sort of flag in the name service associated with the issuer saying whether ) W /Times-BoldItalic-ISOLatin1 F 1000 o f 17.3 0 32 (cross ) W /Times-Roman-ISOLatin1 F 1000 o f 17.3 0 32 (certificates) W 0 -2850 M 39.0 0 32 (from that issuer are permitted to be stored in the subject's name service entry, and if that flag is set such certificates) W 0 -3900 M (will be found and used.) h 0 -6091 M 41.6 0 32 (In order to make revocation effective, DASS must assure that naming service caches do not become arbitrarily stale) W 0 -7141 M 106.6 0 32 (\(the allowed age of a cache entry is included in the sum of times with together make up the revocation time\). If) W 0 -8191 M 30.7 0 32 (DASS uses a naming service such as DNS that does not time out cache entries, it must bypass cache on all calls and) W 0 -9241 M 58.1 0 32 (\(to achieve reasonable performance\) maintain its own naming service cache. It may be advantageous to maintain a) W 0 -10291 M 1.9 0 32 (cache in any case so the that the fact that the certificates have been verified can be cached as well as the fact that they) W 0 -11341 M (are current.) h 0 -13607 M /Times-Bold-ISOLatin1 $ /Times-Bold & P /Times-Bold-ISOLatin1 F 1100 o f (3.10.10.1 ) h 4400 -13607 M (Basic Algorithm) h 0 -15873 M /Times-Roman-ISOLatin1 F 1000 o f 98.5 0 32 (For ease of exposition, this first description will ignore the operation of any caches. Permissible modifications to) W 0 -16923 M 20.2 0 32 (take advantage of caches and enhance performance will be covered in the next section. This path will be followed if) W 0 -17973 M (the Try_Hard bit is set True on the call.) h 0 -20164 M 100.0 0 32 (Rather than trying construct all possible chains between the TA and the name to be authenticated \(in the event of) W 0 -21214 M 44.0 0 32 (multiple certificates per principal, there could be exponentially many valid chains\), this algorithm computes a set of) W 0 -22264 M 28.5 0 32 (PK/UID/Name triples that are valid for each principal on the path between the TA and the name to be authenticated. ) W 0 -23314 M (By doing so, it minimizes the processing of redundant information.) h 709 -25505 M (a\)) h 2154 -25505 M (Determining path and initialization) h 2154 -27696 M (Several state variables are manipulated during the tree walk. These are called:) h 2154 -29687 M (1\)) h 3600 -29687 M (Current\255directory\255name) h 3600 -30737 M (This is the name indicating the current place in the tree walk. Initially, this is the name of the TA.) h 2154 -32728 M (2\)) h 3600 -32728 M (Least\255Common\255Ancestor\255Name) h 3600 -33778 M 123.8 0 32 (This is the portion of the names which is common to both the CA and the Target. This is computed at) W 3600 -34828 M (initialization and does not change during the treewalk.) h 2154 -36819 M (3\)) h 3600 -36819 M (Trusted\255Key\255Set) h 3600 -37869 M 5.6 0 32 (For each name which is an ancestor of either the TA or the Target but not of the Least\255Common\255Ancestor, a) W 3600 -38919 M 74.9 0 32 (list of PK/UID/Name triples. This is initialized to a single triple from the TA information in the supplied) W 3600 -39969 M (credentials.) h 2154 -41960 M (4\)) h 3600 -41960 M (Search\255when\255descending) h 3600 -43010 M 75.9 0 32 (This is a list of PK/UID/Name triples of issuers that will be trusted when descending the tree. This set is) W 3600 -44060 M (initially empty.) h 2154 -46051 M (5\)) h 3600 -46051 M (Saved\255RDNs) h 3600 -47101 M 128.6 0 32 (This is a sequence of Relative Distinguished Names \(RDNs\) stripped off the right of the target name to) W 3600 -48151 M (form Least\255common\255ancestor\255name. This "stack" is initially empty and is populated during Step 3.) h 709 -50342 M (b\)) h 2154 -50342 M (Ascending the "TA side" of the tree) h 2154 -52533 M 153.3 0 32 (While Current\255directory\255name is not identical to Common\255point\255Name the algorithm moves up the tree. At) W 2154 -53583 M (each step it does the following operations.) h 2154 -55574 M (1\)) h 3600 -55574 M 27.4 0 32 (Find all cross certificates stored in the naming service under Current\255directory\255name in which the subject is) W 3600 -56624 M 92.9 0 32 (an ancestor of the principal to be authenticated or an indication that cross certificates from this issuer are) W 3600 -57674 M 5.3 0 32 (stored in the subject entry. If there is an indication that such certificates are stored in the subject entry, copy) W -8503 8502 T R showpage $P e %%Page: 55 55 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 42570 -900 M (Page ) h (55) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 3600 -750 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1000 o f 133.0 0 32 (all triples in Trusted\255Key\255Set for Current\255directory\255name into the "Search\255when\255descending" list. If any) W 3600 -1800 M (such certificates are found, filter them to include only those which meet the following criteria:) h 3600 -3499 M (\(i\)) h 5669 -3499 M 32.6 0 32 (For some triple in the Trusted\255Key\255Set corresponding to the Current\255directory\255name, the public key in) W 5669 -4549 M 105.0 0 32 (the triple verifies the signature on the certificate ) W /Times-BoldItalic-ISOLatin1 $ /Times-BoldItalic & P /Times-BoldItalic-ISOLatin1 F 1000 o f 105.0 0 32 (and either) W /Times-Roman-ISOLatin1 F 1000 o f 105.0 0 32 ( the UID in the triple matches the issuer) W 5669 -5599 M 4.6 0 32 (UID in the certificate ) W /Times-BoldItalic-ISOLatin1 F 1000 o f 4.6 0 32 (or) W /Times-Roman-ISOLatin1 F 1000 o f 4.6 0 32 ( the UID in the triple and/or the certificate is missing and the name in the triple) W 5669 -6649 M (matches the issuer name in the certificate.) h 3600 -8348 M (\(ii\)) h 5669 -8348 M 82.1 0 32 (No certificates were found signed by this issuer in which the subject name is longer than the subject) W 5669 -9398 M 63.3 0 32 (name in this certificate \(i.e. if there are cross certificates to two different ancestors, accept only those) W 5669 -10448 M (which lead to the closest ancestor\).) h 3600 -12147 M (\(iii\)) h 5669 -12147 M (The current time is within the validity interval of the certificate.) h 2154 -14046 M (2\)) h 3600 -14046 M 16.9 0 32 (If any cross certificates were found \(whether or not they were all eliminated as part of the filtering process\),) W 3600 -15096 M 166.4 0 32 (set Current\255directory\255name to the longest name that was found in any certificate and construct a set of) W 3600 -16146 M 20.9 0 32 (PK/UID/Name triples for that name from the certificates which pass the filter and place them in the Trusted) W 3600 -17196 M 25.9 0 32 (Key Set associated with their subject. Exit the ascending tree loop at this point and proceed directly to step) W 3600 -18246 M 8.7 0 32 (3. Note that this means that if there are cross certificates to an ancestor of the target but they are all rejected) W 3600 -19296 M 25.9 0 32 (\(for example if they have expired\), the treewalk will ) W /Times-BoldItalic-ISOLatin1 F 1000 o f 25.9 0 32 (not) W /Times-Roman-ISOLatin1 F 1000 o f 25.9 0 32 ( construct a chain through the least common ances\255) W 3600 -20346 M 34.2 0 32 (tor and will ultimately fail unless a crosslink from a lower ancestor is found stored with its subject. This is) W 3600 -21396 M (a security feature.) h 2154 -23295 M (3\)) h 3600 -23295 M 29.2 0 32 (If no cross certificates are found, find all the parent directory certificates for the directory whose name is in) W 3600 -24345 M (the Current\255directory\255name. Filter these to find only those which meet the following criteria:) h 3600 -26044 M (\(i\)) h 5669 -26044 M (The current time is within the validity interval.) h 3600 -27743 M (\(ii\)) h 5669 -27743 M 91.8 0 32 (For some triple corresponding to the Current\255directory\255name, the public key in the triple verifies the) W 5669 -28793 M 23.6 0 32 (signature on the certificate ) W /Times-BoldItalic-ISOLatin1 F 1000 o f 23.6 0 32 (and) W /Times-Roman-ISOLatin1 F 1000 o f 23.6 0 32 ( ) W /Times-BoldItalic-ISOLatin1 F 1000 o f 23.6 0 32 (either ) W /Times-Roman-ISOLatin1 F 1000 o f 23.6 0 32 (the UID in the triple matches the issuer UID in the certificate ) W /Times-BoldItalic-ISOLatin1 F 1000 o f 23.6 0 32 (or) W 5669 -29843 M /Times-Roman-ISOLatin1 F 1000 o f 0.4 0 32 (the UID in the triple and/or the certificate is missing and the name in the triple matches the issuer name) W 5669 -30893 M (in the certificate.) h 2154 -32792 M (4\)) h 3600 -32792 M 14.5 0 32 (Construct PK/UID/Name triples from the remaining certificates for the directory whose name is constructed) W 3600 -33842 M 134.4 0 32 (by stripping the rightmost simple name from the Current\255directory\255name and place them in the Trusted\255) W 3600 -34892 M (Key\255Set.) h 2154 -36791 M (5\)) h 3600 -36791 M (Strip the rightmost simple name of the Current\255directory\255name.) h 2154 -38690 M (6\)) h 3600 -38690 M 497.3 0 32 (Repeat from step \() W /NewCenturySchlbk-Roman-ISOLatin1 $ /NewCenturySchlbk-Roman & P /NewCenturySchlbk-Roman-ISOLatin1 F 1000 o f 497.3 0 32 (a) W /Times-Roman-ISOLatin1 F 1000 o f 497.3 0 32 (\) \(testing to see if current\255directory\255name is the same as Common\255point\255) W 3600 -39740 M (Name\).) h 709 -41839 M (c\)) h 2154 -41839 M (Searching the "target side" of the tree for a crosslink:) h 2154 -43738 M (1\)) h 3600 -43738 M (Initialization: set Current\255directory\255name to the name supplied as input to this procedure.) h 2154 -45637 M (2\)) h 3600 -45637 M 136.4 0 32 (Retrieve from the naming service all cross certificates associated with Current\255directory\255name. Filter to) W 3600 -46687 M (only those that meet the following criteria:) h 3600 -48386 M (\(i\)) h 5669 -48386 M (The current time is within their validity interval.) h 3600 -50085 M (\(ii\)) h 5669 -50085 M (The subject name is equal to Current\255directory\255name.) h 3600 -51784 M (\(iii\)) h 5669 -51784 M 158.7 0 32 (For some PK/UID/Name triple in the "Search\255when\255descending" list compiled while ascending the) W 5669 -52834 M 21.8 0 32 (tree, the Public Key verifies the signature on the certificate and ) W /Times-BoldItalic-ISOLatin1 F 1000 o f 21.8 0 32 (either) W /Times-Roman-ISOLatin1 F 1000 o f 21.8 0 32 ( the UID matches the issuer UID) W 5669 -53884 M 79.4 0 32 (in the certificate ) W /Times-BoldItalic-ISOLatin1 F 1000 o f 79.4 0 32 (or ) W /Times-Roman-ISOLatin1 F 1000 o f 79.4 0 32 (a UID is missing from the triple and/or the certificate and the Name in the triple) W 5669 -54934 M (matches the issuer name in the certificate.) h 3600 -56633 M (\(iv\)) h 5669 -56633 M 122.9 0 32 (There are no certificates found meeting criteria \(ii\) and \(iii\) matching a PK/UID/Name triple in the) W 5669 -57683 M (Search\255when\255descending list whose subject is a directory lower in the naming hierarchy.) h -8503 8502 T R showpage $P e %%Page: 56 56 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 42570 -900 M (Page ) h (56) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 2154 -750 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1000 o f (3\)) h 3600 -750 M 73.8 0 32 (If any qualifying certificates are found, construct PK/UID/Name triples for each of them; these should ) W /Times-BoldItalic-ISOLatin1 $ /Times-BoldItalic & P /Times-BoldItalic-ISOLatin1 F 1000 o f 73.8 0 32 (re\255) W 3600 -1800 M (place) h /Times-Roman-ISOLatin1 F 1000 o f ( rather than supplement any triples already in the Trusted\255key\255set for that directory.) h 2154 -3661 M (4\)) h 3600 -3661 M 140.7 0 32 (If after steps \(b\) and \(c\), there are no PK/UID/Name triples corresponding to Current\255directory\255name in) W 3600 -4711 M 29.6 0 32 (Trusted\255Key\255Set, shorten Current\255directory\255name by one RDN \(pushing it onto the Saved\255RDNs stack\) and) W 3600 -5761 M 6.1 0 32 (repeat this process until Current\255directory\255name is equal to Least\255common\255ancestor\255name ) W /Times-BoldItalic-ISOLatin1 F 1000 o f 6.1 0 32 (or) W /Times-Roman-ISOLatin1 F 1000 o f 6.1 0 32 ( there is at least) W 3600 -6811 M (one triple in Trusted\255key\255set corresponding to Current\255directory\255name..) h 709 -8872 M (d\)) h 2154 -8872 M (Descending the tree) h 2154 -10933 M 25.8 0 32 (While the list Saved\255RDNs is not Empty the algorithm moves down the tree. At each step it does the following) W 2154 -11983 M (operations.) h 2154 -13844 M (1\)) h 3600 -13844 M (Remove the first RDN from Saved\255RDNs and append it to the Current\255directory\255name.) h 2154 -15705 M (2\)) h 3600 -15705 M (Find all the child directory certificates for the directory whose name is in the current\255directory\255name.) h 2154 -17566 M (3\)) h 3600 -17566 M (Filter these certificates to find only those which meet the following criteria:) h 3600 -19227 M (\(i\)) h 5669 -19227 M (The current time is within the validity interval.) h 3600 -20888 M (\(ii\)) h 5669 -20888 M 56.1 0 32 (For some PK/UID/Name triple in the Current\255key\255set for the parent directory, the Public Key verifies) W 5669 -21938 M 14.4 0 32 (the signature on the certificate ) W /Times-BoldItalic-ISOLatin1 F 1000 o f 14.4 0 32 (and either) W /Times-Roman-ISOLatin1 F 1000 o f 14.4 0 32 ( the UID matches the issuer UID of the certificate ) W /Times-BoldItalic-ISOLatin1 F 1000 o f 14.4 0 32 (or ) W /Times-Roman-ISOLatin1 F 1000 o f 14.4 0 32 (the UID) W 5669 -22988 M 60.6 0 32 (is missing from the triple and/or the certificate and the Name in the triple matches the issuer name in) W 5669 -24038 M (the certificate.) h 3600 -25699 M (\(iii\)) h 5669 -25699 M 82.4 0 32 (The issuer name in the certificate is a prefix of the subject name and the difference between the two) W 5669 -26749 M (names is the final RDN of Current\255directory\255name.) h 2154 -28610 M (4\)) h 3600 -28610 M 183.9 0 32 (Take the key, UID, and name from each remaining certificate and form a new triple corresponding to) W 3600 -29660 M 375.4 0 32 (Current\255directory\255name in Trusted\255Key\255Set. If this set is empty then the algorithm exits with the) W 3600 -30710 M ('Incomplete\255chain\255of\255trustworthy\255CAs' error condition.) h 2154 -32571 M (5\)) h 3600 -32571 M (repeat from step \() h /NewCenturySchlbk-Roman-ISOLatin1 $ /NewCenturySchlbk-Roman & P /NewCenturySchlbk-Roman-ISOLatin1 F 1000 o f (a) h /Times-Roman-ISOLatin1 F 1000 o f (\), appending a new simple name to Current\255directory\255name.) h 709 -34632 M (e\)) h 2154 -34632 M (Find public keys:) h 2154 -36693 M 26.1 0 32 (If there are no triples in the Trusted\255Key\255Set for the named principal, then the algorithm exits with the `Target\255) W 2154 -37743 M 18.7 0 32 (has\255no\255keys\255which\255can\255be\255trusted' error condition. Otherwise, the Public Key and UID are extracted from each) W 2154 -38793 M (pair, duplicates are eliminated, and this set is returned as the Pub_keys.) h 0 -40929 M /Times-Bold-ISOLatin1 $ /Times-Bold & P /Times-Bold-ISOLatin1 F 1100 o f (3.10.10.2 ) h 4400 -40929 M (Allowed Variations \255 Caching) h 0 -43065 M /Times-Roman-ISOLatin1 F 1000 o f 7.2 0 32 (Some use of caches can be implemented without affecting the semantics of the Get_Pub_Keys routine. For example,) W 0 -44115 M 79.4 0 32 (a crypto\255cache could remember the public key that verified a signature in the past and could avoid the verification) W 0 -45165 M 33.6 0 32 (operation if the same key was used to verify the same data structure again. In some cases, however, it is impossible) W 0 -46215 M (\(or at least inconvenient\) for a cache implementation to be completely transparent.) h 0 -48276 M 103.8 0 32 (In particular, for good performance it is important that certificates not be re\255retrieved from the naming service on) W 0 -49326 M 45.9 0 32 (every authentication. This must be balanced against the need to have changes to the contents of the naming service) W 0 -50376 M 22.9 0 32 (be reflected in DASS calls on a timely basis. There are two cases of interest: changes which cause an authentication) W 0 -51426 M 60.1 0 32 (which previously would have succeeded to fail and changes which cause an authentication which previously would) W 0 -52476 M (have failed to succeed. These two cases are subject to different time constraints.) h 0 -54537 M 24.3 0 32 (In general, changes that cause authentication to succeed must be reflected quite quickly \255 on the order of minutes. If) W 0 -55587 M 76.7 0 32 (a user attempts an operation, it fails, the user tracks down a system manager and causes the appropriate updates to) W 0 -56637 M 63.2 0 32 (take place, and the user retries the operation, it is unacceptable for the operation to continue to fail for an extended) W 0 -57687 M (period because of stale caches.) h -8503 8502 T R showpage $P e %%Page: 57 57 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 42570 -900 M (Page ) h (57) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 0 -750 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1000 o f 36.2 0 32 (Changes that cause authentication to fail must be reflected reliably within a bounded period of time for security rea\255) W 0 -1800 M 48.0 0 32 (sons. If a user leaves the company, it must be possible to revoke his ability to ) W 48.0 0 32 (authenticate w) W 48.0 0 32 (ithin a relatively short) W 0 -2850 M (period of time \255 say hours.) h 0 -5243 M 66.8 0 32 (These constraints mean that a naming service cache which contains arbitrarily old information is unacceptable. To) W 0 -6293 M 12.9 0 32 (meet the second constraint, naming service cache entries must be timed out within a reasonable period of time unless) W 0 -7343 M 141.3 0 32 (in implementation verifies that the certificate is still present \(a crypto\255cache which lasted longer would be legal;) W 0 -8393 M 65.4 0 32 (rather than deleting a name service cache entry, in implementation might instead verify that the entry was still pre\255) W 0 -9443 M (sent in the naming service. This would avoid repeating the cryptographic "verify"\).) h 0 -11836 M 69.4 0 32 (In order to assure that information cached for even a few hours not deny authentication for that extended period, it) W 0 -12886 M 43.1 0 32 (must be possible to bypass caches when the result would otherwise be a failure. Since the performance of authenti\255) W 0 -13936 M 15.8 0 32 (cation failures is not a serious concern, it is acceptable to expect that before an operation fails a retry will be made to) W 0 -14986 M 103.6 0 32 (the naming service to see if there are any new relevant certificates \(or in certain obscure conditions, to see if any) W 0 -16036 M (relevant certificates have been deleted\).) h 0 -18429 M 21.4 0 32 (If on a call to Get_Pub_Keys, the Try_Hard bit is True, then this procedure must return results based on the contents) W 0 -19479 M 62.6 0 32 (of the naming service no more than five minutes previous \(this would normally be accomplished by ignoring name) W 0 -20529 M 18.2 0 32 (service caches and making all operations directly to the naming service\). If the Try_Hard bit is False, this procedure) W 0 -21579 M 10.5 0 32 (may return results based on the contents of the naming service any time in the previous few hours, in the sense that it) W 0 -22629 M 65.1 0 32 (may ignore any certificate added in the previous few hours and may use any certificate deleted in the previous few) W 0 -23679 M 20.0 0 32 (hours. Procedures which call this routine with Try_Hard set to false must be prepared to call it again with Try_Hard) W 0 -24729 M (True if their operation fails possibly from this result.) h 0 -27122 M (The exact timer values for "five minutes" and "a few hours" are expected to be implementation constants.) h 0 -29515 M 140.9 0 32 (In the envisioned implementation, the entire "ascending treewalk" is retrieved, verified, and its digested contents) W 0 -30565 M 87.5 0 32 (cached when a principal first establishes credentials. A mechanism should be provided to refresh this information) W 0 -31615 M 83.8 0 32 (periodically for principals whose sessions might be long lived, but it would probably be acceptable in the unlikely) W 0 -32665 M 11.3 0 32 (event of a user's ancestor) W 11.3 0 32 ('s keys) W 11.3 0 32 ( ) W 11.3 0 32 (c) W 11.3 0 32 (hanging to require that the user log out and log back in. This is consistent with the) W 0 -33715 M (observed behavior of existing security mechanisms.) h 0 -36108 M 65.7 0 32 (The descending treewalk, on the other hand, is expected to be maintained as a more conventional cache, where en\255) W 0 -37158 M 11.2 0 32 (tries are kept in a fixed amount of memory with a "least recently used" replacement policy and a watchdog timer that) W 0 -38208 M 68.3 0 32 (assures that stale information is not kept indefinitely. A call to Get_Pub_Keys with Try_Hard set false would first) W 0 -39258 M 23.4 0 32 (check that cache for relevant certificates and only if none were found there would it go out to the naming service. If) W 0 -40308 M 77.6 0 32 (there were newer certificates in the naming service, they might not be found and an authentication might therefore) W 0 -41358 M (fail.) h 0 -43751 M 20.0 0 32 (When Try_Hard is false, an implementation may assume that certificates not in the cache do not exist so long as that) W 0 -44801 M 12.9 0 32 (assumption does not cause an authentication to falsely succeed. In that case, it may only make that assumption if the) W 0 -45851 M (certificates have been verified to not exist within the revocation time \(a few hours\).) h 0 -48544 M /Times-Bold-ISOLatin1 $ /Times-Bold & P /Times-Bold-ISOLatin1 F 1400 o f (3.11 ) h 2800 -48544 M (DASSlessness Determination Functions) h 0 -51387 M /Times-Roman-ISOLatin1 F 1000 o f 34.6 0 32 (In order to provide better interoperability with alternative authentication mechanisms and to provide backward com\255) W 0 -52437 M 121.9 0 32 (patibility with older \(insecure\) authentication mechanisms, it is sometimes important to be able to determine in a) W 0 -53487 M 98.1 0 32 (secure way what the appropriate authentication mechanism is for a particular named principal. For some applica\255) W 0 -54537 M 8.3 0 32 (tions, this will be done by a local mechanism, where either the person creating access control information must know) W 0 -55587 M 51.6 0 32 (and specify the mechanism for each principal or a system administrator on the node must maintain a database map\255) W 0 -56637 M 46.9 0 32 (ping names to mechanisms. Three applications come to mind where scaleability makes such mechanisms implausi\255) W 0 -57687 M (ble:) h -8503 8502 T R showpage $P e %%Page: 58 58 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 42570 -900 M (Page ) h (58) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 709 -750 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1000 o f (a\)) h 2154 -750 M 71.2 0 32 (To transparently secure proxy\255based applications \(like rlogin\) in an environment where some hosts have been) W 2154 -1800 M 15.9 0 32 (upgraded to support DASS and some have not, a node must be willing to accept connections authenticated only) W 2154 -2850 M 17.8 0 32 (by their network addresses but only if they can be assured that such nodes do not have DASS installed. Access) W 2154 -3900 M 100.6 0 32 (to a resource becomes secure without administrative action when all nodes authorized to access it have been) W 2154 -4950 M (upgraded.) h 2154 -6000 M 2154 -7050 M 116.7 0 32 (In this scenario, the server node must be able to determine whether the client node is DASSless in a secure) W 2154 -8100 M (fashion.) h 709 -10373 M (b\)) h 2154 -10373 M 12.1 0 32 (Similarly, in a mixed environment where some servers are running DASS and some are not, it may be desirable) W 2154 -11423 M 124.8 0 32 (for clients to authenticate servers if they can but it would be unacceptable for a client to stop being able to) W 2154 -12473 M 32.2 0 32 (access a DASSless server once DASS is installed on the client. In such a situation where server authentication) W 2154 -13523 M 61.3 0 32 (is desirable but not essential, the client would like to determine in a secure fashion whether the server can ac\255) W 2154 -14573 M (cept DASS authentication.) h 709 -16846 M (c\)) h 2154 -16846 M 229.1 0 32 (In a DASS/Kerberos interoperability scenario, a server may decide that Kerberos authentication is "good) W 2154 -17896 M 44.5 0 32 (enough" for principals that do not have DASS credentials without introducing trust in on\255line authorities when) W 2154 -18946 M 48.8 0 32 (DASS credentials are available. In parallel with case 1, we want it to be true that when the last principal with) W 2154 -19996 M 63.9 0 32 (authority to access an object is upgraded to DASS, we automatically cease to trust PasswdEtc servers without) W 2154 -21046 M 27.5 0 32 (administrative action on the part of the object owner. For this purpose, the authenticator must learn in a secure) W 2154 -22096 M (fashion that the principal is incapable of DASS authentication.) h 0 -24369 M 65.3 0 32 (Reliably determining DASSlessness is optional for implementations of DASS and for applications. No other capa\255) W 0 -25419 M (bilities of DASS rely on this one.) h 0 -27692 M 74.6 0 32 (The interface to the DASSlessness inquiry function is specified as a call independent of all others. This capability) W 0 -28742 M 58.8 0 32 (must be exposed to the calling application so that a server that receives a request and no token can ask whether the) W 0 -29792 M 19.1 0 32 (named principal should be believed without a token. It might improve performance and usability if in real interfaces) W 0 -30842 M 76.9 0 32 (DASSlessness were returned in addition to a bad status on the function that creates a token if the token is targeted) W 0 -31892 M 46.0 0 32 (toward a server incapable or processing it. An application could then decide whether to make the request without a) W 0 -32942 M (token \(and give up server authentication\) or to abort the request.) h 0 -35365 M /Times-Bold-ISOLatin1 $ /Times-Bold & P /Times-Bold-ISOLatin1 F 1200 o f (3.11.1 ) h 3300 -35365 M (Query DASSlessness) h 0 -37738 M /Times-Roman-ISOLatin1 F 1000 o f (Query_DASSlessness\() h 0 -38838 M ( \255\255inputs) h 0 -39938 M 14256 -39938 M (verifying_credentials) h 30212 -39938 M (Credentials,) h 0 -41038 M 14256 -41038 M (principal_name) h 30212 -41038 M (Name,) h 0 -42138 M ( \255\255outputs) h 0 -43238 M 14256 -43238 M (alternate_authentication) h 30212 -43238 M (Set of OIDs\)) h 0 -44561 M 63.9 0 32 (This function uses the verifying credentials to search for an alternative authentication mechanism certificate for the) W 0 -45611 M 9.0 0 32 (named principal or for any CA on the path between the verifying credentials and the named principal. Such a certifi\255) W 0 -46661 M 33.8 0 32 (cate is identical to an DASS X.509 certificate except that it lists a different algorithm identifier for the public key of) W 0 -47711 M (the subject than that expected by DASS.) h 0 -49984 M (This function is implemented identically to Get_Pub_Keys ) h /Times-Italic-ISOLatin1 $ /Times-Italic & P /Times-Italic-ISOLatin1 F 1000 o f (except) h /Times-Roman-ISOLatin1 F 1000 o f (:) h 709 -52257 M (a\)) h 2154 -52257 M 15.2 0 32 (If in any set of certificates found,) W 15.2 0 32 ( no valid DASS certificate is found and ) W 15.2 0 32 (one or more certificates are found that) W 2154 -53307 M 41.6 0 32 (would otherwise be valid except for an invalid subject public key OID, the OID from that certificate or certifi\255) W 2154 -54357 M (cates is returned and the algorithm terminates.) h 709 -56630 M (b\)) h 2154 -56630 M 89.1 0 32 (On initial execution, Try_Hard=False. If the first execution fails to retrieve any valid PK/UID pairs but also) W 2154 -57680 M (fails to find any invalid OID certificates, repeat the execution with Try_Hard=True.) h -8503 8502 T R showpage $P e %%Page: 59 59 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 42570 -900 M (Page ) h (59) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 709 -750 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1000 o f (c\)) h 2154 -750 M 97.1 0 32 (If the either execution finds PK/UID pairs or if neither finds and invalid OID certificates, fail by returning a) W 2154 -1800 M (null set.) h 0 -5974 M /Times-Bold-ISOLatin1 $ /Times-Bold & P /Times-Bold-ISOLatin1 F 1600 o f (4 ) h 1417 -5974 M (Certificate and message formats) h 0 -8898 M n 0.875 o f (4.1 ) h 2126 -8898 M (ASN.1 encoding) h 0 -11472 M /Times-Roman-ISOLatin1 F 1000 o f (Some definitions are taken from X.501 and X.509.) h 0 -13596 M /NewCenturySchlbk-Roman-ISOLatin1 $ /NewCenturySchlbk-Roman & P /NewCenturySchlbk-Roman-ISOLatin1 F 1000 o f (Dass DEFINITIONS ::=) h 0 -14870 M 0 -16144 M (BEGIN) h 0 -17418 M 0 -18692 M (\255\255CCITT Definitions:) h 0 -19892 M (joint\255iso\255ccitt ) h 11520 -19892 M (OBJECT IDENTIFIER ::= {2}) h 0 -21092 M (ds) h 5760 -21092 M 11520 -21092 M (OBJECT IDENTIFIER ::= {joint\255iso\255ccitt 5}) h 0 -22292 M (algorithm) h 5760 -22292 M 11520 -22292 M (OBJECT IDENTIFIER ::= {ds 8}) h 0 -23566 M (encryptionAlgorithm) h 11520 -23566 M (OBJECT IDENTIFIER ::= {algorithm 1}) h 0 -24840 M (hashAlgorithm) h 11520 -24840 M (OBJECT IDENTIFIER ::= {algorithm 2}) h 0 -26114 M (signatureAlgorithm) h 11520 -26114 M (OBJECT IDENTIFIER ::= {algorithm 3}) h 0 -27388 M (rsa) h 5760 -27388 M 11520 -27388 M (OBJECT IDENTIFIER ::= {encryptionAlgorithm 1}) h 0 -28662 M 0 -29862 M (iso) h 5760 -29862 M 11520 -29862 M (OBJECT IDENTIFIER ::= {1}) h 0 -31062 M (identified\255organization) h 11520 -31062 M (OBJECT IDENTIFIER ::= {iso 3}) h 0 -32262 M (ecma) h 5760 -32262 M 11520 -32262 M (OBJECT IDENTIFIER ::= {identified\255organization 12}) h 0 -33462 M (member\255company) h 11520 -33462 M (OBJECT IDENTIFIER ::= {ecma 2}) h 0 -34662 M (digital) h 5760 -34662 M 11520 -34662 M (OBJECT IDENTIFIER ::= {member\255company 1011}) h 0 -35936 M 0 -37136 M (\255\2551989 OSI Implementors Workshop "Stable" Agreements) h 0 -38336 M (oiw) h 5760 -38336 M 11520 -38336 M (OBJECT IDENTIFIER ::= {identified\255organization 14}) h 0 -39536 M (dssig) h 5760 -39536 M 11520 -39536 M (OBJECT IDENTIFIER ::= {oiw 7}) h 0 -40736 M (oiwAlgorithm) h 11520 -40736 M (OBJECT IDENTIFIER ::= {dssig 2}) h 0 -41936 M (oiwEncryptionAlgorithm) h 11520 -41936 M (OBJECT IDENTIFIER ::= {oiwAlgorithm 1}) h 0 -43136 M (oiwHashAlgorithm) h 11520 -43136 M (OBJECT IDENTIFIER ::= {oiwAlgorithm 2}) h 0 -44336 M (oiwSignatureAlgorithm) h 11520 -44336 M (OBJECT IDENTIFIER ::= {oiwAlgorithm 3}) h 0 -45536 M (oiwMD2) h 5760 -45536 M 11520 -45536 M (OBJECT IDENTIFIER ::= {oiwHashAlgorithm 1} \255\255null parameter) h 0 -46736 M (oiwMD2withRSA) h 11520 -46736 M (OBJECT IDENTIFIER ::= {oiwSignatureAlgorithm 1} \255\255null parameter) h 0 -48010 M 0 -49210 M (\255\255X.501 definitions) h 0 -50410 M (AttributeType ::= OBJECT IDENTIFIER) h 0 -51610 M (AttributeValue ::= ANY) h 0 -52810 M (AttributeValueAssertion ::= SEQUENCE {AttributeType,AttributeValue}) h 0 -54084 M 0 -55284 M (Name ::= CHOICE {) h 11520 -55284 M (\255\255only one for now) h 0 -56484 M 5760 -56484 M 11520 -56484 M (RDNSequence) h 0 -57684 M 5760 -57684 M ( }) h -8503 8502 T R showpage $P e %%Page: 60 60 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 42570 -900 M (Page ) h (60) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 0 -750 M /NewCenturySchlbk-Roman-ISOLatin1 $ /NewCenturySchlbk-Roman & P /NewCenturySchlbk-Roman-ISOLatin1 F 1000 o f (RDNSequence ::= SEQUENCE OF RelativeDistinguishedName) h 0 -1968 M 0 -3168 M (DistinguishedName ::= RDNSequence) h 0 -4386 M 0 -5586 M (RelativeDistinguishedName ::= SET OF AttributeValueAssertion) h 0 -6804 M 0 -8004 M (\255\255X.509 definitions \(with proposed 1992 extensions ) h /NewCenturySchlbk-BoldItalic-ISOLatin1 $ /NewCenturySchlbk-BoldItalic & P /NewCenturySchlbk-BoldItalic-ISOLatin1 F 1000 o f (presumed) h /NewCenturySchlbk-Roman-ISOLatin1 F 1000 o f (\)) h 0 -9222 M 0 -10440 M (ENCRYPTED MACRO) h 11520 -10440 M (::=) h 0 -11658 M (BEGIN) h 0 -12876 M (TYPE NOTATION) h 11520 -12876 M (::= type\(ToBeEnciphered\)) h 0 -14094 M (VALUE NOTATION) h 11520 -14094 M (::= value\(VALUE BIT STRING\)) h 0 -15312 M (END) h 5760 -15312 M (\255\255 of ENCRYPTED) h 0 -16530 M 0 -17730 M (SIGNED MACRO) h 11520 -17730 M (::=) h 0 -18930 M (BEGIN) h 0 -20130 M (TYPE NOTATION) h 11520 -20130 M (::= type \(ToBeSigned\)) h 0 -21330 M (VALUE NOTATION) h 11520 -21330 M (::= value \(VALUE) h 0 -22530 M (SEQUENCE{) h 0 -23730 M 5760 -23730 M (ToBeSigned,) h 0 -24930 M 5760 -24930 M (AlgorithmIdentifier,) h 17280 -24930 M (\255\255of the algorithm used to generate the signature) h 0 -26130 M 5760 -26130 M (ENCRYPTED OCTET STRING) h 23040 -26130 M (\255\255where the octet string is the result) h 0 -27330 M 5760 -27330 M 11520 -27330 M 17280 -27330 M 23040 -27330 M (\255\255of the hashing of the value of) h 0 -28530 M 5760 -28530 M 11520 -28530 M 17280 -28530 M 23040 -28530 M (\255\255"ToBeSigned") h 0 -29748 M 5760 -29748 M (}) h 0 -30966 M 5760 -30966 M 11520 -30966 M 17280 -30966 M (\)) h 0 -32184 M (END) h 5760 -32184 M (\255\255 of SIGNED) h 0 -33402 M 0 -34620 M (SIGNATURE MACRO) h 11520 -34620 M (::=) h 0 -35838 M (BEGIN) h 0 -37056 M (TYPE NOTATION) h 11520 -37056 M (::= type \(OfSignature\)) h 0 -38274 M (VALUE NOTATION) h 11520 -38274 M (::= value \(VALUE) h 0 -39492 M (SEQUENCE {) h 0 -40710 M 5760 -40710 M (AlgorithmIdentifier,) h 17280 -40710 M (\255\255of the algorithm used to compute the signature) h 0 -41928 M 5760 -41928 M (ENCRYPTED OCTET STRING) h 23040 -41928 M (\255\255 where the octet string is a function) h 0 -43146 M 5760 -43146 M 11520 -43146 M 17280 -43146 M 23040 -43146 M (\255\255 \(e.g. a compressed or hashed version\)) h 0 -44364 M 5760 -44364 M 11520 -44364 M 17280 -44364 M 23040 -44364 M (\255\255 of the value 'OfSignature', which may) h 0 -45582 M 5760 -45582 M 11520 -45582 M 17280 -45582 M 23040 -45582 M (\255\255 include the identifier of the algorithm) h 0 -46800 M 5760 -46800 M 11520 -46800 M 17280 -46800 M 23040 -46800 M (\255\255 used to compute the signature) h 0 -48018 M 5760 -48018 M (}) h 0 -49236 M 5760 -49236 M 11520 -49236 M 17280 -49236 M (\)) h 0 -50454 M (END) h 5760 -50454 M (\255\255 of SIGNATURE) h 0 -51672 M 0 -52872 M (Certificate ::= SIGNED SEQUENCE {) h 0 -54072 M 5760 -54072 M (version [0]) h 11520 -54072 M 17280 -54072 M (Version DEFAULT v1988,) h 0 -55272 M 5760 -55272 M (serialNumber) h 17280 -55272 M (CertificateSerialNumber,) h 0 -56472 M 5760 -56472 M (signature) h 11520 -56472 M 17280 -56472 M (AlgorithmIdentifier,) h 0 -57672 M 5760 -57672 M (issuer) h 11520 -57672 M 17280 -57672 M (Name,) h -8503 8502 T R showpage $P e %%Page: 61 61 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 42570 -900 M (Page ) h (61) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 0 -750 M 5760 -750 M /NewCenturySchlbk-Roman-ISOLatin1 $ /NewCenturySchlbk-Roman & P /NewCenturySchlbk-Roman-ISOLatin1 F 1000 o f (valid) h 11520 -750 M 17280 -750 M (Validity,) h 0 -1950 M 5760 -1950 M (subject) h 11520 -1950 M 17280 -1950 M (Name,) h 0 -3150 M 5760 -3150 M (subjectPublicKey) h 17280 -3150 M (SubjectPublicKeyInfo,) h 0 -4350 M 5760 -4350 M (issuerUID [1]) h 17280 -4350 M (IMPLICIT UID OPTIONAL,) h 34560 -4350 M (\255\255 v1992) h 0 -5550 M 5760 -5550 M (subjectUID [2]) h 17280 -5550 M (IMPLICIT UID OPTIONAL) h 34560 -5550 M (\255\255 v1992) h 0 -6750 M 5760 -6750 M (}) h 0 -7969 M 0 -9188 M 5760 -9188 M (\255\255The Algorithm Identifier for both the signature field and in the signature itself is:) h 0 -10407 M 5760 -10407 M (\255\255) h 11520 -10407 M (oiwMD2withRSA \(1.3.14.7.2.3.1\)) h 0 -11626 M 0 -12826 M (Version ::= INTEGER {v1988\(0\), v1992\(1\)}) h 0 -14026 M 0 -15245 M (CertificateSerialNumber ::= INTEGER) h 0 -16445 M 0 -17664 M (Validity ::= SEQUENCE {) h 0 -18864 M 5760 -18864 M (NotBefore) h 11520 -18864 M (UTCTime,) h 0 -20064 M 5760 -20064 M (NotAfter) h 11520 -20064 M (UTCTime) h 0 -21264 M 5760 -21264 M (}) h 0 -22464 M 0 -23664 M 0 -24864 M (AlgorithmIdentifier ::= SEQUENCE {) h 0 -26083 M 5760 -26083 M (algorithm) h 11520 -26083 M (OBJECT IDENTIFIER,) h 0 -27283 M 5760 -27283 M (parameter) h 11520 -27283 M (ANY DEFINED BY algorithm OPTIONAL) h 0 -28502 M 5760 -28502 M (}) h 0 -29721 M 0 -30940 M (\255\255The algorithms we support in one context or another are:) h 0 -32159 M 5760 -32159 M (\255\255oiwMD2withRSA \(1.3.14.7.2.3.1\) with parameter NULL) h 0 -33378 M 5760 -33378 M (\255\255rsa \(2.5.8.1.1\) with parameter keysize INTEGER which is the keysize in bits) h 0 -34597 M 5760 -34597 M (\255\255decDEA \(1.3.12.1001.7.1.2\) with optional parameter missing) h 0 -35816 M 5760 -35816 M (\255\255decDEAMAC \(1.3.12.2.1011.7.3.3\) with optional parameter missing) h 0 -37035 M 0 -38254 M (SubjectPublicKeyInfo ::= SEQUENCE {) h 0 -39473 M 5760 -39473 M (algorithm) h 11520 -39473 M (AlgorithmIdentifier,) h 0 -40673 M 5760 -40673 M 11520 -40673 M (\255\255 rsa \(2.5.8.1.1\)) h 0 -41892 M 5760 -41892 M (subjectPublicKey) h 17280 -41892 M (BIT STRING ) h 0 -43111 M 5760 -43111 M 11520 -43111 M 17280 -43111 M (\255\255 the "bits" further decode into a DASS public key) h 0 -44330 M 5760 -44330 M (}) h 0 -45549 M 0 -46768 M (UID ::= BIT STRING) h 0 -47987 M 0 -49206 M (\255\255 the following definitions are for Digital specified Algorithms) h 0 -50406 M 0 -51625 M (cryptoAlgorithm OBJECT IDENTIFIER ::= {digital 7}) h 0 -52844 M 0 -54044 M (decEncryptionAlgorithm) h 11520 -54044 M (OBJECT IDENTIFIER ::= {cryptoAlgorithm 1}) h 0 -55244 M (decHashAlgorithm) h 11520 -55244 M (OBJECT IDENTIFIER ::= {cryptoAlgorithm 2}) h 0 -56444 M (decSignatureAlgorithm) h 11520 -56444 M (OBJECT IDENTIFIER ::= {cryptoAlgorithm 3}) h 0 -57663 M (decDASSLessness) h 11520 -57663 M (OBJECT IDENTIFIER ::= {cryptoAlgorithm 6}) h -8503 8502 T R showpage $P e %%Page: 62 62 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 42570 -900 M (Page ) h (62) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 0 -750 M 0 -1950 M /NewCenturySchlbk-Roman-ISOLatin1 $ /NewCenturySchlbk-Roman & P /NewCenturySchlbk-Roman-ISOLatin1 F 1000 o f (decMD2withRSA) h 11520 -1950 M (OBJECT IDENTIFIER ::= {decSignatureAlgorithm 1}) h 0 -3150 M (decMD4withRSA) h 11520 -3150 M (OBJECT IDENTIFIER ::= {decSignatureAlgorithm 2}) h 0 -4350 M (decDEAMAC) h 11520 -4350 M (OBJECT IDENTIFIER ::= {decSignatureAlgorithm 3}) h 0 -5578 M 0 -6778 M (decDEA) h 5760 -6778 M 11520 -6778 M (OBJECT IDENTIFIER ::= {decEncryptionAlgorithm 2}) h 0 -8006 M 0 -9206 M (decMD2) h 5760 -9206 M 11520 -9206 M (OBJECT IDENTIFIER ::= {decHashAlgorithm 1}) h 0 -10406 M (decMD4) h 5760 -10406 M 11520 -10406 M (OBJECT IDENTIFIER ::= {decHashAlgorithm 2}) h 0 -11634 M 0 -12862 M 0 -14090 M (ShortPosixTime ::= INTEGER) h 17280 -14090 M (\255\255 number of seconds since base time) h 0 -15318 M 0 -16546 M (LongPosixTime ::= SEQUENCE { ) h 0 -17746 M 5760 -17746 M (INTEGER,) h 11520 -17746 M 17280 -17746 M (\255\255 number of seconds since base time) h 0 -18946 M 5760 -18946 M (INTEGER) h 11520 -18946 M 17280 -18946 M (\255\255 number of nanoseconds since second) h 0 -20146 M 5760 -20146 M (}) h 0 -21346 M 5760 -21346 M 0 -22574 M 0 -23802 M (ShortPosixValidity ::=) h 11520 -23802 M (SEQUENCE {) h 0 -25002 M 5760 -25002 M (notBefore) h 11520 -25002 M (ShortPosixTime,) h 0 -26202 M 5760 -26202 M (notAfter) h 11520 -26202 M (ShortPosixTime }) h 0 -27402 M 0 -28630 M (\255\255Note: Annex C of X.509 prescribes the following format for the representation of a public key, \255\255but) h 0 -29830 M (does not give the structure a name.) h 0 -31058 M 0 -32286 M (DASSPublicKey ::= SEQUENCE {) h 0 -33486 M 5760 -33486 M (modulus) h 11520 -33486 M (INTEGER,) h 0 -34686 M 5760 -34686 M (exponent) h 11520 -34686 M (INTEGER ) h 0 -35886 M 5760 -35886 M (}) h 0 -37114 M 0 -38342 M (DASSPrivateKey ::= SEQUENCE {) h 0 -39542 M 5760 -39542 M (p) h 11520 -39542 M (INTEGER ,) h 17280 -39542 M 23040 -39542 M 28800 -39542 M (\255\255 prime p) h 0 -40742 M 5760 -40742 M (q [0]) h 11520 -40742 M (IMPLICIT INTEGER OPTIONAL ,) h 28800 -40742 M (\255\255 prime q) h 0 -41942 M 5760 -41942 M (mod[1]) h 11520 -41942 M (IMPLICIT INTEGER OPTIONAL,) h 28800 -41942 M (\255\255 modulus) h 0 -43142 M 5760 -43142 M (exp [2]) h 11520 -43142 M (IMPLICIT INTEGER OPTIONAL,) h 28800 -43142 M (\255\255 public exponent) h 0 -44342 M 5760 -44342 M (dp [3]) h 11520 -44342 M (IMPLICIT INTEGER OPTIONAL ,) h 28800 -44342 M (\255\255 exponent mod p) h 0 -45542 M 5760 -45542 M (dq [4]) h 11520 -45542 M (IMPLICIT INTEGER OPTIONAL ,) h 28800 -45542 M (\255\255 exponent mod q) h 0 -46742 M 5760 -46742 M (cr [5]) h 11520 -46742 M (IMPLICIT INTEGER OPTIONAL ,) h 28800 -46742 M (\255\255 Chinese remainder coefficient) h 0 -47942 M 5760 -47942 M (uid[6]) h 11520 -47942 M (IMPLICIT UID OPTIONAL,) h 0 -49142 M 5760 -49142 M (more[7]) h 11520 -49142 M (IMPLICIT BIT STRING OPTIONAL) h 28800 -49142 M (\255\255Reserved for future use) h 0 -50342 M 5760 -50342 M (}) h 0 -51570 M 0 -52798 M 0 -54026 M (LocalUserName) h 11520 -54026 M (::= OCTET STRING) h 0 -55254 M (ChannelId) h 5760 -55254 M 11520 -55254 M (::= OCTET STRING) h 0 -56482 M (VersionNumber ) h 11520 -56482 M (::= OCTET STRING \(SIZE\(3\)\)) h 0 -57682 M 5760 -57682 M 11520 -57682 M 17280 -57682 M (\255\255 first octet is major version) h -8503 8502 T R showpage $P e %%Page: 63 63 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 42570 -900 M (Page ) h (63) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 0 -750 M 5760 -750 M 11520 -750 M 17280 -750 M /NewCenturySchlbk-Roman-ISOLatin1 $ /NewCenturySchlbk-Roman & P /NewCenturySchlbk-Roman-ISOLatin1 F 1000 o f (\255\255 second octet is minor version) h 0 -1950 M 5760 -1950 M 11520 -1950 M 17280 -1950 M (\255\255 third octet is ECO rev.) h 0 -3150 M (versionZero VersionNumber ::= '000000'H) h 0 -4350 M 0 -5591 M (Authenticator ::= SIGNED SEQUENCE {) h 0 -6791 M 5760 -6791 M (type) h 11520 -6791 M 17280 -6791 M (BIT STRING,) h 0 -7991 M 5760 -7991 M 11520 -7991 M 17280 -7991 M ( \255\255 first bit `delegation required') h 0 -9191 M 5760 -9191 M 11520 -9191 M 17280 -9191 M ( \255\255 second bit `Mutual Authentication Requested') h 0 -10391 M 5760 -10391 M (whenSigned ) h 17280 -10391 M (LongPosixTime ,) h 0 -11591 M 5760 -11591 M (channelId [3]) h 17280 -11591 M (IMPLICIT ChannelId OPTIONAL) h 0 -12791 M 5760 -12791 M 11520 -12791 M (\255\255 channel bindings are included when doing the) h 0 -13991 M 5760 -13991 M 11520 -13991 M (\255\255 signature, but excluded when transmitting the) h 0 -15191 M 5760 -15191 M 11520 -15191 M (\255\255 Authenticator) h 0 -16391 M 5760 -16391 M (} ) h 0 -17591 M 0 -18791 M 5760 -18791 M 11520 -18791 M (\255\255 uses decDEAMAC \(1.3.12.2.1011.7.3.3\)) h 0 -19991 M 0 -21232 M (EncryptedKey ::= SEQUENCE {) h 0 -22432 M 5760 -22432 M (algorithm) h 11520 -22432 M ( AlgorithmIdentifier,) h 0 -23673 M 5760 -23673 M 11520 -23673 M 17280 -23673 M (\255\255 uses rsa \(2.5.8.1.1\)) h 0 -24914 M 5760 -24914 M (encryptedAuthKey) h 17280 -24914 M (BIT STRING) h 0 -26155 M 5760 -26155 M 11520 -26155 M 17280 -26155 M (\255\255 as defined in section 4.4.5) h 0 -27355 M 5760 -27355 M (}) h 0 -28596 M 0 -29837 M (SignatureOnEncryptedKey ::= SIGNATURE EncryptedKey) h 0 -31037 M 5760 -31037 M 11520 -31037 M (\255\255 uses oiwMD2withRSA \(1.3.14.7.2.3.1\)) h 0 -32237 M 5760 -32237 M 11520 -32237 M (\255\255 Signature bits computed over EncryptedKey structure) h 0 -33478 M 0 -34719 M 0 -35960 M (LoginTicket ::= SIGNED SEQUENCE {) h 0 -37160 M 5760 -37160 M (version [0]) h 11520 -37160 M 17280 -37160 M (IMPLICIT VersionNumber DEFAULT versionZero,) h 0 -38360 M 5760 -38360 M (validity ) h 11520 -38360 M 17280 -38360 M (ShortPosixValidity ,) h 0 -39560 M 5760 -39560 M (subjectUID) h 11520 -39560 M 17280 -39560 M (UID ,) h 0 -40760 M 5760 -40760 M (delegatingPublicKey) h 17280 -40760 M (SubjectPublicKeyInfo) h 0 -41960 M 5760 -41960 M (} ) h 0 -43160 M 5760 -43160 M (\255\255 uses oiwMD2withRSA \(1.3.14.7.2.3.1\)) h 0 -44360 M 5760 -44360 M 0 -45601 M (Delegator ::= SEQUENCE {) h 0 -46801 M 5760 -46801 M (algorithm) h 11520 -46801 M 17280 -46801 M (AlgorithmIdentifier ) h 0 -48001 M 5760 -48001 M 11520 -48001 M 17280 -48001 M (\255\255 decDEA encryption \(1.3.12.1001.7.1.2\)) h 0 -49201 M 5760 -49201 M (encryptedPrivKey) h 17280 -49201 M (ENCRYPTED DASSPrivateKey,) h 0 -50401 M 5760 -50401 M 11520 -50401 M 17280 -50401 M (\255\255 \(only p is included\)) h 0 -51601 M 5760 -51601 M (}) h 0 -52842 M 0 -54083 M (UserClaimant ::= SEQUENCE {) h 0 -55283 M 5760 -55283 M (userTicket [0]) h 17280 -55283 M (IMPLICIT LoginTicket,) h 0 -56483 M 5760 -56483 M (evidence CHOICE {) h 0 -57683 M 5760 -57683 M 11520 -57683 M (delegator [1]) h 23040 -57683 M (IMPLICIT Delegator ,) h -8503 8502 T R showpage $P e %%Page: 64 64 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 42570 -900 M (Page ) h (64) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 0 -750 M 5760 -750 M 11520 -750 M 17280 -750 M /NewCenturySchlbk-Roman-ISOLatin1 $ /NewCenturySchlbk-Roman & P /NewCenturySchlbk-Roman-ISOLatin1 F 1000 o f ( \255\255 encrypted delegation private key) h 0 -1950 M 5760 -1950 M 11520 -1950 M 17280 -1950 M ( \255\255 under DES authenticating key) h 0 -3150 M 5760 -3150 M 11520 -3150 M 17280 -3150 M ( \255\255 present if delegating) h 0 -4350 M 5760 -4350 M 11520 -4350 M (sharedKeyTicketSignature [2]) h 0 -5550 M 5760 -5550 M 11520 -5550 M 17280 -5550 M (IMPLICIT SignatureOnEncryptedKey) h 0 -6750 M 5760 -6750 M 11520 -6750 M 17280 -6750 M ( \255\255 present if not delegating) h 0 -7950 M 5760 -7950 M 11520 -7950 M (} ,) h 0 -9150 M 5760 -9150 M (userName [3]) h 17280 -9150 M (IMPLICIT Name OPTIONAL) h 0 -10350 M 5760 -10350 M 11520 -10350 M 17280 -10350 M ( \255\255 name of user principal) h 0 -11550 M 5760 -11550 M (}) h 0 -12783 M 0 -14016 M (EncryptedKeyandUserName ::= SEQUENCE {) h 0 -15249 M 5760 -15249 M (encryptedKey) h 17280 -15249 M (EncryptedKey ,) h 0 -16482 M 5760 -16482 M (username) h 11520 -16482 M 17280 -16482 M (LocalUserName) h 0 -17715 M 5760 -17715 M (}) h 0 -18948 M ( ) h 0 -20181 M (SignatureOnEncryptedKeyandUserName ::= ) h 0 -21381 M 5760 -21381 M (SIGNATURE EncryptedKeyandUserName) h 0 -22581 M 5760 -22581 M 11520 -22581 M ( \255\255 uses oiwMD2withRSA \(1.3.14.7.2.3.1\)) h 0 -23781 M 5760 -23781 M 11520 -23781 M (\255\255 Signature bits computed over ) h 0 -24981 M 5760 -24981 M 11520 -24981 M (\255\255 EncryptedKeyandUserName structure) h 0 -26181 M 5760 -26181 M 11520 -26181 M (\255\255 using node private key) h 0 -27414 M 5760 -27414 M (}) h 0 -28647 M 0 -29880 M (NodeClaimant ::= SEQUENCE {) h 0 -31080 M 5760 -31080 M (nodeTicket Signature[0]) h 17280 -31080 M (IMPLICIT) h 0 -32280 M 5760 -32280 M 11520 -32280 M (SignatureOnEncryptedKeyandUserName,) h 0 -33480 M 5760 -33480 M (nodeName [1]) h 17280 -33480 M (IMPLICIT Name OPTIONAL,) h 0 -34680 M 5760 -34680 M (username [2]) h 17280 -34680 M (IMPLICIT LocalUserName OPTIONAL) h 0 -35880 M 5760 -35880 M (}) h 0 -37113 M 0 -38346 M 0 -39579 M (AuthenticationToken ::= SEQUENCE {) h 0 -40779 M 5760 -40779 M (version [0]) h 11520 -40779 M 17280 -40779 M (IMPLICIT VersionNumber DEFAULT versionZero,) h 0 -41979 M 5760 -41979 M (authenticator [1]) h 17280 -41979 M (IMPLICIT Authenticator , ) h 0 -43179 M 5760 -43179 M (encryptedKey [2]) h 17280 -43179 M (IMPLICIT EncryptedKey OPTIONAL ,) h 0 -44379 M 5760 -44379 M 11520 -44379 M 17280 -44379 M ( \255\255 required if initiating token) h 0 -45579 M 5760 -45579 M (userclaimant [3]) h 17280 -45579 M (IMPLICIT UserClaimant OPTIONAL ,) h 0 -46779 M 5760 -46779 M 11520 -46779 M 17280 -46779 M ( \255\255 missing if only doing node authentication) h 0 -47979 M 5760 -47979 M 11520 -47979 M 17280 -47979 M ( \255\255 required if not doing node authentication) h 0 -49179 M 5760 -49179 M (nodeclaimant [4]) h 17280 -49179 M (IMPLICIT NodeClaimant OPTIONAL) h 0 -50379 M 5760 -50379 M 11520 -50379 M 17280 -50379 M ( \255\255 missing if only doing principal authentication) h 0 -51579 M 5760 -51579 M 11520 -51579 M 17280 -51579 M ( \255\255 required if not doing principal authentication) h 0 -52779 M 5760 -52779 M (}) h 0 -54012 M 0 -55245 M (MutualAuthenticationToken ::= CHOICE {) h 0 -56478 M 5760 -56478 M (v1Response [0] IMPLICIT OCTET STRING \(SIZE\(6\)\)) h 0 -57678 M 5760 -57678 M 11520 -57678 M 17280 -57678 M (\255\255 Constructed as follows: A single DES block) h -8503 8502 T R showpage $P e %%Page: 65 65 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 42570 -900 M (Page ) h (65) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 0 -750 M 5760 -750 M 11520 -750 M 17280 -750 M /NewCenturySchlbk-Roman-ISOLatin1 $ /NewCenturySchlbk-Roman & P /NewCenturySchlbk-Roman-ISOLatin1 F 1000 o f (\255\255 of eight octets is constructed from the two) h 0 -1950 M 5760 -1950 M 11520 -1950 M 17280 -1950 M (\255\255 integers in the timestamp. First four bytes) h 0 -3150 M 5760 -3150 M 11520 -3150 M 17280 -3150 M (\255\255 are the high order integer encoded MSB) h 0 -4350 M 5760 -4350 M 11520 -4350 M 17280 -4350 M (\255\255 first; Last four bytes are the low order) h 0 -5550 M 5760 -5550 M 11520 -5550 M 17280 -5550 M (\255\255 integer encoded MSB first. The block is) h 0 -6750 M 5760 -6750 M 11520 -6750 M 17280 -6750 M (\255\255 encrypted using the shared DES key, and) h 0 -7950 M 5760 -7950 M 11520 -7950 M 17280 -7950 M (\255\255 the first six bytes are the OCTET STRING.) h 0 -9150 M 5760 -9150 M 11520 -9150 M 17280 -9150 M (\255\255 With the [0] type and 6\255byte length, the) h 0 -10350 M 5760 -10350 M 11520 -10350 M 17280 -10350 M (\255\255 MutualAuthenticationToken has a fixed) h 0 -11550 M 5760 -11550 M 11520 -11550 M 17280 -11550 M (\255\255 length of eight bytes.) h 0 -12855 M 5760 -12855 M (}) h 0 -14055 M 0 -15360 M (END) h 0 -16965 M /Times-Bold-ISOLatin1 $ /Times-Bold & P /Times-Bold-ISOLatin1 F 1400 o f (4.2 ) h 2126 -16965 M (Encoding Rules) h 0 -19570 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1000 o f 139.4 0 32 (Whenever a structure is to be signed it must always be constructed the same way. This is particularly important) W 0 -20620 M 124.2 0 32 (where a signed structure has to be reconstructed by the recipient before the signature is verified. The rules listed) W 0 -21670 M (below are taken from X.509.) h 709 -23825 M /Symbol F 1000 o f (-) h 2154 -23825 M /Times-Roman-ISOLatin1 F 1000 o f (the definite form of length encoding shall be used, encoded in the minimum number of octets;) h 709 -25980 M /Symbol F 1000 o f (-) h 2154 -25980 M /Times-Roman-ISOLatin1 F 1000 o f (for string types, the constructed form of encoding shall not be used;) h 709 -28135 M /Symbol F 1000 o f (-) h 2154 -28135 M /Times-Roman-ISOLatin1 F 1000 o f (if the value of a type is its default value, it shall be absent;) h 709 -30290 M /Symbol F 1000 o f (-) h 2154 -30290 M /Times-Roman-ISOLatin1 F 1000 o f (the components of a Set type shall be encoded in ascending order of their tag value;) h 709 -32445 M /Symbol F 1000 o f (-) h 2154 -32445 M /Times-Roman-ISOLatin1 F 1000 o f (the components of a Set\255of type shall be encoded in ascending order of their octet value;) h 709 -34600 M /Symbol F 1000 o f (-) h 2154 -34600 M /Times-Roman-ISOLatin1 F 1000 o f (if the value of a Boolean type is true, the encoding shall have its contents octet set to `FF') h 0.0 -448.0 m (16) h 0 448.0 m (;) h 709 -36755 M /Symbol F 1000 o f (-) h 2154 -36755 M /Times-Roman-ISOLatin1 F 1000 o f (each unused bits in the final octet of the encoding of a BitString value, if there are any, shall be set to zero;) h 709 -38910 M /Symbol F 1000 o f (-) h 2154 -38910 M /Times-Roman-ISOLatin1 F 1000 o f 2.1 0 32 (the encoding of a Real type shall be such that bases 8, 10 and 16 shall not be used, and the binary scaling factor) W 2154 -39960 M (shall be zero.) h 0 -42415 M /Times-Bold-ISOLatin1 F 1400 o f (4.3 ) h 2126 -42415 M (Version numbers and forward compatibility) h 0 -45020 M /Times-Roman-ISOLatin1 F 1000 o f 137.6 0 32 (The LoginTicket and AuthenticationToken structures contain a three octet version identifier which is intended to) W 0 -46070 M 32.8 0 32 (ease transition to future revisions of this architecture. The default value, and the value which should always be sup\255) W 0 -47120 M 69.9 0 32 (plied by implementations of this version of the architecture is 0.0.0 \(three zero octets\). The first octet is the major) W 0 -48170 M 96.3 0 32 (version. An implementation of this version of the architecture should refuse to process data structures where it is) W 0 -49220 M 68.5 0 32 (other than zero, because changing it indicates that the interpretation of some subsidiary data structure has changed. ) W 0 -50270 M 22.4 0 32 (The second octet is the minor version. An implementation of this version of the architecture should ignore the value) W 0 -51320 M 17.9 0 32 (of this octet. Some future version of the architecture may set a value other than zero and may specify some different) W 0 -52370 M 54.9 0 32 (processing of the remainder of the structure based on that different value. Such a change would be backward com\255) W 0 -53420 M 2.1 0 32 (patible and interoperable. The third octet is the ECO revision. No implementation should make any processing deci\255) W 0 -54470 M (sions based on the value of that octet. It may be logged, however, to help in debugging interoperability problems.) h 0 -56625 M 21.1 0 32 (In the CDC protocol, there is also a three octet version numbering scheme, where versions 1.0.0 and 2.0.0 have been) W 0 -57675 M (defined. Implementations should follow the same rules above and reject major version numbers greater than 2.) h -8503 8502 T R showpage $P e %%Page: 66 66 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 42570 -900 M (Page ) h (66) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 0 -750 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1000 o f 43.8 0 32 (ASN.1 is inherently extensible because it allows new fields to be added "onto the end" of existing data structures in) W 0 -1800 M 31.4 0 32 (an unambiguous way. Implementations of DASS are encouraged to ignore any such additional fields in order to en\255) W 0 -2850 M 62.8 0 32 (hance backwards compatibility with future versions of the architecture. Unfortunately, commonly available ASN.1) W 0 -3900 M 21.8 0 32 (compilers lack this capability, so this behavior cannot reasonably be required and may limit options for future exten\255) W 0 -4950 M (sions.) h 0 -7414 M /Times-Bold-ISOLatin1 $ /Times-Bold & P /Times-Bold-ISOLatin1 F 1400 o f (4.4 ) h 2126 -7414 M (Cryptographic Encoding) h 0 -10028 M /Times-Roman-ISOLatin1 F 1000 o f 52.4 0 32 (Some of the substructures listed in the previous sections are specified as ENCRYPTED OCTET STRINGs contain\255) W 0 -11078 M 24.9 0 32 (ing encrypted information. DASS uses the DES, RSA, and MD2 cryptosystems Each of those cryptosystems speci\255) W 0 -12128 M 50.8 0 32 (fies a function from octet string into another in the presence of a key \(except MD2, which is keyless\). This section) W 0 -13178 M (describes how to form the octet strings on which the DES and RSA operations are performed. ) h 0 -15492 M /Times-Bold-ISOLatin1 F 1200 o f (4.4.1 ) h 2834 -15492 M (Algorithm Independence vs. Key Parity) h 0 -17756 M /Times-Roman-ISOLatin1 F 1000 o f 95.1 0 32 (All of the defined encodings for DASS for secret key encryption are based on DES. It is intended, however, that) W 0 -18806 M 72.3 0 32 (other cryptosystems could be substituted without any other changes for formats or algorithms. The required "form) W 0 -19856 M 17.0 0 32 (factor" for such a cryptosystem is that it have a 64 bit key and operate on 64 bit blocks \(this appears to be a common) W 0 -20906 M 27.0 0 32 (form factor for a cryptosystem\). For this reason, DES keys are in all places treated as though they were 64 bits long) W 0 -21956 M 109.0 0 32 (rather than 56. Only in the operation of the algorithm itself are eight bits of the key dropped and key parity bits) W 0 -23006 M (substituted. Choosing a key always involves picking a 64 bit random number.) h 0 -25320 M /Times-Bold-ISOLatin1 F 1200 o f (4.4.2 ) h 2834 -25320 M (Password Hashing) h 0 -27584 M /Times-Roman-ISOLatin1 F 1000 o f 66.5 0 32 (Encrypted credentials are encrypted using DES as described in the next section. The key for that encryption is de\255) W 0 -28634 M (rived from the user's password and name by the following algorithm:) h 709 -30798 M (a\)) h 2154 -30798 M 58.3 0 32 (Put the rightmost RDN of the user's name in canonical form according to BER and the X.509 encoding rules. ) W 2154 -31848 M 21.4 0 32 (For any string types that are case insensitive, map to upper case, and where matching is independent of number) W 2154 -32898 M (of spaces collapse all multiple spaces to a single space and delete leading and trailing spaces.) h 2154 -33948 M 2154 -34998 M /Times-Italic-ISOLatin1 $ /Times-Italic & P /Times-Italic-ISOLatin1 F 1000 o f 50.8 0 32 (Note: the RDN is used to add "salt" to the hash calculation so that someone can't precompute the hash of all) W 2154 -36048 M 76.1 0 32 (the words in a dictionary and then apply them against all names. Deriving the salt from the last RDN of the) W 2154 -37098 M 41.3 0 32 (name is a compromise. If it were derived from the whole name, all encrypted keys would be obsoleted when a) W 2154 -38148 M 70.4 0 32 (branch of the namespace was renamed. If it were independent of name, interaction with a login agent would) W 2154 -39198 M 22.0 0 32 (take two extra messages to retrieve the salt. With this scheme, encrypted keys are obsoleted by a change in the) W 2154 -40248 M 23.0 0 32 (last RDN and if a final RDN is common to a large number of users, dictionary attacks against them are easier;) W 2154 -41298 M (but the common case works as desired.) h 709 -43462 M /Times-Roman-ISOLatin1 F 1000 o f (b\)) h 2154 -43462 M 152.4 0 32 (Compute TEMP as the MD2 message digest of the concatenation of the password and the RDN computed) W 2154 -44512 M (above.) h 709 -46676 M (c\)) h 2154 -46676 M 118.3 0 32 (Repeat the following 40 times: Use the first 64 bits of TEMP as a DES key to encrypt the second 64 bits; ) W 2154 -47726 M (XOR the result with the ) h (first ) h (64) h ( b) h (its of TEMP; and compute a new TEMP as MD2 of the 128 bit result.) h 709 -49890 M (d\)) h 2154 -49890 M 11.2 0 32 (Use the final 64 bits of the result \(called hash1\) as the key to decrypt the encrypted credentials. Use the first 64) W 2154 -50940 M (bits \(called hash2\) as the proof of knowledge of the password for presentation to a login agent \(if any\).) h 0 -53254 M /Times-Bold-ISOLatin1 F 1200 o f (4.4.3 ) h 2834 -53254 M (Digital DEA encryption) h 0 -55518 M /Times-Roman-ISOLatin1 F 1000 o f (DES encryption is used in the following places:) h 709 -57682 M /Symbol F 1000 o f (-) h 2154 -57682 M /Times-Roman-ISOLatin1 F 1000 o f (In the encryption of the encrypted credentials structure) h -8503 8502 T R showpage $P e %%Page: 67 67 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 42570 -900 M (Page ) h (67) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 709 -750 M /Symbol F 1000 o f (-) h 2154 -750 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1000 o f (To encrypt the delegator in authentication tokens) h 709 -3097 M /Symbol F 1000 o f (-) h 2154 -3097 M /Times-Roman-ISOLatin1 F 1000 o f (To encrypt the time in the mutual authenticator) h 0 -5444 M 46.7 0 32 (In the first two cases, a varying length block of information coded in ASN.1 is encrypted. This is done by dividing) W 0 -6494 M 56.1 0 32 (the block of information into 8 octet blocks, padding the last block with zero bytes if necessary, and encrypting the) W 0 -7544 M (result using the CBC mode of DES. A zero IV is used.) h 0 -9891 M 98.3 0 32 (In the third case, a fixed length \(8 byte\) quantity \(a timestamp\) is encrypted. The timestamp is mapped to a byte) W 0 -10941 M (string using "big endian" order and the block is encrypted using the ECB mode of DES.) h 0 -13438 M /Times-Bold-ISOLatin1 $ /Times-Bold & P /Times-Bold-ISOLatin1 F 1200 o f (4.4.4 ) h 2834 -13438 M ( Digital MAC Signing) h 0 -15885 M /Times-Roman-ISOLatin1 F 1000 o f 7.4 0 32 (DES signing is used in the Authenticator. Here, the signature is computed over an ASN.1 structure. The signature is) W 0 -16935 M 13.6 0 32 (the CBC residue of the structure padded to a multiple of eight bytes with zeros. The CBC is computed with an IV of) W 0 -17985 M (zero.) h 0 -20482 M /Times-Bold-ISOLatin1 F 1200 o f (4.4.5 ) h 2834 -20482 M (RSA Encryption) h 0 -22929 M /Times-Roman-ISOLatin1 F 1000 o f 112.9 0 32 (RSA encryption is used in the Encrypted Shared Key. RSA encryption is best thought of as operating on blocks) W 0 -23979 M 74.8 0 32 (which are integers rather than octet strings and the results are also integers. Because an RSA encryption permutes) W 0 -25029 M 87.1 0 32 (the integers between zero and \() W 87.1 0 32 (modulus\2551\)) W 87.1 0 32 (, it is generally thought of as acting on a block of size \(keysizeinbits\2551\)) W 0 -26079 M 2.0 0 32 (and producing a block of size \(keysizeinbits\) where keysizeinbits is the smallest number of bits in which the modulus) W 0 -27129 M (can be represented.) h 0 -29476 M (DASS only supports key sizes which are a multiple of eight bits.) h n 0.666 o f 0.0 448.0 m (9) h 0 -448.0 m 0 -31823 M n 1.502 o f (The encrypted shared key structure is laid out as follows:) h 709 -34170 M /Symbol F 1000 o f (-) h 2154 -34170 M /Times-Roman-ISOLatin1 F 1000 o f (The DES key to be shared is placed in the ) h (last ) h (eight) h ( ) h (bytes) h 709 -36517 M /Symbol F 1000 o f (-) h 2154 -36517 M /Times-Roman-ISOLatin1 F 1000 o f 80.2 0 32 (The ) W 80.2 0 32 (POSIX format ) W 80.2 0 32 (creation time ) W 80.2 0 32 (encoded in four bytes using big endian byte order i) W 80.2 0 32 (s placed in the ) W 80.2 0 32 (next ) W 80.2 0 32 (four) W 2154 -37567 M (\(from the end\) ) h (bytes) h 709 -39914 M /Symbol F 1000 o f (-) h 2154 -39914 M /Times-Roman-ISOLatin1 F 1000 o f 36.3 0 32 (The ) W 36.3 0 32 (POSIX format ) W 36.3 0 32 (expiration time ) W 36.3 0 32 (encoded in four bytes using big endian byte order i) W 36.3 0 32 (s placed in the ) W 36.3 0 32 (next ) W 36.3 0 32 (four) W 2154 -40964 M (\(from the end\) ) h (bytes) h 709 -43311 M /Symbol F 1000 o f (-) h 2154 -43311 M /Times-Roman-ISOLatin1 F 1000 o f (Four zero bytes are placed in the ) h (next f) h (our ) h (\(from the end\) ) h (bytes) h 709 -45658 M /Symbol F 1000 o f (-) h 2154 -45658 M /Times-Roman-ISOLatin1 F 1000 o f (The ) h (first ) h (byte contains the constant '64' \(decimal\)) h 709 -48005 M /Symbol F 1000 o f (-) h 2154 -48005 M /Times-Roman-ISOLatin1 F 1000 o f 110.8 0 32 (All remaining bytes are filled with random bytes \(the security of the system does not depend on the crypto\255) W 2154 -49055 M 37.4 0 32 (graphic randomness of these bytes, but they should not be a frequently repeating or predic) W 37.4 0 32 (ta) W 37.4 0 32 (ble value. Repeat\255) W 2154 -50105 M (ing the DES key from the l) h (ast ) h (bytes would be good\).) h 0 -52452 M 24.3 0 32 (The RSA algorithm is applied to the integer) W 24.3 0 32 ( ) W 24.3 0 32 (formed) W 24.3 0 32 ( by treating the bytes above as an integer in big endian order ) W 24.3 0 32 (and) W 0 -53502 M (the resulting integer is converted to a) h ( BIT ) h (STRING by laying out the integer in 'big endian' order.) h 0 -55849 M 0.6 0 32 (On decryption, the process is reversed; the decryptor should verify the four explicitly zero bytes but should not verify) W 0 -56899 M (the contents of the high order byte or the random bytes.) h -8503 8502 T R S 8496 -67104 T N 0 G 576 -900 M /Times-Roman-ISOLatin1 F 800 o f 0.0 358.0 m (9) h 0 -358.0 m 976 -900 M 12.6 0 32 (This restriction is only required to support interoperation with certain existing implementations. If the key size is not a multiple of eight bits,) W 576 -1800 M 49.7 0 32 (the high order byte may not be able to hold values as large as the mandated '64'. This is not a problem so long as the two high order bytes) W 576 -2600 M 14.7 0 32 (together are non\255zero, but certain early implementations check for the value '64' and will not interoperate with implementations that use some) W 576 -3400 M (other value.) h -8496 67104 T R showpage $P e %%Page: 68 68 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 42570 -900 M (Page ) h (68) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 0 -900 M /Times-Bold-ISOLatin1 $ /Times-Bold & P /Times-Bold-ISOLatin1 F 1200 o f (4.4.6 ) h 2834 -900 M (oiwMD2withRSA Signatures) h 0 -3050 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1000 o f 48.8 0 32 (RSA\255MD2 signatures are used on certificates, login tickets, shared key tickets, and node tickets. In all cases, a sig\255) W 0 -4100 M (nature is computed on an ASN.1 encoded string using an) h ( ) h (RSA private key. This is done as follows:) h 709 -6150 M /Symbol F 1000 o f (-) h 2154 -6150 M /Times-Roman-ISOLatin1 F 1000 o f (The MD2 algorithm is applied to the ASN.1 encoded string to produce a 128 bit message digest) h 709 -8200 M /Symbol F 1000 o f (-) h 2154 -8200 M /Times-Roman-ISOLatin1 F 1000 o f (The message digest is placed in the low order bytes of the RSA block \(big endian\)) h 709 -10250 M /Symbol F 1000 o f (-) h 2154 -10250 M /Times-Roman-ISOLatin1 F 1000 o f (The next two lowest order bytes are the ASN.1 'T' and 'L' for an OCTET STRING.) h 709 -12300 M /Symbol F 1000 o f (-) h 2154 -12300 M /Times-Roman-ISOLatin1 F 1000 o f (The remainder of the RSA block is filled with zeros) h 709 -14350 M /Symbol F 1000 o f (-) h 2154 -14350 M /Times-Roman-ISOLatin1 F 1000 o f 8.4 0 32 (The RSA operation is performed, and the resulting integer is converted to an octet string by laying out the bytes) W 2154 -15400 M (in big endian order.) h 0 -17450 M 86.6 0 32 (On verification, a value like the above ) W /Times-BoldItalic-ISOLatin1 $ /Times-BoldItalic & P /Times-BoldItalic-ISOLatin1 F 1000 o f 86.6 0 32 (or) W /Times-Roman-ISOLatin1 F 1000 o f 86.6 0 32 ( one where the message digest is present but the 'T' and 'L' are missing) W 0 -18500 M (\(zero\) should be accepted for backwards compatibility with an earlier definition of this crypto algorithm.) h 0 -20700 M /Times-Bold-ISOLatin1 F 1200 o f (4.4.7 ) h 2834 -20700 M (decMD2withRSA Signatures) h 0 -22850 M /Times-Roman-ISOLatin1 F 1000 o f 67.5 0 32 (This algorithm is the same as the oiwMD2withRSA algorithm as defined above. We allocated an algorithm object) W 0 -23900 M 120.8 0 32 (identifier from the Digital space in case the definition of that OID should change. It will not be used unless the) W 0 -24950 M (meaning of oiwMD2withRSA becomes unstable.) h -8503 8502 T R showpage $P e %%Page: 69 69 /$P a D g N 0 79200 T S S 8488 -1910 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39771 -900 M (October 1991) h 0 -2284 M -8488 1910 T R S 8488 -72021 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 42572 -900 M (Page ) h (69) h -8488 72021 T R R S 8590 -8532 T N 0 G 19926 -1350 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1800 o f (Annex A ) h 26924 -1350 M 18201 -3350 M (Typical Usage) h -8590 8532 T R S 8504 -24096 T N 0 G 0 -750 M /Times-Roman-ISOLatin1 F 1000 o f 15.1 0 32 (This annex describes one way a system could use DASS services \(as described in section 3\) to provide security serv\255) W 0 -1800 M 23.9 0 32 (ices. While this example provided motivation for some of the properties of DASS, it is not intended to represent the) W 0 -2850 M (only way that DASS may be used. This goes through the steps that would be needed to install DASS "from scratch".) h 0 -5246 M /Times-Bold-ISOLatin1 $ /Times-Bold & P /Times-Bold-ISOLatin1 F 1400 o f (A.1 ) h 2411 -5246 M (Creating a CA) h 0 -7792 M /Times-Roman-ISOLatin1 F 1000 o f 86.3 0 32 (A CA is created by initializing its state. Each CA can sign certificates that will be placed in some directory in the) W 0 -8842 M 25.5 0 32 (name service. Before these certificates will be believed in a wider context than the sub\255tree of the name space which) W 0 -9892 M 40.8 0 32 (is headed by that directory, the CA must be certified by a CA for the parent directory. The procedure below accom\255) W 0 -10942 M 76.3 0 32 (plishes this. For most secure operation, the CA should run on an off\255line system and communicate with the rest of) W 0 -11992 M 5.8 0 32 (the network by interchanging files using a simple specialized mechanism such as an RS232 line or a floppy disk. It is) W 0 -13042 M (assumed that access to the CA is controlled and that the CA will accept instructions from an operator.) h 709 -15138 M /Symbol F 1000 o f (-) h 2154 -15138 M /Times-Roman-ISOLatin1 F 1000 o f (Call Install_CA to create the CA State.) h 2154 -16188 M (This state is saved within the CA system and is never disclosed.) h 709 -18284 M /Symbol F 1000 o f (-) h 2154 -18284 M /Times-Roman-ISOLatin1 F 1000 o f 13.5 0 32 (If this is the first CA in the namespace and the CA is intended to certify only members of a single directory, we) W 2154 -19334 M 24.5 0 32 (are done. Otherwise, the new CA must be linked into the CA hierarchy by cross\255certifying the parent and chil\255) W 2154 -20384 M 80.2 0 32 (dren of this CA. There is no requirement that CA hierarchies be created from the root down, but to simplify) W 2154 -21434 M 16.8 0 32 (exposition, only this case will be described. The newly created CA must learn its name, its UID, the UID of its) W 2154 -22484 M 135.6 0 32 (parent directory, and the public key of the parent directory CA by some out of band reliable means. Most) W 2154 -23534 M 60.8 0 32 (likely, this would be done by looking up the information in the naming service and asking the CA operator to) W 2154 -24584 M 47.3 0 32 (verify it. The CA then forms this information into a ) W /Times-Italic-ISOLatin1 $ /Times-Italic & P /Times-Italic-ISOLatin1 F 1000 o f 47.3 0 32 (parent) W /Times-Roman-ISOLatin1 F 1000 o f 47.3 0 32 ( certificate and signs it using the Create_certificate) W 2154 -25634 M (function. It communicates the certificate to the network and posts it in the naming service.) h 709 -27730 M /Symbol F 1000 o f (-) h 2154 -27730 M /Times-Roman-ISOLatin1 F 1000 o f 81.7 0 32 (This name, UID, and public key of the new CA are taken to the CA of the parent directory, which verifies it) W 2154 -28780 M 121.5 0 32 (\(again by some unspecified out\255of\255band mechanism\) and calls Create_Certificate to create a ) W /Times-Italic-ISOLatin1 F 1000 o f 121.5 0 32 (child ) W /Times-Roman-ISOLatin1 F 1000 o f 121.5 0 32 (certificate) W 2154 -29830 M (using its own Name and UID in the issuer fields. This certificate is also placed in the naming service.) h 0 -31926 M 7.2 0 32 (A CA can sign certificates for more than one directory. In this case it is possible that a single CA will take the role of) W 0 -32976 M 6.3 0 32 (both CAs in the example above. The above procedure can be simplified in this case, as no interchange of information) W 0 -34026 M (is required.) h 0 -36422 M /Times-Bold-ISOLatin1 F 1400 o f (A.2 ) h 2411 -36422 M (Creating a User Principal) h 0 -38968 M /Times-Roman-ISOLatin1 F 1000 o f 64.8 0 32 (A system manager may create a new user principal by invoking the Create_principal function supplying the princi\255) W 0 -40018 M 45.9 0 32 (pal's name, UID, and the public key/UID of the parent CA. The public key and UID must be obtained in a reliable) W 0 -41068 M 17.3 0 32 (out of band manner. This is probably by having knowledge of that information "wired into" the utility which creates) W -8504 24096 T R showpage $P e %%Page: 70 70 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 42570 -900 M (Page ) h (70) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 0 -750 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1000 o f 74.1 0 32 (new principals. At account creation time, the system manager must supply what will become the user's password. ) W 0 -1800 M 52.0 0 32 (This might be done by having the user present and directly enter a password or by having the password selected by) W 0 -2850 M (some random generator.) h 0 -5037 M 110.1 0 32 (The trusted authority certificate and corresponding user public key generated by the Create_principal function are) W 0 -6087 M 5.6 0 32 (sent to the CA which verifies its contents \(again by an out\255of\255band mechanism\) and signs a corresponding certificate. ) W 0 -7137 M 44.3 0 32 (The encrypted credentials, CA signed certificate, and trusted authority certificates are all placed in the naming serv\255) W 0 -8187 M (ice.) h 0 -10374 M (The process by which the password is made known to the user must be protected by some out\255of\255band mechanism.) h 0 -12561 M 97.1 0 32 (In some cases the principal may wish to generate its own key, and not use the Encrypted_Credentials. \(E.g. if the) W 0 -13611 M 39.0 0 32 (Principal is represented by a Smart Card\). This may be done using a procedure similar to the one for creating a new) W 0 -14661 M (CA.) h 0 -17148 M /Times-Bold-ISOLatin1 $ /Times-Bold & P /Times-Bold-ISOLatin1 F 1400 o f (A.3 ) h 2411 -17148 M (Creating a Server Principal) h 0 -19785 M /Times-Roman-ISOLatin1 F 1000 o f 56.4 0 32 (A server also has a public/private key pair. Conceptually, the same procedure used to create a user principal can be) W 0 -20835 M 4.4 0 32 (used to create a server. In practice, the most important difference is likely to be how the password is protected when) W 0 -21885 M (installing it on a server compared to giving it to a user. ) h 0 -24072 M 38.7 0 32 (A server may wish to retrieve \(and store\) its Encrypted Credentials directly and never have them placed in the nam\255) W 0 -25122 M 90.1 0 32 (ing service. In this case some other mechanism can be used \(e.g. passing the floppy disk containing the encrypted) W 0 -26172 M 59.4 0 32 (credentials to the server\). This would require a variant of the Initialize_Server routine which does not fetch the En\255) W 0 -27222 M (crypted Credentials from the naming service.) h 0 -29709 M /Times-Bold-ISOLatin1 F 1400 o f (A.4 ) h 2411 -29709 M (Booting a Server Principal) h 0 -32346 M /Times-Roman-ISOLatin1 F 1000 o f 87.3 0 32 (When the server first boots it needs its name \(unreliably\) and password \(reliably\). It then calls Initialize_Server to) W 0 -33396 M 28.4 0 32 (obtain its credentials and trusted authority certificates \(which it will later need in order to authenticate users\). These) W 0 -34446 M 155.7 0 32 (credentials never time out, and are expected to be saved for a long time. In particular the associated Incoming) W 0 -35496 M 2.1 0 32 (Timestamp List must be preserved while there are any timestamps on it. It is desirable to preserve the Cached Incom\255) W 0 -36546 M (ing Contexts as long as there are any contexts likely to be reused.) h 0 -38733 M 60.5 0 32 (If a server wants to initiate associations on its own behalf then it must call Generate_Server_Ticket. It must repeat) W 0 -39783 M (this at intervals if the expiration period expires.) h 0 -41970 M 85.2 0 32 (A node that wishes to do node authentication \(or which acts as a server under its own name\) must be created as a) W 0 -43020 M (server.) h 0 -45507 M /Times-Bold-ISOLatin1 F 1400 o f (A.5 ) h 2411 -45507 M (A user logs on to the network) h 0 -48144 M /Times-Roman-ISOLatin1 F 1000 o f 2.0 0 32 (The system that the user logs onto finds the user's name and password. It then calls Network_Login to obtain creden\255) W 0 -49194 M 116.5 0 32 (tials for the user. These credentials are saved until the user wants to make a network connection. The credentials) W 0 -50244 M 69.2 0 32 (have a time limit, so the user will have to obtain new credentials in order to make connections after the time limit.) W 0 -51294 M 77.6 0 32 (The credentials are then checked by calling Verify_Principal_Name, in order to check that the key specified in the) W 0 -52344 M (encrypted credentials has been certified by the CA.) h 0 -54531 M 118.7 0 32 (If the system does source node authentication it will call Combine_credentials, once the local username has been) W 0 -55581 M 34.3 0 32 (found. \(This can either be found by looking the principal's global name up in a file, or the user can be asked to give) W 0 -56631 M 26.9 0 32 (the local name directly. Alternatively the user can be asked to give his local username, which the system looks up to) W 0 -57681 M (find the global name\).) h -8503 8502 T R showpage $P e %%Page: 71 71 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 42570 -900 M (Page ) h (71) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 0 -1050 M /Times-Bold-ISOLatin1 $ /Times-Bold & P /Times-Bold-ISOLatin1 F 1400 o f (A.6 ) h 2411 -1050 M (An Rlogin \(TCP/IP\) connection is made) h 0 -3550 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1000 o f 8.9 0 32 (When the user calls a modified version of the rlogin utility, it calls Create_token in order to create the Initial Authen\255) W 0 -4600 M 48.0 0 32 (tication Token, which is passed to the other system as part of the rlogin protocol. The rlogind utility at the destina\255) W 0 -5650 M 69.9 0 32 (tion node calls Accept_token to verify it. It then looks up in a local rhosts\255like database to determine whether this) W 0 -6700 M 199.0 0 32 (global user is allowed access to the requested destination account. It calls Verify_principal_name and/or Ver\255) W 0 -7750 M 21.2 0 32 (ify_node_name to confirm the identity of the requester. If access is allowed, the connection is accepted and the Mu\255) W 0 -8800 M (tual Authentication Token is returned in the response message.) h 0 -10850 M 20.2 0 32 (The source receives the returned Mutual Authentication Token and uses it to confirm it communicating with the cor\255) W 0 -11900 M (rect destination node.) h 0 -13950 M 60.3 0 32 (Rlogind then calls Combine_credentials to combine its node/account information with the global user identification) W 0 -15000 M (in the received credentials in case the user accesses any network resources from the destination system.) h 0 -17350 M /Times-Bold-ISOLatin1 F 1400 o f (A.7 ) h 2411 -17350 M (A Transport\255Independent Connection) h 0 -19850 M /Times-Roman-ISOLatin1 F 1000 o f 36.6 0 32 (As an alternative to the description in A.6, an application wishing to be portable between different underlying trans\255) W 0 -20900 M 49.6 0 32 (ports may call create_token to create an authentication token which it then sends to its peer. The peer can then call) W 0 -21950 M (accept_token and verify_principal_name and learn the identity of the requester.) h -8503 8502 T R showpage $P e %%Page: 72 72 /$P a D g N 0 79200 T S S 8488 -1910 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39771 -900 M (October 1991) h 0 -2284 M -8488 1910 T R S 8488 -72021 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 42572 -900 M (Page ) h (72) h -8488 72021 T R R S 8590 -8532 T N 0 G 19975 -1350 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1800 o f (Annex B ) h 26874 -1350 M 14949 -3350 M (Support of the GSSAPI) h -8590 8532 T R S 8504 -24096 T N 0 G 0 -750 M /Times-Roman-ISOLatin1 F 1000 o f 2.6 0 32 (In order to support applications which need to be portable across a variety of underlying security mechanisms, a "Ge\255) W 0 -1800 M 94.2 0 32 (neric Security Service API" \(or GSSAPI\) was designed which gives access to a common core of security services) W 0 -2850 M 106.7 0 32 (expected to be provided by several mechanisms. The GSSAPI was designed with DASS, Kerberos V4, and Ker\255) W 0 -3900 M 12.6 0 32 (beros V5 in mind, and could be written as a front end to any or all of those systems. It is hoped that it could serve as) W 0 -4950 M (an interface to other security systems as well.) h 0 -7013 M 40.1 0 32 (Application portability requires that the security services supported be comparable. Applications using the GSSAPI) W 0 -8063 M 37.8 0 32 (will not be able to access all of the features of the underlying security mechanisms. For example, the GSSAPI does) W 0 -9113 M 61.9 0 32 (not allow access to the "node authentication" features of DASS. To the extent the underlying security mechanisms) W 0 -10163 M 108.3 0 32 (do not support all the features of GSSAPI, applications using those features will not be portable to those security) W 0 -11213 M 44.5 0 32 (mechanisms. For example, Kerberos V4 does not support delegation, so applications using that feature of the GSS\255) W 0 -12263 M (API will not be portable to Kerberos V4.) h 0 -14326 M (This annex explains how the GSSAPI can be implemented using the primitive services provided by DASS.) h 0 -16689 M /Times-Bold-ISOLatin1 $ /Times-Bold & P /Times-Bold-ISOLatin1 F 1400 o f (B.1 ) h 2334 -16689 M (Summary of GSSAPI) h 0 -19202 M /Times-Roman-ISOLatin1 F 1000 o f 80.9 0 32 (The latest draft of the GSSAPI specification is available as an internet draft. The following is a brief summary of) W 0 -20252 M 148.5 0 32 (that evolving document and should not be taken as definitive. Included here are only those aspects of GSSAPI) W 0 -21302 M (whose implementation would be DASS specific.) h 0 -23365 M 120.9 0 32 (The GSSAPI provides four classes of functions: Credential Management, Context\255Level Calls, Per\255message calls,) W 0 -24415 M 26.4 0 32 (and Support Calls; two types of objects: Credentials and Contexts; and two kinds of data structures to be transmitted) W 0 -25465 M 5.6 0 32 (as opaque byte strings: Tokens and Messages. Credentials hold keys and support information used in creating tokens. ) W 0 -26515 M (Contexts hold keys and support information used in signing and encrypting messages.) h 0 -28578 M 105.9 0 32 (The Credential Management functions of GSSAPI are "incomplete" in the sense that one could not build a useful) W 0 -29628 M 31.9 0 32 (security implementation using only GSSAPI. Functions which create credentials based on passwords or smart cards) W 0 -30678 M 51.5 0 32 (are needed but not provided by GSSAPI. It is envisioned that such functions would be invoked by security mecha\255) W 0 -31728 M 51.2 0 32 (nism specific functions at user login or via some separate utility rather than from within applications intended to be) W 0 -32778 M (portable. The Credential Management functions available to portable applications are:) h 709 -34841 M /Symbol F 1000 o f (-) h 2154 -34841 M /Times-Roman-ISOLatin1 F 1000 o f (GSS_Acquire_cred: get a handle to an existing credential structure based on a name or process default.) h 709 -36904 M /Symbol F 1000 o f (-) h 2154 -36904 M /Times-Roman-ISOLatin1 F 1000 o f (GSS_Release_cred: release credentials after use.) h 0 -38967 M 135.9 0 32 (The Context\255Level Calls use credentials to establish contexts. Contexts are like connections: they are created in) W 0 -40017 M 102.4 0 32 (pairs and are generally used at the two ends of a connection to process messages associated with that connection. ) W 0 -41067 M (The Context\255Level Calls of interest are:) h -8504 24096 T R showpage $P e %%Page: 73 73 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 42570 -900 M (Page ) h (73) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 709 -750 M /Symbol F 1000 o f (-) h 2154 -750 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1000 o f 6.4 0 32 (GSS_Init_sec_context: given credentials and the name of a destination, create a new context and a token which) W 2154 -1800 M (will permit the destination to create a corresponding context.) h 709 -3902 M /Symbol F 1000 o f (-) h 2154 -3902 M /Times-Roman-ISOLatin1 F 1000 o f 41.4 0 32 (GSS_Accept_sec_context: given credentials and an incoming token, create a context corresponding to the one) W 2154 -4952 M (at the initiating end and provide information identifying the initiator.) h 709 -7054 M /Symbol F 1000 o f (-) h 2154 -7054 M /Times-Roman-ISOLatin1 F 1000 o f (GSS_Delete_sec_context: delete a context after use.) h 0 -9156 M 45.9 0 32 (The Per\255Message Calls use contexts to sign, verify, encrypt, and decrypt messages between the holders of matching) W 0 -10206 M (contexts. The Per\255Message Calls are:) h 709 -12308 M /Symbol F 1000 o f (-) h 2154 -12308 M /Times-Roman-ISOLatin1 F 1000 o f 78.6 0 32 (GSS_Sign: Given a context and a message, produces a string of bytes which constitute a signature on a pro\255) W 2154 -13358 M (vided message.) h 709 -15460 M /Symbol F 1000 o f (-) h 2154 -15460 M /Times-Roman-ISOLatin1 F 1000 o f 140.2 0 32 (GSS_Verify: Given a context, a message, and the bytes returned by GSS_Sign, verifies the message to be) W 2154 -16510 M (authentic \(unaltered since it was signed by the corresponding context\).) h 709 -18612 M /Symbol F 1000 o f (-) h 2154 -18612 M /Times-Roman-ISOLatin1 F 1000 o f 43.6 0 32 (GSS_Seal: Given a context and a message, produces a string of bytes which include the message and a signa\255) W 2154 -19662 M (ture; the message may optionally be encrypted.) h 709 -21764 M /Symbol F 1000 o f (-) h 2154 -21764 M /Times-Roman-ISOLatin1 F 1000 o f 19.7 0 32 (GSS_Unseal: Given a context and the string of bytes from GSS_Seal, returns the original message and a status) W 2154 -22814 M (indicating its authenticity.) h 0 -24916 M (The Support Calls provide utilities like translating names and status codes into printable strings.) h 0 -27318 M /Times-Bold-ISOLatin1 $ /Times-Bold & P /Times-Bold-ISOLatin1 F 1400 o f (B.2 ) h 2334 -27318 M (Implementation of GSSAPI over DASS) h 0 -30020 M n 0.857 o f (B.2.1 ) h 2900 -30020 M (Data Structures) h 0 -32222 M /Times-Roman-ISOLatin1 F 1000 o f 74.1 0 32 (The objects and data structures of the GSSAPI do not map neatly into the objects and data structures of the DASS) W 0 -33272 M 80.6 0 32 (architecture. This section describes how those data structures can be implemented using the DASS data structures) W 0 -34322 M (and primitives) h 0 -36424 M 87.6 0 32 (Credential handles correspond to the credentials structures in DASS, where the portable API assumes that the cre\255) W 0 -37474 M (dential structures themselves are kept from applications and handles are passed to and from the various subroutines.) h 0 -39576 M 22.8 0 32 (Context initialization tokens correspond to the tokens of DASS. The GSSAPI prescribes a particular ASN.1 encoded) W 0 -40626 M 119.6 0 32 (form for tokens which includes a mechanism specific bit string within it. An implementation of GSSAPI should) W 0 -41676 M (enclose the DASS token within the GSSAPI "wrapper".) h 0 -43778 M 76.7 0 32 (Context handles have no corresponding structure in DASS. The Create_token and Accept_token calls of DASS re\255) W 0 -44828 M 22.1 0 32 (turn a shared key and instance identifier. An implementation of the GSSAPI must take those values along with some) W 0 -45878 M 35.6 0 32 (other status information and package it as a "context" opaque structure. These data structures must be allocated and) W 0 -46928 M (freed with the appropriate calls.) h 0 -49030 M 80.5 0 32 (Per\255message tokens and sealed messages have no corresponding data structure within DASS. To fully support the) W 0 -50080 M 99.5 0 32 (GSSAPI functionality, DASS must be extended to include this functionality. These data structures are created by) W 0 -51130 M 49.2 0 32 (cryptographic routines given the keys and status information in context structures and the messages passed to them. ) W 0 -52180 M (While not properly part of the DASS architecture, the formats of these data structures are included in section C.3.) h 0 -54432 M /Times-Bold-ISOLatin1 F 1200 o f (B.2.2 ) h 2900 -54432 M (Procedures) h 0 -56634 M /Times-Roman-ISOLatin1 F 1000 o f 22.3 0 32 (This section explains how the functions of the GSSAPI can be provided in terms of the Services Provided by DASS. ) W 0 -57684 M (Not all of the DASS features are accessible through the GSSAPI.) h -8503 8502 T R showpage $P e %%Page: 74 74 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 42570 -900 M (Page ) h (74) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 0 -825 M /Times-Bold-ISOLatin1 $ /Times-Bold & P /Times-Bold-ISOLatin1 F 1100 o f (B.2.2.1 ) h 3484 -825 M (GSS_Acquire_cred) h 0 -2975 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1000 o f 87.1 0 32 (The GSSAPI does not provide a mechanism for logging in users or establishing server credentials. It assumes that) W 0 -4025 M 26.7 0 32 (some system specific mechanism created those credentials and that applications need some mechanism for getting at) W 0 -5075 M 74.0 0 32 (them. A model implementation might save all credentials in a node\255global pool indexed by some sort of credential) W 0 -6125 M 48.8 0 32 (name. The credentials in the pool would be access controlled by some local policy which is not concern of portable) W 0 -7175 M 78.1 0 32 (applications. Those applications would simply call GSS_Acquire_cred and if they passed the access control check,) W 0 -8225 M (they would get a handle to the credentials which could be used in subsequent calls.) h 0 -10375 M /Times-Bold-ISOLatin1 F 1100 o f (B.2.2.2 ) h 3484 -10375 M (GSS_Release_cred) h 0 -12525 M /Times-Roman-ISOLatin1 F 1000 o f (This call corresponds to the "delete_credentials" call of DASS.) h 0 -14675 M /Times-Bold-ISOLatin1 F 1100 o f (B.2.2.3 ) h 3484 -14675 M (GSS_Init_sec_context) h 0 -16825 M /Times-Roman-ISOLatin1 F 1000 o f 164.1 0 32 (In the course of a normal mutual authentication, this routine will be called twice. The procedure can determine) W 0 -17875 M 86.1 0 32 (whether this is the first or second call by seeing whether the "input_context_handle" is zero \(it will be on the first) W 0 -18925 M 10.1 0 32 (call\). On the first call, it will use the DASS Create_token service to create a token and it will also allocate and popu\255) W 0 -19975 M 102.4 0 32 (late a "context" structure. That structure will hold the key, instance identifier, and mutual authentication token re\255) W 0 -21025 M 46.8 0 32 (turned by Create_token and will in addition hold the flags which were passed into the Init_sec_context call. The to\255) W 0 -22075 M 53.9 0 32 (ken returned by Init_sec_context will be the DASS token included in the GSSAPI token "wrapper". The DASS to\255) W 0 -23125 M (ken will include the optional principal name.) h 0 -25200 M 24.9 0 32 (If mutual authentication is not requested in the GSSAPI call, the mutual authentication token returned by DASS will) W 0 -26250 M 134.4 0 32 (be ignored and the initial call will return a COMPLETE status. If mutual authentication is requested, the mutual) W 0 -27300 M (authentication token will be stored in the context information and a CONTINUE_NEEDED status returned.) h 0 -29375 M 64.2 0 32 (On the second call to GSS_Init_sec_context \(with input_context_handle non\255zero\), the returned token will be com\255) W 0 -30425 M 96.9 0 32 (pared to the one in the context information using the Compare_mutual_token procedure and a COMPLETE status) W 0 -31475 M (will be returned if they match.) h 0 -33625 M /Times-Bold-ISOLatin1 F 1100 o f (B.2.2.4 ) h 3484 -33625 M (GSS_Accept_sec_context) h 0 -35775 M /Times-Roman-ISOLatin1 F 1000 o f 136.7 0 32 (This routine in GSSAPI accepts an incoming token and creates a context. It combines the effects of a series of) W 0 -36825 M (DASS functions. It could be implemented as follows:) h 709 -38900 M /Symbol F 1000 o f (-) h 2154 -38900 M /Times-Roman-ISOLatin1 F 1000 o f 256.5 0 32 (Remove the GSSAPI "wrapper" from the incoming token and pass the rest and the credentials to "Ac\255) W 2154 -39950 M 37.5 0 32 (cept_token". Accept_token produces a mutual authentication token and a new credentials structure. If delega\255) W 2154 -41000 M 25.9 0 32 (tion was requested, the new credentials structure will be an output of GSS_Accept_sec_context. In any case, it) W 2154 -42050 M (will be used in the subsequent steps of this procedure.) h 709 -44125 M /Symbol F 1000 o f (-) h 2154 -44125 M /Times-Roman-ISOLatin1 F 1000 o f 9.1 0 32 (Use the DASS Get_principal_name function to extract the principal name from the credentials produced by Ac\255) W 2154 -45175 M (cept_token. This name is one of the outputs of "GSS_Accept_sec_context.) h 709 -47250 M /Symbol F 1000 o f (-) h 2154 -47250 M /Times-Roman-ISOLatin1 F 1000 o f 5.3 0 32 (Apply the DASS Verify_principal_name to the new credentials and the retrieved name to authenticate the token) W 2154 -48300 M (as having come from the named principal.) h 709 -50375 M /Symbol F 1000 o f (-) h 2154 -50375 M /Times-Roman-ISOLatin1 F 1000 o f 76.6 0 32 (Create and populate a context structure with the key and timestamp returned by Accept_token and a status of) W 2154 -51425 M (COMPLETE. Return a handle to that context.) h 709 -53500 M /Symbol F 1000 o f (-) h 2154 -53500 M /Times-Roman-ISOLatin1 F 1000 o f 128.2 0 32 (If delegation was requested, return the new credentials from GSS_Accept_sec_context. Otherwise, call De\255) W 2154 -54550 M (lete_credentials.) h 709 -56625 M /Symbol F 1000 o f (-) h 2154 -56625 M /Times-Roman-ISOLatin1 F 1000 o f 41.3 0 32 (If mutual authentication was requested, wrap the mutual authentication token from Accept_token in a GSSAPI) W 2154 -57675 M ("wrapper" and return it. Otherwise return a null string.) h -8503 8502 T R showpage $P e %%Page: 75 75 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 42570 -900 M (Page ) h (75) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 0 -825 M /Times-Bold-ISOLatin1 $ /Times-Bold & P /Times-Bold-ISOLatin1 F 1100 o f (B.2.2.5 ) h 3484 -825 M (GSS_Delete_sec_context) h 0 -3152 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1000 o f (This routine simply deletes the context state. No calls to DASS are required.) h 0 -5479 M /Times-Bold-ISOLatin1 F 1100 o f (B.2.2.6 ) h 3484 -5479 M (GSS_Sign) h 0 -7806 M /Times-Roman-ISOLatin1 F 1000 o f 22.5 0 32 (This routine takes as input a context handle and a message. It creates a per_msg_token by computing a digital signa\255) W 0 -8856 M 26.9 0 32 (ture on the message using the key and timestamp in the context block. No DASS services are required. If additional) W 0 -9906 M 108.2 0 32 (cryptographic services were requested \(replay detection or sequencing\), a timestamp or sequence number must be) W 0 -10956 M (prepended to the message and sent with the signature. The syntax for this message is listed in section C.3.) h 0 -13283 M /Times-Bold-ISOLatin1 F 1100 o f (B.2.2.7 ) h 3484 -13283 M (GSS_Verify) h 0 -15610 M /Times-Roman-ISOLatin1 F 1000 o f 53.2 0 32 (This routine repeats the calculation of the sign routine and verifies the signature provided. If replay detection or se\255) W 0 -16660 M 104.8 0 32 (quencing services are provided, the context must maintain as part of its state information containing the sequence) W 0 -17710 M (numbers or timestamps of messages already received and this one must be checked for acceptability.) h 0 -20037 M /Times-Bold-ISOLatin1 F 1100 o f (B.2.2.8 ) h 3484 -20037 M (GSS_Seal) h 0 -22364 M /Times-Roman-ISOLatin1 F 1000 o f 141.0 0 32 (This routine performs the same functions as Sign but also optionally encrypts the message for privacy using the) W 0 -23414 M (shared key and encapsulates the whole thing in a GSSAPI specified ASN.1 wrapper.) h 0 -25741 M /Times-Bold-ISOLatin1 F 1100 o f (B.2.2.9 ) h 3484 -25741 M (GSS_Unseal) h 0 -28068 M /Times-Roman-ISOLatin1 F 1000 o f 99.6 0 32 (This routine performs the same functions as GSS_Verify but also parses the data structure including the signature) W 0 -29118 M (and message and decrypts the message if necessary.) h 0 -31670 M /Times-Bold-ISOLatin1 F 1400 o f (B.3 ) h 2334 -31670 M (Syntax) h 0 -34372 M /Times-Roman-ISOLatin1 F 1000 o f 225.2 0 32 (The GSSAPI specification recommends the following ASN.1 encoding for the tokens and messages generated) W 0 -35422 M (through the GSSAPI:) h 3600 -37674 M /Courier-ISOLatin1 $ /Courier & P /Courier-ISOLatin1 F 1000 o f (\255\255optional top\255level token definitions to frame) h 3600 -38874 M (\255\255 different mechanisms) h 3600 -40876 M (GSSAPI DEFINITIONS ::=) h 3600 -42878 M (BEGIN) h 3600 -44880 M (MechType ::= OBJECT IDENTIFIER) h 3600 -46080 M (\255\255 data structure definitions) h 3600 -48082 M (ContextToken ::=) h 3600 -49282 M (\255\255 option indication \(delegation, etc.\) indicated) h 3600 -50482 M (\255\255 within mechanism\255specific token) h 3600 -51682 M ([APPLICATION 0] IMPLICIT SEQUENCE {) h 3600 -52882 M 7072 -52882 M (thisMech MechType,) h 3600 -54082 M 7072 -54082 M (responseExpected BOOLEAN,) h 3600 -55282 M 7072 -55282 M (innerContextToken ANY DEFINED BY MechType) h 3600 -56482 M 7072 -56482 M 8511 -56482 M (\255\255 contents mechanism\255specific) h 3600 -57682 M 7072 -57682 M (}) h -8503 8502 T R showpage $P e %%Page: 76 76 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 42570 -900 M (Page ) h (76) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 3600 -750 M /Courier-ISOLatin1 $ /Courier & P /Courier-ISOLatin1 F 1000 o f (PerMsgToken ::=) h 3600 -1950 M (\255\255 as emitted by GSS_Sign and processed by) h 3600 -3150 M (\255\255 GSS_Verify) h 3600 -4350 M ([APPLICATION 1] IMPLICIT SEQUENCE {) h 3600 -5550 M 7072 -5550 M (thisMech MechType,) h 3600 -6750 M 7072 -6750 M (innerMsgToken ANY DEFINED BY MechType) h 3600 -7950 M 7072 -7950 M 8511 -7950 M (\255\255 contents mechanism\255specific) h 3600 -9150 M 7072 -9150 M (}) h 3600 -10964 M (SealedMessage ::=) h 3600 -12164 M (\255\255 as emitted by GSS_Seal and processed by) h 3600 -13364 M (\255\255 GSS_Unseal) h 3600 -14564 M ([APPLICATION 2] IMPLICIT SEQUENCE {) h 3600 -15764 M 7072 -15764 M (sealingToken PERMSGTOKEN,) h 3600 -16964 M 7072 -16964 M (confFlag BOOLEAN,) h 3600 -18164 M 7072 -18164 M (userData OCTET STRING) h 3600 -19364 M 7072 -19364 M 8511 -19364 M (\255\255 encrypted if confFlag TRUE) h 3600 -20564 M 7072 -20564 M (}) h 0 -22378 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1000 o f (The object identifier for the DASS MechType is 1.3.12.2.1011.7.5.) h 0 -24442 M (The innerContextToken of a token is a DASS token or mutual authentication token.) h 0 -26506 M 27.0 0 32 (The innerMsgToken is a null string in the case where the message is encrypted and the token is included as part of a) W 0 -27556 M 91.6 0 32 (SealedMessage. Otherwise, it is an eight octet sequence computed as the CBC residue computed using a key and) W 0 -28606 M (string of bytes defined as follows:) h 709 -30670 M /Symbol F 1000 o f (-) h 2154 -30670 M /Times-Roman-ISOLatin1 F 1000 o f 35.8 0 32 (Pad the message provided by the application with 1\2558 bytes of pad to produce a string whose length is a multi\255) W 2154 -31720 M (ple of 8 octets. Each pad byte has a value equal to the number of pad bytes.) h 709 -33784 M /Symbol F 1000 o f (-) h 2154 -33784 M /Times-Roman-ISOLatin1 F 1000 o f 21.5 0 32 (Compute the key by taking the timestamp of the association \(two four byte integers laid out in big endian order) W 2154 -34834 M 22.0 0 32 (with the most significant integer first\), complementing the high order bit \(to avoid aliasing with mutual authen\255) W 2154 -35884 M (ticators\), and encrypting the block in ECB mode with the shared key of the association.) h 0 -37948 M 76.6 0 32 (The userData field of a SealedMessage is exactly the application provided byte string if confFlag=FALSE. Other\255) W 0 -38998 M (wise, it is the application supplied message encrypted as follows:) h 709 -41062 M /Symbol F 1000 o f (-) h 2154 -41062 M /Times-Roman-ISOLatin1 F 1000 o f 54.8 0 32 (Pad the message provided by the application with 1\2558 bytes of pad to produce a string whose length = 4 \(mod) W 2154 -42112 M (8\). Each pad byte has a value equal to the number of pad bytes.) h 709 -44176 M /Symbol F 1000 o f (-) h 2154 -44176 M /Times-Roman-ISOLatin1 F 1000 o f (Append a four byte CRC32 computed over the message + pad.) h 709 -46240 M /Symbol F 1000 o f (-) h 2154 -46240 M /Times-Roman-ISOLatin1 F 1000 o f 62.5 0 32 (Compute a key by taking the timestamp of the association \(two four byte integers laid out in big endian order) W 2154 -47290 M 22.0 0 32 (with the most significant integer first\), complementing the high order bit \(to avoid aliasing with mutual authen\255) W 2154 -48340 M (ticators\), and encrypting the block in ECB mode with the shared key of the association.) h 709 -50404 M /Symbol F 1000 o f (-) h 2154 -50404 M /Times-Roman-ISOLatin1 F 1000 o f (Encrypt the message + pad + CRC32 using CBC and the key computed in the previous step.) h 0 -52468 M (A note of the logic behind the above:) h 709 -54532 M /Symbol F 1000 o f (-) h 2154 -54532 M /Times-Roman-ISOLatin1 F 1000 o f 30.8 0 32 (Because the shared key of an association may be reused by many associations between the same pair of princi\255) W 2154 -55582 M 55.1 0 32 (pals, it is necessary to bind the association timestamp into the messages somehow to prevent messages from a) W 2154 -56632 M 1.6 0 32 (previous association being replayed into a new sequence. The technique above of generating an association key) W 2154 -57682 M 76.0 0 32 (accomplishes this and has a side benefit. An implementation may with to keep the long term keys out of the) W -8503 8502 T R showpage $P e %%Page: 77 77 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 42570 -900 M (Page ) h (77) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 2154 -750 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1000 o f 43.8 0 32 (hands of applications for purposes of confinement but may wish to put the encryption associated with an asso\255) W 2154 -1800 M (ciation in process context for reasons of performance. Defining an association key makes that possible.) h 709 -3850 M /Symbol F 1000 o f (-) h 2154 -3850 M /Times-Roman-ISOLatin1 F 1000 o f 43.9 0 32 (The reason that the association specific key is not specified as the output of Create_token and Accept_token is) W 2154 -4900 M 27.3 0 32 (that the DCE RPC security implementation requires that a series of associations between two principals always) W 2154 -5950 M (have the same key and we did not want to have to support a different interface in that application.) h 709 -8000 M /Symbol F 1000 o f (-) h 2154 -8000 M /Times-Roman-ISOLatin1 F 1000 o f (The CRC32 after pad constitutes a cheap integrity check when data is encrypted.) h 709 -10050 M /Symbol F 1000 o f (-) h 2154 -10050 M /Times-Roman-ISOLatin1 F 1000 o f 43.2 0 32 (The fact that padding is done differently for encrypted and signed messages means that there are no threats re\255) W 2154 -11100 M 83.1 0 32 (lated to sending the same message encrypted and unencrypted and using the last block of the encrypted mes\255) W 2154 -12150 M (sage as a signature on the unencrypted one.) h -8503 8502 T R showpage $P e %%Page: 78 78 /$P a D g N 0 79200 T S S 8488 -1910 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39771 -900 M (October 1991) h 0 -2284 M -8488 1910 T R S 8488 -72021 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 42572 -900 M (Page ) h (78) h -8488 72021 T R R S 8590 -8532 T N 0 G 19975 -1350 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1800 o f (Annex C ) h 26874 -1350 M 13350 -3350 M (Imported ASN.1 definitions) h -8590 8532 T R S 8504 -24096 T N 0 G 0 -750 M /NewCenturySchlbk-Roman-ISOLatin1 $ /NewCenturySchlbk-Roman & P /NewCenturySchlbk-Roman-ISOLatin1 F 1000 o f (This annex contains extracts from the ASN.1 description of X.509 and X.500 definitions referenced by) h 0 -1950 M (the DASS ASN.1 definitions.) h 0 -3182 M 0 -4414 M (CCITT DEFINITIONS ::=) h 0 -5646 M 0 -6878 M (BEGIN) h 0 -8110 M (joint\255iso\255ccitt OBJECT IDENTIFIER ::= {2}) h 0 -9342 M (ds OBJECT IDENTIFIER ::= {joint\255iso\255ccitt 5}) h 0 -10574 M (algorithm OBJECT IDENTIFIER ::= {ds 8}) h 0 -11806 M 0 -13038 M (iso OBJECT IDENTIFIER ::= {1}) h 0 -14270 M (identified\255organization OBJECT IDENTIFIER ::= {iso 3}) h 0 -15502 M (ecma OBJECT IDENTIFIER ::= {identified\255organization 12}) h 0 -16734 M (digital OBJECT IDENTIFIER ::= { ecma 1011 }) h 0 -17966 M 0 -19198 M (\255\255 X.501 definitions) h 0 -20430 M 0 -21662 M (AttributeType ::= OBJECT IDENTIFIER) h 0 -22862 M (AttributeValue ::= ANY) h 0 -24062 M 5760 -24062 M (\255\255 useful ones are) h 0 -25262 M 5760 -25262 M 11520 -25262 M (\255\255) h 17280 -25262 M (OCTET STRING ,) h 0 -26462 M 5760 -26462 M 11520 -26462 M (\255\255) h 17280 -26462 M (PrintableString ,) h 0 -27662 M 5760 -27662 M 11520 -27662 M (\255\255) h 17280 -27662 M (NumericString ,) h 0 -28862 M 5760 -28862 M 11520 -28862 M (\255\255) h 17280 -28862 M (T61String ,) h 0 -30062 M 5760 -30062 M 11520 -30062 M (\255\255) h 17280 -30062 M (VisibleString ) h 0 -31262 M 0 -32494 M (AttributeValueAssertion ::= SEQUENCE {AttributeType, AttributeValue}) h 0 -33726 M 0 -34958 M (Name ::= CHOICE {\255\255 only one possibility for now \255\255) h 0 -36158 M 5760 -36158 M 11520 -36158 M (RDNSequence}) h 0 -37358 M 0 -38590 M (RDNSequence ::= SEQUENCE OF RelativeDistinguishedName) h 0 -39822 M 0 -41054 M (DistinguishedName ::= RDNSequence) h -8504 24096 T R showpage $P e %%Page: 79 79 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 42570 -900 M (Page ) h (79) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 0 -750 M 0 -2113 M /NewCenturySchlbk-Roman-ISOLatin1 $ /NewCenturySchlbk-Roman & P /NewCenturySchlbk-Roman-ISOLatin1 F 1000 o f (RelativeDistinguishedName ::= SET OF AttributeValueAssertion) h 0 -3476 M 0 -4839 M (\255\255 X.509 definitions) h 0 -6202 M 0 -7565 M (Certificate ::= SIGNED SEQUENCE {) h 0 -8765 M 5760 -8765 M 11520 -8765 M (version) h 17280 -8765 M ([0]) h 23040 -8765 M 28800 -8765 M (Version DEFAULT 1988 ,) h 0 -9965 M 5760 -9965 M 11520 -9965 M (serialNumber) h 23040 -9965 M 28800 -9965 M (SerialNumber ,) h 0 -11165 M 5760 -11165 M 11520 -11165 M (signature ) h 23040 -11165 M 28800 -11165 M (AlgorithmIdentifier ,) h 0 -12365 M 5760 -12365 M 11520 -12365 M (issuer) h 17280 -12365 M 23040 -12365 M 28800 -12365 M (Name,) h 0 -13565 M 5760 -13565 M 11520 -13565 M (valid) h 17280 -13565 M 23040 -13565 M 28800 -13565 M (Validity,) h 0 -14765 M 5760 -14765 M 11520 -14765 M (subject) h 17280 -14765 M 23040 -14765 M 28800 -14765 M (Name,) h 0 -15965 M 5760 -15965 M 11520 -15965 M (subjectPublicKey) h 23040 -15965 M (SubjectPublicKeyInfo } ) h 0 -17328 M 0 -18691 M (Version ::= INTEGER { 1988\(0\)}) h 0 -20054 M (SerialNumber INTEGER) h 0 -21417 M (Validity ::= SEQUENCE{) h 0 -22617 M 5760 -22617 M (notBefore) h 11520 -22617 M 17280 -22617 M (UTCTime,) h 0 -23817 M 5760 -23817 M (notAfter) h 11520 -23817 M 17280 -23817 M (UTCTime}) h 0 -25180 M 0 -26543 M (SubjectPublicKeyInfo ::= SEQUENCE {) h 0 -27743 M 5760 -27743 M (algorithm) h 11520 -27743 M 17280 -27743 M (AlgorithmIdentifier ,) h 0 -28943 M 5760 -28943 M (subjectPublicKey) h 17280 -28943 M (BIT STRING ) h 0 -30143 M 5760 -30143 M (}) h 0 -31506 M 0 -32869 M (AlgorithmIdentifier ::= SEQUENCE {) h 0 -34069 M 5760 -34069 M (algorithm) h 11520 -34069 M (OBJECT IDENTIFIER ,) h 0 -35269 M 5760 -35269 M ( parameters) h 17280 -35269 M (ANY DEFINED BY algorithm OPTIONAL}) h 0 -36632 M 0 -37995 M (ALGORITHM MACRO) h 0 -39195 M (BEGIN) h 0 -40395 M (TYPE NOTATION) h 11520 -40395 M (::= "PARAMETER" type) h 0 -41595 M (VALUE NOTATION) h 11520 -41595 M (::= value \(VALUE OBJECT IDENTIFIER\)) h 0 -42795 M (END \255\255 of ALGORITHM) h 0 -44158 M 0 -45521 M (ENCRYPTED MACRO) h 0 -46721 M (BEGIN) h 0 -47921 M (TYPE NOTATION) h 11520 -47921 M (::=type\(ToBeEnciphered\)) h 0 -49121 M (VALUE NOTATION) h 11520 -49121 M (::= value\(VALUE BIT STRING\)) h 0 -50321 M 5760 -50321 M (\255\255 the value of the bit string is generated by) h 0 -51521 M 5760 -51521 M (\255\255 taking the octets which form the complete) h 0 -52721 M 5760 -52721 M (encoding \(using the ASN.1 Basic Encoding Rules\)) h 0 -53921 M 5760 -53921 M (\255\255 of the value of the ToBeEnciphered type and) h 0 -55121 M 5760 -55121 M (\255\255 applying an encipherment procedure to those octets\255\255) h 0 -56321 M (END) h 0 -57684 M -8503 8502 T R showpage $P e %%Page: 80 80 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 42570 -900 M (Page ) h (80) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 0 -750 M /NewCenturySchlbk-Roman-ISOLatin1 $ /NewCenturySchlbk-Roman & P /NewCenturySchlbk-Roman-ISOLatin1 F 1000 o f (SIGNED MACRO) h 11520 -750 M (::=) h 0 -1950 M (BEGIN) h 0 -3150 M (TYPE NOTATION) h 11520 -3150 M (::= type \(ToBeSigned\)) h 0 -4350 M (VALUE NOTATION) h 11520 -4350 M (::= value\(VALUE) h 0 -5550 M (SEQUENCE{) h 0 -6750 M 5760 -6750 M (ToBeSigned,) h 0 -7950 M 5760 -7950 M (AlgorithIdentifier, \255\255 of the algorithm used to generate the signature) h 0 -9150 M 5760 -9150 M (ENCRYPTED OCTET STRING) h 0 -10350 M 5760 -10350 M (\255\255 where the octet string is the result) h 0 -11550 M 5760 -11550 M (\255\255 of the hashing of the value of) h 0 -12750 M 5760 -12750 M ("ToBeSigned") h 0 -13950 M (END \255\255 of SIGNED) h 0 -15150 M 0 -16350 M (SIGNATURE MACRO) h 11520 -16350 M (::=) h 0 -17550 M (BEGIN) h 0 -18750 M (TYPE NOTATION) h 11520 -18750 M (::= type\(OfSignature\)) h 0 -19950 M (VALUE NOTATION) h 11520 -19950 M (::= value\(VALUE) h 0 -21150 M 5760 -21150 M (SEQUENCE{) h 0 -22350 M 5760 -22350 M 11520 -22350 M (AlgorithmIdentifier,) h 0 -23550 M 5760 -23550 M 11520 -23550 M (\255\255 of the algorithm used to compute the signature) h 0 -24750 M 5760 -24750 M 11520 -24750 M (ENCRYPTED OCTET STRING) h 0 -25950 M 5760 -25950 M 11520 -25950 M (\255\255 where the octet string is a function \(e.g. a compressed or) h 0 -27150 M 5760 -27150 M 11520 -27150 M (\255\255 hashed version\) of the value "OfSignature", which may) h 0 -28350 M 5760 -28350 M 11520 -28350 M (\255\255 include the identifier of the algorithm used to compute) h 0 -29550 M 5760 -29550 M 11520 -29550 M (\255\255 the signature\255\255}) h 0 -30750 M 5760 -30750 M 11520 -30750 M 17280 -30750 M (\)) h 0 -31950 M (END \255\255 of SIGNATURE) h 0 -33150 M 0 -34350 M (\255\255 X.509 Annex H \(not part of the standard\)) h 0 -35550 M 0 -36750 M (encryptionAlgorithm OBJECT IDENTIFIER ::= {algorithm 1} ) h 0 -37950 M 0 -39150 M (rsa ALGORITHM) h 0 -40350 M 5760 -40350 M (PARAMETER KeySize) h 0 -41550 M 5760 -41550 M (::= {encryptionAlgorithm 1}) h 0 -42750 M 0 -43950 M (KeySize ::= INTEGER) h 0 -45150 M 0 -46350 M (END) h -8503 8502 T R showpage $P e %%Page: 81 81 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 42570 -900 M (Page ) h (81) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 0 -1800 M /Times-Bold-ISOLatin1 $ /Times-Bold & P /Times-Bold-ISOLatin1 F 2400 o f (Glossary) h 9067 -1800 M 0 -10218 M n 0.417 o f (authentication) h 8798 -10218 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1000 o f 43.7 0 32 (The process of determining the identity \(usually the name\) of the other party in some commu\255) W 3600 -11268 M (nication exchange.) h 0 -13386 M /Times-Bold-ISOLatin1 F 1000 o f (authentication context) h /Times-Roman-ISOLatin1 F 1000 o f ( ) h 3600 -14436 M 112.8 0 32 (Cached information used during a particular instance of authentication and including a shared symmetric) W 3600 -15486 M (\(DES\) key as well as components of the authentication token conveyed during establishment of this context.) h 0 -17604 M /Times-Bold-ISOLatin1 F 1000 o f (authentication token) h 3600 -18654 M /Times-Roman-ISOLatin1 F 1000 o f 88.9 0 32 (Information conveyed during a strong authentication exchange that can be used to authenticate its sender.) W 3600 -19704 M 108.7 0 32 (An authentication token can, but is not necessarily limited to, include the claimant identity and ticket, as) W 3600 -20754 M 128.9 0 32 (well as signed and encrypted secret key exchange messages conveying a secret key to be used in future) W 3600 -21804 M (cryptographic operations. An authentication token names a particular protocol data structure component.) h 0 -23922 M /Times-Bold-ISOLatin1 F 1000 o f (authorization) h 8798 -23922 M /Times-Roman-ISOLatin1 F 1000 o f (The process of determining the rights associated with a particular principal.) h 0 -26040 M /Times-Bold-ISOLatin1 F 1000 o f (certificate) h 8798 -26040 M /Times-Roman-ISOLatin1 F 1000 o f 94.4 0 32 (The public key of a particular principal, together with some other information relating to the) W 3600 -27090 M 61.2 0 32 (names of the principal and the certifying authority, rendered unforgeable by encipherment with the private) W 3600 -28140 M (key of the certification authority that issued it.) h 0 -30258 M /Times-Bold-ISOLatin1 F 1000 o f (certification authority) h 3600 -31308 M /Times-Roman-ISOLatin1 F 1000 o f (An authority trusted by one or more principals to create and assign certificates.) h 0 -33426 M /Times-Bold-ISOLatin1 F 1000 o f (claimant) h 8798 -33426 M /Times-Roman-ISOLatin1 F 1000 o f 33.8 0 32 (The party that initiates the authentication process. In the DASS architecture, claimants possess) W 3600 -34476 M 67.9 0 32 (credentials which include their identity, authenticating private key and a ticket certifying their authenticat\255) W 3600 -35526 M (ing public key.) h 0 -37644 M /Times-Bold-ISOLatin1 F 1000 o f (credentials) h 8798 -37644 M /Times-Roman-ISOLatin1 F 1000 o f 127.4 0 32 (Information "state" required by principals in order to for them to authenticate. Credentials) W 3600 -38694 M 10.8 0 32 (may contain information used to initiate the authentication process \(claimant information\), information used) W 3600 -39744 M 80.7 0 32 (to respond to an authentication request \(verifier information\), and cached information useful in improving) W 3600 -40794 M (performance.) h 0 -42912 M /Times-Bold-ISOLatin1 F 1000 o f (cryptographic checksum) h 3600 -43962 M /Times-Roman-ISOLatin1 F 1000 o f 49.1 0 32 (Information which is derived by performing a cryptographic transformation on the data unit. This informa\255) W 3600 -45012 M (tion can be used by the receiver to verify the authenticity of data passed in cleartext) h 0 -47130 M /Times-Bold-ISOLatin1 F 1000 o f (decipher) h 8798 -47130 M /Times-Roman-ISOLatin1 F 1000 o f 29.3 0 32 (To reverse the effects of encipherment and render a message comprehensible by use of a cryp\255) W 3600 -48180 M (tographic key.) h 0 -50298 M /Times-Bold-ISOLatin1 F 1000 o f (delegation ) h 8798 -50298 M /Times-Roman-ISOLatin1 F 1000 o f (The granting of temporary credentials that allow a process to act on behalf of a principal.) h 0 -52416 M /Times-Bold-ISOLatin1 F 1000 o f (delegation key) h 8798 -52416 M /Times-Roman-ISOLatin1 F 1000 o f 112.1 0 32 (A short term public/private key pair used by a claimant to act on behalf of a principal for a) W 3600 -53466 M 37.9 0 32 (bounded period. The delegation public key appears in the ticket, whereas the delegation private key is used) W 3600 -54516 M (to sign secret key exchange messages.) h 0 -56634 M /Times-Bold-ISOLatin1 F 1000 o f (DES) h 8798 -56634 M /Times-Roman-ISOLatin1 F 1000 o f 77.8 0 32 (Data Encryption Standard: a symmetric \(secret key\) encryption algorithm used by DASS. An) W 3600 -57684 M (alternate encryption algorithm could be substituted with little or no disruption to the architecture.) h -8503 8502 T R showpage $P e %%Page: 82 82 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 42570 -900 M (Page ) h (82) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 0 -750 M /Times-Bold-ISOLatin1 $ /Times-Bold & P /Times-Bold-ISOLatin1 F 1000 o f (DES key) h 8798 -750 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1000 o f (A 56\255bit secret quantity used as a parameter to the DES encryption algorithm.) h 0 -2865 M /Times-Bold-ISOLatin1 F 1000 o f (digital signature) h 8798 -2865 M /Times-Roman-ISOLatin1 F 1000 o f 48.4 0 32 (A value computed from a block of data and a key which could only be computed by someone) W 3600 -3915 M 35.5 0 32 (knowing the key. A digital signature computed with a secret key can only be verified by someone knowing) W 3600 -4965 M 112.3 0 32 (that secret key. A digital signature computed with a private key can be verified by anyone knowing the) W 3600 -6015 M (corresponding public key.) h 0 -8130 M /Times-Bold-ISOLatin1 F 1000 o f (encipher) h 8798 -8130 M /Times-Roman-ISOLatin1 F 1000 o f 30.8 0 32 (To render incomprehensible except to the holder of a particular key. If you encipher with a se\255) W 3600 -9180 M 93.4 0 32 (cret key, only the holder of the same secret can decipher the message. If you encipher with a public key,) W 3600 -10230 M (only the holder of the corresponding private key can decipher it.) h 0 -12345 M /Times-Bold-ISOLatin1 F 1000 o f (initial trust certificate) h /Times-Roman-ISOLatin1 F 1000 o f ( ) h 3600 -13395 M 30.3 0 32 (A certificate signed by a principal for its own use which states the name and public key of a trusted author\255) W 3600 -14445 M (ity.) h 0 -16560 M /Times-Bold-ISOLatin1 F 1000 o f (global user name) h 8798 -16560 M /Times-Roman-ISOLatin1 F 1000 o f 99.3 0 32 (A hierarchical name for a user which is unique within the entire domain of discussion \(typi\255) W 3600 -17610 M (cally the network\).) h 0 -19725 M /Times-Bold-ISOLatin1 F 1000 o f (local user name) h 8798 -19725 M /Times-Roman-ISOLatin1 F 1000 o f 4.5 0 32 (A simple \(non\255hierarchical\) name by which a user is known within a limited context such as on) W 3600 -20775 M (a single computer.) h 0 -22890 M /Times-Bold-ISOLatin1 F 1000 o f (principal) h 8798 -22890 M /Times-Roman-ISOLatin1 F 1000 o f 134.3 0 32 (Abstract entity which can be authenticated by name. In DASS there are user principals and) W 3600 -23940 M (server principals.) h 0 -26055 M /Times-Bold-ISOLatin1 F 1000 o f (private key) h 8798 -26055 M /Times-Roman-ISOLatin1 F 1000 o f 70.8 0 32 (Cryptographic key used in asymmetric \(public key\) cryptography to decrypt and/or sign mes\255) W 3600 -27105 M 65.7 0 32 (sages. In asymmetric cryptography, knowing the encryption key is independent of knowing the decryption) W 3600 -28155 M 118.2 0 32 (key. The decryption \(or signing\) private key cannot be derived from the encrypting \(or verifying\) public) W 3600 -29205 M (key.) h 0 -31320 M /Times-Bold-ISOLatin1 F 1000 o f (proxy) h 8798 -31320 M /Times-Roman-ISOLatin1 F 1000 o f 19.1 0 32 (A mapping from an external name to a local account name for purposes of establishing a set of) W 3600 -32370 M (local access rights. Note that this differs from the definition in ECMA TR/46.) h 0 -34485 M /Times-Bold-ISOLatin1 F 1000 o f (public key) h 8798 -34485 M /Times-Roman-ISOLatin1 F 1000 o f 64.7 0 32 (Cryptographic key used in asymmetric cryptography to encrypt messages and/or verify signa\255) W 3600 -35535 M (tures.) h 0 -37650 M /Times-Bold-ISOLatin1 F 1000 o f (RSA) h 8798 -37650 M /Times-Roman-ISOLatin1 F 1000 o f 41.9 0 32 (The Rivest\255Shamir\255Adelman public key cryptosystem based on modular exponentiation where) W 3600 -38700 M 77.6 0 32 (the modulus is the product of two large primes. When the term RSA key is used, it should be clear from) W 3600 -39750 M (context whether the public key, the private key, or the public/private pair is intended.) h 0 -41865 M /Times-Bold-ISOLatin1 F 1000 o f (secret key) h 8798 -41865 M /Times-Roman-ISOLatin1 F 1000 o f 94.0 0 32 (Cryptographic key used in symmetric cryptography to encrypt, sign, decrypt and verify mes\255) W 3600 -42915 M 99.9 0 32 (sages. In symmetric cryptography, knowledge of the decryption key implies knowledge of the encryption) W 3600 -43965 M (key, and vice\255versa.) h 0 -46080 M /Times-Bold-ISOLatin1 F 1000 o f (sign) h 8798 -46080 M /Times-Roman-ISOLatin1 F 1000 o f 107.4 0 32 (A process which takes a piece of data and a key and produces a digital signature which can) W 3600 -47130 M (only be calculated by someone with the key. The holder of a corresponding key can verify the signature.) h 0 -49245 M /Times-Bold-ISOLatin1 F 1000 o f (source) h 8798 -49245 M /Times-Roman-ISOLatin1 F 1000 o f (The initiator of an authentication exchange.) h 0 -51360 M /Times-Bold-ISOLatin1 F 1000 o f (strong authentication) h 3600 -52410 M /Times-Roman-ISOLatin1 F 1000 o f 186.4 0 32 (Authentication by means of cryptographically derived authentication tokens and credentials. The actual) W 3600 -53460 M 48.0 0 32 (working definition is closer to that of "zero knowledge" proof: authentication so as to not reveal any infor\255) W 3600 -54510 M 69.8 0 32 (mation usable by either the verifier, or by an eavesdropping third party, to further their potential ability to) W 3600 -55560 M (impersonate the claimant.) h 0 -57675 M /Times-Bold-ISOLatin1 F 1000 o f (target) h 8798 -57675 M /Times-Roman-ISOLatin1 F 1000 o f (The intended second party \(other than the source\) to an authentication exchange.) h -8503 8502 T R showpage $P e %%Page: 83 83 /$P a D g N 0 79200 T S S 8642 -3084 T N 0 G 0 -900 M /Helvetica-ISOLatin1 $ /Helvetica & P /Helvetica-ISOLatin1 F 1200 o f (Internet Draft ) h ( ) h 24825 -900 M (DASS) h 39769 -900 M (October 1991) h 0 -2284 M -8642 3084 T R S 8642 -73627 T N 0 G 0 -900 M /Helvetica-ISOLatin1 F 1200 o f (Charles Kaufman) h 26459 -900 M 42570 -900 M (Page ) h (83) h 0 -2284 M -8642 73627 T R R S 8503 -8502 T N 0 G 0 -750 M /Times-Bold-ISOLatin1 $ /Times-Bold & P /Times-Bold-ISOLatin1 F 1000 o f (ticket ) h 8798 -750 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1000 o f 91.9 0 32 (A data structure certifying an authenticating \(public\) key by virtue of being signed by a user) W 3600 -1800 M (principal using their \(long term\) private key. The ticket also includes the UID of the principal.) h 0 -3850 M /Times-Bold-ISOLatin1 F 1000 o f (trusted authority) h 8798 -3850 M /Times-Roman-ISOLatin1 F 1000 o f 13.3 0 32 (The public key, name and UID of a certification authority trusted in some context to certify the) W 3600 -4900 M (public keys of other principals.) h 0 -6950 M /Times-Bold-ISOLatin1 F 1000 o f (UID) h 8798 -6950 M /Times-Roman-ISOLatin1 F 1000 o f (A 128 bit unique identifier produced according to OSF standard specifications.) h 0 -9000 M /Times-Bold-ISOLatin1 F 1000 o f (user key) h 8798 -9000 M /Times-Roman-ISOLatin1 F 1000 o f 137.3 0 32 (A "long term" RSA key whose private portion authenticates its holder as having the access) W 3600 -10050 M (rights of a particular person.) h 0 -12100 M /Times-Bold-ISOLatin1 F 1000 o f (verify) h 8798 -12100 M /Times-Roman-ISOLatin1 F 1000 o f 6.8 0 32 (To cryptographically process a piece of data and a digital signature to determine that the holder) W 3600 -13150 M (of a particular key signed the data.) h 0 -15200 M /Times-Bold-ISOLatin1 F 1000 o f (verifier) h 8798 -15200 M /Times-Roman-ISOLatin1 F 1000 o f 43.8 0 32 (The party who will perform the operations necessary to verify the claimed identity of a claim\255) W 3600 -16250 M (ant.) h 0 -22450 M /Helvetica-ISOLatin1 F 1200 o f (Author's Address) h 2397 -23800 M /Times-Roman-ISOLatin1 F 1000 o f (Charles Kaufman) h 2397 -24850 M (Digital Equipment Corporation) h 2397 -25900 M (LKG 1\2552/A19) h 2397 -26950 M (550 King Street) h 2397 -28000 M (Littleton, MA 01460) h 2397 -30050 M (Phone: \(508\) 486\2557329) h 2397 -32100 M (Email: kaufman@dsmail.enet.dec.com) h 2397 -34150 M 2397 -36200 M 62.2 0 32 (General comments on this document should be sent to cat\255ietf@mit.edu. Minor corrections should be sent to) W 2397 -37250 M (the author.) h 0 -38600 M -8503 8502 T R showpage $P e %%Trailer $D restore end % DEC_WRITE_dict %%Pages: 83 %%DocumentFonts: Helvetica %%+ Times-Bold %%+ Times-Roman %%+ Symbol %%+ Times-BoldItalic %%+ Times-Italic %%+ NewCenturySchlbk-Roman %%+ Courier %%+ NewCenturySchlbk-BoldItalic