]> WPIA git - gigi.git/blob - doc/specification.md
Merge "upd: remove 'browser install'"
[gigi.git] / doc / specification.md
1 = THIS DOCUMENT IS STILL WORK IN PROGRESS =
2
3 = Todo list =
4 == "Todo" (work in active code) ==
5
6 * Benchmarking (long time + load)
7
8 * review all date/time uses in order to watch over the timezone.
9
10 == Missing ==
11
12 * add email/domain ping
13   * check for domains allowed in policy
14   * black list for special domains not be use by user but through org
15 admins (e.g. adobe.com, 3m.com)
16     * Maybe use Alexa Top 1M as one source
17     * Use copies of DNS zones to identify new domains
18     * Use DNSRBLs to identify young domains
19   * List of well-known top level domains and Second-level sub domains
20 (cf. Public Suffix List below in references)
21 * OpenPGP integration
22 * think about org - certificates
23 * think about names. What are names? how many names? verify names?
24
25 == Makeup ==
26
27 ** Extract menu from template
28 * Separate content and design
29
30
31 = Software requirements / wishes =
32 == Generic ==
33 * Useable without Javascript enabled
34 * Features implemented in Javascript may only enhance features already
35 accessible without Javascript
36 * All pages presented to the user must be HTML5-compliant
37 * All stylesheets must be valid CSS3
38 * All used scripts should be JavaScript/ECMAScript 1.6 or compatible
39 * For security reasons enforced by HSTS/CSP, the following restrictions
40 for included content apply
41   * No inline Javascript
42   * No inline CSS
43   * Stylesheets, images, scripts are only allowed from a special
44 "static" subdomain
45
46 == Notifications ==
47 * Mail notifications from the system should use OpenPGP or S/MIME signatures
48
49 == Registration ==
50  * set names (tbd)
51  * set DoB (default: not set) (has to be before current date - not older
52 than 150 years, check for 29.2.?) (if underage: special ack?) INO: Why
53 not 120 year, which should be sufficent? (People are getting older, not
54 younger ... You know?)
55  * set email(s) - at least one has to be set, primary needs to be set (tbd)
56  * selection of allowed login methods (default: yes for PW and cert)
57   * if PW login is allowed: set PW (tbd)  (always initially required as
58 it is hard to issue certificates directly on signup?) ES: If you could
59 do the email-check in the same session that is not mandatory. Even IF it
60 is, this could be done with a 1-time-PW from the mail. - Maybe the
61 complete step could be moved to AFTER the first email-check. It would
62 make more sense, and one could add more explanation and a link to
63 generate said certificate or whatever
64   * selection if pw-recovery per questions should be possible
65 (explanatory text!)
66    * if yes: pw-recovery q&a have to be set
67  * confirmation that data was entered truthfully and recap of RLO at
68 this stage
69  * Policy acceptance
70
71 == Login/authentication ==
72 * Separate Session scope for "www", "secure" and "api"
73 * Authenticate with email and password ("www" only)
74 * Authenticate with client certificate ("secure" + "api")
75 * Authenticate (temporary) with one-time access token (special
76 operations like revocation) (new feature)
77 * Option to switch off/on authentication methods (new feature)
78 * Option to selectively grant permissions to certain types of
79 credentials only (e.g. pw login may only verify someone, while cert XY
80 may do anything, SE interface with cert only) (new feature) ES: I think
81 Benny was speaking about a user setting, while INO was speaking about a
82 fixed global setting - this are two different things!
83 * Reset password by security questions and mail (?? probably not
84 [recommended in all situations])
85 * Option to switch off/on pw recovery per security questions (new feature)
86 * Reset password by verification
87 * Policy acceptance at login, if current version of Policies was not accepted by
88 user before
89
90 === Account Flags (tbd: collect further (new) flags) ===
91 most should contain dates when set/removed - needed for account log and
92 audit
93 * Activated (Initial Account Activation Mail received)
94 * Agent Test passed (FD: virtual = live calculation)
95 * Agent (FD: virtual = live calculation)
96 * blocked Agent
97 * Policies accepted (virtual)
98 * blocked account
99 * deleted account
100 * PW login allowed (Global for Account)
101 * Cert login allowed (Global for Account, per Cert flags may set actual
102 permissions)
103 * PW Recovery function disabled
104 * PW Reset Required
105 * code signing allowed (Maybe better suited as a Permission for audit of
106 Dates)
107 * official nick name allowed (maybe needed for another new feature)
108 * nick name allowed (maybe needed for another new feature)
109 * announcements (general, country, regional, 200km) set
110 * involved in arbitration case (probably virtual, as additional
111 information has to be stored for those entries)
112
113 === Special Account Permissions and Groups ===
114 TBL: Group [ID{AI/PK}, Name{S}]
115 TBL: GroupMembership [ID{AI/PK}, User{Ref(User)}, Group{Ref(Group)}]
116 TBL: Permission [ID{AI/PK}, Name{S}, ReportTo{S}]
117 TBL: UserPermissions [ID{AI/PK}, User{Ref(User)},
118 Permission{Ref(Permission)}, Action{E(Grant,Revoke)}, Date{Date}]
119 TBL: GroupPermissions [ID{AI/PK}, Group{Ref(Group)},
120 Permission{Ref(Permission)}, Action{E(Grant,Revoke)}, Date{Date}]
121
122 * Used for special permissions e.g. in support interface, mass mailings
123 * Additionally groups members with additional obligations (e.g. PP-Test)
124
125 * manual setting of permissions has to appear in personal and admin-log
126
127 == personal details (names, DoB) ==
128 * Change personal details (names, DoB) (only if not verified)
129  * after each change, the user has to state, to have those names entered
130 in official documents
131 * maybe adding/removing of non-official nick-name allowed at any time
132 (new feature)
133 * Allow multiple names that can be verified independently (new) -
134 something like this should be clarified with the VO at least, better to
135 get it fixed clearly in an updated VPol (in general VPol does allow for this
136 at the moment, but people do not know about this)
137 * Allow to enter
138  * 1 name - with a confirmation that one only has exactly one name part
139  * Title? FN+ LN+ Suffix? marked as non-verifiable Nick? (could be used
140 for internal processes) - with a confirmation that those are covered by
141 at least one official document owned by the member/potential member
142 * GUI should (until further notice) allow only exactly ONE name (with
143 multiple name-parts) to be entered for an account
144 * Names containing a Nickname component MUST NOT be primary names for an
145 account (BB: Who did the striking? and Why?)
146 * official nicknames may be used, if switched on based on an verification
147 by support
148 * else nicknames may only be displayed as an addition and MAY NOT be verified
149 TBL: Name: [ID{AI/PK}, UID{Ref(User}},
150 TBL: NameComponent [ID{AI/PK}, Name{Ref(Name)}, Order{I},
151 Type{E[One,Firstname,Lastname,Title,Suffix,Nick,OfficialNick]},
152 Verifiable{B}, Value{S}, Context{S}, Points{I,Cached}]
153
154
155 === Domain/email pinging ===
156 * re-ping domains regularly
157   * Domains by automated variants like (see MoPad devDomainPing)
158     * text files at certain locations
159     * DNS TXT records
160     * opening ssl connections
161
162 * configure types of pinging
163 * show previous pings with results. -> for support all, for member only
164 during their ownership (new feature)
165 * show status of the various pings and next scheduled events (new feature)
166 * Domain Pings record account ownership at time of ping (new feature)
167 * domain dispute (transfer of domains)
168   * New owner files "Domain Dispute"
169   * Old Owner receives mail with options to Accept, Decline or report
170 (to support) this claim
171   * If Accepted domain is transferred (and existing certificates
172 referencing this domain revoked) [New feature: Old owner may specify
173 which ones, confirmed by new owner]
174   * If any certificates should be kept, new owner is asked to confirm
175 (within certain amount of time) INO: There should be NO handover of cert
176 when moving domains (Needs discussion, new feature, maybe Policy Change
177 required)
178   * Only after all certificates have either been revoked or been
179 confirmed by the new owner, the domain is finally transferred over.
180   * If the transfer is Declined, no transfer is performed.
181   * If the transfer is reported, information on both parties is sent to
182 support, including a description of the case (entered by the old owner
183 when reporting)
184 * email ping
185   * For emails on a domain within the account
186     * Reachability of the mail accounts is tried within random intervals
187 (silent)
188     * If an email by our system is sent and properly accepted by the
189 receiving system, next try for explicit ping is postponed. (maximum
190 postponing of explicit check for about 1 year using this method) ES: has
191 big issues with a) grace period as it removes a big part of security
192 that we want to provide and b) automated contend-less mails as we
193 declare to not address members without reason - a ping would not be
194 considered a reason by our members BB: Outside the grace period the
195 email is considered unconfirmed, and no explicit ping is triggered, but
196 an active operation using this email address will cause a ping mail to
197 be sent. The main reason for this is to reduce the number of ping mails
198 sent when multiple certificates are issued in a given time span (UNDER
199 HEAVY DISCUSSION)
200     * If any email address is failing for a certain time, schedule it to
201 be explicitly checked by a ping mail on next use in a certificate
202     * a member should be able to initiate a ping mail
203     * support should be able to initiate a ping (admin-log!)
204     * If this explicit ping mail (with its included token/link) is not
205 confirmed in a reasonable time, a revalidation of the accompanying
206 domain is triggered, including a note to explicitly revalidate the
207 failing address)
208     * permanent failing pings should be reported to primary email
209 address once
210     * permanent failing pings should be displayed after a login (as
211 recent notifications)
212   * For separate mail accounts (outside of domains that are part of an
213 account):
214     * If regular mails from the system are properly received, postpone
215 automatic checking by at most one year (see ES's and BB's comments above)
216   * send information/ping email before each certificate creation to
217 affected email(s),
218     * this mail may be repeated if unsuccessful, but
219     * HAS TO be successful eventually to complete the issuing of the
220 certificate for the affected email
221     * selection per general setting if such mails must be confirmed
222 before the completion of the certificate issuing
223     * failures have to be displayed directly and in logs
224     * permanent failures have to be reported to primary email address once
225     * permanent failures should be displayed after a login (as recent
226 notifications)
227   * option to inform primary email, also (general setting + selectable
228 at certificate issue time)
229
230 == Certificate Management ==
231 * List all issued certificates per kind
232 * Revoke issued certificates
233 * renew certificates (re-issue a previous CSR) INO: what is if the old
234 CSR does not meet the requiremnts any more eg. weak keys -> Prefill of
235 the CreateCert-Dialog with the existing data for the cert/csr
236 * select md (sha2-512, sha2-384, sha2-256, sha3-512, whirlpool?, ...)
237 * select duration up to maximum allowed for member
238 * select (verified) name components / acronyms thereof
239 * select (ping-approved) domains / email-addresses
240 * select class (up to what is allowed for member)
241 * select if allowed for login as described above @ login
242 * change comment of certificate
243
244 MAYBE: * schedule to issue certificates for a day in the next two weeks.
245 (Should require someone who knows what he's doing, requires experienced
246 agent)
247
248 Notification Mail about new certificate may include link for revocation
249 (new feature)
250
251 Process for issuing a certificate:
252 1. Upload CSR / Generate key in Browser
253    (That's actually step 2)1a.for browser generation: selection for
254 names, emails, domains, certificate root
255 2. Confirm values and if necessary modify them
256 3. Select additional settings (login, comments, ...) and validity interval
257 4. confirm policies + confirm the issuing of the certificate as shown
258 (do 1a to 4 in one form? - Could be done with JS enabled)
259 5. send information (ping) mail to affected address (& primary if
260 selected), display failures + potential abort
261 6. Show Progress Page with JS hinting when it is done / otherwise using
262 redirects in HTML
263 7. Display a page with the final Certificate and details about it.
264
265 Process of re-issuing certificate:
266 1. click certificate (this creates the form-process)
267 2. review all previous-entered settings. (inputs will be re-checked when
268 sent: is name still valid/etc. still have all rights.)
269 3. rest as above, formulations adapted to re-issuing
270
271 === Certificate types ===
272 * Email certificates (include email (+ real name if points>=50)
273 (+codesigning if enabled && Agent)
274 * Domain certificates (include domain name + SANs (+real name if
275 points>=50))
276 * Organisation Email certificates
277 * Organisation Domain certificates
278 * Split more templates (e.g. Email from Code Signing)
279
280 === Verification management ===
281 * Verify a member
282   * enter email address + DoB
283     * if correct:
284       * if member was verified before by this agent:
285         * most recent verification overrides previous ones
286       * if there was no previous verification by the agent over the member:
287         * names shown [has to be defined in more detail]
288         * DoB shown
289         * primary email shown
290         * confirmation that names + DoB could be verified were official
291 documents
292         * select if TTP [further details TBD]
293         * free-text-field: location of verification meeting - default: empty - needs to be filled
294         * date of verification selection, default: non selected (not before DoB, not after current date+13h) - needs to be set
295           INO: Current Date UTC + 12 h
296           BB: (13h, cause of timezones with +13h)
297         * confirmation that member has accepted the policies
298         * confirmation box, that VPol was followed
299         * Policy acceptance box for agent
300     * if not correct independent of which was wrong:
301       * option to write an automated email to the member that the agent tried to verify the member
302 * View all verifications received/done
303   * points, locations, dates of verification, dates of verification entered, name of agent/member, revocations
304 * show how my points are calculated
305   * as member, as agent
306 * search for agents/etc (what exactly is this community-thing)
307   * Search for agent is referred to seperate site
308 * What is about multiple verifications for the same member -> only last verification should count. (New Feature)
309 * Experience Points only for the last of such re-verifications (New Features)
310
311 === Organisation management ===
312
313 * rethink!
314   * what needs to be done?
315   * what needs to be possible?
316   * how much is this used?
317 * The Org area can be shifted back for now.
318
319 Roles:
320 * OrgAgent: can create and administer the OrgAccounts, administer: add and delete OrgAdmin, add and delete Org Domains, does not have access to the certs
321 * OrgMaster: can see the Org account data; add/remove other OrgMasters and OrgAdmins
322 * OrgAdmin: can see the org account data; is able to administer the certs
323 * SE: is able to see account data, revoke certs (new feature)
324
325 Cert Creation:
326 * Client Cert with form
327 * Client Cert with CSR (New feature)
328 * Client Cert with multiple email addresses
329 * Multiple Client Certs via file upload and result download (create e.g. 10 certs with one upload) (New Feature)
330 * revoke cert via file upload, e.g. file with to email addresses all certs to these addresses will be revoked. (New Feature)
331
332 * Filter on client cert page (new feature)
333
334 * Domain Cert with CSR
335
336 * Org Account History
337   * Org account full history visible by OrgAdmins, SE via Ticket Number
338   * Org Account history only account information without cert history by OrgAgent
339
340 * OrgAgent should be able to perform an IsAssuer check.
341
342
343
344 === OpenPGP key signing ===
345 * if points >= 50 allow signing of OpenPGP key with real name, no comment field, matching email in account.
346 * UserIDs on key to be signed user-selectable.
347 * Expiry date: selectable up to maximum allowed
348 * re-signing without need to uploade key again
349 * Policy acceptance needed for all signatures
350 * lookup of keys on keyserver (if present)
351 * Ensure key has basic cryptographic security:
352   * conformant to normal certificate's requirements
353   * valid key material
354
355 === Signer interface ===
356 * database based
357 * allow multiple signer instances
358 * job table
359
360 === SE management (not finished) ===
361 * nothing happens without support ticket id (that is verified?) <- ES:
362 currently the basic account can be seen without a ticket number
363   * Support Ticket, Arbitration; see existing software on this <- ES:
364 currently other tickets are allowed, too, but I see no need, as one of
365 both should be needed (there will always be a support ticket number, if
366 support is addressed as such - there should be no need for anybody to
367 neither go this way nor through arbitration (arbitration may have
368 reasons to go directly to a supporter but has the authority to do so)
369 * every action on a member will cause an email to be sent to him and the
370 action is being logged. <- the mail should be optional (to primary
371 address) and only once in a given time frame/login, as a supporter may
372 need to do more than one thing at a time
373 * View/edit users personal details (even if verified)
374 * set account flags (code signing, Agent status, block of account, org-admin, support, team memberships)
375 * delete/invalidate verifications
376 * revoke certificates, pgp-key signatures, both should be possible for single certificates/keys or for all certificates/keys
377 * "delete" account
378
379 === automated (outside of a current process) information mails to members ===
380  * certificate(s)/signature expires within the next 14 days (combined or separate)
381
382 === "mass mails" interface (new feature) ===
383   * access only for critical team (or other restricted personal controlled by arbitration)
384   * arbitration case number needed (maybe announcement flags could be allowed for support case numbers or motions, as well)
385   * requester has to be set (identified by email)
386   * text-field for subject
387   * text-field for mail-content
388   * one of the following three should be possible for selection of recipients:
389     * sql-query
390     * list of email addresses
391     * list of account-ids
392     * selection field if this should be noted in account-logs of recipients
393     * announcement flag (general, ...)
394
395 === Statisics ===
396
397 * running total for current year
398   * verifications
399   * new members
400   * new agents
401   * lost members
402   * active agents (at least one verification according to the verification date of the current year)
403   * active members (who got their latest verification in the current year)
404
405 * running total for last 12 months per month
406   * verifications
407   * new member
408   * new agents
409   * lost members
410   * new certs
411   * revoked certs
412   * active agents / members
413
414 * Grand Total
415   * members
416   * verifications
417   * granted VP
418   * user >= 50 and <99 VP
419   * agent candidates
420   * agents
421   * issued client certs
422   * active client certs
423   * revoked client certs
424   * issued server certs
425   * active server certs
426   * revoked server certs
427   * issued org client certs
428   * active org client certs
429   * revoked org client certs
430   * issued org server certs
431   * active org server certs
432   * revoked org server certs
433   * issued gpg certs
434   * active gpg certs
435   * revoked gpg certs
436
437 * yearly statistics
438   * verifications
439   * new member
440   * new agents
441   * lost members
442   * new certs
443   * revoked certs
444   * active agents (at least one verification according to the verification date of the current year)
445   * active members
446
447 access statistic data via API e.g. verifications per year is needed for coaudit database
448
449 the active members may be relevant for any decision in the regard how long verifications need be valid and if they need to be renewed.
450
451 === Premission Review mails (monthly?) ===
452 * Regular check and report of permissions for various groups of people
453   INO: currently quarterly
454
455 === Tools ===
456 * csr/crt inspector
457 * + lookup OCSP/CRL status.
458 * OpenPGP key inspector (Yup, we need one)
459 * Database Editor CLI tool for crit to update records (and their checksums/timestamping)