# An Evaluation of the Security of Bare Machine Computing (BMC) Systems against Cybersecurity Attacks
## 3 Bare Machine Computing (BMC) Systems
### Properties of the BMC Paradigm
#### 3.5.2 BMC Characteristics  
1. OS/Kernel/Embedded: The OS/kernel/embedded concept is eliminated. There is no such centralized program; each domain-specific application is a self-controlled,self-managed, and self-executed entity. There is no interaction with entities outside an application suite. As there is no OS/kernel, a user carries a flash drive with boot code and a domain-specific application suite. Figure 6 shows a memory map for a flash drive containing a client's UDP-based chat program. 2. Applications: All computer applications are polarized as domain-specific entities. They are independent of any platform. In conventional systems, they are dependent on platforms and execution environments. We have developed and demonstrated numerous domain-specific applications, including web sites, webmail, email, VoIP, text-only browsers, editors, file systems, database applications, and chat. In these systems, there are bare servers and clients that run on bare machines. For example, in the chat domain, there are physically vetted users who communicate in their own domain. All these users are vetted and use bare machines. We use context-based authentication to validate users. This is one example of a domain. All the above domain applications were tested on the Internet with bare servers and clients. On the Internet, domain-specific applications are used to communicate securely within a domain using bare devices. 3. Programming Languages: A single programming language (C/C++) is used to write applications, thus avoiding all heterogeneity in writing applications. 4. Executable: It is a single monolithic executable, which implies a single address space. Only one executable format is allowed. 5. Linking: Uses static linking, which prevents expanding the code segment to load foreign code. This provides ultimate security for the BMC applications, as malware code cannot be linked. 6. Loading: Uses static loading, which prevents extending the code segment to load malware code. 7. Multi-tasking: Multi-tasking is offered within an application suite controlled by an application programmer through events and its control flow. 8. System Calls/API: There are no system calls or APIs available to the outside world (outside an application suite). It uses a direct hardware API, integrated within an application suite. 9. Sockets: No sockets exist in the BMC paradigm, as there is no OS. Remote computer communication is implemented within a process and hidden inside an application suite. For example, attackers use sockets to create man-in-the-middle attacks. In the BMC paradigm, sockets are not used as we build domain-specific applications with no open ports, not allowing users to create their own threads or processes. That is, items such as sockets are not needed in implementing BMC applications. The BMC paradigm inherently does not need such security-prone facilities as it does not have an OS. This approach is different from the \"security through obscurity\" concept. There are many such facilities that are not needed in the BMC paradigm, which offers inherent security in BMC applications. The following quote also supports your concern. 10. Open Ports: There are no open ports in BMC programs. As it is a domain-specific application suite, IP addresses and port numbers are managed within each application code in a hardcoded manner. This is not visible outside the application suite. When a packet arrives, its corresponding event (pre-defined) will call an appropriate method to process it. 11. During Execution: During execution, only one application suite runs. There is no interaction with other application suites or external modules in a bare computing device. No exploits are possible for an attacker. 12. Event/Interrupt Driven: The application suite is event-driven. Limited user interrupts are used for input. 13. Shared Memory/Message Passing: Only a shared memory approach is used within an application suite. 14. Concurrency Control: Concurrency control is avoided by using circular lists.