-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
subsys: greybus: authentication and encryption #25
Comments
We probably want to have a couple of options for configuring how to load certificates. So I'll probably add a menuconfig for that.
In the menuconfig, we should have an entry for For the
https://github.com/zephyrproject-rtos/zephyr/blob/master/cmake/extensions.cmake#L582 Prior to the bus starting, we will likely want to use the Zephyr API to load credentials via tls_credential_add. This should be done before the service starts. Example here. |
The It's probably somewhat possible to extract certs to do encryption over a UART as well, but I probably will not be adding that functionality in this ticket. |
It would be nice to recycle |
This chnage adds TLS support to Greybus as well as a default method of storing certificates (building them into the application). Fixes #25 Signed-off-by: Christopher Friedt <chrisfriedt@gmail.com>
This chnage adds TLS support to Greybus as well as a default method of storing certificates (building them into the application). The automated test for TLS is disabled for now due to fragility of mbedTLS within Zephyr's implementation of IPPROTO_TLS_1_2. Fixes #25 Fixes #28 Signed-off-by: Christopher Friedt <chrisfriedt@gmail.com>
This chnage adds TLS support to Greybus as well as a default method of storing certificates (building them into the application). The automated test for TLS is disabled for now due to fragility of mbedTLS within Zephyr's implementation of IPPROTO_TLS_1_2. Fixes #25 Fixes #28 Signed-off-by: Christopher Friedt <chrisfriedt@gmail.com>
While there was some original work that targeted authentication and encryption, it was primarily a proof of concept. The PoC used two SSH keys and some python code to emulate a device. The authentication and encryption messages themselves were assigned greybus message types out of the "reserved" numerical range.
The PoC code was more or less identical to what standard TLS does, with the absence of verifying a certificate against a trusted 3rd party Certificate Authority.
Due to the nature of how CPorts are implemented in TCP/IP, and that each CPort is independent of the others, each service is required to perform authentication and encryption independently.
It would be ideal to support industry standard TLS rather than using some custom method. Zephyr provides support for mbedTLS as well as special BSD socket options for TLS security.
The approach that will likely be taken with the initial TLS implementation will be that certificates will likely be self-signed and they will be distributed at build time.
Also, it is unclear whether TLS supports some kind of "NULL" security equivalent to plain-text that can be automatically used during the negotiation phase. If something like that does not exist, then it will be necessary to fix security at build-time both on the Linux side and on the microcontroller side.
The text was updated successfully, but these errors were encountered: