Design and Implementation of a USB File System for Bare PC Applications Presented by Dr. Ramesh K. Karne Department of Computer and Information Sciences Towson University Towson, MD 21252, USA (Authors: William Thompson, Ramesh Karne, Sonjie Liang, Alexander Wijesinha, Hamdan Alabsi, and Hojin Chang) rkarne@towson.edu http://baremachine.towson.edu
History Started in 2001 Motivated by complexity and obsolescence Frustrated by too many environments Initially funded by NSF grants Over 45 publications and 15 doctoral dissertations Started from scratch and built all BMC code and over a dozen complex applications
Related Work Exokernel Bare Metal Linux Nano and Micro Kernels Lean kernels Sandboxing Palacio and Kitten IO-Lite
What is a Bare Machine Computing (BMC)? A computer application(s) run on a bare computing device (such as a PC) The computing device consists of CPU, Memory, User interfaces such as (Keyboard, Mouse, Monitor, Network card) Application(s) are self contained, self managed The box containing the computing device is known as a bare machine The concept is applicable any computing device
BMC Characteristics A Bare Machine is: Ownerless Valueless, no valuable resources in the bare box Uses detachable or network storage Bootable, loadable and controllable by user application(s) Application(s) are stored on a detachable storage device such as a flash drive There is nothing to damage in the bare machine, other than physical vandalism Super secure, ultimate security for application(s) A bare machine can be placed any place, accessed by anyone without ownership A bare machine application is stable, not prone to obsolescence, contains code that does not depend on other computing environments A bare machine application(s) are totally user controlled and closed systems.
What is a bare PC File System? It is a standard FAT32 compatible file system USB based Runs only on a x86 compatible PCs, can be extended to other CPU architectures by writing direct API The files can be accessible on other OSs Lean, efficient and application driven Resident on detachable devices No OS vulnerabilities Closed system
USB Layout
Memory Layout
Initialization Process
File Table Structure
File API
Use of API
USB Parameters and Driver
USB Operations
USB Analyzer Trace
Bare Root Directory
Root Directory on USB
Bare PC Screen Shot
Design Challenges Broad knowledge for a programmer Device driver knowledge System and application programming Debugging bare code Reducing semantic-gap between application and hardware Integrating with other bare PC applications
Further Research Multiple USBs for storage Integrating with SQLITE database and others Integrating with Web server and Webmail Extending to NFS and other file system protocols Performance comparison with conventional systems Adding security to USB flash drives
Conclusions Described internals of a bare PC file system Presented a novel computing architecture (BMC) Described internals of a bare PC file system Possible use in super-secure applications Bare to bare applications are super-secure Identified further research