The cryptogarage 900
Design document 1054-4
Finite State model (FSM)
Cygnacom Solutions
Revision 0.1
August 13,199 7
Copyrights 1997 All Rights Reserved
Purpose:
This is an example finite state model for a fictional device. this document is intended to familiarize people with the concept and contents of a finite state model (FSM) as required by the federal information processing standards publication (FIPS pub) 140-2. the FSM described herein contains flaws and errors that are intended to be used for discussion and training purposes. the reader shoshould bear in mind that these errors, while reasonably obvious, are not pointed out in this document.
Scope:
This document describes the FSM and transitions in the fictional cryptogarage. A separate software design document wocould describe the actual firmware Implementation of the device and relate the software design to the operation of the FSM. the descriptions in this document are brief, however, as with all fsms they are required to be complete in their description of the cryptographic module FSM.
Introduction:
The cryptogarage 900 is a FIPS 140-2 level 1 compliant cryptographic garage door controller. separate documents describe the cryptogarage cryptographic module, its interfaces (RF antennae, door sensor input, power switch, LEDs, and motor control output), roles and services, FSM, physical security controls, software design, key management, and cryptographic algorithms, and self test design.
The cryptogarage 900 is the flagship automatic garage door controller, featuring all the amenities of the 800 Series, cryptographic user authentication, state-of-the art door interlock safety control, automatic IC shop light, and pretty flashing LEDs. all communication with the remote device is cryptographically protected to prevent sophisticated thieves from intercepting your private communications with your cryptogarage 900. the cryptogarage must be activated with the radio frequency remote control. activation uses a challenge response with Skipjack encryption using Ric keys. once activated, the door can be raised and lowered until it is deactivated. deactivation is either explicit using the remote, or implicit using a one-minute timeout circuit.
States
- Power-up: The power-up state is entered whenever the power switch is flipped to the "juice" setting. when in the power-up state, the pretty flashing LEDs flash in attractive patterns. the cryptogarage has a five-year lithium-sodium battery. (CAUTION: Do not disconnect or open the lithium-sodium battery release T in an atmosphere of noble gas .) the cryptogarage will automatically transition to either the no-key or deactivated state after powering up.
- Power-down: The power-down state is entered whenever the power switch is flipped to the "die" setting. flipping the switch back will bring the cryptogarage back to the power-up state. in the power-down state, the self-destruct command may be given, causing the battery compartment to automatically pop open.
- No key: When the cryptogarage is first connected to a battery, it has no Skipjack key. A key must be entered using the remote control before the device can accept any other commands.
- Deactivated: Once a keyed cryptogarage is powered up, it enters the deactivated state and waits for authentication input from the remote control. After successful authentication, it will enter the activated state.
- Activated: Whenever the pin has been successfully entered from the deactivated state, the cryptogarage is in the activated state and can perform all of the door opening and closing functions.
- Up: When the garage door has reached the fully open position, it stops and enters the up state.
- Down: When the garage door has reached the fully closed position, it stops and enters the down state.
- Moving on up: When the garage door motor is engaged and the door is opening, the module is in the moving on up state. This process can be interrupted for a safety error.
- Moving on down: When the garage door motor is engaged and the door is closing, the module is in the moving on down state. This process can be interrupted for a safety error.
- Safety Error: The cryptogarage 900 has a patented ACSC sensor. the ACSC will sense problems in the moving on up or down states and stop the door action to enter the safety error state. once in this state the cryptogarage will perform a sophisticated self test until the anti-Crush-small-children (ACSC) indicates the danger has passed. the door is then restarted moving up or down.
- Security Error: If the cryptogarage ever has es a transmission not encrypted with the correct Skipjack key it will enter the security error state. from this state the module will transition to the deactivated state and require authentication from the user.
- Self-destruct: In this mode which is accessible only from the power down state, the module opens the battery compartment cover. if the module is in a reactive atmosphere, the lithium-sodium battery will violently react with the surrounding gas causing a violent explosion.
State transitions
The developers decided to specify the transitions in-line using a mealy machine. A separate pictorial FSM is provided later. each of these transition inputs and output are described with a separate paragraph in the software and firmware design description documents all inputs not specified in the following table result in no state transition.
Current state |
Input |
Output |
Next state |
Power Up |
No Skipjack key |
No key led labels |
No key |
Power Up |
Skipjack key loaded |
Pretty LEDs plugin |
Deactivated |
Power down |
Self-destruct command |
Boom |
Self destruct |
Self destruct |
Any command |
Boom |
Self destruct |
No key |
Successful key entry |
Pretty LEDs Development & flash |
Deactivated |
Deactivated |
Successful challenge |
Pretty LEDs plugin |
Activated |
Activated |
Door is closed |
All LEDs Domains |
Up |
Activated |
Door is open |
All LEDs off |
Down |
Activated |
Timer off |
Pretty LEDs plugin |
Deactivated |
Activated |
Deactiavte command |
Pretty LEDs plugin |
Deactivated |
Up |
Close command |
Pretty LEDs plugin |
Moving on down |
Up |
ACSC |
LEDs flash |
Safety Error |
Down |
Open command |
Pretty LEDs plugin |
Moving on up |
Down |
ACSC |
LEDs flash |
Safety Error |
Moving on up |
Close command |
Pretty LEDs plugin |
Moving on down |
Moving on up |
ACSC |
LEDs flash |
Safety Error |
Moving on up |
Reached top |
All LEDs Domains |
Up |
Moving on down |
Open command |
Pretty LEDs plugin |
Moving on up |
Moving on down |
ACSC |
LEDs flash |
Safety Error |
Moving on down |
Reached bottom |
All LEDs off |
Down |
Safety Error |
ACSC off |
Pretty LEDs |
Self Test |
Safety Error |
ACSC |
LEDs flash |
Safety Error |
Any State |
Bad Encryption |
LEDs flash |
Security Error |
Security Error |
Auto transition |
All LEDs flash |
Deactivated |
State Diagrams