Abstract:
Secure Variable Data Rate Transceivers and methods for implementing Secure Variable Data Rate are presented. An efficient and systematic method and circuit for implementing secure variable data rate transceivers are presented. The SVDR method is based on block ciphers. An index method is presented for minimizing transmission overhead. This allows SVDR to achieve higher security by using the full ciphermode stream.

Description:
STATEMENT REGARDING FEDERALLY-SPONSORED RESEARCH AND DEVELOPMENT 
     This invention was made with Government support from the Navy under Contract No. N00039-06-C-0096, SBIR Phase I: Tactical Secure Voice/Variable Data Rate Inter Working Function. 
    
    
     FIELD OF THE INVENTION 
     The present invention relates to data processing, cryptography, transmission, networking, and digital communication. More specifically, it is related to secure voice over Internet Protocol. 
     BACKGROUND OF THE INVENTION 
     Voice over Internet Protocol (VoIP) was developed as a feature in the original Request for Comments (RFC) document that defines the Internet Protocol in the early 1980&#39;s (IETF RFC 760: Information Sciences Institute at University of Southern California, “DoD Standard Internet Protocol,” January 1980). Early versions of VoIP made use of relatively inferior voice compression technologies and suffered from many of the same network problems we are facing today such as Quality of Service (QoS), jitter, dropped calls, latency, and bandwidth constraints. While many of these problems have been addressed in more recent networking technology, security has remained a primary afterthought for VoIP. 
     There are currently two standards that define voice services over the Internet. The first is H.323 which is standardized by the ITU-T (ITU-T H.323 Standard, “Packet-based multimedia communications systems”, June 2006). The second is session initiation protocol (SIP) which was standardized by the IETF as RFC 3261 (IETF RFC 3261: J. Rosenberg, H. Schulzrinne, G. Camarillo, A. Johnston, J. Peterson, R. Sparks, M. Handley, and E. Schooler, “SIP: Session Initiation Protocol”, June 2002). SIP was adopted by the 3GPP in 2001. For security, H.323 requires the use of H.235 while SIP has been primarily open and allowed VoIP implementers to use cryptography methods such as SRTP, IPSec, and custom cryptography methods (ITU-T H.235.1 Standard, “H.323 security framework: Baseline security profile,” September 2005, IETF RFC 3711: M. Baugher, D. McGrew, M. Naslund, E. Carrara, and K. Norrman, “The Secure Real-time Transport Protocol (SRTP),” March 2004). Additionally, SIP uses a text configuration which makes implementing SIP easy to understand, debug, and modify to meet customer&#39;s needs. 
     In speech applications, a CODEC&#39;s performance is measured by its Mean Opinion Score (MOS). The MOS method makes use of a combined average of subjective listeners. In general this method does not always lead to the same result but it can determine the difference between various CODEC performances. To increase the repeatability of measuring the MOS, the ITU-T came out with several standards with the most recent being ITU-T P.862 the perceptual evaluation of speech quality (PESQ) (ITU-T P.862, Perceptual evaluation of speech quality (PESQ): An objective method for end-to-end speech quality assessment of narrow-band telephone networks and speech codecs, Amendment 2, November 2005). While originally developed for narrowband speech it has been extended to wideband speech in P.862.2. In addition to the MOS measurements, to account for various other factors inherent to voice over Internet protocol (VoIP), the ITU-T developed G.107 the E-model which takes into account impairments from various sources such as delay (ITU-T G.107: The E-model, a computational model for use in transmission planning, August 2008). The E-model yields a better prediction for quality of service (QoS) for VoIP. 
     Narrowband speech is primarily dominated by three different CODECs in industry. They are the adaptive multi-rate (AMR) codec for GSM, the EVRC-B codec from Qualcomm for 1xEVDO, and Speex for open source VoIP applications (3GPP TS 26.104: ANSI-C code for the floating-point Adaptive Multi-Rate (AMR) speech codec, 3GPP2 TSG-C C.R0018-C v1.0: Software Distribution for Enhanced Variable Rate Codec (EVRC), Speech Service Options 3, 68, and 70, Minimum Performance Specification January 2008, Speex: a free codec for free speech). AMR implements a discontinuous transmission method to achieve variable rate transmission. Additional rate adjustments must be made prior to using their encoder. The EVRC-B code achieves variable rate transmission by using a discontinuous transmission method like AMR. The Speex codec uses a different approach to achieve variable rate transmission. Speex bases its quantization on the actual speech which allows it to achieve better performance in variable data rate (VDR) applications. In the new ITU-T standard G.729.1, a scalable variable data rate codec is described that is compatible with G.729 but can assist in Quality of Service through adaptive bit rates after transmission at intermediate nodes (S. Ragot, et al., “ITU-T G.729.1: An 8-32 kbit/w scalable coder interoperable with G.729 for wideband telephony and voice over IP,” in Proceedings of the IEEE International Conference on Acoustics, Speech, and Signal Processing, vol. 4, pp. 529-532, Apr. 15-20, 2007). 
     Variable data rate voice compression technology is dominated by several techniques. The first technique relies on voice activity detection (VAD) and is employed in modern day cellular and voice over Internet protocol (VoIP) systems. The main voice compression CODECs used in modern systems are the adaptive multi-rate (AMR) codec for GSM, the EVRC-B codec from Qualcomm for 1xEVDO, and Speex for open source VoIP applications (3GPP TS 26.104: ANSI-C code for the floating-point Adaptive Multi-Rate (AMR) speech codec, 3GPP2 TSG-C C.R0018-C v1.0: Software Distribution for Enhanced Variable Rate Codec (EVRC), Speech Service Options 3, 68, and 70, Minimum Performance Specification January 2008, Speex: a free codec for free speech). AMR implements a discontinuous transmission method to achieve variable rate transmission. Additional rate adjustments must be made prior to using their encoder. The EVRC-B code achieves variable rate transmission by using a discontinuous transmission method like the AMR codec. The Speex codec uses a different approach to achieve variable rate transmission. Speex bases its quantization on the actual speech which allows it to achieve better performance in variable data rate (VDR) applications. In the new ITU-T standard G.729.1, a scalable variable data rate codec is described that is compatible with G.729 but can assist in Quality of Service through adaptive bit rates after transmission at intermediate nodes (S. Ragot, et al., “ITU-T G.729.1: An 8-32 kbit/w scalable coder interoperable with G.729 for wideband telephony and voice over IP,” in Proceedings of the IEEE International Conference on Acoustics, Speech, and Signal Processing, vol. 4, pp. 529-532, Apr. 15-20, 2007). 
     Variable data rate communication is relatively new for sensor technology and voice communication. Until recently the majority of communication systems were designed for fixed bandwidth applications. Migrating to modern variable data rate communication systems has improved signal-to-noise ratio (SNR) of signals, Mean Opinion Score (MOS), decreased the outage probability, and increased the channel capacity of the communication links and networks. 
     Sensor networks are becoming common place with the decreasing cost and power requirements. These networks allow multiple types of information to be transmitted at various transmission rates. Newer systems allow feedback that can increase the efficiency of the system. One example might be to make more efficient use of water resources by decreasing water runoff through smart watering systems which protect from over-watering and under-watering. 
     Recently, there have been several efforts to implement security for VoIP but all these methods do not implement security efficiently. These methods increase bandwidth by viewing security as a blanket without knowledge of the underlying data being transmitted. Our goal is to develop security methodologies for VoIP which take into consideration the limited available bandwidth of Narrowband network technologies. 
     The primary challenge with implementing Secure Variable Data Rate (SVDR) implementations is minimizing the overhead due to adding security for variable data rate digital communications. Traditional techniques for implementing secure digital communications consist of padding the data of size (1) with size (p) for encryption and transmitting the entire encrypted data of size (I+p) with additional overhead due to Medium Access Control (MAC) header, Internet Protocol (IP) packet header, User Datagram Protocol (UDP) packet header, and optional Real-time Transport Protocol (RTP) packet header. Newer secure streaming media methods such as Secure Real-time Transport Protocol (SRTP) make use of the RTP header for determining the initialization vector for decrypting using segmented counter mode or f8 mode. 
     The present invention focuses on improving the bandwidth efficiency of secure variable data rate communication. While there exist several ways to implement secure digital communication and several ways to implement secure variable data rate digital communication, additional bandwidth efficiency can be gained if more bandwidth efficient secure variable data rate digital communication methods are used. What is needed is a systematic method for implementing secure variable data rate digital communications that reduces bandwidth overhead. 
     BRIEF SUMMARY OF THE INVENTION 
     The present invention provides an efficient low bandwidth implementation of secure variable data rate communication and describes a method for efficiently implementing low bandwidth secure variable data rate technology. 
     In accordance with the present invention, the secure variable data rate digital communication consists of information which is private referred to as variable data rate (VDR) digital communication and information which is transmitted over public networks referred to as secure variable data rate (SVDR) digital communication. An example is the problem of securing Voice over Internet Protocol (VoIP) when using variable data rate audio codecs. These codecs can produce encoded audio frames of varying lengths depending on the quantization method and how much information is contained in the original speech segment. Another example is for sensor networks where multiple sensor information packets are collected but transmitted together at different rates. Both transmitter and receiver know how to decode packets but they may not want to use the additional overhead associated with fixed encryption technologies for all packets. The SVDR method will take the variable data length into account in determining the amount of secure data to transmit. In this manner, the SVDR method can optimize itself depending on the input VDR data. 
     Further embodiments, features, and advantages of the present invention, along with structure and operation of various embodiments of the present invention, are discussed in detail below with reference to the accompanying figures. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS/FIGURES 
       The present invention is described with reference to the accompanying figures. In the figures, like reference numbers indicate identical or functionally similar elements. Additionally, the left-most digit or digits of a reference number identify the figure in which the reference number first appears. The accompanying figures, which are incorporated herein and form part of the specification, illustrate the present invention and, together with the description, further serve to explain the principles of the invention and to enable a person skilled in the relevant art to make and use the invention. 
         FIG. 1 . illustrates the Secure Transceiver Block Diagram. 
         FIG. 2 . illustrates the Streaming Media Encryptor/Decryptor Model. 
         FIG. 3 . illustrates the Secure Variable Data Rate Index Method. 
         FIG. 4 . illustrates the Secure Variable Data Rate Encryptor Block Diagram. 
         FIG. 5 . illustrates the Secure Variable Data Rate Decryptor Block Diagram. 
         FIG. 6 . illustrates the Secure Variable Data Rate Index Method using AES CTR mode. 
         FIG. 7 . illustrates the Secure Variable Data Rate Index Method using AES CFB mode. 
         FIG. 8 . illustrates the Secure Variable Data Rate Index Method using AES OFB mode. 
         FIG. 9 . illustrates lost packets with Secure Variable Data Rate streaming media. 
         FIG. 10 . illustrates a comparison between sequence numbering methods. 
     
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
     Modern digital communication networks suffer from the ability of malicious attackers eavesdropping on all digital communications. To prevent eavesdropping on private digital communications across public communication media/networks, encryption technology is used to secure the transmission media. Additionally, modern systems employ variable data rate (VDR) transmissions. Traditional secure transmissions rely on fixed length transmissions but modern variable length transmissions require a new method for implementing security. 
     A typical secure variable data rate transceiver is shown in  FIG. 1  by circuit  100 . This consists of a source coder, stream encryptor, and redundancy coder on the transmitter side. The source coder is responsible for converting the constant data rate (CDR) information bits into variable data rate (VDR) information bits. The stream encryptor encrypts the VDR bits using a stream cipher to generate an encrypted VDR stream. The redundancy coder adds redundancy to the information prior to transmission to reduce the likelihood of transmission errors. The receiver side is composed of a redundancy decoder, stream decryptor, and a source decoder. The redundancy decoder checks and corrects transmission errors. The stream decryptor decrypts the encrypted VDR stream. The source decoder converts the VDR information bits back into CDR information bits that can be interpreted correctly. 
     Circuit  100  consists of blocks  101 ,  102 ,  103 , and  104 . Block  101  is a source coder. In an embodiment, block  101  is a video coder. In another embodiment block  101  is an audio coder. In other embodiments, other coders may be used. Block  102  is a stream encryptor. In an embodiment, block  102  is AES in cipher mode Counter (CTR) mode. In another embodiment, block  102  is AES in cipher mode Output Feedback (OFB) mode. In other embodiments, other stream encryptors may be used. Block  103  is a redundancy coder. In an embodiment block  103  is a Low Density Parity Check (LDPC) encoder. In another embodiment block  103  is a Reed Solomon encoder. In other embodiments, other redundancy coders such as BCH encoders or turbo encoders may be used. Block  104  is the channel. In an embodiment, block  104  is a wireless channel. In another embodiment, block  104  is an Ethernet channel. In other embodiments, other channels may be used. Block  105  is a source decoder. In an embodiment, block  105  is a video decoder. In another embodiment block  105  is an audio decoder. In other embodiments, other decoders may be used. Block  106  is a stream decryptor. In an embodiment, block  106  is AES in cipher mode Counter (CTR) mode. In another embodiment, block  106  is AES in cipher mode Output Feedback (OFB) mode. In other embodiments, other stream decryptors may be used. Block  107  is a redundancy decoder. In an embodiment block  107  is a Low Density Parity Check (LDPC) decoder. In another embodiment block  107  is a Reed Solomon decoder. In other embodiments, other redundancy decoders such as BCH decoders or turbo decoders may be used. 
     Circuit  100  consists of a secure transmitter and a secure receiver. The transmitter consists of blocks  101 ,  102 , and  103 . The receiver consists of blocks  105 ,  106 , and  107 . Input data goes into the source coder block  101  and is converted to an efficient digital representation which is the output. The output from block  101  is the input to block  102 . Block  102  takes the input insecure data and converts it to an output secure representation. The output from block  102  is the input to block  103 . Block  103  takes the secure representation and adds redundancy to it to ensure successful transmission and decryption on the receiver side. The output of block  103  is the input to block  104 . Block  104  is the channel and can introduce errors into the data representation. The output of block  104  is the input to block  107  the redundancy decoder. Block  107  removes the redundancy and corrects errors. The output of block  107  is the secure representation which is the input to block  106 . Block  106  takes the secure representation and decrypts it to generate the source coded format. The output of block  106  is the input to block  105 . Block  105  takes the source coded efficient digital representation and converts it to the original data. 
     One type of stream encryptor/decryptor can be seen in  FIG. 2  by circuit  200 . This stream encryptor/decryptor was designed using a standard block cipher and the exclusive OR (XOR) operation. 
     Circuit  200  consists of blocks  201 ,  202 , and  203 . Block  201  is a counter to update the initialization vector. In an embodiment, block  201  is a counter. In other embodiments, other methods may be used. Block  202  is a block encryptor. In an embodiment, block  202  is an Advanced Encryption Standard (AES) block cipher. In other embodiments, other block ciphers may be used. Block  203  is a parallel exclusive OR array. In an embodiment, block  203  is implemented with an array of exclusive OR units. In another embodiment, block  203  is implemented with a read only memory (ROM). In other embodiments, other methods may be used. 
     Circuit  200  consists of a secure transmitter and a secure receiver. The secure transmitter method consists of blocks  201 ,  202 , and  203 . Block  201  updates the initialization vector. The initialization vector is input to the block encryptor. Block  202  consists of the block encryptor which generates a pseudo-random stream based on the original initialization vector and block  201  updating the initialization vector. Block  203  performs the exclusive OR operation of the input (message (m)) bits with the pseudo random stream (PRS) generated bits. The result is the cipherstream (c) bits. The secure receiver method consists of blocks  201 ,  202 , and  203 . Block  201  updates the initialization vector. The initialization vector is input to the block encryptor. Block  202  consists of the block encryptor which generates a pseudo-random stream based on the original initialization vector and updates to the initialization vector, performed by block  201 , as in the stream transmitter. Block  203  performs the exclusive OR operation but with the input and output reversed from the secure stream transmitter. The inputs are the cipherstream (c) and the pseudo-random stream (PRS) with the output of the message (m) bits. 
       FIG. 3  contains circuit  300  a diagram showing how the VDR information bits, VDR i , and the pseudo random stream groups of fixed length (PRS i ), are combined to perform streaming encryption for bandwidth efficiency. There exists several cipher modes (algorithms) which produce a Psuedo Random Stream (PRS) based on a block cipher. Our technique makes use of the PRS to perform encryption but instead of aligning the VDR data, our technique makes the VDR data appear to be fixed length data to the cipher mode algorithm. After the VDR data is encrypted then the transmitter only transmits the valid encrypted portion, C i , in  FIG. 3  by circuit  300 . 
     Circuit  300  consists of blocks  301 ,  302 ,  303 , and  304 . Block  301  consists of the variable data rate (VDR) stream data. In an embodiment, block  301  is generated by a variable data rate coder. In other embodiments, other methods may be used. Block  302  consists of the secure variable data rate (SVDR) stream aligned with the pseudo random stream (PRS). In an embodiment, block  302  is generated by a software program. In other embodiments, other methods may be used to generate block  302 . Block  303  consists of the pseudo random stream (PRS) data. In an embodiment block  303  is generated by a cipher mode with the Advanced Encryption Standard (AES). In other embodiments, other methods may be used. Block  304  consists of the actual SVDR data that will be transmitted. 
     Circuit  300  illustrates how the secure variable data rate (SVDR) stream, variable data rate (VDR) stream, and the pseudo random stream (PRS) are related. The inputs are the variable data rate (VDR) stream from block  301  and the pseudo random stream (PRS) from block  303 . The output is the secure variable data rate (SVDR) stream illustrated in block  302  and block  304 . To generate block  304  several bits from the PRS are discarded which are shown in block  302  with a white background. 
     The SVDR technique can be described with the following equations.
 
 P   —   i=VDR   —   i∥ Padding(MAXLEN−size( VDR   —   i ))
 
 C   —   i=P   —   i xor PRS   —   i  
 
= VDR   —   i xor PRS   —   i (size( VDR   —   i ))∥ . . .
 
     Where VDR_i is the i-th VDR output frame, P_i is the plaintext packet consisting of the i-th VDR output frame plus padding to make P_i equal to the maximum packet length, PRS_i is the i-th pseudo-random-stream chunk of size equal to the maximum packet length, and C_i is the ciphertext consisting of the exclusive OR of P_i with PRS_i. 
     Then the transmitter transmits C_i but only the required bits which are equal to the size of the VDR_i frame. This implementation allows the transmitter and receiver to encrypt and decrypt as if the data is fixed length but then to use the bandwidth efficiently by transmitting only the encrypted VDR data.  FIG. 4  provides an example circuit  400  of the secure variable data rate encryptor block diagram.  FIG. 5  provides an example circuit  500  of the secure variable data rate decryptor block diagram.  FIG. 6  provides an example circuit  600  of the SVDR method using the AES CTR mode to generate the PRS.  FIG. 7  provides an example circuit  700  of the SVDR method using the AES CFB mode to generate the PRS.  FIG. 8  provides an example circuit  800  of the SVDR method using the AES OFB mode to generate the PRS. 
     Circuit  400  consists of blocks  401 ,  402 ,  403 ,  404 , and  405 . Block  401  is an augment of 0&#39;s block. In an embodiment, block  401  is implemented by a padding of zeros. In another embodiment, block  401  is implemented by a padding of random values. In another embodiment, block  401  is implemented as a random mapping of input values to output values. In other embodiments, other methods may be used. Block  402  is a truncate bits corresponding to 0&#39;s block. In an embodiment, block  402  is implemented by a truncation block. In another embodiment, block  402  is implemented as a random mapping of input values to output values corresponding to the reverse operation of block  401 . In other embodiments other methods may be used. Block  403  is a parallel exclusive-Or block. In an embodiment, block  403  is implemented by an exclusive-Or array. In another embodiment, block  403  is implemented by a look-up-table. In other embodiments other methods may be used. Block  404  is a concatenator block. In an embodiment block  404  is implemented by a routing network. In another embodiment, block  404  is implemented by a controller writing to memory. In other embodiments, other methods may be used. Block  405  is a block encryptor. In an embodiment block  405  is implemented by an Advanced Encryption Standard (AES) encryptor. In another embodiment, block  405  is implemented by a Data Encryption Standard (DES) encryptor. In other embodiments, other methods may be used. 
     Circuit  400  consists of the secure variable data rate (SVDR) encryptor block diagram. Circuit  400  operates as follows. The input variable data rate (VDR) data of length v is labeled by vdr i . The maximum size of the variable data rate data is length n. This data is connected as input to block  401 . Block  401  maps the input data (vdr i ) of length v to the output data of length n connected to block  403 . The output of block  401  consists of length n data connected to block  403  and the number of augmented 0&#39;s connected to block  402 . Block  403  maps the two input vectors of length n one coming from block  401  and the other coming from block  404  to the output data of length n (connected to block  402 ) based on the exclusive-Or operation. Block  402  maps the input data of length n coming from block  403  to the output data of length v based on the input number of augmented 0&#39;s coming from block  401 . Unused values are discarded. Block  404  maps the input data of length b from one or more blocks (block  405  in circuit  400 ). Length b is the length of the block size. When length b is greater than or equal to length n, then there is only one block  405 . When length n is greater than length b then there is more than one block  405 . The total number of required block  405  structures is equal to floor(n/b)+1. Block  405  is a block encryptor. Its purpose is to take the inputs: key of length k, ivec of length b, and generate the output prs of length b. The output of block  405  (labeled prs m*j+ . . .  ) is connected as input to block  404 . 
     Circuit  500  consists of blocks  401 ,  402 ,  403 ,  404 ,  405 ,  501 ,  502 , and  503 . Blocks  401  to  405  are identical in functionality to circuit  400 . Block  501  is a copy block for copying c i  to r i . In an embodiment, block  501  is implemented by a routing network. In another embodiment, block  501  is implemented with random access memory (RAM). In another embodiment other methods may be used. Block  502  is a set r i  to zero block. In an embodiment, block  502  is implemented as wires connected to ground. In other embodiments, other methods may be used. Block  503  is a control block. In an embodiment, block  503  is implemented by a multiplexor. In another embodiment, block  503  is implemented by an if-then-else statement. In other embodiments, other methods may be used. 
     Circuit  500  consists of the secure variable data rate (SVDR) decryptor block diagram. Circuit  500  operates as follows. The input variable data rate ciphertext (c i ) data of length v is labeled by c i . The maximum size of the c i  data is length n. This data is connected as input to block  501 . Block  501  maps the input data (c i ) of length v to the output data (r i ) of length v connected to block  503  in the Y position. Block  502  sets the value of the length to 0 as output which is connected to block  503  in the N position. Block  503  is a control block that selects between the Yes (Y) position and the No (N) position based on the input labeled (Received c i ?). The No position indicates that the ciphertext data was lost in transmission and that the pseudorandom stream must be advanced to the next position. The Yes position indicates that the system is performing a decryption that performs the opposite of the encryption method. The output of block  503  is the input to block  401  for circuit  500 . The output of block  402  can be of length  0  or of length v depending on if the (Received c i ?) value is Y or N. 
     Circuit  600  consists of blocks  401 ,  402 ,  403 ,  501 ,  502 ,  503 ,  601 , and  602 . Blocks  401 ,  402 ,  403 ,  501 ,  502 ,  503  are identical to the blocks described in circuits  400  and  500 . Block  601  is an initialization vector counter update block. In an embodiment, block  601  is implemented by a counter. In another embodiment, block  601  is implemented by an arithmetic logic unit. In other embodiments, other methods may be used. Block  602  is a pseudo random-number stream (PRS) generator. In an embodiment, block  602  is implemented by a block encryptor such as the Advanced Encryption Standard (AES) or the Data Encryption Standard (DES). In another embodiment, block  602  is implemented by a stream cipher such as RC4. In other embodiments, other methods may be used. 
     Circuit  600  consists of the secure variable data rate (SVDR) encryptor and decryptor using counter (CTR) mode. Circuit  600  operates as follows. First, the simplified SVDR encryptor circuit diagram operates as follows. The initial ivec 0  is connected to block  601  of the SVDR encryptor. Upon start the ivec j  is equal to ivec 0 . After the initial start the counter takes the previous ivec j-1  value and updates it by incrementing to generate the ivec j  value. The output ivec j  along with the input key are connected to block  602  of the SVDR encryptor. Block  602  uses these values to generate a prs i  output. The prs i  output of block  602  of the SVDR encryptor is connected to block  403  of the SVDR encryptor. The input variable data rate (vdr i ) packet of length v is connected to block  401  of the SVDR encryptor. Block  401  of the SVDR encryptor augments the packet by increasing the length to n and outputs that value to block  403  of the SVDR encryptor and the length v to block  402  of the SVDR encryptor. Block  403  of the SVDR encryptor takes the output of block  401  of the SVDR encryptor and block  602  of the SVDR encryptor and generates the exclusive or of those two values as output to block  402  of the SVDR encryptor. Block  402  of the SVDR encryptor takes the output from block  403  of the SVDR encryptor and the length v from block  401  of the SVDR encryptor and decreases the length of the output by (n−v) and outputs the ciphertext (c i ). Second, the simplified SVDR decryptor circuit diagram operates as follows. The initial ivec 0  is connected to block  601  of the SVDR decryptor. Upon start the ivec j  is equal to ivec 0 . After the initial start the counter takes the previous ivec j-1  value and updates it by incrementing to generate the ivec j  value. The output ivec j  along with the input key are connected to block  602  of the SVDR decryptor. Block  602  of the SVDR decryptor uses these values to generate a prs i  output. The prs i  output of block  602  of the SVDR decryptor is connected to block  403  of the SVDR decryptor. The input ciphertext (c i ) is connected to block  501  of the SVDR decryptor which has output connected to block  503  of the SVDR decryptor. The output of block  501  of the SVDR decryptor is equivalent to the input of block  501  of the SVDR decryptor. Block  502  of the SVDR decryptor generates a dummy packet of length L as output to block  503  of the SVDR decryptor. Block  503  of the SVDR decryptor takes input determining if a packet was “received ci?” and selects the input from block  501  of the SVDR decryptor or the input from block  502  of the SVDR decryptor to pass as output r i  of length L or length v to block  401  of the SVDR decryptor. If c i  was received then c i  is passed as output of block  503  of the SVDR decryptor labeled r i  in the figure. The input r i  of length L or v is connected to block  401  of the SVDR decryptor. Block  401  of the SVDR decryptor augments the packet by increasing the length to n and outputs that value to block  403  of the SVDR decryptor and the length v to block  402  of the SVDR decryptor. Block  403  of the SVDR decryptor takes the output of block  401  of the SVDR decryptor and block  602  of the SVDR decryptor and generates the exclusive or of those two values as output to block  402  of the SVDR decryptor. Block  402  of the SVDR decryptor takes the output from block  403  of the SVDR decryptor and the length v from block  401  of the SVDR decryptor and decreases the length of the output by (n−v) and outputs the decrypted variable data rate (vdr i ) packet. 
     Circuit  700  consists of blocks  401 ,  402 ,  403 ,  501 ,  502 ,  503 ,  602 , and  701 . Blocks  401 ,  402 ,  403 ,  501 ,  502 ,  503  are identical to the blocks described in circuits  400  and  500 . Block  602  is identical to block  602  in circuit  600 . Block  602  is a pseudo random-number stream (PRS) generator. In an embodiment, block  602  is implemented by a block encryptor such as the Advanced Encryption Standard (AES) or the Data Encryption Standard (DES). In another embodiment, block  602  is implemented by a stream cipher such as RC4. In other embodiments, other methods may be used. Block  701  is an initialization vector update block. In an embodiment, block  701  is implemented by a multiplexor. In another embodiment, block  701  is implemented by an if-then-else statement. In other embodiments, other methods may be used. 
     Circuit  700  consists of the secure variable data rate (SVDR) encryptor and decryptor using cipher feedback (CFB) mode. Circuit  700  operates as follows. First, the simplified SVDR encryptor circuit diagram operates as follows. The initial ivec 0  is connected to block  701  of the SVDR encryptor. Upon start the ivec j  is equal to ivec 0 . After the initial start, block  701  of the SVDR encryptor takes the cipher (d j-1 ) value and passes it to the output ivec j  value. The output ivec j  along with the input key are connected to block  602  of the SVDR encryptor. Block  602  uses these values to generate a prs i  output. The prs i  output of block  602  of the SVDR encryptor is connected to block  403  of the SVDR encryptor. The input variable data rate (vdr i ) packet of length v is connected to block  401  of the SVDR encryptor. Block  401  of the SVDR encryptor augments the packet by increasing the length to n and outputs that value to block  403  of the SVDR encryptor and the length v to block  402  of the SVDR encryptor. Block  403  of the SVDR encryptor takes the output of block  401  of the SVDR encryptor and block  602  of the SVDR encryptor and generates the exclusive or of those two values as output to block  402  of the SVDR encryptor. Block  402  of the SVDR encryptor takes the output from block  403  of the SVDR encryptor and the length v from block  401  of the SVDR encryptor and decreases the length of the output by (n−v) and outputs the ciphertext (c i ). Second, the simplified SVDR decryptor circuit diagram operates as follows. The initial ivec 0  is connected to block  601  of the SVDR decryptor. Upon start the ivec j  is equal to ivec 0 . After the initial start, block  701  of the SVDR decryptor takes the cipher (d j-1 ) value and passes it to the output ivec j  value. The output ivec j  along with the input key are connected to block  602  of the SVDR decryptor. Block  602  of the SVDR decryptor uses these values to generate a prs i  output. The prs i  output of block  602  of the SVDR decryptor is connected to block  403  of the SVDR decryptor. The input ciphertext (c i ) is connected to block  501  of the SVDR decryptor which has output connected to block  503  of the SVDR decryptor. The output of block  501  of the SVDR decryptor is equivalent to the input of block  501  of the SVDR decryptor. Block  502  of the SVDR decryptor generates a dummy packet of length L as output to block  503  of the SVDR decryptor. Block  503  of the SVDR decryptor takes input determining if a packet was “received ci?” and selects the input from block  501  of the SVDR decryptor or the input from block  502  of the SVDR decryptor to pass as output r i  of length L or length v to block  401  of the SVDR decryptor. If c i  was received then c i  is passed as output of block  503  of the SVDR decryptor labeled r i  in the figure. The input r i  of length L or v is connected to block  401  of the SVDR decryptor. Block  401  of the SVDR decryptor augments the packet by increasing the length to n and outputs that value to block  403  of the SVDR decryptor and the length v to block  402  of the SVDR decryptor. Block  403  of the SVDR decryptor takes the output of block  401  of the SVDR decryptor and block  602  of the SVDR decryptor and generates the exclusive or of those two values as output to block  402  of the SVDR decryptor. Block  402  of the SVDR decryptor takes the output from block  403  of the SVDR decryptor and the length v from block  401  of the SVDR decryptor and decreases the length of the output by (n−v) and outputs the decrypted variable data rate (vdr i ) packet. 
     Circuit  800  consists of blocks  401 ,  402 ,  403 ,  501 ,  502 ,  503 ,  602 , and  701 . Blocks  401 ,  402 ,  403 ,  501 ,  502 ,  503  are identical to the blocks described in circuits  400  and  500 . Block  602  and  701  are identical to blocks  602  and  701  in circuit  700 . Block  602  is a pseudo random-number stream (PRS) generator. In an embodiment, block  602  is implemented by a block encryptor such as the Advanced Encryption Standard (AES) or the Data Encryption Standard (DES). In another embodiment, block  602  is implemented by a stream cipher such as RC4. In other embodiments, other methods may be used. Block  701  is an initialization vector update block. In an embodiment, block  701  is implemented by a multiplexor. In another embodiment, block  701  is implemented by an if-then-else statement. In other embodiments, other methods may be used. 
     Circuit  800  consists of the secure variable data rate (SVDR) encryptor and decryptor using output feedback (OFB) mode. Circuit  800  operates as follows. First, the simplified SVDR encryptor circuit diagram operates as follows. The initial ivec 0  is connected to block  701  of the SVDR encryptor. Upon start the ivec j  is equal to ivec 0 . After the initial start, block  701  of the SVDR encryptor takes the pseudo random-number (prs j-1 ) value and passes it to the output ivec i  value. The output ivec 3  along with the input key are connected to block  602  of the SVDR encryptor. Block  602  uses these values to generate a prs i  output. The prs i  output of block  602  of the SVDR encryptor is connected to block  403  of the SVDR encryptor. The input variable data rate (vdr i ) packet of length v is connected to block  401  of the SVDR encryptor. Block  401  of the SVDR encryptor augments the packet by increasing the length to n and outputs that value to block  403  of the SVDR encryptor and the length v to block  402  of the SVDR encryptor. Block  403  of the SVDR encryptor takes the output of block  401  of the SVDR encryptor and block  602  of the SVDR encryptor and generates the exclusive or of those two values as output to block  402  of the SVDR encryptor. Block  402  of the SVDR encryptor takes the output from block  403  of the SVDR encryptor and the length v from block  401  of the SVDR encryptor and decreases the length of the output by (n−v) and outputs the ciphertext (c 1 ). Second, the simplified SVDR decryptor circuit diagram operates as follows. The initial ivec 0  is connected to block  601  of the SVDR decryptor. Upon start the ivec j  is equal to ivec 0 . After the initial start, block  701  of the SVDR decryptor takes the pseudo random-number (prs j-1 ) value and passes it to the output ivec j  value. The output ivec j  along with the input key are connected to block  602  of the SVDR decryptor. Block  602  of the SVDR decryptor uses these values to generate a prs i  output. The prs i  output of block  602  of the SVDR decryptor is connected to block  403  of the SVDR decryptor. The input ciphertext (c i ) is connected to block  501  of the SVDR decryptor which has output connected to block  503  of the SVDR decryptor. The output of block  501  of the SVDR decryptor is equivalent to the input of block  501  of the SVDR decryptor. Block  502  of the SVDR decryptor generates a dummy packet of length L as output to block  503  of the SVDR decryptor. Block  503  of the SVDR decryptor takes input determining if a packet was “received ci?” and selects the input from block  501  of the SVDR decryptor or the input from block  502  of the SVDR decryptor to pass as output r i  of length L or length v to block  401  of the SVDR decryptor. If c i  was received then c i  is passed as output of block  503  of the SVDR decryptor labeled r i  in the figure. The input r i  of length L or v is connected to block  401  of the SVDR decryptor. Block  401  of the SVDR decryptor augments the packet by increasing the length to n and outputs that value to block  403  of the SVDR decryptor and the length v to block  402  of the SVDR decryptor. Block  403  of the SVDR decryptor takes the output of block  401  of the SVDR decryptor and block  602  of the SVDR decryptor and generates the exclusive or of those two values as output to block  402  of the SVDR decryptor. Block  402  of the SVDR decryptor takes the output from block  403  of the SVDR decryptor and the length v from block  401  of the SVDR decryptor and decreases the length of the output by (n−v) and outputs the decrypted variable data rate (vdr i ) packet. 
     Performance Analysis and Comparison 
     In certain situations decoding before receiving all packets is necessary as illustrated in  FIG. 9  by circuit  900 . Examples would be networks with high data packet loss or networks which have high variability in transmission times. For these cases sequence numbers (data offsets) must be transmitted to properly re-align the received data for decoding. 
     Circuit  900  consists of blocks  400 ,  500 ,  901 , and  902 . Block  400  is the secure variable data rate encryptor described in circuit  400 . Block  500  is the secure variable data rate decryptor described in circuit  500 . Block  901  is the jitter buffer. In an embodiment, block  901  is implemented with random access memory (RAM). In another embodiment, block  901  is implemented with a stack. In other embodiments, other methods may be used. Block  902  is the noisy channel. In an embodiment, block  902  is a wireless channel. In another embodiment, block  902  is a wired channel. In another embodiment, block  902  is a network. In other embodiments, other methods may be used. 
     Circuit  900  consists of a secure variable data rate (SVDR) encoder and a secure variable data rate (SVDR) decoder with intermittent dropped packets. Circuit  900  operates as follows. Block  400  generates the SVDR stream with packet indices starting at 1 and continuing until the stream ends or the number overflows. These packets are sent through the noisy channel or network which introduces errors, reorders packets, and causes packets to become lost. The packets arrive at block  901 . Block  901  is the jitter buffer and it takes the packets and reorders them and fills in the gaps for lost packets. Block  901  generates an output packet flow that resembles the original packet flow but with some slight changes caused by block  902 . Finally, block  500  receives the reordered packets which it can decrypt to obtain the desired output. This final output differs from the original input to block  400  because of the lost packets and any transmission errors. 
     For the example from  FIG. 9  where packet  3  was dropped there are 3 possible solutions that were considered for secure VDR implementation. Solution  1  is to index by bit. Its index will be size( 1 )+size( 2 )+size( 3 ). Solution  2  is to use separate streams for the VDR information. This method will index by block but will require discarding stream bits unless additional indices are used. The overhead for the additional indices and number of separate streams depends on the number of possible VDR sizes. Solution  3  is to index by block. Its index will be max( 1 )+max( 2 )+max( 3 ). The difference between solution  3 &#39;s index and solution  1 &#39; s index is (max( 1 )-size( 1 ))+(max( 2 )-size( 2 ))+(max( 3 )-size( 3 )). While it increases the number of unused bits in the pseudo random stream it decreases the required number of bits to transmit the sequence information.  FIG. 8  presents a comparison of the possible solutions to the sequence number problem. 
     Solution  1  has the highest communication overhead and therefore it is not considered as a viable solution. Solution  2  makes use of several streams but requires significant overhead in setup time due to the amount of information required for (the total number of priority levels) separate pseudorandom streams. Therefore it is not a viable option. The last option (solution  3 , the proposed method) is to discard bits from the pseudorandom stream and index by block. While this is not ideal as it wastes bits it makes better use of the limited bandwidth by using sequence numbers indexed by max frame size and requires a shorter setup time for the pseudorandom streams. 
     In an example, for window sizes of 10 and 7 priority levels, the proposed method (solution  3 ) requires 4 bits instead of 13 bits (solution  1 ) for sequence number encoding. This leads to at most a 70% reduction in the transmission overhead required for security by saving 9 bits. Additionally, it requires a shorter setup time and lower transmission overhead than solution  2  which requires setting up a stream for each available priority level if used or not used. Comparisons of the different solutions in this example are illustrated in the table in  FIG. 10  with the total number of priority levels set to 7. 
     Conclusions 
     This invention presents a novel technique for efficiently implementing secure variable data rate (VDR) encryption. This method can be applied to secure VoIP for narrowband networks, secure VDR data for sensor networks, secure VDR data for medical devices, secure VDR for military applications, and numerous other applications. Our novel method makes more efficient use of the limited bandwidth for transmitting secure variable data rate (VDR) data at the expense of discarding bits in the pseudo random stream. In our tests, for window sizes of 10, this method requires 4 bits instead of 13 bits for sequence number encoding. This leads to at most a 70% reduction in the transmission overhead required for security by saving 9 bits. This is achieved through optimizing for bandwidth usage rather than optimizing the usage of the Psuedo Random Stream (PRS) generated by the stream cipher.