Multi-mode digital enciphering system with repeated priming sequences4166922Abstract The specification discloses an electronic digital enciphering system which is selectively operable in a plurality of different modes. The system may be operated in an off-line mode for preparing enciphered message tapes prior to transmission via teleprinter message circuits. The system may also be operated in an on-line asynchronous mode wherein a sending station may asynchronously transmit enciphered data on-line to a remote receiving unit, synchronization being provided by the start/stop pulses of the individual digital characters. The system may also be operated in an on-line synchronous mode wherein a sending and a receiving unit are automatically synchronized in time by local self-contained clocks in order to bridge fades or interference in a transmission medium such as radio telegraph, or the like. The system may be utilized on either half-duplex or full-duplex communication channels. Claims What is claimed is: Description FIELD OF THE INVENTION
__________________________________________________________________________
PVT private
FC2 fast clock phase 2
IP initiate prime
FC1 fast clock phase 1
PLC priming complete
RP receive prime (tells key generator
to load prime in)
RK request key
ENDW end wide - timing signal for key
generator
KEY key
CGD code generator data (prime data
loaded by RP)
PD priming data (actual prime
transmitted)
K3CNT timing signal used by key
generator to prevent forbidden
character from appearing in
prime
FULLSET switch which selects either full
set or Telex cipher set
P35X timing signal - denotes 3-5
repetition of prime
BP.phi.2 clock to drive correlator
(8 .times. bit rate)
OEND timing signal from output
synchronizer denoting end of
character
INITSW initiate switch - press to initiate
in synchronous mode
ILGSEQ illegal sequence - denotes that
sequences NNNN or ZCZC have
occurred in cipher text
RXRAW unaltered received data
SYN denotes in synchronous mode
SHD switch output denoting synchronous
mode
ENC encipher mode
CHECK denotes alarm check circuit has
detected simulated fault during
priming
ENC not in enciphering
ENC* unbuffered encipher signal
COMP compare - compares cipher text
and plain text to drive check
circuit
FIFOV FIFO overflow - denotes data
FIFO has overflowed-probably
because transmitter receiver
sending simultaneously
BYPASSW bypass switch from front panel -
cuts off all enciphering
CR carriage return - denotes CR has
been detected-only in Telex mode
CRFF CR flipflop - remembers that CR was
detected--allows next character
to go out in clear
MCLR Master clear - clears everything
(from power on or reset button)
KEND.uparw.
timing signal - denotes leading edge
of end pulse of character from
keyboard
MCLK master controller clock - any state
changes gives this clock
PRIMEX synchronized signal denoting in
prime state
SLAVE denotes slave unit
FRAME state of machine occurring only in
synchronous mode and denotes sending
frame synchronizing pattern
KEND.dwnarw.
timing pulse from keyboard sync -
denotes trailing edge of end of
character pulse
P67 timing pulse - prime being sent for
6th and 7th time
P35X timing pulse - prime being sent for
3rd through 5th time
NULL denotes null character detected -
Telex mode only
BREAKSW panel switch - push to cause break
in line signal - to interrupt
transmitter
RENDW timing signal - denoting end pulse
on receive synchronizer
ALARM denotes 1 of 6 alarm conditions have
occurred
KEND keyboard sync end pulse
FIFOEMP key FIFO empty
FIFOFULL key FIFO full
REND receive synchronous end pulse
ASYN front panel switch denoting
selected on-line asynchronous mode
SHD front panel switch denoting selection
of synchronous half-duplex mode
ILGCOM illegal command - only in Telex
mode - tried to put machine in
crypto state when already in it
NSBYP non sync bypass - allows previously
encrypted tapes to be passed in
bypass mode
ALL1 denotes key word is all "1's"
used in alarm circuit in case key
generator gets stuck in all "1' s"
CRYPTO denotes crypto mode (private mode)
PRIME denotes machine in prime state
OPR denotes machine in operate state
REND.dwnarw.
receive character end pulse -
trailing edge
IDLE denotes machine in idle state
P37 timing pulse denoting prime sent
3rd through 7th time
P35 prime sent 3rd through 5th time
PD* reconstructed priming data from
prime data card (A6) where it is
stored
ORK output request for key (timing
signal from output synchronizer)
KRK output request for key from keyboard
XPRIME timing pulse denoting synchronizer
transfer to priming state
GKSHIFT gates shift pulse from keyboard
synchronizer
RRK request for key from receive
synchronizer
KDRI keyboard data register input - used
as synchronized keyboard data signal
RXDAT received data from line
GRSHIFT gated shift pulse from receive
synchronizer
RVALID signal from receive synch just
prior to center of start bit -
sampled to make sure character
is valid
OFFLINE front panel mode select switch -
offline mode
RDRI received data register input
ID1 through
denote certain bit of parallel
ID5 input data word
KSTART denotes start bit from keyboard
synchronizer
KSTOP stop bit from keyboard synchronizer
OSHIFT shift pulse from output synchronizer
KSHIFT shift pulse from keyboard
synchronizer
OEND.uparw.
leading edge of end pulse from
output synchronizer
REND.uparw.
leading edge of end pulse from
receive synchronizer
INV signal to data FIFO denoting start
and stop should be inverted (for
frame synch pattern)
SK1-5 parallel selected key - applied to
either ROM or modulo-2 adders as
key word
RREAD* timing pulse from receive
synchronizer
RESPONSE
timing signal used to tell printer
when to print response from slave
signal (when to stop)
FSC frame sync complete
PRTRESS timing signal to tell printer when
to start
KBDAT keyboard data
KAR timing pulse from keyboard
synchronizer
RSHIFT shift pulse from receive synchronizer
KSTB strobe pulse from keyboard synchro-
nizer used to load data FIFO
RAR timing pulse from receive synchro-
nizer used to strobe ROM - enciphers
in Telex mode
OD1-5 parallel output data word
ODRO output data register output
ENFIFO tells when to enable FIFO
RSTB strobe pulse from receive synchro-
nizer used to load data FIFO
FIFOMR FIFO master reset
GFSD gated frame sync detect
QQ denotes sequence LTRS QQ detected
4CR denotes 4 CR characters have been
detected - used to remotely clear
Only in off-line machine in Telex or off-line mode
and asynchronous even if crypto sync lost
mode QK denotes sequence CR LF LTRS QK
detected - switches from crypto
back to plain
QZQZ denotes sequence QZQZ detected -
causes machine to be initiated in
synchronous half-duplex mode
CP.phi.2 phase 2 of a 2 phase clock (basic
system timing)
CP.phi.1 phase 1 of a 2 phase clock (basic
system timing)
KSYNEN denotes keyboard synchronizer
enabled
RSTART denotes start bit from receive
synchronizer
PRINT denotes incoming character from
line had valid start bit and
character should be printed
FSD frame synch detect - denotes
correlator has detected frame
synch from line-switch to load
prime mode
EN45 EN57
signals from baud rate select switch
located on power supply module
EN50 EN100
A21 - select baud rate
OSTOP denotes stop bit from output
synchronizer
O3CNT denotes 3rd bit of output sync -
used on data switching card to
generate space character-used
on printer when loading prime
OSYNEN output synchronizer is enabled
KVALID similar to RVALID - pulse to
validate start bit (from keyboard)
C2RESET insures correlation reset
immediately after frame synch
detected
C2 state of correlator controller
denoting it is looking for final
inverted pattern
BP.phi.1 2.phi. clock - operates correlator
(8 .times. bit rate)
CIRC denotes correlator should
circulate contents of register
to count the number of ones
PEAK denotes correlator has detected a
peak
INITSW initiate switch
BYPASSW bypass switch
DECSW decipher switch
ENCSW encipher switch
BREAKSW break switch
RESETSW reset switch
BREAKLP break lamp
ALARMLP alarm lamp
INITLP initiate lamp
SLAVELP slave lamp
PLAINLP plain lamp
CRYPTOLP crypto lamp
ENCLP encipher lamp
Panel Circuitry Referring to FIG. 8, a block diagram of the rear and front panel switch circuitry is illustrated. Like numerals are utilized for like and corresponding parts of the various drawings. The switches and lamps on the front panel shown in FIG. 5 are represented by the block 90, with the lamp energizing signals and switch output signals being applied thereto. The mode select switch 60 is also illustrated. Power from a suitable alternating current source is applied to the mains filter 92 and to a mains filter 94. The select mains switch 96 selects the mains to be utilized. Telegraphic loop currents from the power supply are applied to local terminals 98 and line terminals 100 to enable interconnection of the system in the various modes. The output from the power supply is also supplied to the local terminals 52 and line terminals 54 (FIG. 5). The meter 50 is operated in accordance with the setting of the monitor select switch 48. The power switch 44 is also operated from the front panel as previously described. The Universal thumbwheel switches 80 are operable upon the removal of the panel 56 in the manner described with respect to FIG. 6. AC power is applied to the rear panel to operate a fan 102 for cooling off the housing. Random Code Generator The randomized digital keystream which is the basis for enciphering and deciphering with the present system is generated by the key variable circuit shown within the dotted line 104 in FIG. 8 and in the dotted line 106 in FIG. 9. Referring to FIG. 8, the outputs from the Universal key switches 80 are applied to a Universal key register 110. The Custom key switches 84 (FIG. 7) are applied to a Custom key register 112. The register control and timing circuitry 116 controls the operation of the registers 110 and 112. The outputs of the registers are applied to a nonlinear combining circuit 118, the output of which is applied to the random key generator shown in the dotted line 106 in FIG. 9. Referring to FIG. 9, a prime generation and loading circuit 120 receives timing and loading instructions in order to control the loading of the main register group 122. A register configuration and control circuit 124 controls the interconnections of the main register group in the desired manner. The output of the register group 122 is applied to a program storage circuit 126 which is interconnected with a random stepping and timing circuit 128. The output of the main register group 122 is applied to a nonlinear combining circuit 130, the output of which is applied to control the register configuration and control circuit 124. The resulting configuration and stepping of the main register group 122 results in a randomized digital signal which is applied to a key flipflop 132. The flipflop 132 generates a long stream of randomized digital signals for use in enciphering and deciphering in the present invention. The random code generator of the system shown in FIGS. 8 and 9 comprises a group of registers 122 which may be combined in various configurations and stepped a number of random steps in order to generate a single bit of key data. The request for key (RK) signal is applied to the prime generation and loading circuit 120 in order to cause the main register group 122 to connect themselves in a random fashion, take a random number of steps, and generate a single bit of key which is stored in the key flipflop 132. Each character typed on the keyboard generates five requests for key and generates five bits of key. These five bits of key are accumulated serially in the key word register to be subsequently described. The key word register governs how the particular character is to be enciphered or deciphered. Two other principal signals controlling the key generator circuit are the initiate prime (IP) and receive prime (RP). The first five characters after the system has been commanded into the crypto mode are termed priming characters. When enciphering, the signal IP instructs the key generator to generate and supply five random characters (25 bits of random data) to the prime generation and loading circuit 120 to generate the priming data (PD). When deciphering, the signal RP instructs the key generator to accept the five characters applied as a signal CGD in order to load the characters into the main registers 122. At the same time that prime is being received or generated, the crypto variables located on the Universal key switches 80 and the Custom key switches 84 are being loaded in parallel into their respective registers 110 and 112. Once these variables have been loaded and the prime has been received or generated, the key generator begins to generate key bits as requested by the signal RK. The signal CORP instructs the key generator to go into the Custom mode which offers the user the full 32 trillion key variable combinations. Just as there are forbidden characters in the cipher text, the prime characters which are generated by the key generator must also be free of forbidden characters if the Telex cipher set is to be selected. The two signals K3CNT and the signal FULLSET prevent the generation of forbidden characters in the prime data if the system is set to the Telex mode. The timing for the key generator is supplied by the two phase high speed clocks termed FC1 and FC2. For a more detailed description of the construction operation of the random code generator of the invention, reference is made to U.S. Pat. No. 3,781,473, entitled "RANDOM DIGITAL CODE GENERATOR", issued Dec. 25, 1973, and assigned to the present assignee. Prime Data Circuit The circuit for generating the prime data for use with the present system is illustrated in FIG. 9. This circuitry accumulates, checks and transmits the five random priming characters that precede each enciphered transmission by the system. In both the off-line and asynchronous modes of operation, the priming data from the key generator previously described (termed PD) is routed immediately from the key generator to the controller for transmission on-line or routed to the local teleprinter for off-line operation. In both of these modes, the prime data received from decoding a tape off-line or from receiving an enciphered message on-line, is collected by a receive prime control circuitry 134 and sent to the key generator as the signal CGD. When enciphering in both the off-line and asynchronous modes of operation, the five priming characters (or 25 priming bits) are routed from the key generator to the printer or line immediately, with no modification supplied to the prime data circuit shown in FIG. 9. When deciphering, the five prime characters are routed from the receive data line or keyboard immediately to the key generator, with again no modification from the prime data circuit shown in FIG. 9. However, in the synchronous mode (SYN HD), the prime data is transmitted five times. This amount of redundancy is required because correct reception of prime is essential in cryptographic synchronization in the synchronous mode. When the prime state is entered in the synchronous mode, the key generator is requested to deliver 25 bits of priming information just as in the other two modes. This priming data, PD, is now transmitted and simultaneously routed to a random access memory (RAM) input select circuit 136 to the input of a random access memory (RAM) 138 for storage. The prime is then retransmitted four additional times from the RAM 138 through a transmit prime control circuit 140 to the controller as the signal PD*. This results in the transmission of prime five times and also allows the receiving unit to make a three-out-of-five decision as to the correct reception of prime. A prime bit counter 142 keeps track of which bit of prime is being acted upon by the RAM 138 and provides the address for the RAM 138. A prime repeat counter 144 keeps track of how many times the 25 bits of prime has been transmitted. Counter 144 is decoded by a prime repeat decode 146 and generates signals such as signal P5 which indicates the fifth transmission of the prime information. When receiving the priming sequence in the synchronous half-duplex mode (SYN HD), the first four priming sequences are stored in the RAM 138. As the fifth priming sequence is being entered, address scan circuitry 148 rapidly accesses the corresponding bits from the first four priming sequences and a three-out-of-five prime voting circuit 150 performs a three-out-of-five prime vote to determine what the correct priming bit should be. In other words, the logic level of the five priming bits are detected and the final level is determined by the largest number of a particular logic level in the detected five levels. Once the decision has been made, the three-out-of-five prime voting circuitry 150 routes the results to receive prime control 134 in order to be loaded into the key generator as valid priming information CGD. Timing and control for the circuitry is provided by timing and control 152. A read/write control circuit 154 operates to control the reading or writing into the RAM 138. The request for key (RK) logic 156 generates the request for key (RK) for the code generator. Depending upon which mode of operation in which the system is operating, the key generator is under the command of either the receive, output or keyboard synchronizers, as will be subsequently described. A request for key logic 156 determines which synchronizer has control and generates the request at the proper time, in a manner to be subsequently described in greater detail. Alarm Circuit FIG. 10 illustrates the alarm and lamp driver circuitry of the invention which drives the eight front panel lamps previously described. The circuitry also drives an audible alarm by the generation of the signal HORN. The alarm and lamp driver circuit contains all of the lamp driver circuits and logic to drive the eight front panel lamps. A blink generator 160 and the beep generator 162 generate timing signals for the flashing lights and the periodic beep of the audible alarm. The generators 160 and 162 are connected to the lamp driver circuit 164, which generates lamp driving signals. A break detector circuit 166 senses an open condition on the receive data line labeled RXRAW. If an open condition lasts for approximately two characters duration, a break flip-flop 168 is set and the break lamp will begin flashing. The power on preset circuit 170 provides a clearing pulse on the master reset line MCLR to insure that the system is in a cleared condition after the application of power. The signal MCLR is also generated any time that the alarm reset switch 62 (FIG. 5) is depressed. The timing and control for the circuitry is provided by the timing and control circuitry 172. The key generator alarm and check circuit 174 constantly monitors the cipher text and plain text being generated within the system. Should a fault occur in the key generator, such as the key being stuck at a logical "0" or logical "1", the cipher text and plain text will become equal or complements of each other. Should this condition occur for five consecutive characters, the key generator alarm and check circuit 174 will detect the malfunction and generate the signal KGFAULT. This signal is applied to the alarm detect circuit 176. The key generator alarm and check circuitry is self checking. Each time the system is commanded to the crypto mode, a simulated fault condition is applied to the key generator alarm and check circuitry 174 during the priming sequence, and a signal called CHECK is required from the circuit before the machine can switch to the crypto mode. Once the check signal has been generated by the key generator alarm and check circuit, and the machine has entered the crypto mode, any subsequent malfunction will be considered a key generator fault. The only time that the key generator alarm and check circuit is disabled is during a Carriage Return, Line Feed, or a Null character. These characters are passed unciphered and the alarm circuit should be disabled when they occur. These three conditions are denoted by the signals CR, CRFF, and NULL. The signal COMP denotes that the ciper text and plain text have compared and is one step toward an alarm condition. Likewise, the signal ALL1 denotes that the key word generated is all logical ones. Five consecutive characters with either of these conditions being true will cause the generation of an alarm. The key generator FAULT is only one of six alarm conditions. For a more complete description of alarm and check circuitry, reference is made to U.S. Pat. No. 3,781,472, entitled "DIGITAL DATA CIPHERING TECHNIQUE", issued Dec. 25, 1973, and assigned to the present assignee. The remaining alarm conditions include the typing in of an illegal command. If the system is being used in the OFF-LINE or ASYN mode, the character sequence LTRS QQ is typed while the system is already in the crypto mode, this is termed an illegal command (ILGCOM) and will result in the generation of an alarm. To recover, the alarm reset indicator is pressed and the message is reenciphered from the beginning. On rare occassions, such as once every 350,000 characters, the sequences NNNN or ZCZC will occur in the cipher text. Since these should not appear in the cipher text, an alarm condition (ILGSEQ) is indicated if either of these sequences occur. This alarm is used primarily in the off-line mode when preparing enciphered data to be transmitted over a Telex network. To recover from this alarm situation, the alarm reset indicator is depressed and the message reenciphered. Additionally, the data buffer may exceed its capacity due to an internal fault. If this fault occurs (FIFOV), an alarm is also generated. To recover, the alarm reset button is depressed. In the SYN HD mode with full-duplex channel, the key buffer may become empty (FIFOEMP) due to an internal fault, if this condition exists, an alarm is generated. To recover, the alarm reset indicator is depressed. The last alarm condition is caused by the failure of the master unit to receive the acknowledge from the slave unit when in the SYN HD mode with full-duplex channel. If this slave station has its LINE switch in the HD position while operating in the SYN HD mode, the slave station will fail to give a suitable response to the master unit. This lack of response will cause the master unit to enter the alarm condition (FIFOFULL) approximately ten seconds after the synchronization process is complete. To recover from this condition, the operator of the slave unit must be informed to place his LINE switch in the FD position. The six alarm conditions are OR'ed together to generate the signal ALARM by the alarm detect circuit 176. Scrambler I FIG. 10 also illustrates the Scrambler I circuit which includes most of the key word handling circuitry. As the key data is requested by the prime data circuit, it is accumulated serially in the key word register 180. In the synchronous mode, it is necessary to hold the key data in the key holding register 182, in order to synchronize the key (which is being generated synchronously) with the data which can be entered from the keyboard in an asynchronous fashion. In both the off-line and asynchronous modes, the key data is accumulated in the key word register 180 and then routed in parallel through the key first in-first out (FIFO) input select circuitry 184, around the key FIFO register 186 and out through the key select circuitry 188. The selected key word appears in parallel labeled SK1 through SK5. In the synchronous mode, the key is accumulated in the key word register 180 and transferred in parallel into the key holding register 182. It is then routed through the key FIFO select circuitry 184 to the key FIFO register 186. The key FIFO register 186 is a first in-first out register which stores the key word for use in the synchronous mode with a full-duplex channel. In the SYN HD mode, if cryptographic synchronization is to be established in both directions simultaneously, the enciphered data at the master station must be enciphered with real time key. However, the received enciphered data must be deciphered with key that was generated at an earlier time. When the unit is operating as a master, the key FIFO register 186 holds the key generated and compensates automatically for the transmission delays encountered through the channel. The signal inputs labeled PRTRESS and RESPONSE are timing signals which enable the master unit to establish the correct time at which the response from the slave unit should be printed. The all one's detect circuit 190 determines when the key accumulated in the key word register 180 is in the all one's condition. This is used for alarm check purposes in the alarm circuit. The FIFO status circuit 192 is used to determine whether or not the key FIFO register 186 is empty or has overflowed. Both of these conditions constitute an alarm. The frame sync counter 194 and the frame sync generator 196 are utilized during the preamble to the synchronization sequence wherein a series of characters are transmitted which are recognized by the remote station as the frame sync pattern. The frame sync counter 194 keeps track of the number of characters transmitted in this sequence and the frame sync generator 196 generates the proper character in the sequence. This series of characters will be subsequently described in greater detail. The data from the keyboard is accumulated serially in the keyboard data register 198. The input to the keyboard data register 198 can be any one of three inputs; PD*, KBDAT, and FSG. Since the data accumulated in the keyboard data register 198 represents the data to be transmitted, it normally consists of the keyboard data, KBDAT. However, during the priming sequence, the prime data from the key generator must also be supplied to the keyboard data register for subsequent transmission. This is denoted by the signal PD*. In the synchronous mode, the keyboard data register 198 must also be loaded with the output of the frame sync generator for transmission of the frame sync pattern. The signals KSTART and KSTOP are applied to the keyboard input select 200 in order to attach a proper start and stop bit to the key generator priming data, PD*. Since these are random information bits from the key generator, they must be converted to legal telegraph characters before transmission. The signal KDRI is a synchronized signal representing the keyboard input. Data from the receive line, RXDAT, can also be selected by the RX register input select 201 and accumulated serially in the RX data register 202. The selection of which register to use is made by the register select 204, depending on whether or not the system is enciphering or deciphering. This parallel selection is then routed through to the enciphering circuitry in the form of five input data lines labeled ID1 through ID5. The signal RDRI is a synchronized serial data signal representing the received input data. Timing for the Scrambler I circuit is provided by the timing and control circuit 206. Scrambler II FIG. 11 illustrates the Scrambler II circuit which consists of the system enciphering/deciphering circuitry as well as the data FIFO buffer. The selected key bits SK1 through SK5, as well as the selected input data words ID1 through ID5, are applied to a read only memory (ROM) 210, as well as the modulo-2 adders 212. Both of these circuits perform the enciphering/deciphering algorithm. The ROM 210 generates a telex compatible cipher-set of 29 characters, which has eliminated the three forbidden Telex characters, in a somewhat similar manner as that described in previously noted U.S. Pat. No. 3,781,472. The other enciphering circuitry, the modulo-2 adders 212, provide a full 32 character output. This is known as the full cipher set. The selection of which set is to be used is performed by the FULL/TELEX select 214. This select circuit 214 is actuated by the SET switch located on the power supply module. When using the Telex-set, the output of ROM 210 must be modified in some instances. Whenever a line feed (LF) character results from a decipher operation, the previous character must be examined to determine whether or not it was a carriage return (CR). If the previous character was not a CR as determined by the circuit CR F/F 220, the LF-to-FIGS conversion circuitry 222 converts the LF to a FIGS character. In order to set the CR F/F 200, a character decode circuit 224 determines whether or not the output of the ROM 210 is a CR, a LF or a NULL character. The output of the Full/Telex select 214 is applied to comparators 226 as well as the Plain/Crypto select circuitry 228. The comparators 226 compare the enciphered data with the unenciphered input data and the result, COMP, is used in the alarm circuit. The Plain/Crypto select circuitry 228 selects the unciphered input data, ID1 through ID5, or the enciphered circuitry from the Full/Telex select 214. This selection depends upon the mode of the system. For instance, if in the off-line or asynchronous mode, the input data would be selected prior to the plain-to-crypto sequence and the output of the Full/Telex select 214 would be selected after the sequence. In the synchronous mode, the enciphered data is always selected, except when the BYPASS switch has been activated. The output of the Plain/Crypto select 228 is applied to the data FIFO buffer 230. Buffer 230 is essential in smoothing out the timing differences in the synchronous mode. In the synchronous mode, the data is transmitted under the control of the highly accurate clock. Each character is located precisely within a timing pattern. Since the data from the keyboard is not in synchronization with the transmission line, the data FIFO buffer 230 automatically holds the character from the keyboard until such time as the line is ready for a new character. When the line is ready for a new character, the output of the data FIFO buffer 2300 is transferred in parallel to the output data register 232. The output data register 232 is then shifted serially through the pad flip-flop 234 to the data switching circuitry in the form of the signal ODRO. The status of the FIFO buffer is detected by FIFO status 235. If the line is ready for a new character to be transmitted and none is present in the data FIFO buffer 230, the pad flipflop 234 is set which puts a "mark hold" on the line precisely equal to one character in length. Since the transmission line is running slightly faster than the maximum normal keyboard input rate, approximately every 10 to 15 characters, the pad flipflop 234 will be set to allow the keyboard to catch up with the line. The FIFO status flipflop 235 determines whether or not the data FIFO buffer 230 has overflowed to provide one of the alarm conditions. Timing for the Scrambler II circuit is provided by the timing and control 238. An important aspect of the present invention is the encoding and decoding provided by the ROM 210. A suitable ROM for use with the present invention is the 4854 Read Only Memory manufactured and sold by Electronic Arrays, Inc. of Mountainview, Calif., which has a 2048.times.8 memory capacity. Briefly, for enciphering, the ROM 210 contains enciphered digital representations of all of the characters in the Telex cipher set, the enciphered representations being grouped in addressable subsets according to the generated clear text digital word and the generated digital key word. Therefore, for a particular clear text character to be enciphered and for a particular key word, an address signal is generated in order to access a particular encoded digital word. This digital word is then output as an encoded character. The three forbidden characters are not stored within the ROM 210 and are thus not generated. The binary digital representations stored within the ROM 210 are represented in an octal form in order to simplify the description of the ROM. Similarly, for deciphering, decoded binary representations are stored in the ROM in order to generate clear text characters in response to specific combinations of an enciphered digital character and a random key word. These digital representations are also represented in octal form. Tables I and II set forth below are representative of portions of the stored data within the ROM 210. Table I represents a portion of the stored data for encoding, while Table II represents a portion of the stored data for decoding.
TABLE I
__________________________________________________________________________
Plain Text Characters
Data
NULL
E LF A SP S I U CR D R J N F C K
Key.dwnarw. .fwdarw.
T Z L W H Y P Q O B G FIGS
M X V LTRS
__________________________________________________________________________
K=0 0000
000 001
002
003
004
005
006
007
010
011
012
013 014
015
016
017
0020
020 021
022
023
024
025
026
027
030
031
032
002 034
035
036
037
K=1 0040
000 021
022
023
024
025
026
027
010
031
032
007 034
035
036
037
0060
030 011
012
013
014
015
016
017
004
005
006
022 002
003
001
020
K=2 0100
000 011
012
013
014
015
016
017
010
005
006
027 002
003
001
020
0120
004 031
032
007
034
035
036
037
024
025
026
012 022
023
021
030
K=3 0140
000 031
032
007
034
035
036
037
010
025
026
017 022
023
021
030
0160
024 005
006
027
002
003
001
020
014
015
016
032 012
013
011
004
K=4 0200
000 005
006
027
002
003
001
020
010
015
016
037 012
013
011
004
0220
014 025
026
017
022
023
021
030
034
035
036
006 032
007
031
024
K=5 0240
000 025
026
017
022
023
021
030
010
035
036
020 032
007
031
024
0260
034 015
016
037
012
013
011
004
002
003
001
026 006
027
005
014
K=6 0300
000 015
016
037
012
013
011
004
010
003
001
030 006
027
005
014
0320
002 035
036
020
032
007
031
024
022
023
021
016 026
017
025
034
K=7 0340
000 035
036
020
032
007
031
024
010
023
021
004 026
017
025
034
0360
022 003
001
030
006
027
005
014
012
013
011
036 016
037
015
002
K=8 0400
000 003
001
030
006
Referring to Table I, it will be seen that the data stored in the ROM 210 comprises seventeen vertical columns which are broken up into a plurality of pairs of horizontal rows. The first vertical column is representative of the beginning octal address for the characters stored in the corresponding row. The remaining vertical columns represent the plain text characters corresponding with the encoded octal numbers in the corresponding column position. For example, referring to the second vertical column, the octal number "000" corresponds to the plain text character NULL. The octal number "020" corresponds to the character T. Each pair of horizontal rows corresponds to a particular five bit random key word, of which there are a total of thirty-two possible characters. Each of the key characters has been provided with a number from 0-31. For example, key "0" is equal to the five digital bits "00000", while key word "5" is equal to the digital word "00101". Table II is constructed in the identical manner, except plain text data is stored within the columns and rows. In order to further describe the operation of the ROM 210, it will be assumed that it is desirable to encipher the character "Q" with a random code word number "5". An address signal ID1-ID5 is thus generated to represent the input clear data character "Q". The signal ID5-ID1 would thus comprise the digital word "10111". Similarly, a key word is generated from the random code generator previously described and is applied as signals SK1-SK5 to the ROM 210. In the particular example, the key word number "5" is represented by the digital word "00101". A digital bit "0" is also generated by he circuit to denote it is desired to encipher with the ROM 210. Thus, the digital word "00010110111", comprising the eleven digits previously described, is applied to the ROM 210. Converting this digital word into octal, beginning with the least significant bit, provides the octal number "0267". Looking for the octal number "0267" in Table I, it will be found that the octal word "004" appears at the intersection of the column corresponding to the character "Q" and the row corresponding to "K-5". Converting the resulting octal number "004" to binary provides the binary number "00000100". The last five bits "00100" correspond to the SPACE character which is the enciphered character which is then output by the system. In operation, the address provided by the signals ID1-ID5 and SK1-SK5 are applied to the ROM 210, the ROM 210 is strobed and the SPACE character would be generated to an output latch. Utilizing the reverse of the previous example, it will now be assumed that it is desirable to decipher the character SPACE utilizing the key word number "5". The signals ID5-ID1 for the SPACE character comprise "00100". The signals SK1-SK5 for key word number "5", as before is "00101". A "1" bit is generated to denote that it is desired to decipher. The resulting digital word comprises "10010100100". The resulting octal address for this number is "2244". At that address in the data shown in Table II, the stored plain text data is "027". The resulting binary number for the octal number "027" is "00010111". The last five bits "10111" correspond to the character "Q". The character "Q" is then output by the ROM 210 as the clear text word corresponding to the encoded character. Data Switching Circuit FIG. 11 also illustrates the data circuitry which selects the routing of the data paths within the system. The two main data paths are the printer data and the transmit line data. The receive data, labeled RXRAW, and the keyboard data, labeled KBRAW, are also routed through the data switching circuitry. The primary influence on the selection and routing of the data is the mode of operation indicated by the three signals OFFLINE, ASYN, SHD. These signals denote the three basic operating modes of the system and are applied to control the printer data select 239 and the transmit data select 241. Each of the lines PRDAT and TXDAT can be forced to a logical "0" by the actuation of the BREAK switch as indicated by the signal BREAKSW applied to the alarm inhibit and break circuits 246 and 248. Both can be forced to a logical "1" or marking condition by the occurrence of an alarm condition. The printer inhibit 240 and keyboard inhibit 242 circuits are activated when a local half-duplex teleprinter is used. When employing a half-duplex teleprinter, the KY and PR ports must be connected in series. For this reason, it is necessary to inhibit the printer data when the keyboard is active. It is also essential that the keyboard circuit be inhibited when the receive data is active. Likewise, the receive data inhibit 244 inhibits the RX data port whenever a signal is being transmitted in the two-wire line configuration. When the two-wire or half-duplex line is used, the RX and TX ports must be connected in series. To prevent the outgoing character from being reflected back into the RX port, the receive data inhibit 244 blocks out the RX port for one character time. The probe test logic 250 is for diagnostic purposes and allows the printer data to be connected to the PROBE test point. The space generator circuit 252 is used to provide the space (SP) character supplied by the printer when the receive prime is being loaded into the key generator. The timing and control circuitry 254 is used for timing of the data switching circuitry while the timing circuitry 256 is used primarily to aid in the control of the digital correlator during the SYN HD mode. Main Controller FIG. 12 illustrates the main controller circuit which provides two primary functions. It generates all of the control sequences that determine the state of the system, as well as generating all of the clock signals for the timing. The heart of the controller consists of the shift register 260. The four states of the machine are IDLE, FRAME, PRIME and OPR. The IDDLE mode indicates that the system has not yet initiated a priming sequence. In the off-line and asynchronous mode, the IDLE mode means that the plain-to-crypto sequence has not been encountered or the crypto-to-plain sequence has returned the machine to the IDLE state. The normal next state from IDLE is the PRIME state. This state causes the system to either generate or accept priming information either to or from the key generator. The OPR, or operate state, denotes that the system is actually enciphering or deciphering a message. The fourth state FRAME, is entered only in the SYN HD mode and denotes that the system is sending the frame sync pattern. The controller is initiated by the power on preset or the ALARM RESET button to the IDLE state. From this point, the normal sequence of states, IDLE, FRAME, PRIME and OPR, are actuated by the state transfer logic and clock control circuitry 262. This logic consists of merely shifting the "1" bit set in the shift register 260 to the next state when a sequential state transfer occurs. However, if a jump state is required, the controller register 260 must be preset to the new state by the jump state steering logic 261. Several sub-control functions are also contained in the master controller circuitry. The plain/crypto flipflop 264 determines whether or not the system is to encipher a particular message or pass it unciphered. The flipflop 264 is set and reset by the control sequences. The master/slave flipflop 266 is affected only during the SYN HD mode. If the operator presses the INITIATE switch or types the sequence QZQZ to initiate the framing and priming sequence, the flipflop 266 will be reset to indicate that the machine is a master. If the frame sync pattern has been received and detected by the correlator circuit, flipflop 266 will be set to indicate that the unit is a slave. The ENC/DEC flipflop 268 denotes whether the machine is enciphering or deciphering. When off-line, the flipflop 268 is directly set or reset by the ENCIPHER and DECIPHER switches respectively. However, in the on-line modes (ASYN or SYN HD), the flipflop 268 is set under the control of the keyboard synchronizer and the receive synchronizer, to be later described. Timing is provided by timing and control circuitry 269. All of the timing signals and clock pulses for the entire system are generated by a frequency divider 270, which divides the highly stable temperature compensated crystal oscillator (TCXO) 272. The output of this divider is fed into two two-phase clock generator circuits 274 and 276. Circuit 274 generates the high speed clocks FC1 and FC2 and the circuit 276 generates a slower speed two-phase clock labeled CP.phi.1 and CP.phi.2. Receive Synchroniser FIG. 12 also illustrates the receive synchronizer. This synchronizer is almost identical to the output and keyboard synchronizers subsequently shown in FIGS. 13 and 14. The three synchronizers provide the timing necessary for data handling and transfer, as well as register loading and control. All three synchronizers operate in basically the same manner. The only differences in operation are the signals which control the synchronizers, the clock which drives them, and the number of timing signals derived. The keyboard synchronizer (FIG. 14) controls the handling of the data entered from the keyboard. In the off-line and asynchronous modes, the synchronizer operates in a start/stop fashion and is actuated by the data from the keyboard. In the SYN HD mode, the keyboard synchronizer also operates in the free-run mode temporarily while the frame sync pattern and priming data are being transmitted. The output synchronizer (FIG. 13) controls the output of the system, either to the line or the local printer. In the off-line and asynchronous modes, the output synchronizer operates in start/stop fashion and is actuated by the KEND pulse from the keyboard synchronizer. IN the SYN HD mode, the output synchronizer operates in the free-run mode as soon as the priming information has been transmitted. The output synchronizer controls the key generator in the SYN HD mode if the machine is a master. The receive synchronizer shown in FIG. 12 controls the handling of the data from the RX port in either of the online modes. In the asynchronous mode, the synchronizer operates in start/stop fashion and is activated by the received data, RXDAT. In the SYN HD mode, the synchronizer free-runs as soon as the correlator recognizes the frame sync pattern from the sending unit. In a slave machine, the receive synchronizer controls the key generator. The only time the receive synchronizer is active in a master unit is when the LINE switch is set to FD. The unit is then expecting a response from the slave unit so that synchronization can be established simultaneously in both directions.. In this situation, the receive synchronizer does not control the key generator, but does control the output of the key words stored in the key FIFO register 186 (FIG. 10). As shown in FIG. 12, the clock labeled CP.phi.2 is divided by a multi-modulus baud rate counter 280, to provide a clock signal equal to 16 times the baud rate. The amount by which the baud rate counter 280 divides the CP.phi.2 signal depends upon the baud rate selected on the BAUD RATE switch located on the power supply module. The output of this switch is indicated by the signals EN45, EN50, EN57 and EN100. The output of the baud rate counter 280 is further divided by a sub-bit counter 282 and decoded by decode 284 to provide timing signals equal to 1/16 of a bit period. The signal is further divided by the bit counter 286 and decoded by decode 288 to provide timing signals which correspond to each individual bit of the data character. Both of these decode circuits are further decoded by decode 290 to provide all of the timing pulses necessary to operate the system. In both the off-line and asynchronous on-line modes, the receive synchronizer is enabled by the appearance of a start bit on the RXDAT signal as controlled by the start/stop flipflop 292. The synchronizer is enabled and all of the timing pulses are generated until the REND pulse is generated which resets the start/stop flipflop 292. The synchronizer is then idle until the next start bit occurs on the RXDAT line. The receive synchronizer free-runs during certain modes of operation. This free-running nature of the receive synchronizer is controlled by the free-run logic 293 and is governed by the signals SYN, PRIME and OPR. An additional feature of the receive synchronizer is the late flipflop 294 and the early flipflop 296. Whenever the synchronizer is free-running its effective baud length is exactly 6.75. When the start bit from the RXDAT line perfectly coincides with the start bit within the synchronizer, neither the late nor the early flipflop will be set. However, should the data and the synchronizer drift slightly, either of these flipflops 294 and 296 will be set, depending on the direction of the drift. Appropriate action is taken within the decode timing pulse logic 290 to correct the synchronizer to keep it aligned with the incoming data. This constitutes a digital phase-lock loop which keeps the receive synchronizer fine tuned to the incoming RXDAT signal. As long as the RXDAT signal is present, the receive synchronizer should be able to track the incoming data as long as the slew rate is not more than 1/16 of a bit per character. The capture range of the digital phase lock loop is plus or minus one-half bit. A final feature of the receive synchronizer is the print flipflop 298 which determines if an incoming character had a start bit in the proper location. If not, the print flipflop 298 will be reset and the corresponding character will not be deciphered and applied to the printer. This prevents unwanted characters from eing printed which were generated by noise on the line thus creating false characters. Timing for the receive synchronizer is provided by the timing and control circuit 300. Output Synchronizer FIG. 13 illustrates the output synchronizer which controls the output of the system, either to the line or to the local printer. In the off-line and asynchronous modes, the output synchronizer operates in start/stop fashion and is actuated by the KEND pulse applied from the keyboard synchronizer to the asynchronous start/stop flipflop 310. When a character is entered, the keyboard synchronizer shifts the character into the KY register 198 (FIG. 10) and loads the enciphered character into the data FIFO buffer 230 (FIG. 11). The output synchronizer is then activated to provide the timing to shift the character out from the data FIFO buffer 230 to the line or printer. In the SYN HD mode, the output synchronizer shown in FIG. 13 operates in the free-running mode by operation of the free-run logic 312, as soon as the priming information has been transmitted. The output synchronizer controls the key generator in the SYN HD mode if the machine is operating as a master. The clock signal CP.phi.1 is divided by a multi-modulus baud rate counter 314, in dependence upon the baud rate selected by the baud rate switch located on the power supply module. The output of counter 314 is further divided by a sub-bit counter 316 which is decoded by a sub-bit decode circuit 318. The clock signal is further divided by a bit counter 320 which is decoded by a bit decode 322 to provide timing signals corresponding to each individual bit of the data character. Both of the decode circuits are further decoded by a timing pulse decode 324 to provide the timing pulses necessary to operate the circuit. Sequence Detector FIG. 13 also illustrates a sequence detector circuit which is used to detect the control characters required to switch the system from the plain to crypto and from crypto to plain. Each of these characters is decoded by the character decode 330 from either the input data labeled ID1 through ID5 or the output data, OD1 through OD5. This selection is made by select circuit 332 and is dependent primarily upon whether or not the machine is enciphering or deciphering. Once the data has been selected by select 332 it is applied to the character decode logic 330, where the six required characters are decoded and applied to the sequence detectors 334. The sequence detector generates four signals labeled 4 CR, QZQZ, QK and QQ. These represent the four sequences used to control the system. In addition, another character decode 336 and a sequence detector 338 are constantly monitoring the cipher text (OD1 through OD5) to determine if the sequences NNNN or ZCZC have occurred. Both of these sequences are invalid as data in the Telex network. Should either of these signals occur during the enciphering of a message in the Telex mode, either off-line or in the asynchronous on-line mode, an illegal sequence (ILGSEQ) signal will be generated by sequence circuit 340 and result in an alarm condition. Likewise an illegal command situation can be encountered whenever the system is commanded to switch to the crypto mode when it is already in the crypto mode. This can occur only in the off-line or asynchronous mode. When the system is in the SYN HD mode, it is always in crypto and no sequences are required. Illegal commands are detected by detector 342 to generate the signal ILGCOM. Timing and control of the circuit is provided by timing and control 344. Keyboard Synchronizer FIG. 14 illustrates the keyboard synchronizer which controls the handling of the data entered from the keyboard. This synchronizer operates in the start/stop fashion in the off-line and asynchronous modes, and is actuated by the data from the keyboard. In the SYN HD mode, the keyboard synchronizer operates in the free-running mode temporarily while the frame sync pattern and priming data are being transmitted. Referring to FIG. 14, the asynchronous start/stop flipflop 350 is actuated by the keyboard data KBDAT in order to start and stop operation of the keyboard synchronizer. During the SYN HD mode, the free-run logic 352 is actuated in order to place the system in the free-running mode. The CP.phi.1 clock is applied to a baud rate counter 354 which divides the signal in dependence upon the selection of the baud rate switch located in the power supply module. The output of the counter 354 is further divided by a sub-bit counter 356, the output of which is decoded by a sub-bit decode 358. The output of counter 354 is also further divided by a bit counter 360, the output of which is decoded by a bit decode 362. The output of decodes 358 and 362 are further decoded by a timing pulse decode 364 in order to generate timing pulses for operation of the system. It will thus be seen that the receive synchronizer, output synchronizer and keyboard synchronizer operate in conjunction with one another in the different modes of operation of the system. In the asynchronous mode, the receive synchronizer is connected in an asynchronous configuration to receive enciphered digital data from a communications channel and to direct the enciphered digital data to the deciphering circuitry. In this mode, the output synchronizer is connected in an asynchronous configuration to the output of the deciphering circuitry to direct the deciphered digital data to the printer. When it is desired to encipher plain text data in the asynchronous mode, the digital characters are clocked in by the keyboard synchronizer to the enciphering circuitry. The output synchronizer is operable in an asynchronous configuration such that the enciphered digital characters are asynchronously shifted to the communications channel in an on-line configuration, or to the printer in an off-line configuration. In the synchronous mode, the keyboard synchronizer clocks in the digital characters from the keyboard. The digital characters are enciphered, and the output synchronizer is connected in a free-running synchronous mode to synchronously shift the enciphered digital characters to the communications channel. In the receive on-line synchronous mode, the receive synchronizer is connected in a synchronous free-running configuration to synchronously receive enciphered data from the communications channel. The receive synchronizer then synchronously directs the enciphered digital data to the deciphering circuitry. The output synchronizer is connected in a synchronous mode to the output of the deciphering circuitry to synchronously direct the deciphered digital data to the printer. Correlator Controller and Correlator The correlator controller shown in FIG. 14 operates with the correlator shown in FIG. 15 to recognize the frame sync pattern sent from the master to the slave unit in the SYN HD mode. A correlation technique is used to recognize the frame sync pattern. The actual correlation is done in the circuitry shown in FIG. 15, while the control, timing and counting circuitry which accompanies the correlator is shown in FIG. 14. The correlation pattern consists of 15 characters. The Baudot character with the best cross correlation properties is the character "B". The frame sync pattern thus consists of three inverse B's, followed by eleven normal character B's, followed by one final inverted B (B) character. The inverted B is truly the inverse of the normal character B, including the start and stop bits which have also been inverted. This is required to give a true inverse correlation pattern. Each character, B or B, is to be recognized by the correlation circuitry shown in FIG. 15 and a correlation pulse shown as PEAK is generated. If a correct number of peaks occur consecutively, frame sync will be established. The first three B characters are for preconditioning the correlator. This is to ensure that the correlator is in an initial state of C0. If nine out of the following eleven B patterns are detected, the correlator begins looking for the inverse pattern B. This is accomplished by inverting the input to the correlator register. Once the final B pattern has been recognized, the frame sync detect signal FSD will be generated and the system will immediately become the slave unit and start accepting the incoming prime which follows immediately. The method of determining whether or not the correlation pattern has occurred is by sampling the incoming data, RXDAT, at eight times the bit rate. Referring to FIG. 15, each of these samples is accumulated in a 54-bit shift register 370 in such a fashion that if the proper correlation character (B or B) has occurred, the shift register 370 will contain 54 one's. The number of one's in the shift register 370 is determined by the number of one's counter 372. The shift register can be instructed to act as an end-around shift register by the control signal CIRC which is applied to a shift/circulate control 374 to cause the shift register 370 to circulate its contents. If the signal CIRC is a logical "0", the shift register 370 is configured to accept a new sample. After each sample, the shift register 370 configures itself as a circulating shift register and is clocked 54 times to complete one revolution of the contents. As the contents are being circulated at high speed the number of one's contained in the register is accumulated in the number of one's counter 372. The shift/clock counter 376 controls the shifting of the correlator register 370. Register 370 has a modulus of 54. After each circulation, the contents of the number of one's counter 372 is transferred in parallel to the holding register 380. The output of the holding register 380 as well as the output of the number of one's counter is fed into a comparator 382 and the threshold detector 384. The threshold detector determines if the number of one's contained in the holding register | ||||||
