summaryrefslogtreecommitdiffstats
path: root/design/hs_pki_architecture
blob: 6931e9450204a2f1511f936e37236892c8f04705 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
Hardware:
Root CA:
 ~raspi:
 + USB / integrated / SFF ICC reader
 + USB / external reader
  ~+ 5 additional USB for external ICC readers for bootstrap process to be more convinient
 + USB / storage for moving artifacts
 + Serial interface for I/O
 ~+ Dummy terminal (better) or USB keyboard + VGA

CA:
 ~raspi:
 + USB / integrated / SFF ICC reader
 + USB for KC
 + USB for audit log replication (or syslog dependency + offline backup)
 + network interface

KC:
 ~ USB reader for his workstation

Bootstraping Root CA (ca be Root CA, but other ICC readers through USB)
 * 2 ICC readers for Root_CA_ICC
 * 2 ICC readers for CA_ICC
 * 2 ICC readers for KC ICC 
 * 1 port for USB storage
Root CA
 * 1 Root CA ICC reader
 * 1 KC ICC
 * 1 for USB storage

Components:
 - Root CA ICC (javacard + nxp)
  * Root CA signing keypair
  * CA  keypair (for issuing KC certificates)

 - CA ICC (javacard + nxp)
  * CA signing keypair (for end-user/device certificate issuing)
  * CA server keypair (for communication between CA's)

 - CA tools/interfaces (go? python? java)

 - CA server (webservice API + gui + queue srvc)

 - KC ICC (javacard + NXP)
  * CA key share
  * KC Signing certificate (US CAC interface?)

 - KC tools (go? python? java)

 - Monitor ICC (javacard + NXP)

Roles:
 - Root CA:		Issue CA ceritifcates and KC certificates (at least N>2)
 - CA:			Issues end-user/device certificates (N>2)
 - Key Custodian:	PKI peptide control interface (N>2)
 - Key Custodian:	CA KC performing action in ceremony.
 - Master of Ceremony: 	PKI meta-peptide control interface for CA ceremonies. 
   			Should not be Key Custodian during ceremony. N=1
 - Key Manager: 	Spin all this shit around.
 - Auditor: 		Looking at others hands.

I Bootstrap

A KC cards
?> First 2 KCs generate their keys and CSR's on KC ICC using KC tools.
   This can be done on their workstation, but doing it on Root CA will be more convinient.

># KC init
<# Set PIN
># ****
<# PIN set
<# DN:
># cn=<username>,ou=pki,ou=Services,dc=hackerspace,dc=pl
<# KC ICC done

<- KC1_ICC:KC1PK
<- KC1.csr
<- KC2_ICC:KC2PK
<- KC2.csr

B Root_CA_1

 CA_N1
-> Key manager initiates self-generation of asymmetric crypto keys on 1st CA ICC and
   sets two initial KC:

># ca init -a KC1.csr -a KC2.csr
<# CA 

<- CA_N1_ICC:CA_sigPK
<- CA_N1_ICC:CA_srvPK
<- CA_N1_ICC:CA_admPK
<- CA_N1_InitCAsig.crt
<- CA_N1_InitCAsrv.crt
<- CA_N1_InitCAadm.crt
<- CA1_KC1.crt
<- CA1_KC2.crt

C CA_N2
-> Key manager initiates key generation on 2nd CA ICC

># ca

.B same as 1.A but on 2nd CA ICC and any further CA ICC


1. NXP Java card as keystore
2. Token concept?