[3940] in Kerberos

home help back first fref pref prev next nref lref last post

Re: Kerberized keyserv daemon for Secure NFS, anyone?

daemon@ATHENA.MIT.EDU (Carl Smith)
Wed Sep 28 03:24:34 1994

To: kerberos@MIT.EDU
Date: 27 Sep 1994 20:38:17 GMT
From: cs@Eng.Sun.COM (Carl Smith)
Reply-To: USER@Eng.Sun.COM

> I've been looking into the possibility of making Secure NFS use
> Kerberos instead of an RSA/DES combination.

	Yep, we do that.  Appended is a paper describing the implementation.

			Carl


%!
%%BoundingBox: (atend)
%%Pages: (atend)
%%DocumentFonts: (atend)
%%EndComments
%%BeginProlog
%
% FrameMaker postscript_prolog 3.0, for use with FrameMaker 3.0
% This postscript_prolog file is Copyright (c) 1986-1991 Frame Technology
% Corporation.  All rights reserved.  This postscript_prolog file may be
% freely copied and distributed in conjunction with documents created using
% FrameMaker.
% NOTE
% This file fixes the problem with NeWS printers dithering color output.
% Any questions should be sent to mickey@magickingdom.eng.sun.com
%
% Known Problems:
%	Due to bugs in Transcript, the 'PS-Adobe-' is omitted from line 1
/FMversion (3.0) def 
% Set up Color vs. Black-and-White

/FMPrintInColor { % once-thru loop gimmick
    % See if we're a NeWSprint printer
     /currentcanvas where {
        pop systemdict /separationdict known
	exit
     } if
% originally had the following, which should always be false:
%    /currentcanvas where {
%        pop currentcanvas /Color known {
%	    currentcanvas /Color get
%	    exit
%        } if
%    } if
    systemdict /colorimage known
    systemdict /currentcolortransfer known and
exit } loop def

% Uncomment the following line to force b&w on color printer
%   /FMPrintInColor false def
/FrameDict 195 dict def 
systemdict /errordict known not {/errordict 10 dict def
		errordict /rangecheck {stop} put} if
% The readline in 23.0 doesn't recognize cr's as nl's on AppleTalk
FrameDict /tmprangecheck errordict /rangecheck get put 
errordict /rangecheck {FrameDict /bug true put} put 
FrameDict /bug false put 
mark 
% Some PS machines read past the CR, so keep the following 3 lines together!
currentfile 5 string readline
00
0000000000
cleartomark 
errordict /rangecheck FrameDict /tmprangecheck get put 
FrameDict /bug get { 
	/readline {
		/gstring exch def
		/gfile exch def
		/gindex 0 def
		{
			gfile read pop 
			dup 10 eq {exit} if 
			dup 13 eq {exit} if 
			gstring exch gindex exch put 
			/gindex gindex 1 add def 
		} loop
		pop 
		gstring 0 gindex getinterval true 
		} def
	} if
/FMVERSION {
	FMversion ne {
		/Times-Roman findfont 18 scalefont setfont
		100 100 moveto
		(FrameMaker version does not match postscript_prolog!)
		dup =
		show showpage
		} if
	} def 
/FMLOCAL {
	FrameDict begin
	0 def 
	end 
	} def 
	/gstring FMLOCAL
	/gfile FMLOCAL
	/gindex FMLOCAL
	/orgxfer FMLOCAL
	/orgproc FMLOCAL
	/organgle FMLOCAL
	/orgfreq FMLOCAL
	/yscale FMLOCAL
	/xscale FMLOCAL
	/manualfeed FMLOCAL
	/paperheight FMLOCAL
	/paperwidth FMLOCAL
/FMDOCUMENT { 
	array /FMfonts exch def 
	/#copies exch def
	FrameDict begin
	0 ne dup {setmanualfeed} if
	/manualfeed exch def
	/paperheight exch def
	/paperwidth exch def
	/yscale exch def
	/xscale exch def
	currenttransfer cvlit /orgxfer exch def
	currentscreen cvlit /orgproc exch def
	/organgle exch def /orgfreq exch def
	setpapername 
	manualfeed {true} {papersize} ifelse 
	{manualpapersize} {false} ifelse 
	{desperatepapersize} if
	end 
	} def 
	/pagesave FMLOCAL
	/orgmatrix FMLOCAL
	/landscape FMLOCAL
/FMBEGINPAGE { 
	FrameDict begin 
	/pagesave save def
	3.86 setmiterlimit
	/landscape exch 0 ne def
	landscape { 
		90 rotate 0 exch neg translate pop 
		}
		{pop pop}
		ifelse
	xscale yscale scale
	/orgmatrix matrix def
	gsave 
	} def 
/FMENDPAGE {
	grestore 
	pagesave restore
	end 
	showpage
	} def 
/FMFONTDEFINE { 
	FrameDict begin
	findfont 
	ReEncode 
	1 index exch 
	definefont 
	FMfonts 3 1 roll 
	put
	end 
	} def 
/FMFILLS {
	FrameDict begin
	array /fillvals exch def
	end 
	} def 
/FMFILL {
	FrameDict begin
	 fillvals 3 1 roll put
	end 
	} def 
/FMNORMALIZEGRAPHICS { 
	newpath
	0.0 0.0 moveto
	1 setlinewidth
	0 setlinecap
	0 0 0 sethsbcolor
	0 setgray 
	} bind def
	/fx FMLOCAL
	/fy FMLOCAL
	/fh FMLOCAL
	/fw FMLOCAL
	/llx FMLOCAL
	/lly FMLOCAL
	/urx FMLOCAL
	/ury FMLOCAL
/FMBEGINEPSF { 
	end 
	/FMEPSF save def 
	/showpage {} def 
	FMNORMALIZEGRAPHICS 
	[/fy /fx /fh /fw /ury /urx /lly /llx] {exch def} forall 
	fx fy translate 
	rotate
	fw urx llx sub div fh ury lly sub div scale 
	llx neg lly neg translate 
	} bind def
/FMENDEPSF {
	FMEPSF restore
	FrameDict begin 
	} bind def
FrameDict begin 
/setmanualfeed {
%%BeginFeature *ManualFeed True
	 statusdict /manualfeed true put
%%EndFeature
	} def
/max {2 copy lt {exch} if pop} bind def
/min {2 copy gt {exch} if pop} bind def
/inch {72 mul} def
/pagedimen { 
	paperheight sub abs 16 lt exch 
	paperwidth sub abs 16 lt and
	{/papername exch def} {pop} ifelse
	} def
	/papersizedict FMLOCAL
/setpapername { 
	/papersizedict 14 dict def 
	papersizedict begin
	/papername /unknown def 
		/Letter 8.5 inch 11.0 inch pagedimen
		/LetterSmall 7.68 inch 10.16 inch pagedimen
		/Tabloid 11.0 inch 17.0 inch pagedimen
		/Ledger 17.0 inch 11.0 inch pagedimen
		/Legal 8.5 inch 14.0 inch pagedimen
		/Statement 5.5 inch 8.5 inch pagedimen
		/Executive 7.5 inch 10.0 inch pagedimen
		/A3 11.69 inch 16.5 inch pagedimen
		/A4 8.26 inch 11.69 inch pagedimen
		/A4Small 7.47 inch 10.85 inch pagedimen
		/B4 10.125 inch 14.33 inch pagedimen
		/B5 7.16 inch 10.125 inch pagedimen
	end
	} def
/papersize {
	papersizedict begin
		/Letter {lettertray letter} def
		/LetterSmall {lettertray lettersmall} def
		/Tabloid {11x17tray 11x17} def
		/Ledger {ledgertray ledger} def
		/Legal {legaltray legal} def
		/Statement {statementtray statement} def
		/Executive {executivetray executive} def
		/A3 {a3tray a3} def
		/A4 {a4tray a4} def
		/A4Small {a4tray a4small} def
		/B4 {b4tray b4} def
		/B5 {b5tray b5} def
		/unknown {unknown} def
	papersizedict dup papername known {papername} {/unknown} ifelse get
	end
	/FMdicttop countdictstack 1 add def 
	statusdict begin stopped end 
	countdictstack -1 FMdicttop {pop end} for 
	} def
/manualpapersize {
	papersizedict begin
		/Letter {letter} def
		/LetterSmall {lettersmall} def
		/Tabloid {11x17} def
		/Ledger {ledger} def
		/Legal {legal} def
		/Statement {statement} def
		/Executive {executive} def
		/A3 {a3} def
		/A4 {a4} def
		/A4Small {a4small} def
		/B4 {b4} def
		/B5 {b5} def
		/unknown {unknown} def
	papersizedict dup papername known {papername} {/unknown} ifelse get
	end
	stopped 
	} def
/desperatepapersize {
	statusdict /setpageparams known
		{
		paperwidth paperheight 0 1 
		statusdict begin
		{setpageparams} stopped pop 
		end
		} if
	} def
/savematrix {
	orgmatrix currentmatrix pop
	} bind def
/restorematrix {
	orgmatrix setmatrix
	} bind def
/dmatrix matrix def
/dpi    72 0 dmatrix defaultmatrix dtransform
    dup mul exch   dup mul add   sqrt def
/freq dpi 18.75 div 8 div round dup 0 eq {pop 1} if 8 mul dpi exch div def
/sangle 1 0 dmatrix defaultmatrix dtransform exch atan def
/DiacriticEncoding [
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl
/numbersign /dollar /percent /ampersand /quotesingle /parenleft
/parenright /asterisk /plus /comma /hyphen /period /slash /zero /one
/two /three /four /five /six /seven /eight /nine /colon /semicolon
/less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K
/L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash
/bracketright /asciicircum /underscore /grave /a /b /c /d /e /f /g /h
/i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar
/braceright /asciitilde /.notdef /Adieresis /Aring /Ccedilla /Eacute
/Ntilde /Odieresis /Udieresis /aacute /agrave /acircumflex /adieresis
/atilde /aring /ccedilla /eacute /egrave /ecircumflex /edieresis
/iacute /igrave /icircumflex /idieresis /ntilde /oacute /ograve
/ocircumflex /odieresis /otilde /uacute /ugrave /ucircumflex
/udieresis /dagger /.notdef /cent /sterling /section /bullet
/paragraph /germandbls /registered /copyright /trademark /acute
/dieresis /.notdef /AE /Oslash /.notdef /.notdef /.notdef /.notdef
/yen /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/ordfeminine /ordmasculine /.notdef /ae /oslash /questiondown
/exclamdown /logicalnot /.notdef /florin /.notdef /.notdef
/guillemotleft /guillemotright /ellipsis /.notdef /Agrave /Atilde
/Otilde /OE /oe /endash /emdash /quotedblleft /quotedblright
/quoteleft /quoteright /.notdef /.notdef /ydieresis /Ydieresis
/fraction /currency /guilsinglleft /guilsinglright /fi /fl /daggerdbl
/periodcentered /quotesinglbase /quotedblbase /perthousand
/Acircumflex /Ecircumflex /Aacute /Edieresis /Egrave /Iacute
/Icircumflex /Idieresis /Igrave /Oacute /Ocircumflex /.notdef /Ograve
/Uacute /Ucircumflex /Ugrave /dotlessi /circumflex /tilde /macron
/breve /dotaccent /ring /cedilla /hungarumlaut /ogonek /caron
] def
/ReEncode { 
	dup 
	length 
	dict begin 
	{
	1 index /FID ne 
		{def} 
		{pop pop} ifelse 
	} forall 
	0 eq {/Encoding DiacriticEncoding def} if 
	currentdict 
	end 
	} bind def
/graymode true def
	/bwidth FMLOCAL
	/bpside FMLOCAL
	/bstring FMLOCAL
	/onbits FMLOCAL
	/offbits FMLOCAL
	/xindex FMLOCAL
	/yindex FMLOCAL
	/x FMLOCAL
	/y FMLOCAL
/setpattern {
	 /bwidth  exch def
	 /bpside  exch def
	 /bstring exch def
	 /onbits 0 def  /offbits 0 def
	 freq sangle landscape {90 add} if 
		{/y exch def
		 /x exch def
		 /xindex x 1 add 2 div bpside mul cvi def
		 /yindex y 1 add 2 div bpside mul cvi def
		 bstring yindex bwidth mul xindex 8 idiv add get
		 1 7 xindex 8 mod sub bitshift and 0 ne
		 {/onbits  onbits  1 add def 1}
		 {/offbits offbits 1 add def 0}
		 ifelse
		}
		setscreen
	 {} settransfer
	 offbits offbits onbits add div FMsetgray
	/graymode false def
	} bind def
/grayness {
	FMsetgray
	graymode not {
		/graymode true def
		orgxfer cvx settransfer
		orgfreq organgle orgproc cvx setscreen
		} if
	} bind def
	/HUE FMLOCAL
	/SAT FMLOCAL
	/BRIGHT FMLOCAL
	/Colors FMLOCAL
FMPrintInColor 
	
	{
	/HUE 0 def
	/SAT 0 def
	/BRIGHT 0 def
	% array of arrays Hue and Sat values for the separations [HUE BRIGHT]
	/Colors   
	[[0    0  ]    % black
	 [0    0  ]    % white
	 [0.00 1.0]    % red
	 [0.37 1.0]    % green
	 [0.60 1.0]    % blue
	 [0.50 1.0]    % cyan
	 [0.83 1.0]    % magenta
	 [0.16 1.0]    % comment / yellow
	 ] def
      
	/BEGINBITMAPCOLOR { 
		BITMAPCOLOR} def
	/BEGINBITMAPCOLORc { 
		BITMAPCOLORc} def
	/BEGINBITMAPTRUECOLOR { 
		BITMAPTRUECOLOR } def
	/BEGINBITMAPTRUECOLORc { 
		BITMAPTRUECOLORc } def
	/K { 
		Colors exch get dup
		0 get /HUE exch store 
		1 get /BRIGHT exch store
		  HUE 0 eq BRIGHT 0 eq and
			{1.0 SAT sub setgray}
			{HUE SAT BRIGHT sethsbcolor} 
		  ifelse
		} def
	/FMsetgray { 
		/SAT exch 1.0 exch sub store 
		  HUE 0 eq BRIGHT 0 eq and
			{1.0 SAT sub setgray}
			{HUE SAT BRIGHT sethsbcolor} 
		  ifelse
		} bind def
	}
	
	{
	/BEGINBITMAPCOLOR { 
		BITMAPGRAY} def
	/BEGINBITMAPCOLORc { 
		BITMAPGRAYc} def
	/BEGINBITMAPTRUECOLOR { 
		BITMAPTRUEGRAY } def
	/BEGINBITMAPTRUECOLORc { 
		BITMAPTRUEGRAYc } def
	/FMsetgray {setgray} bind def
	/K { 
		pop
		} def
	}
ifelse
/normalize {
	transform round exch round exch itransform
	} bind def
/dnormalize {
	dtransform round exch round exch idtransform
	} bind def
/lnormalize { 
	0 dtransform exch cvi 2 idiv 2 mul 1 add exch idtransform pop
	} bind def
/H { 
	lnormalize setlinewidth
	} bind def
/Z {
	setlinecap
	} bind def
	/fillvals FMLOCAL
/X { 
	fillvals exch get
	dup type /stringtype eq
	{8 1 setpattern} 
	{grayness}
	ifelse
	} bind def
/V { 
	gsave eofill grestore
	} bind def
/N { 
	stroke
	} bind def
/M {newpath moveto} bind def
/E {lineto} bind def
/D {curveto} bind def
/O {closepath} bind def
	/n FMLOCAL
/L { 
 	/n exch def
	newpath
	normalize
	moveto 
	2 1 n {pop normalize lineto} for
	} bind def
/Y { 
	L 
	closepath
	} bind def
	/x1 FMLOCAL
	/x2 FMLOCAL
	/y1 FMLOCAL
	/y2 FMLOCAL
	/rad FMLOCAL
/R { 
	/y2 exch def
	/x2 exch def
	/y1 exch def
	/x1 exch def
	x1 y1
	x2 y1
	x2 y2
	x1 y2
	4 Y 
	} bind def
/RR { 
	/rad exch def
	normalize
	/y2 exch def
	/x2 exch def
	normalize
	/y1 exch def
	/x1 exch def
	newpath
	x1 y1 rad add moveto
	x1 y2 x2 y2 rad arcto
	x2 y2 x2 y1 rad arcto
	x2 y1 x1 y1 rad arcto
	x1 y1 x1 y2 rad arcto
	closepath
	16 {pop} repeat
	} bind def
/C { 
	grestore
	gsave
	R 
	clip
	} bind def
	/FMpointsize FMLOCAL
/F { 
	FMfonts exch get
	FMpointsize scalefont
	setfont
	} bind def
/Q { 
	/FMpointsize exch def
	F 
	} bind def
/T { 
	moveto show
	} bind def
/RF { 
	rotate
	0 ne {-1 1 scale} if
	} bind def
/TF { 
	gsave
	moveto 
	RF
	show
	grestore
	} bind def
/P { 
	moveto
	0 32 3 2 roll widthshow
	} bind def
/PF { 
	gsave
	moveto 
	RF
	0 32 3 2 roll widthshow
	grestore
	} bind def
/S { 
	moveto
	0 exch ashow
	} bind def
/SF { 
	gsave
	moveto
	RF
	0 exch ashow
	grestore
	} bind def
/B { 
	moveto
	0 32 4 2 roll 0 exch awidthshow
	} bind def
/BF { 
	gsave
	moveto
	RF
	0 32 4 2 roll 0 exch awidthshow
	grestore
	} bind def
/G { 
	gsave
	newpath
	normalize translate 0.0 0.0 moveto 
	dnormalize scale 
	0.0 0.0 1.0 5 3 roll arc 
	closepath fill
	grestore
	} bind def
/A { 
	gsave
	savematrix
	newpath
	2 index 2 div add exch 3 index 2 div sub exch 
	normalize 2 index 2 div sub exch 3 index 2 div add exch 
	translate 
	scale 
	0.0 0.0 1.0 5 3 roll arc 
	restorematrix
	stroke
	grestore
	} bind def
	/x FMLOCAL
	/y FMLOCAL
	/w FMLOCAL
	/h FMLOCAL
	/xx FMLOCAL
	/yy FMLOCAL
	/ww FMLOCAL
	/hh FMLOCAL
	/FMsaveobject FMLOCAL
	/FMoptop FMLOCAL
	/FMdicttop FMLOCAL
/BEGINPRINTCODE { 
	/FMdicttop countdictstack 1 add def 
	/FMoptop count 4 sub def 
	/FMsaveobject save def
	userdict begin 
	/showpage {} def 
	FMNORMALIZEGRAPHICS 
	3 index neg 3 index neg translate
	} bind def
/ENDPRINTCODE {
	count -1 FMoptop {pop pop} for 
	countdictstack -1 FMdicttop {pop end} for 
	FMsaveobject restore 
	} bind def
/gn { 
	0 
	{	46 mul 
		cf read pop 
		32 sub 
		dup 46 lt {exit} if 
		46 sub add 
		} loop
	add 
	} bind def
	/str FMLOCAL
/cfs { 
	/str sl string def 
	0 1 sl 1 sub {str exch val put} for 
	str def 
	} bind def
/ic [ 
	0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0223
	0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0223
	0
	{0 hx} {1 hx} {2 hx} {3 hx} {4 hx} {5 hx} {6 hx} {7 hx} {8 hx} {9 hx}
	{10 hx} {11 hx} {12 hx} {13 hx} {14 hx} {15 hx} {16 hx} {17 hx} {18 hx}
	{19 hx} {gn hx} {0} {1} {2} {3} {4} {5} {6} {7} {8} {9} {10} {11} {12}
	{13} {14} {15} {16} {17} {18} {19} {gn} {0 wh} {1 wh} {2 wh} {3 wh}
	{4 wh} {5 wh} {6 wh} {7 wh} {8 wh} {9 wh} {10 wh} {11 wh} {12 wh}
	{13 wh} {14 wh} {gn wh} {0 bl} {1 bl} {2 bl} {3 bl} {4 bl} {5 bl} {6 bl}
	{7 bl} {8 bl} {9 bl} {10 bl} {11 bl} {12 bl} {13 bl} {14 bl} {gn bl}
	{0 fl} {1 fl} {2 fl} {3 fl} {4 fl} {5 fl} {6 fl} {7 fl} {8 fl} {9 fl}
	{10 fl} {11 fl} {12 fl} {13 fl} {14 fl} {gn fl}
	] def
	/sl FMLOCAL
	/val FMLOCAL
	/ws FMLOCAL
	/im FMLOCAL
	/bs FMLOCAL
	/cs FMLOCAL
	/len FMLOCAL
	/pos FMLOCAL
/ms { 
	/sl exch def 
	/val 255 def 
	/ws cfs 
	/im cfs 
	/val 0 def 
	/bs cfs 
	/cs cfs 
	} bind def
400 ms 
/ip { 
	is 
	0 
	cf cs readline pop 
	{	ic exch get exec 
		add 
		} forall 
	pop 
	
	} bind def
/wh { 
	/len exch def 
	/pos exch def 
	ws 0 len getinterval im pos len getinterval copy pop
	pos len 
	} bind def
/bl { 
	/len exch def 
	/pos exch def 
	bs 0 len getinterval im pos len getinterval copy pop
	pos len 
	} bind def
/s1 1 string def
/fl { 
	/len exch def 
	/pos exch def 
	/val cf s1 readhexstring pop 0 get def
	pos 1 pos len add 1 sub {im exch val put} for
	pos len 
	} bind def
/hx { 
	3 copy getinterval 
	cf exch readhexstring pop pop 
	} bind def
	/h FMLOCAL
	/w FMLOCAL
	/d FMLOCAL
	/lb FMLOCAL
	/bitmapsave FMLOCAL
	/is FMLOCAL
	/cf FMLOCAL
/wbytes { 
	dup 
	8 eq {pop} {1 eq {7 add 8 idiv} {3 add 4 idiv} ifelse} ifelse
	} bind def
/BEGINBITMAPBWc { 
	1 {} COMMONBITMAPc
	} bind def
/BEGINBITMAPGRAYc { 
	8 {} COMMONBITMAPc
	} bind def
/BEGINBITMAP2BITc { 
	2 {} COMMONBITMAPc
	} bind def
/COMMONBITMAPc { 
	/r exch def
	/d exch def
	gsave
	translate rotate scale /h exch def /w exch def
	/lb w d wbytes def 
	sl lb lt {lb ms} if 
	/bitmapsave save def 
	r                    
	/is im 0 lb getinterval def 
	ws 0 lb getinterval is copy pop 
	/cf currentfile def 
	w h d [w 0 0 h neg 0 h] 
	{ip} image 
	bitmapsave restore 
	grestore
	} bind def
/BEGINBITMAPBW { 
	1 {} COMMONBITMAP
	} bind def
/BEGINBITMAPGRAY { 
	8 {} COMMONBITMAP
	} bind def
/BEGINBITMAP2BIT { 
	2 {} COMMONBITMAP
	} bind def
/COMMONBITMAP { 
	/r exch def
	/d exch def
	gsave
	translate rotate scale /h exch def /w exch def
	/bitmapsave save def 
	r                    
	/is w d wbytes string def
	/cf currentfile def 
	w h d [w 0 0 h neg 0 h] 
	{cf is readhexstring pop} image
	bitmapsave restore 
	grestore
	} bind def
	/proc1 FMLOCAL
	/proc2 FMLOCAL
	/newproc FMLOCAL
/Fmcc {
    /proc2 exch cvlit def
    /proc1 exch cvlit def
    /newproc proc1 length proc2 length add array def
    newproc 0 proc1 putinterval
    newproc proc1 length proc2 putinterval
    newproc cvx
} bind def
/ngrayt 256 array def
/nredt 256 array def
/nbluet 256 array def
/ngreent 256 array def
	/gryt FMLOCAL
	/blut FMLOCAL
	/grnt FMLOCAL
	/redt FMLOCAL
	/indx FMLOCAL
	/cynu FMLOCAL
	/magu FMLOCAL
	/yelu FMLOCAL
	/k FMLOCAL
	/u FMLOCAL
/colorsetup {
	currentcolortransfer
	/gryt exch def
	/blut exch def
	/grnt exch def
	/redt exch def
	0 1 255 {
		/indx exch def
		/cynu 1 red indx get 255 div sub def
		/magu 1 green indx get 255 div sub def
		/yelu 1 blue indx get 255 div sub def
		/k cynu magu min yelu min def
		/u k currentundercolorremoval exec def
		nredt indx 1 0 cynu u sub max sub redt exec put
		ngreent indx 1 0 magu u sub max sub grnt exec put
		nbluet indx 1 0 yelu u sub max sub blut exec put
		ngrayt indx 1 k currentblackgeneration exec sub gryt exec put
	} for
	{255 mul cvi nredt exch get}
	{255 mul cvi ngreent exch get}
	{255 mul cvi nbluet exch get}
	{255 mul cvi ngrayt exch get}
	setcolortransfer
	{pop 0} setundercolorremoval
	{} setblackgeneration
	} bind def
	/tran FMLOCAL
/fakecolorsetup {
	/tran 256 string def
	0 1 255 {/indx exch def 
		tran indx
		red indx get 77 mul
		green indx get 151 mul
		blue indx get 28 mul
		add add 256 idiv put} for
	currenttransfer
	{255 mul cvi tran exch get 255.0 div}
	exch Fmcc settransfer
} bind def
/BITMAPCOLOR { 
	/d 8 def
	gsave
	translate rotate scale /h exch def /w exch def
	/bitmapsave save def 
	colorsetup
	/is w d wbytes string def
	/cf currentfile def 
	w h d [w 0 0 h neg 0 h] 
	{cf is readhexstring pop} {is} {is} true 3 colorimage 
	bitmapsave restore 
	grestore
	} bind def
/BITMAPCOLORc { 
	/d 8 def
	gsave
	translate rotate scale /h exch def /w exch def
	/lb w d wbytes def 
	sl lb lt {lb ms} if 
	/bitmapsave save def 
	colorsetup
	/is im 0 lb getinterval def 
	ws 0 lb getinterval is copy pop 
	/cf currentfile def 
	w h d [w 0 0 h neg 0 h] 
	{ip} {is} {is} true 3 colorimage
	bitmapsave restore 
	grestore
	} bind def
/BITMAPTRUECOLORc { 
        gsave
        translate rotate scale /h exch def /w exch def
        /bitmapsave save def 
        
        /is w string def
        
        ws 0 w getinterval is copy pop 
        /cf currentfile def 
        w h 8 [w 0 0 h neg 0 h] 
        {ip} {gip} {bip} true 3 colorimage
        bitmapsave restore 
        grestore
        } bind def
/BITMAPTRUECOLOR { 
        gsave
        translate rotate scale /h exch def /w exch def
        /bitmapsave save def 
        /is w string def
        /gis w string def
        /bis w string def
        /cf currentfile def 
        w h 8 [w 0 0 h neg 0 h] 
        { cf is readhexstring pop } 
        { cf gis readhexstring pop } 
        { cf bis readhexstring pop } 
        true 3 colorimage 
        bitmapsave restore 
        grestore
        } bind def
/BITMAPTRUEGRAYc { 
        gsave
        translate rotate scale /h exch def /w exch def
        /bitmapsave save def 
        
        /is w string def
        
        ws 0 w getinterval is copy pop 
        /cf currentfile def 
        w h 8 [w 0 0 h neg 0 h] 
        {ip gip bip w gray} image
        bitmapsave restore 
        grestore
        } bind def
/ww FMLOCAL
/r FMLOCAL
/g FMLOCAL
/b FMLOCAL
/i FMLOCAL
/gray { 
        /ww exch def
        /b exch def
        /g exch def
        /r exch def
        0 1 ww 1 sub { /i exch def r i get .299 mul g i get .587 mul
			b i get .114 mul add add r i 3 -1 roll floor cvi put } for
        r
        } bind def
/BITMAPTRUEGRAY { 
        gsave
        translate rotate scale /h exch def /w exch def
        /bitmapsave save def 
        /is w string def
        /gis w string def
        /bis w string def
        /cf currentfile def 
        w h 8 [w 0 0 h neg 0 h] 
        { cf is readhexstring pop 
          cf gis readhexstring pop 
          cf bis readhexstring pop w gray}  image
        bitmapsave restore 
        grestore
        } bind def
/BITMAPGRAY { 
	8 {fakecolorsetup} COMMONBITMAP
	} bind def
/BITMAPGRAYc { 
	8 {fakecolorsetup} COMMONBITMAPc
	} bind def
/ENDBITMAP {
	} bind def
end 
	/ALDsave FMLOCAL
	/ALDmatrix matrix def ALDmatrix currentmatrix pop
/StartALD {
	/ALDsave save def
	 savematrix
	 ALDmatrix setmatrix
	} bind def
/InALD {
	 restorematrix
	} bind def
/DoneALD {
	 ALDsave restore
	} bind def
%%EndProlog
%%BeginSetup
(3.0) FMVERSION
1 1 612 792 0 1 22 FMDOCUMENT
0 0 /Helvetica-Bold FMFONTDEFINE
1 0 /Times-Roman FMFONTDEFINE
2 0 /Times-Italic FMFONTDEFINE
3 0 /Courier FMFONTDEFINE
4 0 /Times-Bold FMFONTDEFINE
5 0 /Courier-Oblique FMFONTDEFINE
6 1 /Symbol FMFONTDEFINE
7 0 /Helvetica FMFONTDEFINE
32 FMFILLS
0 0 FMFILL
1 .1 FMFILL
2 .3 FMFILL
3 .5 FMFILL
4 .7 FMFILL
5 .9 FMFILL
6 .97 FMFILL
7 1 FMFILL
8 <0f1e3c78f0e1c387> FMFILL
9 <0f87c3e1f0783c1e> FMFILL
10 <cccccccccccccccc> FMFILL
11 <ffff0000ffff0000> FMFILL
12 <8142241818244281> FMFILL
13 <03060c183060c081> FMFILL
14 <8040201008040201> FMFILL
16 1 FMFILL
17 .9 FMFILL
18 .7 FMFILL
19 .5 FMFILL
20 .3 FMFILL
21 .1 FMFILL
22 0.03 FMFILL
23 0 FMFILL
24 <f0e1c3870f1e3c78> FMFILL
25 <f0783c1e0f87c3e1> FMFILL
26 <3333333333333333> FMFILL
27 <0000ffff0000ffff> FMFILL
28 <7ebddbe7e7dbbd7e> FMFILL
29 <fcf9f3e7cf9f3f7e> FMFILL
30 <7fbfdfeff7fbfdfe> FMFILL
%%EndSetup
%%Page: "1" 1
612 792 0 FMBEGINPAGE
72 750.68 558 750.68 2 L
2 H
0 Z
0 X
0 K
N
0 9 Q
(August 9, 1993) 72 737.98 T
72 444.68 558 444.68 2 L
2 Z
N
72 75.33 558 75.33 2 L
0.25 H
N
0 10 Q
(1) 552.44 61.23 T
1 24 Q
-0.17 (Kerberos Authentication) 207 677 S
207 629 558 639 C
207 630 459 630 2 L
0.25 H
0 Z
0 X
0 K
N
0 0 612 792 C
1 24 Q
0 X
0 K
-0.17 (in Sun RPC) 207 647 S
4 12 Q
(Carl Smith) 207 605 T
0 9 Q
-0.05 (The purpose of this report is to) 207 545 P
(describe the Kerberos) 207 533 T
(authentication \337avor for Sun) 207 521 T
(RPC and its use for NFS) 207 509 T
1 10 Q
(Sun RPC) 207 425.33 T
2 F
([RFC1057]) 246.44 425.33 T
1 F
( has an extensible authentication mechanism which allows new) 293.08 425.33 T
(authentication \337avors to be added from time to time.  In SunOS 4.0 DES-based authen-) 207 413.33 T
(tication was added \050with the regrettable misnomer \322secure RPC\323\051.  SunOS 5.0 added) 207 401.33 T
(support for authentication based on Kerberos version 4) 207 389.33 T
2 F
([Steiner]) 429.06 389.33 T
1 F
(.) 465.15 389.33 T
(The speci\336cation for DES-based Sun RPC authentication has been available for quite) 207 365.33 T
(some time and many NFS suppliers implement it) 207 353.33 T
2 F
([ONC]) 405.23 353.33 T
1 F
(. The goal of this report is to) 433.55 353.33 T
(describe the protocol for the Kerberos-based RPC authentication \337avor in suf) 207 341.33 T
(\336cient) 516.04 341.33 T
(detail to allow independent, interoperable implementations to be built.) 207 329.33 T
(W) 207 305.33 T
(e assume the reader is already familiar with DES) 215.63 305.33 T
2 F
([DES]) 413.54 305.33 T
1 F
(, the authentication frame-) 439.63 305.33 T
(work for Sun RPC, and Kerberos. The speci\336cation of DES-based RPC authentication) 207 293.33 T
(is brie\337y reviewed because Kerberos-based RPC authentication is very similar) 207 281.33 T
(.) 520.39 281.33 T
72 238 558 241 C
207 240.16 558 240.16 2 L
0.25 H
2 Z
0 X
0 K
N
0 0 612 792 C
0 12 Q
0 X
0 K
(Authentication in Sun RPC) 207 245 T
1 10 Q
(An authentication \337avor consists of two parts: a) 207 221.33 T
2 F
(cr) 400.76 221.33 T
(edential) 408.72 221.33 T
1 F
( \050containing, in some form) 440.92 221.33 T
(the user) 207 209.33 T
(\325) 238.73 209.33 T
(s identity\051, and a) 241.51 209.33 T
2 F
(veri\336er \050) 310.63 209.33 T
1 F
(a method of proving the credential valid\051. Authenti-) 345.32 209.33 T
(cation \337avors are named AUTH_something \050AUTH_UNIX, AUTH_DES, and so on\051.) 207 197.33 T
(UNIX-style authentication \050AUTH_UNIX, also known as AUTH_SYS\051 consists of a) 207 173.33 T
(credential containing the user) 207 161.33 T
(\325) 325.33 161.33 T
(s user ID, group ID, groups to which the user belongs,) 328.11 161.33 T
(and the name of the machine on which the credential was composed.  There is no veri-) 207 149.33 T
(\336er) 207 137.33 T
(.  The overwhelming majority of NFS clients and servers use AUTH_UNIX.) 219.77 137.33 T
-0.31 (DES-style authentication \050AUTH_DES\051 uses a Dif) 207 113.33 P
-0.31 (\336e-Hellman public key cryptosystem) 408.76 113.33 P
2 F
([Dif\336e]) 207 101.33 T
1 F
( to exchange DES session keys which are used for all subsequent encryption.) 236.98 101.33 T
FMENDPAGE
%%EndPage: "1" 0
%%Page: "2" 2
612 792 0 FMBEGINPAGE
54 726.98 540 726.98 2 L
0.25 H
0 Z
0 X
0 K
N
54 750.68 540 750.68 2 L
2 H
N
0 9 Q
( Authentication in Sun RPC) 189 737.84 T
54 75.33 540 75.33 2 L
0.25 H
2 Z
N
0 10 Q
(2) 54 61.23 T
0 9 Q
(Kerberos Authentication in Sun RPC) 189 61.23 T
1 10 Q
(W) 189 680.66 T
(e follow the notation found in) 197.63 680.66 T
2 F
([Steiner]) 319.23 680.66 T
1 F
(:) 355.32 680.66 T
-0.13 (Note: we will have no reason to refer to an unencrypted ticket, so when we use the term) 189 517.66 P
2 F
(ticket) 189 505.66 T
1 F
( we mean the service ticket encrypted with the service\325) 210.65 505.66 T
(s private key) 429.64 505.66 T
(.) 480.06 505.66 T
(Using this notation, an AUTH_DES RPC exchange looks like:.) 189 481.66 T
54 648.33 540 671.33 C
189 656.33 540 656.33 2 L
0.25 H
2 Z
0 X
0 K
N
54 656.33 180 656.33 2 L
0 Z
N
0 0 612 792 C
0 9 Q
0 X
0 K
(T) 54 642.33 T
(ABLE 1.) 58.83 642.33 T
7 F
(Kerberos Notation) 189 642.33 T
1 F
(c) 189 618.33 T
(client) 243 618.33 T
(s) 189 603.33 T
(server) 243 603.33 T
(ticket for client) 243 588.33 T
4 F
(c) 300.16 588.33 T
1 F
( to use server) 304.15 588.33 T
4 F
( s) 351.82 588.33 T
1 F
(session key for client) 243 573.33 T
4 F
(c) 321.38 573.33 T
1 F
( and server) 325.37 573.33 T
4 F
(s) 367.05 573.33 T
1 F
(Dif) 243 558.33 T
(\336e-Hellman key for client) 254.82 558.33 T
4 F
(c) 350.17 558.33 T
1 F
( and server) 354.16 558.33 T
4 F
(s) 395.83 558.33 T
(x) 243 543.33 T
1 F
( encrypted with key) 247.49 543.33 T
183 583.33 237 598.33 C
189 583.33 205.66 595.47 C
2 9 Q
0 X
0 K
(T) 190 588.33 T
2 7 Q
(c) 195.34 585.2 T
(s) 201.94 585.2 T
6 F
(,) 198.45 585.2 T
183 583.33 237 598.33 C
0 0 612 792 C
183 568.33 237 583.33 C
189 568.33 206.66 580.47 C
2 9 Q
0 X
0 K
(K) 190 573.33 T
2 7 Q
(c) 196.34 570.2 T
(s) 202.94 570.2 T
6 F
(,) 199.44 570.2 T
183 568.33 237 583.33 C
0 0 612 792 C
183 553.33 237 568.33 C
189 555.47 203.52 565.47 C
2 9 Q
0 X
0 K
(C) 190 558.33 T
(K) 196.52 558.33 T
183 553.33 237 568.33 C
0 0 612 792 C
183 538.33 237 553.33 C
189 539.33 214.43 550.47 C
2 9 Q
0 X
0 K
(x) 196.71 543.33 T
6 F
({) 191.5 543.33 T
(}) 201.09 543.33 T
2 F
(K) 207.43 543.33 T
183 538.33 237 553.33 C
0 0 612 792 C
237 538.33 453 553.33 C
320.88 540.47 328.87 550.47 C
2 9 Q
0 X
0 K
(K) 321.88 543.33 T
237 538.33 453 553.33 C
0 0 612 792 C
54 89.29 540 687.33 C
62.64 98.02 531.36 478.33 C
7 X
0 K
90 450 31.5 18 167.66 406.33 G
0.5 H
0 Z
0 X
90 450 31.5 18 167.66 406.33 A
7 X
90 450 31.5 18 419.66 406.33 G
0 X
90 450 31.5 18 419.66 406.33 A
1 10 Q
(server) 406.93 404.02 T
367.63 409.63 379.16 406.33 367.63 403.02 367.63 406.33 4 Y
V
208.16 406.33 367.63 406.33 2 L
7 X
V
2 Z
0 X
N
(client) 157.47 402.57 T
213.53 411.07 364.3 424.15 R
7 X
V
2 9 Q
0 X
(n) 233.9 418.15 T
(a) 238.93 418.15 T
(m) 243.95 418.15 T
(e) 250.97 418.15 T
(K) 266.16 418.15 T
2 7 Q
(c) 272.5 415.02 T
(s) 279.1 415.02 T
6 F
(,) 275.61 415.02 T
6 9 Q
({) 260.96 418.15 T
(}) 282.21 418.15 T
2 F
(C) 288.56 418.15 T
(K) 295.08 418.15 T
(w) 310.56 418.15 T
(i) 317.08 418.15 T
(n) 320.11 418.15 T
6 F
({) 305.35 418.15 T
(}) 325 418.15 T
2 F
(K) 331.34 418.15 T
2 7 Q
(c) 337.68 415.02 T
(s) 344.28 415.02 T
6 F
(,) 340.79 415.02 T
6 9 Q
(,) 301.61 418.15 T
(,) 254.96 418.15 T
209.66 379.33 371.66 397.33 R
7 X
V
2 F
0 X
(t) 241.96 388.86 T
1 7 Q
(1) 244.8 385.75 T
6 9 Q
({) 236.75 388.86 T
(}) 248.69 388.86 T
2 F
(K) 255.04 388.86 T
2 7 Q
(c) 261.38 385.73 T
(s) 267.98 385.73 T
6 F
(,) 264.48 385.73 T
2 9 Q
(w) 280.18 388.86 T
(i) 286.7 388.86 T
(n) 289.73 388.86 T
1 F
(1) 303.66 388.86 T
6 F
(+) 296.47 388.86 T
({) 274.97 388.86 T
(}) 308.54 388.86 T
2 F
(K) 314.89 388.86 T
2 7 Q
(c) 321.23 385.73 T
(s) 327.83 385.73 T
6 F
(,) 324.33 385.73 T
6 9 Q
(,) 271.22 388.86 T
245.66 433.33 344.66 442.33 R
7 X
V
1 10 Q
0 X
(credential) 263.66 435.51 T
245.66 352.33 326.66 370.33 R
7 X
V
0 X
(veri\336er) 272.66 363.51 T
7 X
90 450 31.5 18 169.16 298.33 G
0 Z
0 X
90 450 31.5 18 169.16 298.33 A
7 X
90 450 31.5 18 421.16 298.33 G
0 X
90 450 31.5 18 421.16 298.33 A
(server) 408.43 296.02 T
221.2 295.02 209.66 298.33 221.2 301.63 221.2 298.33 4 Y
V
221.2 298.33 380.66 298.33 2 L
7 X
V
2 Z
0 X
N
(client) 158.97 294.57 T
2 9 Q
(t) 245.96 280.86 T
1 7 Q
(1) 248.8 277.75 T
1 9 Q
(1) 261.73 280.86 T
6 F
(-) 254.55 280.86 T
({) 240.75 280.86 T
(}) 266.62 280.86 T
2 F
(K) 272.96 280.86 T
2 7 Q
(c) 279.3 277.73 T
(s) 285.9 277.73 T
6 F
(,) 282.41 277.73 T
2 9 Q
(n) 291.4 280.86 T
(i) 296.42 280.86 T
(c) 299.45 280.86 T
(k) 303.97 280.86 T
(n) 308.49 280.86 T
(a) 313.51 280.86 T
(m) 318.54 280.86 T
(e) 325.55 280.86 T
6 F
(,) 289.15 280.86 T
247.16 244.33 328.16 262.33 R
7 X
V
1 10 Q
0 X
(veri\336er) 273.41 255.51 T
7 X
90 450 32.4 18 164.8 181.31 G
0 Z
0 X
90 450 32.4 18 164.8 181.31 A
7 X
90 450 32.41 18 423.99 181.31 G
0 X
90 450 32.41 18 423.99 181.31 A
(server) 410.89 179 T
370.79 184.62 382.33 181.31 370.79 178 370.79 181.31 4 Y
V
206.45 181.31 370.79 181.31 2 L
7 X
V
2 Z
0 X
N
(client) 154.31 177.56 T
2 9 Q
(n) 272.02 193.14 T
(i) 277.04 193.14 T
(c) 280.07 193.14 T
(k) 284.59 193.14 T
(n) 289.11 193.14 T
(a) 294.13 193.14 T
(m) 299.15 193.14 T
(e) 306.17 193.14 T
(t) 242.38 163.85 T
1 7 Q
(1) 245.23 160.73 T
6 9 Q
({) 237.18 163.85 T
(}) 249.11 163.85 T
2 F
(K) 255.46 163.85 T
2 7 Q
(c) 261.8 160.72 T
(s) 268.4 160.72 T
6 F
(,) 264.9 160.72 T
2 9 Q
(w) 280.6 163.85 T
(i) 287.12 163.85 T
(n) 290.15 163.85 T
1 F
(1) 304.08 163.85 T
6 F
(+) 296.89 163.85 T
({) 275.39 163.85 T
(}) 308.96 163.85 T
2 F
(K) 315.31 163.85 T
2 7 Q
(c) 321.65 160.72 T
(s) 328.25 160.72 T
6 F
(,) 324.75 160.72 T
6 9 Q
(,) 271.64 163.85 T
1 10 Q
(credential) 272.27 208.51 T
(veri\336er) 272.79 138.49 T
54 89.29 540 687.33 C
0 0 612 792 C
FMENDPAGE
%%EndPage: "2" 1
%%Page: "3" 3
612 792 0 FMBEGINPAGE
72 726.98 558 726.98 2 L
0.25 H
0 Z
0 X
0 K
N
72 750.68 558 750.68 2 L
2 H
N
0 9 Q
(Kerberos-based authentication) 207 737.84 T
72 75.33 558 75.33 2 L
0.25 H
2 Z
N
(Kerberos Authentication in Sun RPC) 207 61.23 T
0 10 Q
(3) 552.44 61.23 T
72 672.33 558 675.33 C
207 674.48 558 674.48 2 L
0.25 H
2 Z
0 X
0 K
N
0 0 612 792 C
0 12 Q
0 X
0 K
(Kerberos-based authentication) 207 679.33 T
1 10 Q
(While DES-based authentication must pass a \322netname\323 and uses a public key crypto-) 207 655.66 T
-0.1 (system to exchange encrypted session keys, Kerberos-based authentication takes advan-) 207 643.66 P
(tage of the fact that the service ticket already contains both the principal\325) 207 631.66 T
(s name and a) 497.89 631.66 T
(copy of the session key) 207 619.66 T
(.  An AUTH_KERB RPC exchange looks like:) 299.62 619.66 T
(That is, the essential dif) 207 215.36 T
(ference between AUTH_DES and AUTH_KERB is that DES-) 302.04 215.36 T
(based authentication passes a \322netname\325) 207 203.36 T
(\325 and public-key encrypted session key while) 367.24 203.36 T
(Kerberos-based authentication passes the \050encrypted\051 service ticket.) 207 191.36 T
72 148.02 558 151.02 C
207 150.18 558 150.18 2 L
0.25 H
2 Z
0 X
0 K
N
0 0 612 792 C
0 12 Q
0 X
0 K
(AUTH_KERB details) 207 155.02 T
1 10 Q
-0.07 (Although conceptually very similar to AUTH_DES, AUTH_KERB dif) 207 131.35 P
-0.07 (fers in a number) 490.57 131.35 P
(of small ways, all of which af) 207 119.35 T
(fect implementation interoperability) 325.35 119.35 T
(.) 469.05 119.35 T
72 89.29 558 687.33 C
80.64 236.02 549.36 616.33 C
7 X
0 K
90 450 31.5 18 185.66 544.33 G
0.5 H
0 Z
0 X
90 450 31.5 18 185.66 544.33 A
7 X
90 450 31.5 18 437.66 544.33 G
0 X
90 450 31.5 18 437.66 544.33 A
1 10 Q
(server) 424.93 542.02 T
385.63 547.63 397.16 544.33 385.63 541.02 385.63 544.33 4 Y
V
226.16 544.33 385.63 544.33 2 L
7 X
V
2 Z
0 X
N
(client) 175.47 540.57 T
2 9 Q
(T) 278.16 556.15 T
2 7 Q
(c) 283.5 553.02 T
(s) 290.1 553.02 T
6 F
(,) 286.61 553.02 T
2 9 Q
(w) 302.3 556.15 T
(i) 308.83 556.15 T
(n) 311.86 556.15 T
6 F
({) 297.1 556.15 T
(}) 316.74 556.15 T
2 F
(K) 323.09 556.15 T
2 7 Q
(c) 329.43 553.02 T
(s) 336.03 553.02 T
6 F
(,) 332.53 553.02 T
6 9 Q
(,) 293.35 556.15 T
2 F
(t) 259.96 526.86 T
1 7 Q
(1) 262.8 523.75 T
6 9 Q
({) 254.75 526.86 T
(}) 266.69 526.86 T
2 F
(K) 273.04 526.86 T
2 7 Q
(c) 279.38 523.73 T
(s) 285.98 523.73 T
6 F
(,) 282.48 523.73 T
2 9 Q
(w) 298.18 526.86 T
(i) 304.7 526.86 T
(n) 307.73 526.86 T
1 F
(1) 321.66 526.86 T
6 F
(+) 314.47 526.86 T
({) 292.97 526.86 T
(}) 326.54 526.86 T
2 F
(K) 332.89 526.86 T
2 7 Q
(c) 339.23 523.73 T
(s) 345.83 523.73 T
6 F
(,) 342.33 523.73 T
6 9 Q
(,) 289.22 526.86 T
1 10 Q
(credential) 281.66 573.51 T
(veri\336er) 290.66 501.51 T
7 X
90 450 31.5 18 187.16 436.33 G
0 Z
0 X
90 450 31.5 18 187.16 436.33 A
7 X
90 450 31.5 18 439.16 436.33 G
0 X
90 450 31.5 18 439.16 436.33 A
(server) 426.43 434.02 T
239.2 433.02 227.66 436.33 239.2 439.63 239.2 436.33 4 Y
V
239.2 436.33 398.66 436.33 2 L
7 X
V
2 Z
0 X
N
(client) 176.97 432.57 T
2 9 Q
(t) 263.96 418.86 T
1 7 Q
(1) 266.8 415.75 T
1 9 Q
(1) 279.73 418.86 T
6 F
(-) 272.55 418.86 T
({) 258.75 418.86 T
(}) 284.62 418.86 T
2 F
(K) 290.96 418.86 T
2 7 Q
(c) 297.3 415.73 T
(s) 303.9 415.73 T
6 F
(,) 300.41 415.73 T
2 9 Q
(n) 309.4 418.86 T
(i) 314.42 418.86 T
(c) 317.45 418.86 T
(k) 321.97 418.86 T
(n) 326.49 418.86 T
(a) 331.51 418.86 T
(m) 336.54 418.86 T
(e) 343.55 418.86 T
6 F
(,) 307.15 418.86 T
1 10 Q
(veri\336er) 291.41 393.51 T
7 X
90 450 32.4 18 182.8 319.31 G
0 Z
0 X
90 450 32.4 18 182.8 319.31 A
7 X
90 450 32.41 18 441.99 319.31 G
0 X
90 450 32.41 18 441.99 319.31 A
(server) 428.89 317 T
388.79 322.62 400.33 319.31 388.79 316 388.79 319.31 4 Y
V
224.45 319.31 388.79 319.31 2 L
7 X
V
2 Z
0 X
N
(client) 172.31 315.56 T
2 9 Q
(n) 290.02 331.14 T
(i) 295.04 331.14 T
(c) 298.07 331.14 T
(k) 302.59 331.14 T
(n) 307.11 331.14 T
(a) 312.13 331.14 T
(m) 317.15 331.14 T
(e) 324.17 331.14 T
(t) 260.38 301.85 T
1 7 Q
(1) 263.23 298.73 T
6 9 Q
({) 255.18 301.85 T
(}) 267.11 301.85 T
2 F
(K) 273.46 301.85 T
2 7 Q
(c) 279.8 298.72 T
(s) 286.4 298.72 T
6 F
(,) 282.9 298.72 T
2 9 Q
(w) 298.6 301.85 T
(i) 305.12 301.85 T
(n) 308.15 301.85 T
1 F
(1) 322.08 301.85 T
6 F
(+) 314.89 301.85 T
({) 293.39 301.85 T
(}) 326.96 301.85 T
2 F
(K) 333.31 301.85 T
2 7 Q
(c) 339.65 298.72 T
(s) 346.25 298.72 T
6 F
(,) 342.75 298.72 T
6 9 Q
(,) 289.64 301.85 T
1 10 Q
(credential) 290.27 346.51 T
(veri\336er) 290.79 276.49 T
72 89.29 558 687.33 C
0 0 612 792 C
FMENDPAGE
%%EndPage: "3" 2
%%Page: "4" 4
612 792 0 FMBEGINPAGE
54 726.98 540 726.98 2 L
0.25 H
0 Z
0 X
0 K
N
54 750.68 540 750.68 2 L
2 H
N
0 9 Q
( AUTH_KERB details) 189 737.84 T
54 75.33 540 75.33 2 L
0.25 H
2 Z
N
0 10 Q
(4) 54 61.23 T
0 9 Q
(Kerberos Authentication in Sun RPC) 189 61.23 T
0 10 Q
(Assumptions) 189 680.66 T
0 9 Q
(T) 189 657.33 T
(ime synchronization) 194.33 657.33 T
1 10 Q
(While AUTH_DES has the concept of a time window within which its credentials are) 189 644.66 T
(valid, it does not place restrictions on the clocks of the client or server) 189 632.66 T
(.  The client is) 468.81 632.66 T
-0.23 (required to determine the time bias between itself and the server and compensate for the) 189 620.66 P
(dif) 189 608.66 T
(ference by adjusting the window time speci\336ed to the server) 199.92 608.66 T
(.) 440.03 608.66 T
(Kerberos itself places loose time synchronization requirements on the hosts using its) 189 584.66 T
(protocol \050services must be able to detect stale tickets\051.  Because of its use of Kerberos) 189 572.66 T
(tickets, AUTH_KERB inherits these requirements:  client and server clocks must be) 189 560.66 T
-0.03 (synchronized within 5 minutes of each other) 189 548.66 P
-0.03 (.  V) 365.9 548.66 P
-0.03 (arious methods of time synchronization) 379.44 548.66 P
(are available) 189 536.66 T
2 F
([DTS]) 242.28 536.66 T
1 F
(,) 267.83 536.66 T
2 F
([RFC1059]) 272.82 536.66 T
1 F
(,) 319.47 536.66 T
2 F
([RFC1) 324.47 536.66 T
(1) 351.49 536.66 T
(19]) 355.75 536.66 T
1 F
(,) 369.63 536.66 T
2 F
([RFC1305]) 374.63 536.66 T
1 F
(.) 421.27 536.66 T
0 9 Q
(W) 189 513.33 T
(ell-known names) 197.32 513.33 T
1 10 Q
-0.05 (Kerberos users are identi\336ed by a primary name, instance, and realm.  The RPC authen-) 189 500.66 P
(tication code implementing AUTH_KERB lar) 189 488.66 T
(gely ignores the realm \050the supporting) 373.15 488.66 T
(Kerberos library code does not, of course\051 and, under most circumstances the instance) 189 476.66 T
(as well.  It is assumed that user names are the same between client and server) 189 464.66 T
(.  This) 497.65 464.66 T
(enables a server to translate a primary name into user identi\336cation information.  T) 189 452.66 T
(wo) 519.73 452.66 T
(forms of well-known names are used \050we omit the realm\051:) 189 440.66 T
3 F
(root.host) 202.75 422.66 T
1 F
(represents a privileged user on client) 324 422.66 T
3 F
(host) 473.33 422.66 T
(user.ignored) 202.75 407.66 T
1 F
(represents the user whose user name is) 324 407.66 T
3 F
(user) 481.37 407.66 T
1 F
(.  The) 504.81 407.66 T
(instance is ignored.) 324 395.66 T
0 F
(Encryption speci\336cs) 189 365.66 T
1 F
(AUTH_KERB uses CBC mode when sending a full name credential \050i.e. a credential) 189 349.66 T
-0.18 (that includes the ticket and window\051 and ECB mode otherwise.  The session key is used) 189 337.66 P
(as the initial input vector for CBC mode.  Use of Kerberos version 4\325) 189 325.66 T
(s nonstandard) 464.93 325.66 T
(\322propagating CBC\323 is avoided.  It has been shown to have undesirable ef) 189 313.66 T
(fects on mes-) 481.11 313.66 T
(sage integrity) 189 301.66 T
2 F
([Bellovin]) 245.63 301.66 T
1 F
(.) 286.72 301.66 T
(In the following we assume familiarity with XDR encoding) 189 277.66 T
2 F
([RFC1014]) 429.68 277.66 T
1 F
( and use the) 476.32 277.66 T
(notation) 189 265.66 T
3 8 Q
(xdr_type\050) 234 248.99 T
5 F
(object) 277.18 248.99 T
3 F
(\051) 305.96 248.99 T
1 10 Q
(to mean) 189 225.66 T
2 F
(object) 223.42 225.66 T
1 F
( XDRed as a) 247.85 225.66 T
3 F
(type) 301.14 225.66 T
1 F
(.  The length referred to below is the size, in bytes of) 325.12 225.66 T
-0.17 (the credential or veri\336er) 189 213.66 P
-0.17 (, rounded \050as XDR requires\051 up to 4-byte units.  Using this nota-) 284.4 213.66 P
(tion, the full name credential and veri\336er are obtained as follows:) 189 201.66 T
3 8 Q
(xdr_long\050timestamp.seconds\051) 234 185.34 T
(xdr_long\050timestamp.useconds\051) 234 176.69 T
(xdr_long\050window\051) 234 168.05 T
(xdr_long\050window - 1\051) 234 159.41 T
1 10 Q
-0.34 (is encrypted with CBC and input vector equal to the session key) 189 137.08 P
-0.34 (.  The output is two DES) 440.79 137.08 P
(cipher blocks, which we represent as) 189 125.08 T
FMENDPAGE
%%EndPage: "4" 3
%%Page: "5" 5
612 792 0 FMBEGINPAGE
72 726.98 558 726.98 2 L
0.25 H
0 Z
0 X
0 K
N
72 750.68 558 750.68 2 L
2 H
N
0 9 Q
(AUTH_KERB details) 207 737.84 T
72 75.33 558 75.33 2 L
0.25 H
2 Z
N
(Kerberos Authentication in Sun RPC) 207 61.23 T
0 10 Q
(5) 552.44 61.23 T
3 8 Q
(CB0) 252 681.99 T
(CB1.low) 252 671.99 T
(CB1.high) 252 661.99 T
1 10 Q
(The credential is) 207 638.66 T
3 8 Q
(xdr_long\050AUTH_KERB\051) 252 622.34 T
(xdr_long\050length\051) 252 613.69 T
(xdr_enum\050AKN_FULLNAME\051) 252 605.05 T
(xdr_bytes\050ticket\051) 252 596.4 T
(xdr_opaque\050CB1.high\051) 252 587.76 T
1 10 Q
(and the veri\336er is) 207 565.44 T
3 8 Q
(xdr_long\050AUTH_KERB\051) 252 549.12 T
(xdr_long\050length\051) 252 540.47 T
(xdr_opaque\050CB0\051) 252 531.83 T
(xdr_opaque\050CB1.low\051) 252 523.18 T
1 10 Q
(For a \322nickname\323 exchange, we do the following:) 207 500.86 T
3 8 Q
(xdr_long\050timestamp.seconds\051) 252 484.19 T
(xdr_long\050timestamp.useconds\051) 252 474.19 T
1 10 Q
(is encrypted with ECB to obtain) 207 450.86 T
3 8 Q
(ECB0) 252 434.19 T
1 10 Q
(and the credential is) 207 410.86 T
3 8 Q
(xdr_long\050AUTH_KERB\051) 252 394.19 T
(xdr_long\050length\051) 252 384.19 T
(xdr_enum\050AKN_NICKNAME\051) 252 374.19 T
(xdr_opaque\050akc_nickname\051) 252 364.19 T
1 10 Q
(while the veri\336er is) 207 340.86 T
3 8 Q
(xdr_long\050AUTH_KERB\051) 252 324.19 T
(xdr_long\050length\051) 252 314.19 T
(xdr_opaque\050ECB0\051) 252 304.19 T
(xdr_opaque\0500\051) 252 294.19 T
FMENDPAGE
%%EndPage: "5" 4
%%Page: "6" 6
612 792 0 FMBEGINPAGE
54 726.98 540 726.98 2 L
0.25 H
0 Z
0 X
0 K
N
54 750.68 540 750.68 2 L
2 H
N
0 9 Q
( NFS and AUTH_KERB) 189 737.84 T
54 75.33 540 75.33 2 L
0.25 H
2 Z
N
0 10 Q
(6) 54 61.23 T
0 9 Q
(Kerberos Authentication in Sun RPC) 189 61.23 T
1 10 Q
(This is undoubtedly confusing.  A diagram will help clarify the XDR and encryption) 189 680.66 T
(order:) 189 668.66 T
54 214.54 540 217.54 C
189 216.7 540 216.7 2 L
0.25 H
2 Z
0 X
0 K
N
0 0 612 792 C
0 12 Q
0 X
0 K
(NFS and AUTH_KERB) 189 221.54 T
1 10 Q
(The following information is speci\336c to the SunOS 5.x implementation of) 189 197.87 T
(AUTH_KERB and necessarily contains UNIX-speci\336c details.) 189 185.87 T
0 F
(kerbd) 189 155.87 T
1 F
(T) 189 139.87 T
(o avoid compiling Kerberos code into our kernels, NFS uses a proxy RPC daemon,) 194.41 139.87 T
3 F
-0.73 (kerbd) 189 127.87 P
1 F
-0.31 (, to make Kerberos library or protocol requests for it.  This daemon exports three) 218.98 127.87 P
(procedures:) 189 115.87 T
54 89.29 540 687.33 C
54 254.54 540 665.33 C
198.56 592.56 495.56 646.56 R
7 X
0 K
V
0.5 H
2 Z
0 X
N
198.56 512.33 495.56 566.33 R
7 X
V
0 X
N
534.87 559.86 531.56 548.33 528.26 559.86 531.56 559.86 4 Y
V
531.56 602.33 531.56 559.86 2 L
N
1 14 Q
(CBC) 494.56 574.78 T
4 7 Q
(imestamp.seconds) 64.33 629.86 T
(timestamp.useconds) 64.33 622.86 T
(win) 64.33 615.86 T
(win - 1) 64.33 608.86 T
178.03 619.02 189.56 615.71 178.03 612.4 178.03 615.71 4 Y
V
144.56 615.71 178.03 615.71 2 L
N
(xdr_long) 153.77 626.18 T
351.56 647.33 351.56 593.33 2 L
N
351.56 566.33 351.56 512.33 2 L
N
279.56 646.56 279.56 592.56 2 L
N
432.56 646.56 432.56 592.56 2 L
N
432.56 566.33 432.56 512.33 2 L
N
(imestamp.seconds) 213.18 615.64 T
(timestamp.useconds) 286.95 615.63 T
(win) 384.64 615.56 T
(win - 1) 455.41 615.48 T
(verifier) 63.85 425.84 T
(xdr_long\050AUTH_KERB\051) 63.85 411.84 T
(xdr_long\050length\051) 63.85 404.84 T
(credential) 64.62 329.69 T
(xdr_long\050AUTH_KERB\051) 64.62 315.69 T
(xdr_long\050length\051) 64.62 308.69 T
(xdr_long\050AKN_FULLNAME\051) 64.62 301.69 T
(xdr_bytes\050ticket\051) 64.62 294.69 T
112.68 391.73 100 395.08 112.53 398.96 112.61 395.34 4 Y
V
274 360 180.77 106.92 100 502 A
111.45 376.26 96.15 380.47 111.36 385.01 111.41 380.63 4 Y
V
273 360 291.54 120 96.15 500.46 A
109.95 283.02 96.92 286.62 109.88 290.47 109.92 286.75 4 Y
V
272 360 372.31 212.31 96.92 498.92 A
(xdr_opaque) 252.84 432.79 T
(xdr_opaque) 369.56 432.79 T
(xdr_opaque) 468.84 432.79 T
54 89.29 540 687.33 C
0 0 612 792 C
FMENDPAGE
%%EndPage: "6" 5
%%Page: "7" 7
612 792 0 FMBEGINPAGE
72 726.98 558 726.98 2 L
0.25 H
0 Z
0 X
0 K
N
72 750.68 558 750.68 2 L
2 H
N
0 9 Q
(NFS and AUTH_KERB) 207 737.84 T
72 75.33 558 75.33 2 L
0.25 H
2 Z
N
(Kerberos Authentication in Sun RPC) 207 61.23 T
0 10 Q
(7) 552.44 61.23 T
1 F
(KGETKCRED) 220.75 680.66 T
(is used by server) 342 680.66 T
(-side RPC to check the authenticator) 408.69 680.66 T
(presented by the client.) 342 668.66 T
(KSETKCRED) 220.75 653.66 T
-0.43 (given a primary name, instance, and realm, returns the) 342 653.66 P
(encrypted ticket and DES session key) 342 641.66 T
(KGETUCRED) 220.75 626.66 T
(is UNIX-speci\336c:  it returns the user) 342 626.66 T
(\325) 487.82 626.66 T
(s user ID, group) 490.6 626.66 T
(ID, and groups list assuming that the primary name) 342 614.66 T
(maps directly to a user name known to the server) 342 602.66 T
(.) 537.69 602.66 T
-0.25 (Note that the reliance on the user) 342 590.66 P
-0.25 (\325) 472.96 590.66 P
-0.25 (s name to determine) 475.74 590.66 P
(the groups to which the user belongs means that set) 342 578.66 T
(group ID programs will not behave as expected with) 342 566.66 T
(respect to authenticated NFS service.) 342 554.66 T
0 F
(W) 207 524.66 T
(ell-known names) 216.26 524.66 T
1 F
-0.08 (The NFS service on server) 207 508.66 P
2 F
-0.08 (s) 315.71 508.66 P
1 F
-0.08 ( is assumed to have the well-known principal name) 319.59 508.66 P
3 F
-0.18 (nfs) 526.28 508.66 P
1 F
-0.08 (.) 544.27 508.66 P
2 F
-0.08 (s) 546.77 508.66 P
1 F
-0.08 (.) 550.65 508.66 P
(A privileged user on client) 207 496.66 T
2 F
(c) 316.09 496.66 T
1 F
( is assumed to have primary name) 320.53 496.66 T
3 F
(root) 459.04 496.66 T
1 F
( and instance) 483.03 496.66 T
2 F
(c) 537.71 496.66 T
1 F
(.) 542.15 496.66 T
0 F
(Flow of control) 207 466.66 T
1 F
-0.18 (In order to put the use of) 207 450.66 P
3 F
-0.43 (kerbd) 307.08 450.66 P
1 F
-0.18 ( and AUTH_KERB in perspective, this section follows) 337.06 450.66 P
(an NFS mount request from start to \336nish.  Note that since mount requests are done as) 207 438.66 T
(root in SunOS, the user) 207 426.66 T
(\325) 300.93 426.66 T
(s identity throughout this example will be) 303.71 426.66 T
3 F
(root) 472.78 426.66 T
1 F
(.) 496.77 426.66 T
2 F
(c) 499.27 426.66 T
1 F
(.) 503.71 426.66 T
0 9 Q
(1.) 207 408.66 T
1 10 Q
(client,) 220.74 408.66 T
2 F
(c) 247.95 408.66 T
1 F
(, makes MOUNTPROC_MOUNT request to server) 252.39 408.66 T
(,) 457.95 408.66 T
2 F
(s) 462.95 408.66 T
1 F
(, to obtain the \336le han-) 466.84 408.66 T
(dle for the directory to be mounted.) 220.74 396.66 T
(Note:  mount RPC calls are normally made with authentication \337avor) 220.74 381.66 T
(AUTH_NONE and \322authenticated\323 via a \322privileged port\323 mechanism.) 220.74 369.66 T
0 9 Q
(2.) 207 354.66 T
1 10 Q
(client mount program makes an NFS mount system call, handing the client kernel) 220.74 354.66 T
(\050among other data\051 the \336le handle, mount \337avor \050assumed to be Kerberos in this) 220.74 342.66 T
(case\051, time synchronization address, and the server) 220.74 330.66 T
(\325) 424.28 330.66 T
(s well-known name, \322) 427.06 330.66 T
3 F
(nfs) 514.77 330.66 T
1 F
(.) 532.76 330.66 T
2 F
(s) 535.26 330.66 T
1 F
(\323.) 539.15 330.66 T
0 9 Q
(3.) 207 315.66 T
1 10 Q
(client kernel contacts server at time synch address to derive client-server time bias) 220.74 315.66 T
0 9 Q
(4.) 207 300.66 T
1 10 Q
-0.17 (client kernel makes KSETKCRED RPC call to local) 220.74 300.66 P
3 F
-0.42 (kerbd) 431.45 300.66 P
1 F
-0.17 ( to obtain ticket and ses-) 461.43 300.66 P
(sion key) 220.74 288.66 T
0 9 Q
(5.) 207 273.66 T
1 10 Q
(client kernel makes NFSPROC_GET) 220.74 273.66 T
(A) 369.02 273.66 T
(TTR RPC call to server) 375.13 273.66 T
(\325) 469.89 273.66 T
(s NFS service, using) 472.67 273.66 T
(full name credential and veri\336er described above.) 220.74 261.66 T
0 9 Q
(6.) 207 246.66 T
1 10 Q
(server receives RPC call and makes KGETKCRED RPC call to its local) 220.74 246.66 T
3 F
(kerbd) 511.67 246.66 T
1 F
( to) 541.65 246.66 T
(check the ticket presented by the client.  The server) 220.74 234.66 T
(\325) 426.5 234.66 T
(s) 429.28 234.66 T
3 F
(kerbd) 435.67 234.66 T
1 F
( and the Kerberos) 465.65 234.66 T
(library decrypt the ticket and return, among other data, the principal name and DES) 220.74 222.66 T
(session key) 220.74 210.66 T
(.) 265.9 210.66 T
0 9 Q
(7.) 207 195.66 T
1 10 Q
(server checks that the ticket is still valid, uses the session key just obtained to) 220.74 195.66 T
(decrypt the DES-encrypted portions of the credential and veri\336er) 220.74 183.66 T
(, and checks the) 480.14 183.66 T
(veri\336er for validity) 220.74 171.66 T
(.  Many Kerberos-speci\336c RPC authentication errors may be) 296.15 171.66 T
(returned at this point:) 220.74 159.66 T
( AUTH_BADCRED) 220.75 144.66 T
(if the veri\336er is invalid \050the decrypted) 342 144.66 T
2 F
(win) 496.05 144.66 T
1 F
( in the cre-) 510.5 144.66 T
-0.33 (dential and the decrypted) 342 132.66 P
2 F
-0.33 (win) 443.94 132.66 P
1 F
-0.33 ( + 1 in the veri\336er do not) 458.38 132.66 P
(match\051 or the timestamp does not lie within the win-) 342 120.66 T
(dow) 342 108.66 T
(AUTH_REJECTEDCRED) 220.75 93.66 T
(if a replay is detected) 342 93.66 T
FMENDPAGE
%%EndPage: "7" 6
%%Page: "8" 8
612 792 0 FMBEGINPAGE
54 726.98 540 726.98 2 L
0.25 H
0 Z
0 X
0 K
N
54 750.68 540 750.68 2 L
2 H
N
0 9 Q
( NFS and AUTH_KERB) 189 737.84 T
54 75.33 540 75.33 2 L
0.25 H
2 Z
N
0 10 Q
(8) 54 61.23 T
0 9 Q
(Kerberos Authentication in Sun RPC) 189 61.23 T
1 10 Q
(AUTH_BADVERF) 202.75 680.66 T
-0.09 (if the veri\336er appears garbled \050few sanity checks may) 324 680.66 P
(be placed on the veri\336er - ensuring that the times-) 324 668.66 T
(tamp\325) 324 656.66 T
(s microseconds \336eld is valid is one\051.) 346.77 656.66 T
-0.25 (Once the server is satis\336ed with the credential and veri\336er) 202.74 641.66 P
-0.25 (, it caches the client\325) 432.43 641.66 P
-0.25 (s iden-) 513.32 641.66 P
(tity and allocates a nickname \050small integer\051 to be returned in the NFS reply) 202.74 629.66 T
(.) 506.05 629.66 T
0 9 Q
(8.) 189 614.66 T
1 10 Q
(server checks that the client is in the same realm as the server) 202.74 614.66 T
(.  If it is, the server) 448.11 614.66 T
(makes a KGETUCRED call to its local) 202.74 602.66 T
3 F
(kerbd) 361.81 602.66 T
1 F
( to translate the principal\325) 391.79 602.66 T
(s primary) 493.95 602.66 T
(name into UNIX credentials.  If it isn\325) 202.74 590.66 T
(t, the user is marked as anonymous.) 355.23 590.66 T
0 9 Q
(9.) 189 575.66 T
1 10 Q
(server checks these credentials against the \336le system\325) 202.74 575.66 T
(s export information.  There) 419.53 575.66 T
-0.34 (are three cases to consider:  if the KGETUCRED call failed and anonymous requests) 202.74 563.66 P
(are allowed, the UNIX credentials of the speci\336ed anonymous user are assigned;  if) 202.74 551.66 T
(the KGETUCRED call fails and anonymous requests are not allowed, the NFS call) 202.74 539.66 T
(fails with RPC authentication error AUTH_T) 202.74 527.66 T
(OOWEAK;  otherwise \050the) 383.83 527.66 T
-0.16 (KGETUCRED has succeeded and the user) 202.74 515.66 P
-0.16 (\325) 373.02 515.66 P
-0.16 (s UNIX credentials have been assigned\051,) 375.8 515.66 P
(normal protection checking follows, including checking for root permission.) 202.74 503.66 T
0 9 Q
(10.) 189 488.66 T
1 10 Q
(server constructs an NFS reply and sends it, including the nickname and server) 202.74 488.66 T
(\325) 518.72 488.66 T
(s) 521.5 488.66 T
(veri\336er) 202.74 476.66 T
0 9 Q
(1) 189 461.66 T
(1.) 193.5 461.66 T
1 10 Q
-0.07 (client receives the reply) 202.74 461.66 P
-0.07 (, decrypts and validates the veri\336er) 297.08 461.66 P
-0.07 (, and remembers the nick-) 436.21 461.66 P
(name for future calls) 202.74 449.66 T
-0.16 (The client now makes a second NFS call to the server) 189 425.66 P
-0.16 (.  Much of this repeats steps 5 - 1) 401.74 425.66 P
-0.16 (1) 532.66 425.66 P
(above.) 189 413.66 T
0 9 Q
(12.) 189 395.66 T
1 10 Q
(client kernel makes NFSPROC_ST) 202.74 395.66 T
(A) 343.26 395.66 T
(TVFS RPC call to server) 349.36 395.66 T
(\325) 449.68 395.66 T
(s NFS service, using) 452.46 395.66 T
(nickname credential and veri\336er described above.) 202.74 383.66 T
0 9 Q
(13.) 189 368.66 T
1 10 Q
(server receives RPC call and validates the nickname.  If it is out of range, the RPC) 202.74 368.66 T
(authentication error AUTH_BADCRED is returned.) 202.74 356.66 T
0 9 Q
(14.) 189 341.66 T
1 10 Q
(server uses the session key just obtained to decrypt the DES-encrypted portions of) 202.74 341.66 T
(the veri\336er) 202.74 329.66 T
(, and checks the veri\336er for validity) 245.92 329.66 T
(.  These Kerberos-speci\336c RPC) 387.66 329.66 T
(authentication errors may be returned at this point:) 202.74 317.66 T
(AUTH_REJECTEDVERF) 202.75 302.66 T
-0.12 (If the timestamp is invalid, a replay is detected, or the) 324 302.66 P
(timestamp does not lie within the window) 324 290.66 T
(AUTH_TIMEEXPIRE) 202.75 275.66 T
(If the service ticket has expired.) 324 275.66 T
0 9 Q
(15.) 189 260.66 T
1 10 Q
(server uses the nickname to retrieve the caller) 202.74 260.66 T
(\325) 386.01 260.66 T
(s UNIX credentials) 388.79 260.66 T
0 9 Q
(16.) 189 245.66 T
1 10 Q
(server checks these credentials against the \336le system\325) 202.74 245.66 T
(s export information.) 419.53 245.66 T
0 9 Q
(17.) 189 230.66 T
1 10 Q
(server constructs an NFS reply and sends it, including the nickname and server) 202.74 230.66 T
(\325) 518.72 230.66 T
(s) 521.5 230.66 T
(veri\336er) 202.74 218.66 T
0 9 Q
(18.) 189 203.66 T
1 10 Q
-0.07 (client receives the reply) 202.74 203.66 P
-0.07 (, decrypts and validates the veri\336er) 297.08 203.66 P
-0.07 (, and remembers the nick-) 436.21 203.66 P
(name for future calls) 202.74 191.66 T
0 9 Q
(19.) 189 176.66 T
1 10 Q
(client\325) 202.74 176.66 T
(s NFS mount system call returns) 227.73 176.66 T
0 F
(Miscellaneous) 189 146.66 T
1 F
(Use of Kerberos authentication for NFS may lead to some surprises.  Unlike) 189 130.66 T
(AUTH_DES, there will come a time when the user) 189 118.66 T
(\325) 393.39 118.66 T
(s ticket-granting ticket has expired,) 396.17 118.66 T
(requiring another invocation of) 189 106.66 T
3 F
(kinit) 316.13 106.66 T
1 F
(.  When this occurs, NFS service for Kerberos) 346.11 106.66 T
(mounts will fail until a new ticket-granting ticket is obtained.) 189 94.66 T
FMENDPAGE
%%EndPage: "8" 7
%%Page: "9" 9
612 792 0 FMBEGINPAGE
72 726.98 558 726.98 2 L
0.25 H
0 Z
0 X
0 K
N
72 750.68 558 750.68 2 L
2 H
N
0 9 Q
(NFS and AUTH_KERB) 207 737.84 T
72 75.33 558 75.33 2 L
0.25 H
2 Z
N
0 10 Q
(9) 552.44 61.23 T
72 653.33 558 663.33 C
72 654.33 324 654.33 2 L
0.25 H
0 Z
0 X
0 K
N
0 0 612 792 C
FMENDPAGE
%%EndPage: "9" 8
%%Page: "9" 10
612 792 0 FMBEGINPAGE
72 726.98 558 726.98 2 L
0.25 H
0 Z
0 X
0 K
N
72 750.68 558 750.68 2 L
2 H
N
72 75.33 558 75.33 2 L
0.25 H
2 Z
N
0 10 Q
(9) 552.44 61.23 T
0 12 Q
(Appendix I:  Kerberos authentication in RPCL) 72 679.33 T
3 9 Q
(#define AUTH_KERB 4) 207 663.33 T
(/*) 207 641.33 T
-1.51 ( * There are two kinds of credentials: one in which the client sends) 207 630.33 P
-0.45 ( * the \050previously encrypted\051 Kerberos ticket, and one in which it) 207 619.33 P
( * uses its \322nickname\323 \050just an unsigned integer\051 given to it by) 207 608.33 T
( * the server.  The client must use its full name in its first) 207 597.33 T
-1.31 ( * transaction with the server; the server will return to the client) 207 586.33 P
( * a nickname.  The client may use its nickname in all further) 207 575.33 T
-0.45 ( * transactions with the server \050until the ticket expires\051.  There) 207 564.33 P
-0.33 ( * is no requirement to use the nickname, but it is wise to use it) 207 553.33 P
( * for performance reasons.) 207 542.33 T
( */) 207 531.33 T
(enum authkerb_namekind {) 207 520.33 T
(AKN_FULLNAME = 0,) 236.16 509.33 T
(AKN_NICKNAME = 1) 236.16 498.33 T
( };) 207 487.33 T
(/*) 207 465.33 T
-1.21 ( * A fullname contains the network name of the client, an encrypted) 207 454.33 P
( * conversation key and the window.  The window is actually a) 207 443.33 T
( * lifetime for the credential.  If the time indicated in the) 207 432.33 T
( * verifier timestamp plus the window has passed, then the server) 207 421.33 T
( * should expire the request and not grant it.  To insure that) 207 410.33 T
( * requests are not replayed, the server should insist that) 207 399.33 T
( * timestamps be greater than the previous one seen, unless it is) 207 388.33 T
( * the first transaction.) 207 377.33 T
( * In the first transaction, the server checks instead that the) 207 366.33 T
( * window verifier is one less than the window.) 207 355.33 T
( */) 207 344.33 T
(struct authkerb_fullname {) 207 333.33 T
(KTEXT_ST ticket;             /* encrypted service ticket */) 236.16 322.33 T
(unsigned long window;        /* encrypted window */) 236.16 311.33 T
(};) 207 300.33 T
(/*) 207 278.33 T
( * A credential is either a fullname or a nickname) 207 267.33 T
( */) 207 256.33 T
(union authkerb_cred switch\050authkerb_namekind akc_namekind\051{) 207 245.33 T
(case AKN_FULLNAME:) 236.16 234.33 T
(authkerb_fullname akc_fullname;) 256.32 223.33 T
(case AKN_NICKNAME:) 236.16 212.33 T
(unsigned long akc_nickname;) 256.32 201.33 T
(};) 207 190.33 T
(/*) 207 168.33 T
( * A timestamp encodes the time since midnight, January 1, 1970.) 207 157.33 T
( */) 207 146.33 T
(struct timestamp {) 207 135.33 T
(unsigned long seconds;      /* seconds */) 236.16 124.33 T
(unsigned long useconds;     /* and microseconds */) 236.16 113.33 T
(};) 207 102.33 T
FMENDPAGE
%%EndPage: "9" 9
%%Page: "10" 11
612 792 0 FMBEGINPAGE
54 726.98 540 726.98 2 L
0.25 H
0 Z
0 X
0 K
N
54 750.68 540 750.68 2 L
2 H
N
54 75.33 540 75.33 2 L
0.25 H
2 Z
N
0 10 Q
(10) 54 61.23 T
3 9 Q
(/*) 189 670.33 T
( * Verifier: client variety) 189 659.33 T
( */) 189 648.33 T
(struct authkerb_verf_clnt {) 189 637.33 T
(timestamp akv_timestamp;    /* encrypted timestamp */) 218.16 626.33 T
(unsigned long akv_winverf;  /* encrypted window verifier */) 218.16 615.33 T
(};) 189 604.33 T
(/*) 189 582.33 T
( * Verifier: server variety) 189 571.33 T
( * The server returns \050encrypted\051 the same timestamp the client) 189 560.33 T
-0.74 ( * gave it minus one second.  It also tells the client its nickname) 189 549.33 P
( * to be used in future transactions \050unencrypted\051.) 189 538.33 T
( */) 189 527.33 T
(struct authkerb_verf_svr {) 189 516.33 T
(timestamp akv_timeverf;     /* encrypted verifier */) 218.16 505.33 T
(unsigned long akv_nickname; /* new nickname for clnt */) 218.16 494.33 T
(};) 189 483.33 T
FMENDPAGE
%%EndPage: "10" 10
%%Page: "11" 12
%%BeginPaperSize: Letter
%%EndPaperSize
612 792 0 FMBEGINPAGE
72 726.98 558 726.98 2 L
0.25 H
0 Z
0 X
0 K
N
72 750.68 558 750.68 2 L
2 H
N
72 75.33 558 75.33 2 L
0.25 H
2 Z
N
0 10 Q
(1) 547.44 61.23 T
(1) 552.44 61.23 T
0 12 Q
(Appendix II: Bibliography) 72 679.33 T
1 10 Q
([Bellovin]) 72 658.66 T
(Bellovin, Steven M., Merritt, Michael,) 171 658.66 T
(\322Limitations of the Kerberos Authentication System,\323) 171 647.66 T
2 F
(USENIX Confer) 171 636.66 T
(ence Pr) 235.32 636.66 T
(oceedings) 265.75 636.66 T
1 F
(, USENIX Associatiion, Berkeley) 305.72 636.66 T
(, CA, January 1991.) 440.25 636.66 T
([DES]) 72 617.66 T
(Data Encryption Standard,) 171 617.66 T
(Federal Information Processing Standard Publication 46-1,) 171 606.66 T
(National Bureau of Standards, U.S. Department of Commerce,, January 22, 1988.) 171 595.66 T
([Dif) 72 576.66 T
(\336e]) 88.47 576.66 T
(Dif) 171 576.66 T
(\336e, W) 184.14 576.66 T
(. and Hellman, M.E.,) 207.65 576.66 T
(\322New Directions in Cryptography) 171 565.66 T
(,\323) 306.09 565.66 T
2 F
(IEEE T) 171 554.66 T
(ransactions on Information Theory) 200.15 554.66 T
1 F
(, V) 339.71 554.66 T
(olume IT) 350.63 554.66 T
(-22, Number 6, November) 386.63 554.66 T
(, 1976.) 491.98 554.66 T
([DTS]) 72 535.66 T
(Digital Equipment Corporation,) 171 535.66 T
(Digital T) 171 524.66 T
(ime Service Functional Speci\336cation V) 207.02 524.66 T
(ersion T) 363.03 524.66 T
(.1.0.5,) 395.33 524.66 T
(1989.) 171 513.66 T
([ONC]) 72 494.66 T
(ONC/NFS T) 171 494.66 T
(echnology Guide) 221.11 494.66 T
(Sun Microsystems, Inc., Fall 1992.) 171 483.66 T
([RFC1014]) 72 464.66 T
(Sun Microsystems, Inc.,) 171 464.66 T
(RFC 1014,) 171 453.66 T
(\322XDR: External Data Representation Standard,\323) 171 442.66 T
(June 1987.) 171 431.66 T
([RFC1057]) 72 412.66 T
(Sun Microsystems, Inc.,) 171 412.66 T
(RFC 1057,) 171 401.66 T
(\322RPC: Remote Procedure Call Protocol speci\336cation: V) 171 390.66 T
(ersion 2,\323) 393.65 390.66 T
(June, 1988.) 171 379.66 T
([RFC1059]) 72 360.66 T
(Mills, D.L.,) 171 360.66 T
(RFC 1059,) 171 349.66 T
(\322Network T) 171 338.66 T
(ime Protocol \050version 1\051 speci\336cation and implementation,\323) 218.66 338.66 T
(July) 171 327.66 T
(, 1988.) 187.01 327.66 T
([RFC1) 72 308.66 T
(1) 98.85 308.66 T
(19]) 103.47 308.66 T
(Mills, D.L.,) 171 308.66 T
(RFC 1) 171 297.66 T
(1) 197.02 297.66 T
(19,) 201.64 297.66 T
(\322Network T) 171 286.66 T
(ime Protocol \050version 2\051 speci\336cation and implementation,\323) 218.66 286.66 T
(September) 171 275.66 T
(, 1989.) 213.35 275.66 T
([RFC1305]) 72 256.66 T
(Mills, D.L.,) 171 256.66 T
(RFC 1305,) 171 245.66 T
(\322Network T) 171 234.66 T
(ime Protocol \050V) 218.66 234.66 T
(ersion 3\051: Speci\336cation, implementation, and analysis,\323) 281.96 234.66 T
(March, 1992.) 171 223.66 T
([Steiner]) 72 204.66 T
(Steiner) 171 204.66 T
(, Jennifer G, Neuman, Clif) 198.91 204.66 T
(ford, and Schiller) 305.05 204.66 T
(, Jef) 374.32 204.66 T
(frey J.) 390.79 204.66 T
(\322Kerberos: An Authentication Service for Open Network Systems,.\323) 171 193.66 T
2 F
(USENIX Confer) 171 182.66 T
(ence Pr) 235.32 182.66 T
(oceedings) 265.75 182.66 T
1 F
(, USENIX Association, Berkeley) 305.72 182.66 T
(, CA, June 1988.) 437.47 182.66 T
FMENDPAGE
%%EndPage: "11" 11
%%Trailer
%%BoundingBox: 0 0 612 792
%%Pages: 12 -1
%%DocumentFonts: Helvetica-Bold
%%+ Times-Roman
%%+ Times-Italic
%%+ Courier
%%+ Times-Bold
%%+ Courier-Oblique
%%+ Symbol
%%+ Helvetica

home help back first fref pref prev next nref lref last post