summaryrefslogtreecommitdiffstats
path: root/sec-blueprint/05-platform-security.md
diff options
context:
space:
mode:
Diffstat (limited to 'sec-blueprint/05-platform-security.md')
-rw-r--r--sec-blueprint/05-platform-security.md162
1 files changed, 162 insertions, 0 deletions
diff --git a/sec-blueprint/05-platform-security.md b/sec-blueprint/05-platform-security.md
new file mode 100644
index 0000000..9bf96d6
--- /dev/null
+++ b/sec-blueprint/05-platform-security.md
@@ -0,0 +1,162 @@
+---
+
+title : Platform Security
+date : 2017-07-07
+categories: architecture, automotive
+tags: architecture, automotive, linux
+layout: techdoc
+
+---
+
+**Table of Content**
+
+1. TOC
+{:toc}
+
+This section describes how the Automotive Grade Linux (AGL) platform
+applies some of the previously described security concepts to
+implement platform security
+
+# Platform Definition
+The Automotive Grade Linux(AGL) platform is a Linux distribution
+with AGL compliant applications and services. The platform includes the
+following hardware:
+ - SoC (System-on-Chip)
+ - Memory (RAM, ROM, storage, etc.)
+ - Peripherals
+
+The AGL platform includes the following software:
+ - Linux BSP configured for reference boards
+ - Proprietary device drivers for common peripherals on reference boards
+ - Application framework
+ - Windows/layer management (Graphics)
+ - Sound resource management
+ - An atomic software update system
+ - Building and debug tools (based on Yocto project)
+
+For more details, refer to the AGL Architecture/Specification Document.
+
+# Secure Boot
+Currently, AGL does not provide a secure boot solution but highly recommends
+that the manufactured solution make use of a secure boot mechanism. For
+instructions on securing u-boot, please refer to the System Hardening Guide.
+
+# Certificate and Key Management
+Currently, AGL does not provide a secure certificate and key management
+solution but highly recommends that the manufactured solution make use
+of secure key management.
+
+# Mandatory Access Control
+Mandatory Access Control (MAC) is a protection provided
+by the Linux kernel that requires a Linux Security Module (LSM).
+AGL uses an LSM called Simplified Mandatory Access Control Kernel (SMACK).
+This protection involves the creation of SMACK labels as part of the extended
+attributes SMACK *labels* to the extended attributes of the file and then
+creation of a policy to define the behaviour of each label. The kernel controls
+access based on these labels and this policy.
+
+There are two types of SMACK labels.
+* An *Execution* SMACK label of a process defines how files
+are accessed and created by that process.
+
+* The *File Access* SMACK label defines which process can access the file.
+This SMACK label is written to the extended attribute of the file.
+
+
+By default a process executes with its File Access
+SMACK label unless an Execution SMACK label is defined.
+
+AGL's SMACK scheme is based on the Tizen 3 Q2/2015.
+It divides the System into the following domains :
+
+## Floor
+The *floor* domain includes the base system services and any associated data
+and libraries. This data remains unchanged at runtime.
+Writing to floor files or directories is allowed only in development
+mode or by installation and upgrade software.
+
+The following table details the *floor* domain:
+
+-------------------------------------------------------------------------------------------------------------------------
+
+|Label| Name | File | Process | Comment |
+|:-:|:-------|:-------------|:------------------------------------|:-----------------------------------------------------|
+| |
+| - | Floor | r-x for all | Only kernel and<br>internal kernel thread <br>| -- |
+| ^ | Hat | --- for all | rx on all domains | Only for privileged system services (currently only systemd-journal). Useful for backup or virus scans. No file with this label should exist except in the debug log. |
+| * | Star | rwx for all | None | used for device files or /tmp Access restriction managed via DAC. Individual files remain protected by their SMACK label. |
+
+
+
+## System
+The *system* domain includes a reduced set of core system services of the OS and
+any associated data. This data may change at runtime.
+
+The following table details the *system* domain:
+
+-------------------------------------------------------------------------------------------------------------------------
+
+|Label| Name | File | Process | Comment |
+|:--|:-------|:-------------|:------------------------------------|:-----------------------------------------------------|
+| |
+|System|System|none|Privileged<br>processes|Process should write only to file with transmute attribute.|
+|System::run|Run|rwxatl for User and System label|None|Files are created with the directory label<br>from user and system domain (transmute)<br>Lock is implicit with w.|
+|System::shared|Shared|rwxatl for system domain<br>r-x for User label|None|Files are created with the directory label from system domain (transmute)<br>User domain has locked privilege|
+|System::Log|Log|rwa for System label<br>xa for user label|None|Some limitation may impose to add w to enable append.|
+|System::Sub|SubSystem|Subsystem Config files|SubSystem only|Isolation of risky Subsystem**|
+
+
+## Applications, Services and User
+The *application, services and user* domain includes code that
+provides services to the system and user, as well as
+any associated data. All code running in this domain is under Cynara
+control.
+
+The following table details the *application, services and user* domain:
+
+-------------------------------------------------------------------------------------------------------------------------
+
+|Label| Name | File | Process | Comment |
+|:--|:-------|:-------------|:------------------------------------|:-----------------------------------------------------|
+| |
+|App::$AppID|AppID|rwx (for files created by the App).<br>rx for files installed by AppFW|$App runtime<br>executing $App|Only one Label is allowed per App.<br>A data directory is created by the AppFW in rwx mode.<br>Older releases still use User::App::$AppID |
+|User::Home|Home|rwx-t from System label<br>r-x-l from App|None|AppFW needs to create a directory in /home/$USER/App-Shared at first launch if not present with label<br>app-data access is "User::App-Shared"<br>without transmute.|
+|App-Shared|Shared|rwxat from System and User domains label of $User|None|Shared space between all App running for a given user.<br>Older releases may still use User::App-Shared|
+
+# Yocto Security Layer
+Currently, AGL relies on Cynara and Security Manager from Yocto Layer
+meta-intel-iot-security. Please note that support for these components has
+been dropped in the upstream project.
+
+# Application API Transport
+Currently, AGL Application framework uses D-Bus interface for transport
+and uses the inherent security that comes with this protocol.
+
+# Resource Management and Protection
+AGL provides resource management and protection through SMACK labels.
+Please refer to application framework documentation for more details.
+
+# TrustZone
+Currently, AGL does not provide any direct support for TrustZone.
+This feature strictly depends on the SoC and is only available on ARM architectures.
+
+# AGL Platform Software Update
+
+The update solution must be atomic and the following update requirements:
+- Support Smack as MAC
+- Support Read-Only Filesystem
+- Support Integrity Enforcement
+
+Currently AGL offers a reference implementation of the Over-The-Air
+update system using OSTree. Work is being done to secure the OTA
+updates using *Uptane*.
+
+For more information on Uptane, please refer to:
+
+https://uptane.github.io/
+
+# Cloud Service Infrastructure
+Currently, AGL does not provide a any cloud service infrastructure
+
+
+For recommendations on hardening the system, please refer to the System Hardening Guide.