RFID Guardian Software:Layering
From RFID Guardian
RFID Guardian Software / Layering
Layering
The library consists of a large number of modules. Here, we give a bird's eye overview of the layering structure. Later, we will discuss the various modules in more detail. We will also spend time on the RFID Guardian's OS, and how the library functionality is invoked in applications.
At the top of the library hierarchy sits the module that services user commands. It is invoked from a user interface client via a network. It works by dispatching to the core library modules, the high-level modules that implement the core functionality of the RFID Guardian.
The core library modules are, at a glance:
- a disk browser;
- on-board RFID reader;
- logger for RFID traffic;
- spoofer that emulates one or more tags, including the possibility to authenticate and converse cryptographically;
- ACL handling, including the possibility to generate a jamming signal if the ACL decides that a response to an incoming RFID request should be corrupted;
- discovery of authenticated RFID readers within range;
- fuzzing to perform penetration attacks;
- SSL over RFID;
- and any more that may be added in the future.
Some core modules also operate on incoming RFID frames. Since incoming frames arise far below in the software hierarchy, an upcall mechanism must be used to go against the hierarchy. This upcall mechanism is engineered by the registration of callbacks with the filter module. The filter wakes up for each incoming RFID frame, and then dispatches to its clients by invoking the registered callbacks. Upcalls are drawn with red arrows in the structure diagram:
Below the core modules are the other generic (i.e. platform-independent) library modules, below that are the modules specific to some platform, and below that is the OS.
One generic library module group represents RFID readers and tags and their security properties.
Another generic library module group is a hierarchy for sending/receiving and (un)marshalling of RFID frames. The filter module sits on top in this hierarchy. At the bottom is the port , the interface that wraps device drivers. (Un)marshalling converts between typed RFID frames and untyped frames called symbol streams ; symbol streams represent not only data bytes, but also SOF (Start of Frame) and EOF (End Of Frame) markers, instructions for jamming, and partial bytes. Symbol streams are the data structure used by ports.
Of the other modules, we mention the util library module, which is a mixed bag that contains routines for error handling, string manipulation, bit manipulation etc.


