# An Evaluation of the Security of Bare Machine Computing (BMC) Systems against Cybersecurity Attacks
## 3 Bare Machine Computing (BMC) Systems
### BMC Paradigm  
The BMC paradigm was originally motivated by the rapid obsolescence [4] and continuously emerging security vulnerabilities in computer and information systems. Obsolescence impacts computers and information systems, causing hardware and software to be replaced before their useful life span. The topic of obsolescence is not within the scope of this paper. The BMC approach resembles computing when it started in the 1960s using bare hardware operated with switches and buttons. In current technology, hardware is cheap, provides many functionalities, and allows more logic to be placed on a single chip. It also allows computing devices to be bare, as a processor can provide needed hardware interfaces to application programmers. In a BMC system, as shown in Figure 4, applications directly communicate with the hardware without any middleware. For example, suppose we want to print the text \"Hello\" on the screen. Figure 5 illustrates how a programmer can directly control writing on the screen without using an OS. This simple example shows how a programmer can directly access the hardware through C++ -> C -> assembly as a single thread of execution without interruption. It also shows how a programmer views the underlying hardware in the BMC paradigm. It is possible to automate this process to make it user-friendly for developers. In this example, the assembly call writes string data to the video memory location at 0x000b8000. A BMC programmer controls all the code shown here. There are no other dependencies in the BMC code. This philosophy is carried throughout the development process of any BMC application. Using this approach, we can write all direct hardware interfaces needed for information systems applications and development. Eventually, these direct hardware interfaces can be built on the processor chip. If the output must go to graphics memory, the same logic is used with the help of a bare graphics driver. A BMC system is not the same as a bare metal system or embedded Linux [40], as BMC is a general-purpose computing paradigm. BMC servers are not the same as bare-metal servers or virtual servers in the cloud [41], which require some OS to provide services. The BMC paradigm is based on an application-oriented approach. It divides all computer applications into domain-specific applications using object-oriented abstractions. Examples include banking, online transactions, manufacturing, payroll, desktop and office applications, accounting, email, chat, and browsers. A given domain-specific application may contain one or more applications bundled as a single domain application suite used at a given time. One such example is text processing, spreadsheets, and Internet search. Each domain-specific application suite contains all the necessary code to run on a given bare machine. Although BMC currently chooses Intel processors and their instruction set architecture, it can be adapted to work with any other computer architecture as needed. The BMC paradigm assumes hardware integrity. The paradigm is applicable to any computing device, including a smartphone. In BMC, the first step is to make the computing device bare. This means it has no operating system, no hard disk (such as mass storage), and uses the BIOS for now. Eventually, the BIOS can be bundled with the associated application suite. The code can run on older or newer Intel processors, which are \(\times\)86 and \(\times\)64 compatible. The second step is to write the software in C/C++ and a small amount of assembly code where needed. The BMC paradigm is based on a single programming language environment. Boot, loader, and interrupts are written in assembly. One or more applications can be compiled as an application suite, generating a single monolithic executable. This is statically compiled and linked with no external software or libraries. The small executable contains all the required code to run its application suite. A given application suite executable is typically less than 2 MB.