## 5 Evaluation Approach
### Context Description and Feature Models
The main features to setup into _SSL/TLS_ communications are: (1) _CipherSuite_ which indicates the suites of key change method, cipher and message authentication code are supported; (2) _Key change method_ which indicates that cryptographic algorithms have been employed to generate cryptographic keys; (3) _Cipher_ which indicates that conventional cryptographic algorithms are employed to encrypt the message in the transmission; (4) _Message Authentication Code (MAC)_ which indicates the algorithm employed to encrypt the message to provide integrity; (5) _Protocol_ which indicates the version of protocol to be used; (6) _Session Resumption_ which indicates the identification session established in the negation of connection client-server; (7) _Authentication method_ which indicates the authentication method to be used (certificates or shared keys); (8) _Digital signature_ which indicates other types of signature support instead of certificates (SRP and PSK); (9) _Certificate_ which indicates the type of certificates supported (x509 and OpenPGP); (10) _Keysize_ which establishes the size to be used for the cryptographic algorithms; (11) _Curves_ are the function to be used to produce keys. It is important to notice that the _SSL/TLS_ model is a simplification since constraints are not represented to have a clear and non-complex visual model. However, the constraints have been written down in the _Cross Relations_ text box (cf., Figure 10). Some examples are: _AES_128_CBC_ is not recommended for _TSLv1.3_ protocol and the use of _RSA_ implies that the key size (_KeySize_) must be _2048_. Figure 9: Example of HTTP connector in Apache Coyote Server. Figure 11 is related to the security configuration of the Linux kernel (Linux Kernel Security: [[https://elixir.bootlin.com/linux/latest/source](https://elixir.bootlin.com/linux/latest/source)]([https://elixir.bootlin.com/linux/latest/source](https://elixir.bootlin.com/linux/latest/source))). This feature model represents the Linux kernel security configuration in version 5.3. This model can help to understand which configurations are needed to develop aspects such as enabling the access control to the file system, restrict the access to _syslog_, even establishing different security modules. Regarding the features at the model represent: (1) _SECURITY_ allows you to choose different security modules to be configured into your kernel; (2) _SECURITYFS_ enables the _security/s_ file system; (3) _SECURITY_DMESG_RESTRICT_ enforces restrictions on the access to privileged or sensitive information of _dmes_; (4) _PAGE_TABLE_ISOLATION_ feature is a countermeasure against security attacks which enables limiting the number of shared information between the users and kernel space; (5) _INTEL_TXT_ is used as a security control to provided trusted initialisation of the kernel; (6) _HAVE_HARDENED_USERCOPY_ALLOCATOR_ option checks memory transfers from to the kernel wrong memory regions when rejecting memory ranges; (7) _FORTIFY_SOURCE_ enables detecting overflows of buffers in common string and memory functions; (8) _STATIC_USERMODEHLPER_ is a countermeasure which enables redirecting the calls to kernel functions through a usermode helper as unique entry point to the kernel interface; (9) _LSM_ enables the Linux kernel to support a variety of computer security models. This feature enables specifying a list of LSMs in initialisation order. For instance, in version 5.3 of the Linux kernel, the socket and networking security hooks for a security module can be enabled to implement socket and networking access controls with the _SECURITY_NETWORK_ configuration. This configuration depends on the security modules enabled into the kernel, which can be configured via _SECURITY_ configuration. The enabled security modules can be also modified in this version of the kernel. The _LSM_ configuration is used to manage them, which defines an ordered list of the enabled security modules.