Blame


1 d93fca6a 2005-02-11 devnull .TH FACTOTUM 4
2 d93fca6a 2005-02-11 devnull .SH NAME
3 d93fca6a 2005-02-11 devnull factotum \- authentication agent
4 d93fca6a 2005-02-11 devnull .SH SYNOPSIS
5 d93fca6a 2005-02-11 devnull .B factotum
6 d93fca6a 2005-02-11 devnull [
7 d93fca6a 2005-02-11 devnull .B -DdkSun
8 d93fca6a 2005-02-11 devnull ] [
9 d93fca6a 2005-02-11 devnull .B -a authaddr
10 d93fca6a 2005-02-11 devnull ] [
11 d93fca6a 2005-02-11 devnull .B -s
12 d93fca6a 2005-02-11 devnull .I srvname
13 977b25a7 2020-08-14 rsc ]
14 d93fca6a 2005-02-11 devnull .\" [
15 d93fca6a 2005-02-11 devnull .\" .B -m
16 d93fca6a 2005-02-11 devnull .\" .I mtpt
17 d93fca6a 2005-02-11 devnull .\" ]
18 d93fca6a 2005-02-11 devnull .PP
19 d93fca6a 2005-02-11 devnull .B factotum
20 d93fca6a 2005-02-11 devnull .B -g
21 d93fca6a 2005-02-11 devnull .IB attribute = value
22 d93fca6a 2005-02-11 devnull .B ...
23 d93fca6a 2005-02-11 devnull .IB attribute ?
24 d93fca6a 2005-02-11 devnull .B ...
25 d93fca6a 2005-02-11 devnull .\" .PP
26 d93fca6a 2005-02-11 devnull .\" .B auth/fgui
27 d93fca6a 2005-02-11 devnull .SH DESCRIPTION
28 d93fca6a 2005-02-11 devnull .I Factotum
29 d93fca6a 2005-02-11 devnull is a user-level file system that
30 d93fca6a 2005-02-11 devnull acts as the authentication agent for a user.
31 d93fca6a 2005-02-11 devnull It does so by managing a set of
32 d93fca6a 2005-02-11 devnull .IR keys .
33 d93fca6a 2005-02-11 devnull A key is a collection of information used to authenticate a particular action.
34 d93fca6a 2005-02-11 devnull Stored as a list of
35 d93fca6a 2005-02-11 devnull .IB attribute = value
36 d93fca6a 2005-02-11 devnull pairs, a key typically contains a user, an authentication domain, a protocol, and
37 d93fca6a 2005-02-11 devnull some secret data.
38 d93fca6a 2005-02-11 devnull .PP
39 d93fca6a 2005-02-11 devnull .I Factotum
40 d93fca6a 2005-02-11 devnull presents the following files:
41 d93fca6a 2005-02-11 devnull .TF needkey
42 d93fca6a 2005-02-11 devnull .TP
43 d93fca6a 2005-02-11 devnull .B rpc
44 d93fca6a 2005-02-11 devnull each open represents a new private channel to
45 d93fca6a 2005-02-11 devnull .I factotum
46 d93fca6a 2005-02-11 devnull .TP
47 d93fca6a 2005-02-11 devnull .B proto
48 d93fca6a 2005-02-11 devnull when read lists the protocols available
49 d93fca6a 2005-02-11 devnull .TP
50 d93fca6a 2005-02-11 devnull .B confirm
51 d93fca6a 2005-02-11 devnull for confiming the use of key
52 d93fca6a 2005-02-11 devnull .TP
53 d93fca6a 2005-02-11 devnull .B needkey
54 d93fca6a 2005-02-11 devnull allows external programs to control the addition of new keys
55 d93fca6a 2005-02-11 devnull .TP
56 d93fca6a 2005-02-11 devnull .B log
57 d93fca6a 2005-02-11 devnull a log of actions
58 d93fca6a 2005-02-11 devnull .TP
59 d93fca6a 2005-02-11 devnull .B ctl
60 d93fca6a 2005-02-11 devnull for maintaining keys; when read, it returns a list of keys.
61 d93fca6a 2005-02-11 devnull For secret attributes, only the attribute name follow by a
62 d93fca6a 2005-02-11 devnull .L ?
63 d93fca6a 2005-02-11 devnull is returned.
64 d93fca6a 2005-02-11 devnull .PD
65 d93fca6a 2005-02-11 devnull .PP
66 d93fca6a 2005-02-11 devnull In any authentication, the caller typically acts as a client
67 d93fca6a 2005-02-11 devnull and the callee as a server. The server determines
68 d93fca6a 2005-02-11 devnull the authentication domain, sometimes after a negotiation with
69 d93fca6a 2005-02-11 devnull the client. Authentication always requires the client to
70 d93fca6a 2005-02-11 devnull prove its identity to the server. Under some protocols, the
71 d93fca6a 2005-02-11 devnull authentication is mutual.
72 d93fca6a 2005-02-11 devnull Proof is accomplished using secret information kept by factotum
73 d93fca6a 2005-02-11 devnull in conjunction with a cryptographic protocol.
74 d93fca6a 2005-02-11 devnull .PP
75 d93fca6a 2005-02-11 devnull .I Factotum
76 d93fca6a 2005-02-11 devnull can act in the role of client for any process possessing the
77 d93fca6a 2005-02-11 devnull same user id as it. For select protocols such as
78 d93fca6a 2005-02-11 devnull .B p9sk1
79 d93fca6a 2005-02-11 devnull it can also act as a client for other processes provided
80 d93fca6a 2005-02-11 devnull its user id may speak for the other process' user id (see
81 d93fca6a 2005-02-11 devnull Plan 9's
82 977b25a7 2020-08-14 rsc .IR authsrv (6)).
83 d93fca6a 2005-02-11 devnull .I Factotum
84 d93fca6a 2005-02-11 devnull can act in the role of server for any process.
85 d93fca6a 2005-02-11 devnull .PP
86 d93fca6a 2005-02-11 devnull .IR Factotum 's
87 d93fca6a 2005-02-11 devnull structure is independent of
88 d93fca6a 2005-02-11 devnull any particular authentication protocol.
89 d93fca6a 2005-02-11 devnull .I Factotum
90 d93fca6a 2005-02-11 devnull supports the following protocols:
91 d93fca6a 2005-02-11 devnull .TF mschap
92 d93fca6a 2005-02-11 devnull .TP
93 d93fca6a 2005-02-11 devnull .B p9any
94 d93fca6a 2005-02-11 devnull a metaprotocol used to negotiate which actual protocol to use.
95 d93fca6a 2005-02-11 devnull .TP
96 d93fca6a 2005-02-11 devnull .B p9sk1
97 d93fca6a 2005-02-11 devnull a Plan 9 shared key protocol.
98 d93fca6a 2005-02-11 devnull .TP
99 d93fca6a 2005-02-11 devnull .B p9sk2
100 d93fca6a 2005-02-11 devnull a variant of
101 d93fca6a 2005-02-11 devnull .B p9sk1.
102 d93fca6a 2005-02-11 devnull .TP
103 d93fca6a 2005-02-11 devnull .B p9cr
104 d93fca6a 2005-02-11 devnull a Plan 9 protocol that can use either
105 d93fca6a 2005-02-11 devnull .B p9sk1
106 d93fca6a 2005-02-11 devnull keys or SecureID tokens.
107 d93fca6a 2005-02-11 devnull .TP
108 d93fca6a 2005-02-11 devnull .B apop
109 d93fca6a 2005-02-11 devnull the challenge/response protocol used by POP3 mail servers.
110 d93fca6a 2005-02-11 devnull .TP
111 d93fca6a 2005-02-11 devnull .B cram
112 d93fca6a 2005-02-11 devnull the challenge/response protocol also used by POP3 mail servers.
113 d93fca6a 2005-02-11 devnull .TP
114 d93fca6a 2005-02-11 devnull .B chap
115 d93fca6a 2005-02-11 devnull the challenge/response protocols used by PPP and PPTP.
116 d93fca6a 2005-02-11 devnull .TP
117 9bce1d1e 2005-02-13 devnull .B dsa
118 9bce1d1e 2005-02-13 devnull DSA signatures, used by SSH
119 9bce1d1e 2005-02-13 devnull .TP
120 d93fca6a 2005-02-11 devnull .B mschap
121 d93fca6a 2005-02-11 devnull a proprietary Microsoft protocol also used by PPP and PPTP.
122 d93fca6a 2005-02-11 devnull .TP
123 d93fca6a 2005-02-11 devnull .B rsa
124 9bce1d1e 2005-02-13 devnull RSA encryption and signatures, used by SSH and TLS.
125 d93fca6a 2005-02-11 devnull .TP
126 d93fca6a 2005-02-11 devnull .B pass
127 d93fca6a 2005-02-11 devnull passwords in the clear.
128 d93fca6a 2005-02-11 devnull .TP
129 d93fca6a 2005-02-11 devnull .B vnc
130 d32deab1 2020-08-16 rsc .MR vnc (1) 's
131 d93fca6a 2005-02-11 devnull challenge/response.
132 d93fca6a 2005-02-11 devnull .TP
133 d93fca6a 2005-02-11 devnull .B wep
134 d93fca6a 2005-02-11 devnull WEP passwords for wireless ethernet cards.
135 d93fca6a 2005-02-11 devnull .PD
136 9bce1d1e 2005-02-13 devnull The ``Protocols'' section below describes these protocols in more detail.
137 d93fca6a 2005-02-11 devnull .PP
138 9bce1d1e 2005-02-13 devnull The options to
139 9bce1d1e 2005-02-13 devnull .I factotum
140 9bce1d1e 2005-02-13 devnull are:
141 d93fca6a 2005-02-11 devnull .TP
142 d93fca6a 2005-02-11 devnull .B \-a
143 d93fca6a 2005-02-11 devnull supplies the address of the authentication server to use.
144 d93fca6a 2005-02-11 devnull Without this option, it will attempt to find an authentication server by
145 d93fca6a 2005-02-11 devnull querying the connection server, the file
146 d93fca6a 2005-02-11 devnull .BR <mtpt>/ndb ,
147 d93fca6a 2005-02-11 devnull and finally the network database in
148 d93fca6a 2005-02-11 devnull .BR /lib/ndb .
149 d93fca6a 2005-02-11 devnull .TP
150 d93fca6a 2005-02-11 devnull .B \-m
151 d93fca6a 2005-02-11 devnull specifies the mount point to use, by default
152 d93fca6a 2005-02-11 devnull .BR /mnt .
153 d93fca6a 2005-02-11 devnull .TP
154 d93fca6a 2005-02-11 devnull .B \-s
155 d93fca6a 2005-02-11 devnull specifies the service name to use.
156 d93fca6a 2005-02-11 devnull Without this option,
157 d93fca6a 2005-02-11 devnull .I factotum
158 d93fca6a 2005-02-11 devnull does not create a service file in
159 d93fca6a 2005-02-11 devnull .BR /srv .
160 d93fca6a 2005-02-11 devnull .TP
161 d93fca6a 2005-02-11 devnull .B \-D
162 d93fca6a 2005-02-11 devnull turns on 9P tracing, written to standard error.
163 d93fca6a 2005-02-11 devnull .TP
164 d93fca6a 2005-02-11 devnull .B \-d
165 d93fca6a 2005-02-11 devnull turns on debugging, written to standard error.
166 d93fca6a 2005-02-11 devnull .TP
167 d93fca6a 2005-02-11 devnull .B \-g
168 d93fca6a 2005-02-11 devnull causes the agent to prompt for the key, write it
169 d93fca6a 2005-02-11 devnull to the
170 d93fca6a 2005-02-11 devnull .B ctl
171 d93fca6a 2005-02-11 devnull file, and exit.
172 d93fca6a 2005-02-11 devnull The agent will prompt for values for any of the
173 d93fca6a 2005-02-11 devnull attributes ending with a question mark
174 d93fca6a 2005-02-11 devnull .RB ( ? )
175 d93fca6a 2005-02-11 devnull and will append all the supplied
176 d93fca6a 2005-02-11 devnull .I attribute = value
177 d93fca6a 2005-02-11 devnull pairs. See the section on key templates below.
178 d93fca6a 2005-02-11 devnull .TP
179 d93fca6a 2005-02-11 devnull .B \-n
180 d93fca6a 2005-02-11 devnull don't look for a secstore.
181 d93fca6a 2005-02-11 devnull .TP
182 d93fca6a 2005-02-11 devnull .B \-S
183 d93fca6a 2005-02-11 devnull indicates that the agent is running on a
184 d93fca6a 2005-02-11 devnull cpu server. On starting, it will attempt to get a
185 d93fca6a 2005-02-11 devnull .B 9psk1
186 d93fca6a 2005-02-11 devnull key from NVRAM using
187 d93fca6a 2005-02-11 devnull .B readnvram
188 d93fca6a 2005-02-11 devnull (see
189 d32deab1 2020-08-16 rsc .MR authsrv (3) ),
190 d93fca6a 2005-02-11 devnull prompting for anything it needs.
191 d93fca6a 2005-02-11 devnull It will never subsequently prompt for a
192 d93fca6a 2005-02-11 devnull key that it doesn't have.
193 d93fca6a 2005-02-11 devnull This option is typically used by
194 d93fca6a 2005-02-11 devnull the kernel at boot time.
195 d93fca6a 2005-02-11 devnull .TP
196 d93fca6a 2005-02-11 devnull .B \-k
197 d93fca6a 2005-02-11 devnull causes the NVRAM to be written.
198 d93fca6a 2005-02-11 devnull It is only valid with the
199 d93fca6a 2005-02-11 devnull .B \-S
200 d93fca6a 2005-02-11 devnull option.
201 d93fca6a 2005-02-11 devnull This option is typically used by
202 d93fca6a 2005-02-11 devnull the kernel at boot time.
203 d93fca6a 2005-02-11 devnull .TP
204 d93fca6a 2005-02-11 devnull .B \-u
205 d93fca6a 2005-02-11 devnull causes the agent to prompt for user
206 d93fca6a 2005-02-11 devnull id and writes it to
207 d93fca6a 2005-02-11 devnull .BR /dev/hostowner .
208 d93fca6a 2005-02-11 devnull It is mutually exclusive with
209 d93fca6a 2005-02-11 devnull .B \-k
210 d93fca6a 2005-02-11 devnull and
211 d93fca6a 2005-02-11 devnull .BR \-S .
212 d93fca6a 2005-02-11 devnull This option is typically used by
213 d93fca6a 2005-02-11 devnull the kernel at boot time.
214 d93fca6a 2005-02-11 devnull .PD
215 d93fca6a 2005-02-11 devnull .\" .PP
216 d93fca6a 2005-02-11 devnull .\" .I Fgui
217 d93fca6a 2005-02-11 devnull .\" is a graphic user interface for confirming key usage and
218 d93fca6a 2005-02-11 devnull .\" entering new keys. It hides the window in which it starts
219 d93fca6a 2005-02-11 devnull .\" and waits reading requests from
220 d93fca6a 2005-02-11 devnull .\" .B confirm
221 d93fca6a 2005-02-11 devnull .\" and
222 d93fca6a 2005-02-11 devnull .\" .BR needkey .
223 d93fca6a 2005-02-11 devnull .\" For each requests, it unhides itself and waits for
224 d93fca6a 2005-02-11 devnull .\" user input.
225 d93fca6a 2005-02-11 devnull .\" See the sections on key confirmation and key prompting below.
226 d93fca6a 2005-02-11 devnull .SS "Key Tuples
227 d93fca6a 2005-02-11 devnull .PP
228 d93fca6a 2005-02-11 devnull A
229 d93fca6a 2005-02-11 devnull .I "key tuple
230 977b25a7 2020-08-14 rsc is a space delimited list of
231 d93fca6a 2005-02-11 devnull .IB attribute = value
232 d93fca6a 2005-02-11 devnull pairs. An attribute whose name begins with an exclamation point
233 d93fca6a 2005-02-11 devnull .RB ( ! )
234 d93fca6a 2005-02-11 devnull does not appear when reading the
235 d93fca6a 2005-02-11 devnull .B ctl
236 d93fca6a 2005-02-11 devnull file.
237 9bce1d1e 2005-02-13 devnull Here are some examples:
238 d93fca6a 2005-02-11 devnull .EX
239 9bce1d1e 2005-02-13 devnull proto=p9sk1 dom=avayalabs.com user=presotto !password=lucent
240 d93fca6a 2005-02-11 devnull proto=apop server=mit.edu user=rsc !password=nerdsRus
241 9bce1d1e 2005-02-13 devnull proto=pass user=tb service=ssh !password=does.it.matter
242 d93fca6a 2005-02-11 devnull .EE
243 9bce1d1e 2005-02-13 devnull The ``Protocols'' section below describes the attributes
244 9bce1d1e 2005-02-13 devnull specific to each supported protocol.
245 d93fca6a 2005-02-11 devnull .PP
246 d93fca6a 2005-02-11 devnull All keys can have additional attibutes that act either as comments
247 d93fca6a 2005-02-11 devnull or as selectors to distinguish them in the
248 d32deab1 2020-08-16 rsc .MR auth (3)
249 d93fca6a 2005-02-11 devnull library calls.
250 d93fca6a 2005-02-11 devnull .PP
251 d93fca6a 2005-02-11 devnull The factotum owner can use any key stored by factotum.
252 d93fca6a 2005-02-11 devnull Any key may have one or more
253 d93fca6a 2005-02-11 devnull .B owner
254 d93fca6a 2005-02-11 devnull attributes listing the users who can use the key
255 d93fca6a 2005-02-11 devnull as though they were the owner.
256 d93fca6a 2005-02-11 devnull For example, the TLS and SSH host keys on a server
257 d93fca6a 2005-02-11 devnull often have an attribute
258 d93fca6a 2005-02-11 devnull .B owner=*
259 d93fca6a 2005-02-11 devnull to allow any user (and in particular,
260 d93fca6a 2005-02-11 devnull .L none )
261 d93fca6a 2005-02-11 devnull to run the TLS or SSH server-side protocol.
262 d93fca6a 2005-02-11 devnull .PP
263 d93fca6a 2005-02-11 devnull Any key may have a
264 d93fca6a 2005-02-11 devnull .B role
265 d93fca6a 2005-02-11 devnull attribute for restricting how it can be used.
266 d93fca6a 2005-02-11 devnull If this attribute is missing, the key can be used in any role.
267 9bce1d1e 2005-02-13 devnull Common values are:
268 d93fca6a 2005-02-11 devnull .TP
269 d93fca6a 2005-02-11 devnull .B client
270 d93fca6a 2005-02-11 devnull for authenticating outbound calls
271 d93fca6a 2005-02-11 devnull .TP
272 d93fca6a 2005-02-11 devnull .B server
273 d93fca6a 2005-02-11 devnull for authenticating inbound calls
274 d93fca6a 2005-02-11 devnull .TP
275 d93fca6a 2005-02-11 devnull .B speaksfor
276 d93fca6a 2005-02-11 devnull for authenticating processes whose
277 d93fca6a 2005-02-11 devnull user id does not match
278 d93fca6a 2005-02-11 devnull .IR factotum 's.
279 9bce1d1e 2005-02-13 devnull .TP
280 9bce1d1e 2005-02-13 devnull .B encrypt
281 9bce1d1e 2005-02-13 devnull for encrypting data
282 9bce1d1e 2005-02-13 devnull .TP
283 9bce1d1e 2005-02-13 devnull .B decrypt
284 9bce1d1e 2005-02-13 devnull for decrypting data
285 9bce1d1e 2005-02-13 devnull .TP
286 9bce1d1e 2005-02-13 devnull .B sign
287 9bce1d1e 2005-02-13 devnull for cryptographically signing data
288 9bce1d1e 2005-02-13 devnull .TP
289 9bce1d1e 2005-02-13 devnull .B verify
290 9bce1d1e 2005-02-13 devnull for verifying cryptographic signatures
291 d93fca6a 2005-02-11 devnull .PD
292 d93fca6a 2005-02-11 devnull .PP
293 d93fca6a 2005-02-11 devnull Whenever
294 d93fca6a 2005-02-11 devnull .I factotum
295 d93fca6a 2005-02-11 devnull runs as a server, it must have a
296 d93fca6a 2005-02-11 devnull .B p9sk1
297 d93fca6a 2005-02-11 devnull key in order to communicate with the authentication
298 d93fca6a 2005-02-11 devnull server for validating passwords and challenge/responses of
299 d93fca6a 2005-02-11 devnull other users.
300 d93fca6a 2005-02-11 devnull .SS "Key Templates
301 d93fca6a 2005-02-11 devnull Key templates are used by routines that interface to
302 d93fca6a 2005-02-11 devnull .I factotum
303 d93fca6a 2005-02-11 devnull such as
304 d93fca6a 2005-02-11 devnull .B auth_proxy
305 d93fca6a 2005-02-11 devnull and
306 d93fca6a 2005-02-11 devnull .B auth_challenge
307 d93fca6a 2005-02-11 devnull (see
308 d32deab1 2020-08-16 rsc .MR auth (3) )
309 d93fca6a 2005-02-11 devnull to specify which key and protocol to use for an authentication.
310 977b25a7 2020-08-14 rsc Like a key tuple, a key template is also a list of
311 d93fca6a 2005-02-11 devnull .IB attribute = value
312 d93fca6a 2005-02-11 devnull pairs.
313 d93fca6a 2005-02-11 devnull It must specify at least the protocol and enough
314 d93fca6a 2005-02-11 devnull other attributes to uniquely identify a key, or set of keys, to use.
315 d93fca6a 2005-02-11 devnull The keys chosen are those that match all the attributes specified
316 d93fca6a 2005-02-11 devnull in the template. The possible attribute/value formats are:
317 d93fca6a 2005-02-11 devnull .TP 1i
318 d93fca6a 2005-02-11 devnull .IB attr = val
319 d93fca6a 2005-02-11 devnull The attribute
320 d93fca6a 2005-02-11 devnull .I attr
321 d93fca6a 2005-02-11 devnull must exist in the key and its value must exactly
322 d93fca6a 2005-02-11 devnull match
323 d93fca6a 2005-02-11 devnull .I val
324 d93fca6a 2005-02-11 devnull .TP 1i
325 d93fca6a 2005-02-11 devnull .IB attr ?
326 d93fca6a 2005-02-11 devnull The attribute
327 d93fca6a 2005-02-11 devnull .I attr
328 d93fca6a 2005-02-11 devnull must exist in the key but its value doesn't matter.
329 d93fca6a 2005-02-11 devnull .TP 1i
330 d93fca6a 2005-02-11 devnull .I attr
331 d93fca6a 2005-02-11 devnull The attribute
332 d93fca6a 2005-02-11 devnull .I attr
333 d93fca6a 2005-02-11 devnull must exist in the key with a null value
334 d93fca6a 2005-02-11 devnull .PD
335 d93fca6a 2005-02-11 devnull .PP
336 d93fca6a 2005-02-11 devnull Key templates are also used by factotum to request a key either via
337 d93fca6a 2005-02-11 devnull an RPC error or via the
338 d93fca6a 2005-02-11 devnull .B needkey
339 d93fca6a 2005-02-11 devnull interface.
340 d93fca6a 2005-02-11 devnull The possible attribute/value formats are:
341 d93fca6a 2005-02-11 devnull .TP 1i
342 d93fca6a 2005-02-11 devnull .IB attr = val
343 d93fca6a 2005-02-11 devnull This pair must remain unchanged
344 d93fca6a 2005-02-11 devnull .TP 1i
345 d93fca6a 2005-02-11 devnull .IB attr ?
346 d93fca6a 2005-02-11 devnull This attribute needs a value
347 d93fca6a 2005-02-11 devnull .TP 1i
348 d93fca6a 2005-02-11 devnull .I attr
349 d93fca6a 2005-02-11 devnull The pair must remain unchanged
350 d93fca6a 2005-02-11 devnull .PD
351 d93fca6a 2005-02-11 devnull .SS "Control and Key Management
352 d93fca6a 2005-02-11 devnull .PP
353 d93fca6a 2005-02-11 devnull A number of messages can be written to the control file.
354 d93fca6a 2005-02-11 devnull The mesages are:
355 d93fca6a 2005-02-11 devnull .TP
356 d93fca6a 2005-02-11 devnull .B "key \fIattribute-value-list\fP
357 d93fca6a 2005-02-11 devnull add a new key. This will replace any old key whose
358 d93fca6a 2005-02-11 devnull public, i.e. non ! attributes, match.
359 d93fca6a 2005-02-11 devnull .TP
360 d93fca6a 2005-02-11 devnull .B "delkey \fIattribute-value-list\fP
361 d93fca6a 2005-02-11 devnull delete a key whose attributes match those given.
362 d93fca6a 2005-02-11 devnull .TP
363 d93fca6a 2005-02-11 devnull .B debug
364 d93fca6a 2005-02-11 devnull toggle debugging on and off, i.e., the debugging also
365 d93fca6a 2005-02-11 devnull turned on by the
366 d93fca6a 2005-02-11 devnull .B \-d
367 d93fca6a 2005-02-11 devnull option.
368 d93fca6a 2005-02-11 devnull .PP
369 d93fca6a 2005-02-11 devnull By default when factotum starts it looks for a
370 d32deab1 2020-08-16 rsc .MR secstore (1)
371 d93fca6a 2005-02-11 devnull account on $auth for the user and, if one exists,
372 d93fca6a 2005-02-11 devnull prompts for a secstore password in order to fetch
373 d93fca6a 2005-02-11 devnull the file
374 d93fca6a 2005-02-11 devnull .IR factotum ,
375 d93fca6a 2005-02-11 devnull which should contain control file commands.
376 d93fca6a 2005-02-11 devnull An example would be
377 d93fca6a 2005-02-11 devnull .EX
378 d93fca6a 2005-02-11 devnull key dom=x.com proto=p9sk1 user=boyd !hex=26E522ADE2BBB2A229
379 d93fca6a 2005-02-11 devnull key proto=rsa service=ssh size=1024 ek=3B !dk=...
380 d93fca6a 2005-02-11 devnull .EE
381 d93fca6a 2005-02-11 devnull where the first line sets a password for
382 d93fca6a 2005-02-11 devnull challenge/response authentication, strong against dictionary
383 d93fca6a 2005-02-11 devnull attack by being a long random string, and the second line
384 d93fca6a 2005-02-11 devnull sets a public/private keypair for ssh authentication,
385 d93fca6a 2005-02-11 devnull generated by
386 d93fca6a 2005-02-11 devnull .B ssh_genkey
387 d93fca6a 2005-02-11 devnull (see
388 d32deab1 2020-08-16 rsc .MR ssh (1) ).
389 d93fca6a 2005-02-11 devnull .PD
390 d93fca6a 2005-02-11 devnull .SS "Confirming key use
391 d93fca6a 2005-02-11 devnull .PP
392 977b25a7 2020-08-14 rsc The
393 d93fca6a 2005-02-11 devnull .B confirm
394 d93fca6a 2005-02-11 devnull file provides a connection from
395 d93fca6a 2005-02-11 devnull .I factotum
396 d93fca6a 2005-02-11 devnull to a confirmation server, normally the program
397 d93fca6a 2005-02-11 devnull .IR auth/fgui .
398 d93fca6a 2005-02-11 devnull Whenever a key with the
399 d93fca6a 2005-02-11 devnull .B confirm
400 977b25a7 2020-08-14 rsc attribute is used,
401 d93fca6a 2005-02-11 devnull .I factotum
402 d93fca6a 2005-02-11 devnull requires confirmation of its use. If no process has
403 d93fca6a 2005-02-11 devnull .B confirm
404 d93fca6a 2005-02-11 devnull opened, use of the key will be denied.
405 d93fca6a 2005-02-11 devnull However, if the file is opened a request can be read from it
406 d93fca6a 2005-02-11 devnull with the following format:
407 d93fca6a 2005-02-11 devnull .PP
408 d93fca6a 2005-02-11 devnull .B confirm
409 d93fca6a 2005-02-11 devnull .BI tag= tagno
410 d93fca6a 2005-02-11 devnull .I "<key template>
411 d93fca6a 2005-02-11 devnull .PP
412 d93fca6a 2005-02-11 devnull The reply, written back to
413 d93fca6a 2005-02-11 devnull .BR confirm ,
414 d93fca6a 2005-02-11 devnull consists of string:
415 d93fca6a 2005-02-11 devnull .PP
416 d93fca6a 2005-02-11 devnull .BI tag= tagno
417 d93fca6a 2005-02-11 devnull .BI answer= xxx
418 d93fca6a 2005-02-11 devnull .PP
419 d93fca6a 2005-02-11 devnull If
420 d93fca6a 2005-02-11 devnull .I xxx
421 d93fca6a 2005-02-11 devnull is the string
422 d93fca6a 2005-02-11 devnull .B yes
423 d93fca6a 2005-02-11 devnull then the use is confirmed and the authentication will proceed.
424 d93fca6a 2005-02-11 devnull Otherwise, it fails.
425 d93fca6a 2005-02-11 devnull .PP
426 d93fca6a 2005-02-11 devnull .B Confirm
427 d93fca6a 2005-02-11 devnull is exclusive open and can only be opened by a process with
428 d93fca6a 2005-02-11 devnull the same user id as
429 d93fca6a 2005-02-11 devnull .IR factotum .
430 d93fca6a 2005-02-11 devnull .SS "Prompting for keys
431 d93fca6a 2005-02-11 devnull .PP
432 977b25a7 2020-08-14 rsc The
433 d93fca6a 2005-02-11 devnull .B needkey
434 d93fca6a 2005-02-11 devnull file provides a connection from
435 d93fca6a 2005-02-11 devnull .I factotum
436 d93fca6a 2005-02-11 devnull to a key server, normally the program
437 d93fca6a 2005-02-11 devnull .IR auth/fgui .
438 d93fca6a 2005-02-11 devnull Whenever
439 d93fca6a 2005-02-11 devnull .I factotum
440 d93fca6a 2005-02-11 devnull needs a new key, it first checks to see if
441 d93fca6a 2005-02-11 devnull .B needkey
442 d93fca6a 2005-02-11 devnull is opened. If it isn't, it returns a error to its client.
443 d93fca6a 2005-02-11 devnull If the file is opened a request can be read from it
444 d93fca6a 2005-02-11 devnull with the following format:
445 d93fca6a 2005-02-11 devnull .PP
446 d93fca6a 2005-02-11 devnull .B needkey
447 d93fca6a 2005-02-11 devnull .BI tag= tagno
448 d93fca6a 2005-02-11 devnull .I "<key template>
449 d93fca6a 2005-02-11 devnull .PP
450 d93fca6a 2005-02-11 devnull It is up to the reader to then query the user for any missing fields,
451 d93fca6a 2005-02-11 devnull write the key tuple into the
452 d93fca6a 2005-02-11 devnull .B ctl
453 d93fca6a 2005-02-11 devnull file, and then reply by writing into the
454 d93fca6a 2005-02-11 devnull .B needkey
455 d93fca6a 2005-02-11 devnull file the string:
456 d93fca6a 2005-02-11 devnull .PP
457 d93fca6a 2005-02-11 devnull .BI tag= tagno
458 d93fca6a 2005-02-11 devnull .PP
459 d93fca6a 2005-02-11 devnull .B Needkey
460 d93fca6a 2005-02-11 devnull is exclusive open and can only be opened by a process with
461 d93fca6a 2005-02-11 devnull the same user id as
462 d93fca6a 2005-02-11 devnull .IR factotum .
463 d93fca6a 2005-02-11 devnull .SS "The RPC Protocol
464 d93fca6a 2005-02-11 devnull Authentication is performed by
465 d93fca6a 2005-02-11 devnull .IP 1)
466 d93fca6a 2005-02-11 devnull opening
467 d93fca6a 2005-02-11 devnull .BR rpc
468 d93fca6a 2005-02-11 devnull .IP 2)
469 d93fca6a 2005-02-11 devnull setting up the protocol and key to be used (see the
470 d93fca6a 2005-02-11 devnull .B start
471 d93fca6a 2005-02-11 devnull RPC below),
472 d93fca6a 2005-02-11 devnull .IP 3)
473 d93fca6a 2005-02-11 devnull shuttling messages back and forth between
474 d93fca6a 2005-02-11 devnull .IR factotum
475 d93fca6a 2005-02-11 devnull and the other party (see the
476 d93fca6a 2005-02-11 devnull .B read
477 d93fca6a 2005-02-11 devnull and
478 d93fca6a 2005-02-11 devnull .B write
479 d93fca6a 2005-02-11 devnull RPC's) until done
480 d93fca6a 2005-02-11 devnull .IP 4)
481 d93fca6a 2005-02-11 devnull if successful, reading back an
482 d93fca6a 2005-02-11 devnull .I AuthInfo
483 d93fca6a 2005-02-11 devnull structure (see
484 d32deab1 2020-08-16 rsc .MR authsrv (3) ).
485 d93fca6a 2005-02-11 devnull .PP
486 d93fca6a 2005-02-11 devnull The RPC protocol is normally embodied by one of the
487 d93fca6a 2005-02-11 devnull routines in
488 d32deab1 2020-08-16 rsc .MR auth (3) .
489 d93fca6a 2005-02-11 devnull We describe it here should anyone want to extend
490 d93fca6a 2005-02-11 devnull the library.
491 d93fca6a 2005-02-11 devnull .PP
492 d93fca6a 2005-02-11 devnull An RPC consists of writing a request message to
493 d93fca6a 2005-02-11 devnull .B rpc
494 d93fca6a 2005-02-11 devnull followed by reading a reply message back.
495 d93fca6a 2005-02-11 devnull RPC's are strictly ordered; requests and replies of
496 d93fca6a 2005-02-11 devnull different RPC's cannot be interleaved.
497 d93fca6a 2005-02-11 devnull Messages consist of a verb, a single space, and data.
498 d93fca6a 2005-02-11 devnull The data format depends on the verb. The request verbs are:
499 d93fca6a 2005-02-11 devnull .TP
500 d93fca6a 2005-02-11 devnull .B "start \fIattribute-value-list\fP
501 d93fca6a 2005-02-11 devnull start a new authentication.
502 d93fca6a 2005-02-11 devnull .I Attribute-value-pair-list
503 d93fca6a 2005-02-11 devnull must include a
504 d93fca6a 2005-02-11 devnull .B proto
505 d93fca6a 2005-02-11 devnull attribute, a
506 d93fca6a 2005-02-11 devnull .B role
507 d93fca6a 2005-02-11 devnull attribute with value
508 d93fca6a 2005-02-11 devnull .B client
509 d93fca6a 2005-02-11 devnull or
510 d93fca6a 2005-02-11 devnull .BR server ,
511 d93fca6a 2005-02-11 devnull and enough other attibutes to uniquely identify a key to use.
512 d93fca6a 2005-02-11 devnull A
513 d93fca6a 2005-02-11 devnull .B start
514 d93fca6a 2005-02-11 devnull RPC is required before any others. The possible replies are:
515 d93fca6a 2005-02-11 devnull .RS
516 d93fca6a 2005-02-11 devnull .TP
517 d93fca6a 2005-02-11 devnull .B ok
518 d93fca6a 2005-02-11 devnull start succeeded.
519 d93fca6a 2005-02-11 devnull .TP
520 d93fca6a 2005-02-11 devnull .B "error \fIstring\fP
521 d93fca6a 2005-02-11 devnull where
522 d93fca6a 2005-02-11 devnull .I string
523 d93fca6a 2005-02-11 devnull is the reason.
524 d93fca6a 2005-02-11 devnull .RE
525 d93fca6a 2005-02-11 devnull .PD
526 d93fca6a 2005-02-11 devnull .TP
527 d93fca6a 2005-02-11 devnull .B read
528 d93fca6a 2005-02-11 devnull get data from
529 d93fca6a 2005-02-11 devnull .I factotum
530 d93fca6a 2005-02-11 devnull to send to the other party. The possible replies are:
531 d93fca6a 2005-02-11 devnull .RS
532 d93fca6a 2005-02-11 devnull .TP
533 d93fca6a 2005-02-11 devnull .B ok
534 d93fca6a 2005-02-11 devnull read succeeded, this is zero length message.
535 d93fca6a 2005-02-11 devnull .TP
536 d93fca6a 2005-02-11 devnull .B "ok \fIdata\fP
537 d93fca6a 2005-02-11 devnull read succeeded, the data follows the space and is
538 d93fca6a 2005-02-11 devnull unformatted.
539 d93fca6a 2005-02-11 devnull .TP
540 d93fca6a 2005-02-11 devnull .B "done
541 d93fca6a 2005-02-11 devnull authentication has succeeded, no further RPC's are
542 d93fca6a 2005-02-11 devnull necessary
543 d93fca6a 2005-02-11 devnull .TP
544 d93fca6a 2005-02-11 devnull .B "done haveai
545 d93fca6a 2005-02-11 devnull authentication has succeeded, an
546 d93fca6a 2005-02-11 devnull .B AuthInfo
547 d93fca6a 2005-02-11 devnull structure (see
548 d32deab1 2020-08-16 rsc .MR auth (3) )
549 d93fca6a 2005-02-11 devnull can be retrieved with an
550 d93fca6a 2005-02-11 devnull .B authinfo
551 d93fca6a 2005-02-11 devnull RPC
552 d93fca6a 2005-02-11 devnull .TP
553 d93fca6a 2005-02-11 devnull .B "phase \fIstring\fP
554 d93fca6a 2005-02-11 devnull its not your turn to read, get some data from
555 d93fca6a 2005-02-11 devnull the other party and return it with a write RPC.
556 d93fca6a 2005-02-11 devnull .TP
557 d93fca6a 2005-02-11 devnull .B "error \fIstring\fP
558 d93fca6a 2005-02-11 devnull authentication failed,
559 d93fca6a 2005-02-11 devnull .I string
560 d93fca6a 2005-02-11 devnull is the reason.
561 d93fca6a 2005-02-11 devnull .TP
562 d93fca6a 2005-02-11 devnull .B "protocol not started
563 d93fca6a 2005-02-11 devnull a
564 d93fca6a 2005-02-11 devnull .B start
565 d93fca6a 2005-02-11 devnull RPC needs to precede reads and writes
566 d93fca6a 2005-02-11 devnull .TP
567 d93fca6a 2005-02-11 devnull .B "needkey \fIattribute-value-list\fP
568 d93fca6a 2005-02-11 devnull a key matching the argument is needed. This argument
569 d93fca6a 2005-02-11 devnull may be passed as an argument to
570 d93fca6a 2005-02-11 devnull .I factotum
571 d93fca6a 2005-02-11 devnull .B -g
572 d93fca6a 2005-02-11 devnull in order to prompt for a key. After that, the
573 d93fca6a 2005-02-11 devnull authentication may proceed, i.e., the read restarted.
574 d93fca6a 2005-02-11 devnull .PD
575 d93fca6a 2005-02-11 devnull .RE
576 d93fca6a 2005-02-11 devnull .TP
577 d93fca6a 2005-02-11 devnull .B "write \fIdata\fP
578 d93fca6a 2005-02-11 devnull send data from the other party to
579 d93fca6a 2005-02-11 devnull .IR factotum .
580 d93fca6a 2005-02-11 devnull The possible replies are:
581 d93fca6a 2005-02-11 devnull .RS
582 d93fca6a 2005-02-11 devnull .TP
583 d93fca6a 2005-02-11 devnull .B "ok
584 d93fca6a 2005-02-11 devnull the write succeeded
585 d93fca6a 2005-02-11 devnull .TP
586 d93fca6a 2005-02-11 devnull .B "needkey \fIattribute-value-list\fP
587 d93fca6a 2005-02-11 devnull see above
588 d93fca6a 2005-02-11 devnull .TP
589 d93fca6a 2005-02-11 devnull .B "toosmall \fIn\fP
590 d93fca6a 2005-02-11 devnull the write is too short, get more data from the
591 d93fca6a 2005-02-11 devnull other party and retry the write.
592 d93fca6a 2005-02-11 devnull .I n
593 d93fca6a 2005-02-11 devnull specifies the maximun total number of bytes.
594 d93fca6a 2005-02-11 devnull .TP
595 d93fca6a 2005-02-11 devnull .B "phase \fIstring\fP
596 d93fca6a 2005-02-11 devnull its not your turn to write, get some data from
597 d93fca6a 2005-02-11 devnull .I factotum
598 d93fca6a 2005-02-11 devnull first.
599 d93fca6a 2005-02-11 devnull .TP
600 d93fca6a 2005-02-11 devnull .B "done
601 d93fca6a 2005-02-11 devnull see above
602 d93fca6a 2005-02-11 devnull .TP
603 d93fca6a 2005-02-11 devnull .B "done haveai
604 d93fca6a 2005-02-11 devnull see above
605 d93fca6a 2005-02-11 devnull .RE
606 9bce1d1e 2005-02-13 devnull .TP
607 9bce1d1e 2005-02-13 devnull .B readhex\fR, \fPwritehex
608 9bce1d1e 2005-02-13 devnull like
609 9bce1d1e 2005-02-13 devnull .B read
610 9bce1d1e 2005-02-13 devnull and
611 9bce1d1e 2005-02-13 devnull .BR write ,
612 9bce1d1e 2005-02-13 devnull except that an
613 9bce1d1e 2005-02-13 devnull .B ok
614 9bce1d1e 2005-02-13 devnull response to
615 9bce1d1e 2005-02-13 devnull .B readhex
616 9bce1d1e 2005-02-13 devnull returns the data encoded as
617 9bce1d1e 2005-02-13 devnull a long hexadecimal string,
618 9bce1d1e 2005-02-13 devnull and the argument to
619 9bce1d1e 2005-02-13 devnull .B writehex
620 9bce1d1e 2005-02-13 devnull is expected to be a long hexadecimal string.
621 9bce1d1e 2005-02-13 devnull These are useful for manually debugging of binary protocols.
622 d93fca6a 2005-02-11 devnull .TP
623 d93fca6a 2005-02-11 devnull .B authinfo
624 977b25a7 2020-08-14 rsc retrieve the AuthInfo structure.
625 d93fca6a 2005-02-11 devnull The possible replies are:
626 d93fca6a 2005-02-11 devnull .RS
627 d93fca6a 2005-02-11 devnull .TP
628 d93fca6a 2005-02-11 devnull .B "ok \fIdata\fP
629 d93fca6a 2005-02-11 devnull .I data
630 d93fca6a 2005-02-11 devnull is a marshaled form of the AuthInfo structure.
631 d93fca6a 2005-02-11 devnull .TP
632 d93fca6a 2005-02-11 devnull .B "error \fIstring\fP
633 d93fca6a 2005-02-11 devnull where
634 d93fca6a 2005-02-11 devnull .I string
635 d93fca6a 2005-02-11 devnull is the reason for the error.
636 d93fca6a 2005-02-11 devnull .PD
637 d93fca6a 2005-02-11 devnull .RE
638 d93fca6a 2005-02-11 devnull .TP
639 d93fca6a 2005-02-11 devnull .B attr
640 d93fca6a 2005-02-11 devnull retrieve the attributes used in the
641 d93fca6a 2005-02-11 devnull .B start
642 d93fca6a 2005-02-11 devnull RPC.
643 d93fca6a 2005-02-11 devnull The possible replies are:
644 d93fca6a 2005-02-11 devnull .RS
645 d93fca6a 2005-02-11 devnull .TP
646 d93fca6a 2005-02-11 devnull .B "ok \fIattribute-value-list\fP
647 d93fca6a 2005-02-11 devnull .TP
648 d93fca6a 2005-02-11 devnull .B "error \fIstring\fP
649 d93fca6a 2005-02-11 devnull where
650 d93fca6a 2005-02-11 devnull .I string
651 d93fca6a 2005-02-11 devnull is the reason for the error.
652 d93fca6a 2005-02-11 devnull .PD
653 d93fca6a 2005-02-11 devnull .RE
654 9bce1d1e 2005-02-13 devnull .SS Protocols
655 9bce1d1e 2005-02-13 devnull Factotum supports many authentication types, each
656 9bce1d1e 2005-02-13 devnull with its own roles and required key attributes.
657 9bce1d1e 2005-02-13 devnull .PP
658 9bce1d1e 2005-02-13 devnull .IR P9any ,
659 9bce1d1e 2005-02-13 devnull .IR p9sk1 ,
660 9bce1d1e 2005-02-13 devnull .IR p9sk2 ,
661 9bce1d1e 2005-02-13 devnull and
662 9bce1d1e 2005-02-13 devnull .I p9cr
663 9bce1d1e 2005-02-13 devnull are used to authenticate to Plan 9 systems;
664 977b25a7 2020-08-14 rsc valid
665 9bce1d1e 2005-02-13 devnull .BR role s
666 9bce1d1e 2005-02-13 devnull are
667 9bce1d1e 2005-02-13 devnull .B client
668 9bce1d1e 2005-02-13 devnull and
669 9bce1d1e 2005-02-13 devnull .BR server .
670 9bce1d1e 2005-02-13 devnull All require
671 9bce1d1e 2005-02-13 devnull .B proto=p9sk1
672 9bce1d1e 2005-02-13 devnull keys with
673 9bce1d1e 2005-02-13 devnull .BR user ,
674 9bce1d1e 2005-02-13 devnull .B dom
675 9bce1d1e 2005-02-13 devnull (authentication domain),
676 9bce1d1e 2005-02-13 devnull and
677 9bce1d1e 2005-02-13 devnull .B !password
678 9bce1d1e 2005-02-13 devnull attributes.
679 9bce1d1e 2005-02-13 devnull .PP
680 9bce1d1e 2005-02-13 devnull .I P9sk1
681 9bce1d1e 2005-02-13 devnull and
682 9bce1d1e 2005-02-13 devnull .I p9sk2
683 9bce1d1e 2005-02-13 devnull are the Plan 9 shared-key authentication protocols.
684 9bce1d1e 2005-02-13 devnull .I P9sk2
685 9bce1d1e 2005-02-13 devnull is a deprecated form of
686 9bce1d1e 2005-02-13 devnull .I p9sk1
687 9bce1d1e 2005-02-13 devnull that neglects to authenticate the server.
688 9bce1d1e 2005-02-13 devnull .PP
689 9bce1d1e 2005-02-13 devnull .I P9any
690 9bce1d1e 2005-02-13 devnull is a meta-protocol that negotiates a protocol
691 9bce1d1e 2005-02-13 devnull .RB ( p9sk1
692 9bce1d1e 2005-02-13 devnull or
693 9bce1d1e 2005-02-13 devnull .BR p9sk2 )
694 977b25a7 2020-08-14 rsc and an authentication domain and then invokes the
695 9bce1d1e 2005-02-13 devnull given protocol with a
696 9bce1d1e 2005-02-13 devnull .B dom=
697 9bce1d1e 2005-02-13 devnull attribute.
698 9bce1d1e 2005-02-13 devnull .PP
699 9bce1d1e 2005-02-13 devnull .IR P9any ,
700 9bce1d1e 2005-02-13 devnull .IR p9sk1 ,
701 9bce1d1e 2005-02-13 devnull and
702 9bce1d1e 2005-02-13 devnull .I p9sk2
703 9bce1d1e 2005-02-13 devnull are intended to be proxied via
704 9bce1d1e 2005-02-13 devnull .I auth_proxy
705 9bce1d1e 2005-02-13 devnull (see
706 d32deab1 2020-08-16 rsc .MR auth (3) ).
707 30f6ae14 2005-02-13 devnull .\" The protocols follow
708 30f6ae14 2005-02-13 devnull .\" .IR p9any (7)
709 30f6ae14 2005-02-13 devnull .\" and
710 30f6ae14 2005-02-13 devnull .\" .IR p9sk1 (7).
711 9bce1d1e 2005-02-13 devnull .\" XXX - write about how server keys are selected and used
712 9bce1d1e 2005-02-13 devnull .\" XXX - write about protocol itself
713 9bce1d1e 2005-02-13 devnull .\" XXX - write about server ai
714 9bce1d1e 2005-02-13 devnull .PP
715 9bce1d1e 2005-02-13 devnull .I P9cr
716 9bce1d1e 2005-02-13 devnull is a textual challenge-response protocol;
717 9bce1d1e 2005-02-13 devnull roles are
718 9bce1d1e 2005-02-13 devnull .B client
719 9bce1d1e 2005-02-13 devnull and
720 9bce1d1e 2005-02-13 devnull .BR server .
721 9bce1d1e 2005-02-13 devnull It uses
722 9bce1d1e 2005-02-13 devnull .I p9sk1
723 9bce1d1e 2005-02-13 devnull keys as described above.
724 9bce1d1e 2005-02-13 devnull The protocol with
725 9bce1d1e 2005-02-13 devnull .I factotum
726 9bce1d1e 2005-02-13 devnull is textual:
727 9bce1d1e 2005-02-13 devnull client writes a user name,
728 9bce1d1e 2005-02-13 devnull server responds with a challenge,
729 9bce1d1e 2005-02-13 devnull client writes a response,
730 9bce1d1e 2005-02-13 devnull server responds with
731 9bce1d1e 2005-02-13 devnull .B ok
732 9bce1d1e 2005-02-13 devnull or
733 9bce1d1e 2005-02-13 devnull .BR bad .
734 9bce1d1e 2005-02-13 devnull Typically this information is wrapped in other protocols
735 9bce1d1e 2005-02-13 devnull before being sent over the network.
736 9bce1d1e 2005-02-13 devnull .PP
737 9bce1d1e 2005-02-13 devnull .I Vnc
738 9bce1d1e 2005-02-13 devnull is the challenge-response protocol used by
739 d32deab1 2020-08-16 rsc .MR vnc (1) ;
740 9bce1d1e 2005-02-13 devnull valid roles are
741 9bce1d1e 2005-02-13 devnull .B client
742 9bce1d1e 2005-02-13 devnull and
743 9bce1d1e 2005-02-13 devnull .BR server .
744 9bce1d1e 2005-02-13 devnull The client protocol requires a
745 9bce1d1e 2005-02-13 devnull .B proto=vnc
746 9bce1d1e 2005-02-13 devnull key with attribute
747 9bce1d1e 2005-02-13 devnull .BR !password .
748 9bce1d1e 2005-02-13 devnull Conventionally, client keys also have
749 977b25a7 2020-08-14 rsc .B user
750 9bce1d1e 2005-02-13 devnull and
751 9bce1d1e 2005-02-13 devnull .B server
752 9bce1d1e 2005-02-13 devnull attributes.
753 9bce1d1e 2005-02-13 devnull The server protocol requires a
754 9bce1d1e 2005-02-13 devnull .I p9sk1
755 9bce1d1e 2005-02-13 devnull key as described above.
756 9bce1d1e 2005-02-13 devnull The protocol with
757 9bce1d1e 2005-02-13 devnull .I factotum
758 9bce1d1e 2005-02-13 devnull is the same as
759 9bce1d1e 2005-02-13 devnull .IR p9cr ,
760 9bce1d1e 2005-02-13 devnull except that the challenge and response are not textual.
761 9bce1d1e 2005-02-13 devnull .PP
762 9bce1d1e 2005-02-13 devnull .I Apop
763 9bce1d1e 2005-02-13 devnull and
764 9bce1d1e 2005-02-13 devnull .I cram
765 9bce1d1e 2005-02-13 devnull are challenge-response protocols typically
766 977b25a7 2020-08-14 rsc used to authenticate
767 9bce1d1e 2005-02-13 devnull to mail servers.
768 9bce1d1e 2005-02-13 devnull The client protocols require
769 9bce1d1e 2005-02-13 devnull .B proto=apop
770 9bce1d1e 2005-02-13 devnull or
771 9bce1d1e 2005-02-13 devnull .B proto=cram
772 9bce1d1e 2005-02-13 devnull keys with
773 9bce1d1e 2005-02-13 devnull .B user
774 9bce1d1e 2005-02-13 devnull and
775 9bce1d1e 2005-02-13 devnull .B !password
776 9bce1d1e 2005-02-13 devnull attributes.
777 977b25a7 2020-08-14 rsc Conventionally, client keys also have
778 9bce1d1e 2005-02-13 devnull .B server
779 9bce1d1e 2005-02-13 devnull attributes.
780 9bce1d1e 2005-02-13 devnull The server protocol requires a
781 9bce1d1e 2005-02-13 devnull .I p9sk1
782 9bce1d1e 2005-02-13 devnull key as described above.
783 9bce1d1e 2005-02-13 devnull The protocol with
784 9bce1d1e 2005-02-13 devnull .I factotum
785 9bce1d1e 2005-02-13 devnull is textual:
786 9bce1d1e 2005-02-13 devnull server writes a challenge of the form
787 9bce1d1e 2005-02-13 devnull .IB random @ domain \fR,
788 9bce1d1e 2005-02-13 devnull client responds with user name
789 9bce1d1e 2005-02-13 devnull and then a hexadecimal response
790 9bce1d1e 2005-02-13 devnull (two separate writes),
791 9bce1d1e 2005-02-13 devnull and then the server responds with
792 9bce1d1e 2005-02-13 devnull .B ok
793 9bce1d1e 2005-02-13 devnull or
794 9bce1d1e 2005-02-13 devnull .BR bad .
795 9bce1d1e 2005-02-13 devnull .PP
796 9bce1d1e 2005-02-13 devnull .I Chap
797 9bce1d1e 2005-02-13 devnull and
798 9bce1d1e 2005-02-13 devnull .I mschap
799 9bce1d1e 2005-02-13 devnull are challenge-response protocols used in PPP sessions;
800 9bce1d1e 2005-02-13 devnull valid roles are
801 9bce1d1e 2005-02-13 devnull .B client
802 9bce1d1e 2005-02-13 devnull and
803 9bce1d1e 2005-02-13 devnull .BR server .
804 9bce1d1e 2005-02-13 devnull The client protocols require
805 9bce1d1e 2005-02-13 devnull .B proto=chap
806 9bce1d1e 2005-02-13 devnull or
807 9bce1d1e 2005-02-13 devnull .B proto=mschap
808 9bce1d1e 2005-02-13 devnull keys with
809 9bce1d1e 2005-02-13 devnull .B user
810 9bce1d1e 2005-02-13 devnull and
811 9bce1d1e 2005-02-13 devnull .B !password
812 9bce1d1e 2005-02-13 devnull attributes.
813 9bce1d1e 2005-02-13 devnull Conventionally, client keys also have
814 9bce1d1e 2005-02-13 devnull .B server
815 9bce1d1e 2005-02-13 devnull attributes.
816 9bce1d1e 2005-02-13 devnull The server protocol requires a
817 9bce1d1e 2005-02-13 devnull .I p9sk1
818 9bce1d1e 2005-02-13 devnull key as described above.
819 9bce1d1e 2005-02-13 devnull The protocol with factotum is:
820 9bce1d1e 2005-02-13 devnull server writes an 8-byte binary challenge,
821 9bce1d1e 2005-02-13 devnull client responds with user name
822 9bce1d1e 2005-02-13 devnull and then a
823 9bce1d1e 2005-02-13 devnull .B Chapreply
824 9bce1d1e 2005-02-13 devnull or
825 9bce1d1e 2005-02-13 devnull .B MSchapreply
826 9bce1d1e 2005-02-13 devnull structure (defined in
827 9bce1d1e 2005-02-13 devnull .B <auth.h> ).
828 9bce1d1e 2005-02-13 devnull .PP
829 9bce1d1e 2005-02-13 devnull .I Pass
830 9bce1d1e 2005-02-13 devnull is a client-only protocol that hands out passwords
831 977b25a7 2020-08-14 rsc from
832 9bce1d1e 2005-02-13 devnull .B proto=pass
833 9bce1d1e 2005-02-13 devnull keys with
834 9bce1d1e 2005-02-13 devnull .B user
835 9bce1d1e 2005-02-13 devnull and
836 9bce1d1e 2005-02-13 devnull .B !password
837 9bce1d1e 2005-02-13 devnull attributes.
838 9bce1d1e 2005-02-13 devnull The protocol is a single read that returns
839 9bce1d1e 2005-02-13 devnull a string: a space-separated quoted user name and password
840 9bce1d1e 2005-02-13 devnull that can be parsed with
841 9bce1d1e 2005-02-13 devnull .I tokenize
842 9bce1d1e 2005-02-13 devnull (see
843 d32deab1 2020-08-16 rsc .MR getfields (3) ).
844 9bce1d1e 2005-02-13 devnull Conventionally, client keys have distinguishing attributes
845 9bce1d1e 2005-02-13 devnull like
846 9bce1d1e 2005-02-13 devnull .B service
847 9bce1d1e 2005-02-13 devnull and
848 9bce1d1e 2005-02-13 devnull .B server
849 9bce1d1e 2005-02-13 devnull that can be specified in the
850 9bce1d1e 2005-02-13 devnull .B start
851 9bce1d1e 2005-02-13 devnull message to select a key.
852 9bce1d1e 2005-02-13 devnull .PP
853 9bce1d1e 2005-02-13 devnull .I Wep
854 9bce1d1e 2005-02-13 devnull is a client-only pseudo-protocol that initializes the encryption
855 9bce1d1e 2005-02-13 devnull key on a wireless ethernet device.
856 9bce1d1e 2005-02-13 devnull It uses
857 9bce1d1e 2005-02-13 devnull .B proto=wep
858 9bce1d1e 2005-02-13 devnull keys with
859 9bce1d1e 2005-02-13 devnull .BR !key1 ,
860 9bce1d1e 2005-02-13 devnull .BR !key2 ,
861 9bce1d1e 2005-02-13 devnull or
862 9bce1d1e 2005-02-13 devnull .B !key3
863 977b25a7 2020-08-14 rsc attributes.
864 9bce1d1e 2005-02-13 devnull The protocol with
865 9bce1d1e 2005-02-13 devnull .I factotum
866 9bce1d1e 2005-02-13 devnull is:
867 9bce1d1e 2005-02-13 devnull the client writes a device name
868 9bce1d1e 2005-02-13 devnull that must begin with
869 9bce1d1e 2005-02-13 devnull .LR #l .
870 9bce1d1e 2005-02-13 devnull In response,
871 9bce1d1e 2005-02-13 devnull .I factotum
872 9bce1d1e 2005-02-13 devnull opens the device's control file, sets the wireless secret using the key,
873 9bce1d1e 2005-02-13 devnull and turns on encryption.
874 9bce1d1e 2005-02-13 devnull If the key has an
875 9bce1d1e 2005-02-13 devnull .B essid
876 977b25a7 2020-08-14 rsc attribute,
877 9bce1d1e 2005-02-13 devnull .I factotum
878 9bce1d1e 2005-02-13 devnull uses it to set the wireless station ID.
879 9bce1d1e 2005-02-13 devnull .PP
880 9bce1d1e 2005-02-13 devnull .I Rsa
881 9bce1d1e 2005-02-13 devnull is an implementation of the RSA protocol.
882 9bce1d1e 2005-02-13 devnull Valid roles are
883 9bce1d1e 2005-02-13 devnull .BR decrypt ,
884 9bce1d1e 2005-02-13 devnull .BR encrypt ,
885 9bce1d1e 2005-02-13 devnull .BR sign ,
886 9bce1d1e 2005-02-13 devnull and
887 9bce1d1e 2005-02-13 devnull .BR verify .
888 9bce1d1e 2005-02-13 devnull .I Rsa
889 9bce1d1e 2005-02-13 devnull uses
890 9bce1d1e 2005-02-13 devnull .B proto=rsa
891 9bce1d1e 2005-02-13 devnull keys with
892 9bce1d1e 2005-02-13 devnull .B ek
893 9bce1d1e 2005-02-13 devnull and
894 977b25a7 2020-08-14 rsc .B n
895 9bce1d1e 2005-02-13 devnull attributes, large integers specifying the public half
896 9bce1d1e 2005-02-13 devnull of the key.
897 9bce1d1e 2005-02-13 devnull If a key is to be used for decryption or signing,
898 9bce1d1e 2005-02-13 devnull then it must also have attributes
899 9bce1d1e 2005-02-13 devnull .BR !p ,
900 9bce1d1e 2005-02-13 devnull .BR !q ,
901 9bce1d1e 2005-02-13 devnull .BR !kp ,
902 9bce1d1e 2005-02-13 devnull .BR !kq ,
903 9bce1d1e 2005-02-13 devnull .BR !c2 ,
904 9bce1d1e 2005-02-13 devnull and
905 9bce1d1e 2005-02-13 devnull .BR !dk
906 9bce1d1e 2005-02-13 devnull specifying the private half of the key;
907 9bce1d1e 2005-02-13 devnull see
908 d32deab1 2020-08-16 rsc .MR rsa (3) .
909 9bce1d1e 2005-02-13 devnull Conventionally,
910 9bce1d1e 2005-02-13 devnull .I rsa
911 9bce1d1e 2005-02-13 devnull keys also have
912 9bce1d1e 2005-02-13 devnull .B service
913 9bce1d1e 2005-02-13 devnull attributes specifying the context in which the key is used:
914 977b25a7 2020-08-14 rsc .B ssh
915 9bce1d1e 2005-02-13 devnull (SSH version 1),
916 9bce1d1e 2005-02-13 devnull .B ssh-rsa
917 9bce1d1e 2005-02-13 devnull (SSH version 2),
918 9bce1d1e 2005-02-13 devnull or
919 9bce1d1e 2005-02-13 devnull .B tls
920 9bce1d1e 2005-02-13 devnull (SSL and TLS).
921 9bce1d1e 2005-02-13 devnull If an SSH key has a
922 9bce1d1e 2005-02-13 devnull .B comment
923 9bce1d1e 2005-02-13 devnull attribute, that comment is presented to remote SSH servers
924 9bce1d1e 2005-02-13 devnull during key negotiation.
925 9bce1d1e 2005-02-13 devnull The protocol for
926 9bce1d1e 2005-02-13 devnull encryption (decryption) is:
927 9bce1d1e 2005-02-13 devnull write the message, then read back the encrypted (decrypted) form.
928 9bce1d1e 2005-02-13 devnull The protocol for signing is:
929 9bce1d1e 2005-02-13 devnull write a hash of the actual message,
930 9bce1d1e 2005-02-13 devnull then read back the signature.
931 9bce1d1e 2005-02-13 devnull The protocol for verifying a signature is:
932 9bce1d1e 2005-02-13 devnull write the message hash,
933 9bce1d1e 2005-02-13 devnull write the purported signature,
934 9bce1d1e 2005-02-13 devnull then read back
935 9bce1d1e 2005-02-13 devnull .B ok
936 9bce1d1e 2005-02-13 devnull or
937 9bce1d1e 2005-02-13 devnull .B bad
938 9bce1d1e 2005-02-13 devnull telling whether the signature could be verified.
939 9bce1d1e 2005-02-13 devnull The hash defaults to SHA1 but can be specified by a
940 9bce1d1e 2005-02-13 devnull .B hash
941 9bce1d1e 2005-02-13 devnull attribute on the key.
942 9bce1d1e 2005-02-13 devnull Valid hash functions are
943 9bce1d1e 2005-02-13 devnull .B md5
944 9bce1d1e 2005-02-13 devnull and
945 9bce1d1e 2005-02-13 devnull .BR sha1 .
946 9bce1d1e 2005-02-13 devnull The hash function must be known to
947 9bce1d1e 2005-02-13 devnull .I factotum
948 9bce1d1e 2005-02-13 devnull because the signature encodes the type of hash used.
949 977b25a7 2020-08-14 rsc The
950 9bce1d1e 2005-02-13 devnull .B encrypt
951 9bce1d1e 2005-02-13 devnull and
952 9bce1d1e 2005-02-13 devnull .B verify
953 9bce1d1e 2005-02-13 devnull operations are included as a convenience;
954 9bce1d1e 2005-02-13 devnull .I factotum
955 9bce1d1e 2005-02-13 devnull is not using any private information to perform them.
956 9bce1d1e 2005-02-13 devnull .PP
957 9bce1d1e 2005-02-13 devnull .I Dsa
958 9bce1d1e 2005-02-13 devnull is an implementation of the NIST digital signature algorithm.
959 9bce1d1e 2005-02-13 devnull Valid roles are
960 9bce1d1e 2005-02-13 devnull .B sign
961 9bce1d1e 2005-02-13 devnull and
962 9bce1d1e 2005-02-13 devnull .BR verify .
963 9bce1d1e 2005-02-13 devnull It uses
964 9bce1d1e 2005-02-13 devnull .B proto=dsa
965 9bce1d1e 2005-02-13 devnull keys with
966 9bce1d1e 2005-02-13 devnull .BR p ,
967 9bce1d1e 2005-02-13 devnull .BR q ,
968 9bce1d1e 2005-02-13 devnull .BR alpha ,
969 9bce1d1e 2005-02-13 devnull and
970 9bce1d1e 2005-02-13 devnull .B key
971 9bce1d1e 2005-02-13 devnull attributes.
972 9bce1d1e 2005-02-13 devnull If the key is to be used for signing, it must also have a
973 9bce1d1e 2005-02-13 devnull .B !secret
974 9bce1d1e 2005-02-13 devnull attribute; see
975 d32deab1 2020-08-16 rsc .MR dsa (3) .
976 9bce1d1e 2005-02-13 devnull Conventionally,
977 9bce1d1e 2005-02-13 devnull .I dsa
978 9bce1d1e 2005-02-13 devnull keys
979 977b25a7 2020-08-14 rsc also have
980 9bce1d1e 2005-02-13 devnull .B service
981 9bce1d1e 2005-02-13 devnull attributes specifying the context in which the key is used:
982 9bce1d1e 2005-02-13 devnull .B ssh-dss
983 9bce1d1e 2005-02-13 devnull (SSH version 2)
984 9bce1d1e 2005-02-13 devnull is the only one.
985 9bce1d1e 2005-02-13 devnull If an SSH key has a
986 9bce1d1e 2005-02-13 devnull .B comment
987 9bce1d1e 2005-02-13 devnull attribute, that comment is presented to SSH servers during
988 9bce1d1e 2005-02-13 devnull key negotiation.
989 9bce1d1e 2005-02-13 devnull The protocol for signing and verifying
990 9bce1d1e 2005-02-13 devnull is the same as the RSA protocol.
991 9bce1d1e 2005-02-13 devnull Unlike
992 9bce1d1e 2005-02-13 devnull .IR rsa ,
993 9bce1d1e 2005-02-13 devnull the
994 9bce1d1e 2005-02-13 devnull .I dsa
995 977b25a7 2020-08-14 rsc protocol ignores the
996 9bce1d1e 2005-02-13 devnull .B hash
997 9bce1d1e 2005-02-13 devnull attribute; it always uses SHA1.
998 9bce1d1e 2005-02-13 devnull .PP
999 9bce1d1e 2005-02-13 devnull .I Httpdigest
1000 9bce1d1e 2005-02-13 devnull is a client-only MD5-based challenge-response protocol used in HTTP; see RFC 2617.
1001 9bce1d1e 2005-02-13 devnull It uses
1002 9bce1d1e 2005-02-13 devnull .B proto=httpdigest
1003 9bce1d1e 2005-02-13 devnull keys with
1004 9bce1d1e 2005-02-13 devnull .BR user ,
1005 9bce1d1e 2005-02-13 devnull .BR realm ,
1006 9bce1d1e 2005-02-13 devnull and
1007 9bce1d1e 2005-02-13 devnull .BR !password
1008 9bce1d1e 2005-02-13 devnull attributes.
1009 9bce1d1e 2005-02-13 devnull The protocol with factotum is textual:
1010 9bce1d1e 2005-02-13 devnull write the challenge, read the response.
1011 9bce1d1e 2005-02-13 devnull The challenge is a string with three space-separated fields
1012 9bce1d1e 2005-02-13 devnull .IR nonce ,
1013 9bce1d1e 2005-02-13 devnull .IR method ,
1014 9bce1d1e 2005-02-13 devnull and
1015 9bce1d1e 2005-02-13 devnull .IR uri ,
1016 9bce1d1e 2005-02-13 devnull parseable with
1017 9bce1d1e 2005-02-13 devnull .IR tokenize .
1018 9bce1d1e 2005-02-13 devnull The response is a hexadecimal string of length 32.
1019 d93fca6a 2005-02-11 devnull .SH SOURCE
1020 30f6ae14 2005-02-13 devnull .B \*9/src/cmd/auth/factotum
1021 30f6ae14 2005-02-13 devnull .SH SEE ALSO
1022 d32deab1 2020-08-16 rsc .MR ssh-agent (1)