diff options
author | Magnus Feuer <mfeuer@jaguarlandrover.com> | 2015-07-21 19:08:29 -0700 |
---|---|---|
committer | Magnus Feuer <mfeuer@jaguarlandrover.com> | 2015-07-21 19:08:29 -0700 |
commit | 86ffa1663067f1b73d7ce780756d54d32e818fee (patch) | |
tree | 8289950b13e1d7412c46522e57b14d84848b126e /doc | |
parent | 8223c03424b1d0f757b854abb3aaf6df216b29cd (diff) | |
download | rvi_core-86ffa1663067f1b73d7ce780756d54d32e818fee.tar.gz |
Formatting fixes in security doc
Diffstat (limited to 'doc')
-rw-r--r-- | doc/rvi_security.md | 58 |
1 files changed, 29 insertions, 29 deletions
diff --git a/doc/rvi_security.md b/doc/rvi_security.md index 39d01b6..ef9732d 100644 --- a/doc/rvi_security.md +++ b/doc/rvi_security.md @@ -24,7 +24,7 @@ A device key is a per-RVI node 2048+ bit RSA key pair. The private part of the device key is stored on a host (server, embedded device, mobile device, etc) and is not shared. The public part of the key is used in two ways: -1. <b>To prove the identify of an RVI node</b><br> +1. **To prove the identify of an RVI node**<br> When two RVI nodes locate each other over a data link (WiFi, 3G, Bluetooth, etc), they exchange an authenticate ("au") packet to prove their identity. This packet has the public part of the device @@ -33,7 +33,7 @@ and is not shared. The public part of the key is used in two ways: stored public key to validate that the received public device is signed by the private root key of a trusted certificate issuer. -2. <b>To prove ownership of certificates.</b><br> +2. **To prove ownership of certificates.**<br> Embdded in the authenticate packet are one or more certificates proving the sending RVI node's right to register and invoke services. The certificate, signed by the private root key of the @@ -57,39 +57,39 @@ Command line parameters to ```rvi_create_certificate.py``` given in parenthesis. Items marked with '*' ar slated for name changes to better reflect JWT practises and RVI semantics. -1. <b>```iss``` Issuer (```--issuer```)</b><br> +1. **```iss``` Issuer (```--issuer```)**<br> A domain name identifying the issuer. Currently supported but not used. -2. <b>```create_timestamp```* - Creation time stamp</b><br> +2. **```create_timestamp```* - Creation time stamp**<br> Unix time when the certificate was created. <br><i>Will be renamed ```iat``` to comply with JWT</i> -3. <b>```sources```* - Right to register (```--invoke```)</b><br> +3. **```sources```* - Right to register (```--invoke```)**<br> A list of full service names that the certificate grants the right to register, allowing other, credentialed RVI nodes to invoke these services. <br><i>Will be renamed ```register``` to better comply with semantics.</i> -4. <b>```destinations```* Right to invoke (```--register```)</b><br> +4. **```destinations```* Right to invoke (```--register```)**<br> A list of full service names that the certificate grants the right to invoke on other RVI nodes who have registered them <br><i>Will be renamed ```invoke``` to better comply with semantics.</i> -5. <b>```keys``` Public device keys (```--device_key```)</b><br> +5. **```keys``` Public device keys (```--device_key```)**<br> Contains one or more (currently only one) public device keys in JSON Web Key (RFC7517) format. The receiver will use this key to validate subsequent service invocations through the signatures submitted with the invocations. -6. <b>```start```* Start time of validity period (```--start```)</b><br> +6. **```start```* Start time of validity period (```--start```)**<br> Stored under the ```validity``` JSON element and specifies the Unix time stamp when the certificate becomes valid. The receiving RVI node will check that the current time is not before the ```start``` time stamp of the certificate. <br><i>Will be renamed ```nbf``` to comply with JWT.</i> -7. <b>```stop```* Stop time of validity period (```--stop```)</b><br> +7. **```stop```* Stop time of validity period (```--stop```)**<br> Stored under the ```validity``` JSON element and specifies the Unix time stamp when the certificae expires. The receiving RVI node will check that the current time is not after the ```stop``` time stamp @@ -101,14 +101,14 @@ better reflect JWT practises and RVI semantics. The general flow of events for setting up security are as follows: -1. <b>Create root key pair ```rvi_create_root_key.sh```</b><br> +1. **Create root key pair ```rvi_create_root_key.sh```**<br> A single root key is created by the certificate issuer. Two PEM files are created in this process. One PEM file with the private/public key that never leaves the issuer's trusted server, and one public-only PEM file that is installed on every RVI node that is to accept certificates from the issuer. -2. <b>Create device key pairs ```rvi_create_device_key.py```</b><br> +2. **Create device key pairs ```rvi_create_device_key.py```**<br> Each RVI node need to have its own device key pair. The device key script will create a private/public key PEM file that never leaves the device, a public-only PEM file that is embedded into @@ -116,7 +116,7 @@ The general flow of events for setting up security are as follows: a JSON Web Key (JWK - RFC 7159) signed by the private root key generated in step 1. -3. <b>Create certificates ```rvi_create_certificate.py```</b><br> +3. **Create certificates ```rvi_create_certificate.py```**<br> Certificates are generated to allow a specific RVI node (with a given device key) tor register (setup) services that it wants other RVI nodes to invoke, and to invoke serivces registered by other RVI @@ -144,13 +144,13 @@ by the following command: Once executed, three files will be created: -1. <b>```my_root_key_priv.pem```</b><br> +1. **```my_root_key_priv.pem```**<br> This file contains the private/public key pair that must never leave the credit issuer's trusted environment. It will be used to sign the JWT formatted device key and all certificates created by the certificate issuer. -2. <b>```my_root_key_pub.pem``</b>`<br> +2. **```my_root_key_pub.pem``**`<br> This file contains the public-only key that is to be installed on every RVI node that is to accept device keys and certificates signed by the certificate issuer. @@ -189,16 +189,16 @@ created key files. Once executed, three files will be created: -1. <b>```my_device_key_priv.pem```</b><br> +1. **```my_device_key_priv.pem```**<br> This file contains the private/public key pair that must never leave the device's trusted environment. It will be used to sign outgoing service invocation request. -2. <b>```my_device_key_pub.pem```</b><br> +2. **```my_device_key_pub.pem```**<br> This file contains the public-only key that is to be added to certificates issued for the device by a certificate issuer. -3. <b>```my_device_key_pub_sign.jwt```</b><br> +3. **```my_device_key_pub_sign.jwt```**<br> This file contains the public-only key, signed by the root key, that is to be provided as authentication when an RVI node identifies itself toward another. The file is stored in JSON Web Token format. @@ -233,57 +233,57 @@ The certificate is created by the following command --issuer=jaguarlandrover.com The following arguments are provided -* <b>```--id=my_cert_id```</b><br> +* **```--id=my_cert_id```**<br> System-wide unique ID to be assigned to this certificate. -* *```--device_key=my_device_key_pub.pem```*<br> +* **```--device_key=my_device_key_pub.pem```**<br> Specifies that the public device key, generated by ```create_device_key.py``` shall be embedded into the generated certificate as the certificate owner. -* <b>```--root_key=my_root_key_priv.pem```</b><br> +* **```--root_key=my_root_key_priv.pem```**<br> Specifies that the certificate shall be signed by the private root key generated by ```create_root_key.sh```. -* <b>```--invoke='jlr.com/backend/report jlr.com/backend/set_state'```</b><br> +* **```--invoke='jlr.com/backend/report jlr.com/backend/set_state'```**<br> Gives the device with the certificate-embedded public key the right to invoke the services ```jlr.com/backend/report``` and ```jlr.com/backend/set_state```. -* <b>```--register='jlr.com/vin/abc/unlock jlr.com/vin/abc/lock'```</b><br> +* **```--register='jlr.com/vin/abc/unlock jlr.com/vin/abc/lock'```**<br> Gives the device with the certificate-embedded public key the right to register the services ```jlr.com/backend/report``` and ```jlr.com/backend/set_state```. -* <b>```--start='2015-12-01 00:00:00'```</b><br> +* **```--start='2015-12-01 00:00:00'```**<br> Specifies that the certificate shall become valid Dec 1, 2015 at midnight. -* <b>```--stop='2015-12-31 23:59:59'```</b><br> +* **```--stop='2015-12-31 23:59:59'```**<br> Specifies that the certificate shall expire valid Dec 31, 2015 at 11:59:59 PM. -* <b>```--jwt_out=my_cert.jwt```</b><br> +* **```--jwt_out=my_cert.jwt```**<br> Specifies the name of the JWT file that is to be written with the certificate signed by the root key in ```my_root_key_priv.pem```. -* <b>```--cert_out=my_cert.json```</b><br> +* **```--cert_out=my_cert.json```**<br> Specifies a file to write a JSON-formatted copy of the certificate into. This file is for human inspection only and is not used by RVI or any other scropts. -* <b>```--issuer=jaguarlandrover.com```</b><br> +* **```--issuer=jaguarlandrover.com```**<br> Specifies that the certificate issuer is ```jaguarlandrover.com```. This value is currently not used. Once executed, one mandatory and one optional file will be created: -1. <b>```my_cert.jwt```</b><br> +1. **```my_cert.jwt```**<br> This file contains the generated certificate, signed by the private root key specified by ```--root_key=```. The content of this file will be provided by an RVI node to prove its righ to register and invoke services toward remote RVI nodes -2. <b>```my_cert.json```</b><br> +2. **```my_cert.json```**<br> Only created if ```--cert_out=``` has been give. Contains a human readable JSON form of the generated root key. |