Modulation-Agnostic Conversion Using Unitary Braid Division Multiplexing (UBDM)
Nonlinear transformations in unitary braid division multiplexing (UBDM) improve wireless communication security by constructing fast unitary matrices in layers, addressing vulnerabilities in linear transforms and reducing noise amplification, thus enhancing data privacy and signal integrity.
Patent Information
- Application Number
- JP2024171313
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2020-06-30
- Filing Date
- 2024-09-30
- Publication Date
- 2025-10-27
- Estimated Expiration
- 2040-07-01
AI Technical Summary
Existing wireless communication systems face security vulnerabilities due to linear transforms being susceptible to deciphering by eavesdroppers and nonlinear transforms amplifying noise and distorting signals, leading to increased bit error rates.
Implementing nonlinear transformations that modify complex baseband symbols to enhance security in OFDM systems without amplifying noise, using unitary braid division multiplexing (UBDM) with fast unitary matrices constructed in layers to reduce computational complexity and maintain signal integrity.
Enhances data privacy at the physical layer by preventing linear attacks while minimizing noise amplification, maintaining signal quality, and reducing bit error rates.
Smart Images

Figure 0007760678000096 
Figure 0007760678000097 
Figure 0007760678000098
Abstract
Description
[Technical Field]
[0001] CROSS-REFERENCE TO RELATED APPLICATIONS This application claims priority to, and is a continuation of, U.S. patent application Ser. No. 16 / 459,254, filed July 1, 2019, and entitled "Communication System and Method Using Orthogonal Frequency Division Multiplexing (OFDM) with Non-Linear Transformation," which also claims priority to, and is a continuation of, U.S. patent application Ser. No. 16 / 916,303, filed June 30, 2020, and entitled "Modulation-Agnostic Transformations Using Unitary Braid Divisional Multiplexing (UBDM)," the disclosures of each of which are incorporated herein by reference in their entirety for all purposes.
[0002] This application is a continuation of U.S. Non-Provisional Patent Application No. 16 / 416,144, filed May 17, 2019, entitled "COMMUNICATION SYSTEM AND METHODS USING MULTIPLE-IN-MULTIPLE-OUT (MIMO) ANTENNAS WITHIN UNITARY BRAID DIVISIONAL MULTIPLEXING (UBDM)," U.S. Non-Provisional Patent Application No. 16 / 459,245, filed July 1, 2019, entitled "SYSTEMS, METHODS AND APPARATUS FOR SECURE AND EFFICIENT WIRELESS COMMUNICATION OF SIGNALS USING A GENERALIZED APPROACH WITHIN UNITARY BRAID DIVISION MULTIPLEXING," and U.S. Non-Provisional Patent Application No. 16 / 459,245, filed July 1, 2019, entitled "COMMUNICATION SYSTEM AND METHOD USING LAYERED CONSTRUCTION OF ARBITRARY UNITARY BRAID DIVISION MULTIPLEXING." No. 16 / 459,262, entitled "METRICES," the disclosures of each of which are incorporated herein by reference in their entirety for all purposes.
[0003] Federal Interest Statement The United States Government has a non-exclusive, irrevocable, royalty-free license in this invention with the authority to grant licenses for all United States Government purposes.
[0004] The present invention relates generally to data communications, and more particularly to techniques for enhancing the security of data communications using unitary blade division multiplexing (UBDM). [Background technology]
[0005] Wireless communication systems are widely deployed to provide various types of communication services, such as voice, packet data, and the like. These systems may utilize modulation techniques that can provide high performance in some wireless environments, for example, by dividing the overall system bandwidth into several subbands (e.g., (N) orthogonal subbands), also commonly referred to as subcarriers, tones, bins, and frequency subchannels. In multiple-access communication, multiple user devices transmit signals to a receiver over a single communication channel. These signals are superimposed to form a combined signal that propagates through the channel. The receiver then performs a separation operation on the combined signal to recover one or more individual signals from the combined signal. For example, each user device may be a mobile phone belonging to a different user, and the receiver may be a cell tower. By separating the signals transmitted by different user devices, different user devices may share the same communication channel without interference.
[0006] A transmitter can transmit different symbols by varying the state of a carrier or subcarrier, for example, by changing the carrier's amplitude, phase, and / or frequency. Each symbol can represent one or more bits. These symbols can each be mapped to a discrete value in the complex plane, thereby generating quadrature amplitude modulation, or by assigning each symbol to a discrete frequency, thereby generating frequency shift keying. The symbols are then sampled at a Nyquist rate, which is at least twice the symbol transmission rate. The resulting signal is converted to analog via a digital-to-analog converter and transposed up to the carrier frequency for transmission. When different user devices simultaneously transmit symbols over a communication channel, the sinusoids represented by those symbols are superimposed to form a combined signal received at the receiver. Summary of the Invention
[0007] In some embodiments, a method for implementing a fast UBDM transform includes receiving a first vector (input vector) via a processor and dividing the first vector to generate a magnitude vector and a code vector. A second vector including a modified magnitude vector and a modified code vector is generated by applying a transpose to the magnitude vector to generate the modified magnitude vector, transforming the code vector to an intermediate code vector based on an algorithm, and applying multiple nonlinear layers to the intermediate code vector to generate the modified code vector. Transforming the code vector is optionally based on an initialization vector. Each nonlinear layer from the multiple nonlinear layers includes at least one of a transpose, an S-box transform, a diffusion linear operation, or an XOR operation, or any combination thereof. The multiple linear layers are applied to the second vector to generate a third vector, the third vector being a transformed version of the first vector. A first signal representing the third vector is transmitted to at least one transmitter for transmission of a second signal representing the transformed data vector from the at least one transmitter to at least one receiver. In some implementations, the transpose applied to the magnitude vector does not reduce the total power of the first vector.
[0008] In some embodiments, a method for implementing a fast UBDM transform includes receiving, via a processor, an input vector including a plurality of complex numbers. The transformed vector is generated based on the input vector and via the processor by applying a transpose to a magnitude vector associated with the input vector to generate a modified magnitude vector, applying an algorithm (e.g., including an Xor operation) and multiple nonlinear layers to a code vector associated with the input vector to generate a modified code vector, the modified magnitude vector and the modified code vector defining an intermediate vector, and applying multiple linear layers to the intermediate vector to generate the transformed vector. The method also includes transmitting a signal representing the transformed vector to at least one transmitter for transmission of a second signal representing the transformed vector from the at least one transmitter to at least one receiver. In some implementations, the transpose applied to the magnitude vector does not reduce the total power of the first input vector. [Brief explanation of the drawings]
[0009] [Figure 1] FIG. 1 is a block diagram illustrating an example electronic communication system in an electronic environment in which the improved techniques described herein may be implemented. [Figure 2] 1 is a block diagram illustrating a process flow for encoding and decoding a signal, according to one embodiment. [Figure 3] 1 illustrates a system for encoding and decoding a signal, according to one embodiment. [Figure 4] 4 is a flowchart illustrating an exemplary method for modulating data using a nonlinear transformation, according to one embodiment. [Figure 5] 1 is a flowchart illustrating an exemplary method for implementing high-speed UBDM transformation, according to one embodiment. [Figure 6] 1 is a flowchart illustrating an exemplary method for implementing high-speed UBDM transformation, according to one embodiment. DETAILED DESCRIPTION OF THE INVENTION
[0010] If a linear transform is applied to data as part of the encoding (e.g., "precoding") or modulation process prior to transmission over a network, the transmitted data may be susceptible to deciphering by an eavesdropper who may be able to determine the linear transform based on a small number of "plain / cipher" sets (e.g., pairs), e.g., using a single matrix inversion. Thus, systems and methods employing linear transforms can be improved by nonlinearizing the data before transmission. Despite known mechanisms for applying nonlinear operations to complex numbers in general and the data security risks associated with linear transforms, the application of such mechanisms in the context of data modulation has not previously been successfully implemented due to, for example, various constraints and considerations typically associated with data modulation. For example, during modulation, the power of the signal being transmitted can be reduced and noise and distortion can be amplified. Nonunitary and nonlinear operations can amplify and distort the signal, thereby increasing the bit error rate (BER). Because nonlinear transforms are typically not equal length, they also amplify noise and increase the BER to undesirable levels. In contrast, unitary transformations are ubiquitously used on signals without security considerations because they preserve signal power and are isomorphic / isometric. Some known cryptanalysis methods contain nonlinear components that can block linear attacks by eavesdroppers. However, because such cryptanalysis methods operate on bits rather than symbols (i.e., bit-level security), noise is not an issue.
[0011] Techniques are provided herein for modifying complex baseband symbols in a nonlinear manner to enhance the security of Orthogonal Frequency Division Multiplexing (OFDM) systems. In some embodiments, a method of encoding data includes identifying a plurality of complex number sets (e.g., pairs) of complex numbers for an input data vector and generating a transformed data vector by applying a nonlinear transformation to each complex number set from the plurality of complex number sets. The nonlinear transformation includes modifying the phase of a first complex number from each complex number set. The phase modification is based on a value associated with a second complex number from each complex number set. Signals representing the transformed data vector are transmitted to a plurality of transmitters for transmission of the signals representing the transformed data vector from the plurality of transmitters to a plurality of receivers. The signals representing the nonlinear transformation are transmitted to a second computing device for transmission of the nonlinear transformation to a plurality of receivers prior to transmission of the signals representing the transformed data vector from the plurality of transmitters to the plurality of receivers for recovery of the data vector at the plurality of receivers.
[0012] As used herein, a "transmitter" (or "signal transmitter") refers to any collection of components used to transmit a signal, including, but not limited to, any combination of one or more antennas, amplifiers, cables, digital-to-analog converters, filters, up-converters, processors (e.g., for reading bits and / or mapping bits to baseband), etc. Similarly, as used herein, a "receiver" (or "signal receiver") refers to any collection of components used to transmit a signal, including, but not limited to, any combination of one or more antennas, amplifiers, cables, analog-to-digital converters, filters, down-converters, processors, etc.
[0013] Some embodiments of the present disclosure include systems and methods that achieve nonlinearization of data symbols before transmission as part of the modulation process to establish data privacy at the physical layer without amplifying noise. The nonlinear transforms (or "transforms") described herein include nonlinear transforms that do not amplify noise or that introduce minimal amplification to noise. The nonlinear transforms can be applied to input data (e.g., a data vector or symbols derived therefrom) once or several times, and can optionally be interleaved with other transforms (linear or otherwise) any number of times.
[0014] 1 is a diagram illustrating an example system 100 in which an improved technique for transmitting wireless communications is implemented. System 100 includes a signal transmitter 120 and a signal receiver 150. However, it should be understood that there may be other signal transmitters in the environment that are not depicted.
[0015] The signal transmitter 120 is configured to prepare a signal for transmission to the signal receiver 150 and transmit the prepared signal to the signal receiver 150. The signal transmitter 120 includes a processing circuit unit 124, a memory 126, and a transmission circuit unit 128. The set of processing units 124 includes one or more processing chips and / or assemblies. The memory 126 includes both volatile memory (e.g., RAM) and non-volatile memory, such as one or more ROMs, disk drives, solid-state drives, etc. The set of processing units 124 and the memory 126 together form a control circuit, which is configured and arranged to perform various methods and functions as described herein. The transmission circuit 128 is configured to transmit a signal in the form of radio frequency energy to the receiver.
[0016] In some embodiments, one or more of the components of signal transmitter 120 may be or include a processor (e.g., processing unit 124) configured to process instructions stored in memory 126. Examples of such instructions as depicted in Figure 1 include an initial vector generation manager 130 and a synchronization signal generation manager 146. Further, as illustrated in Figure 1, memory 126 is configured to store various data including an initial vector 132, a channel index 136, a signal 140, and a synchronization signal 148.
[0017] fast unitary transformation The above methods and systems typically involve matrix operations on vectors. If the length of the vector is N and the size of the matrix is N×N (e.g., if the matrix is unitary), then the matrix operations on the vector require O(N 2 ) multiplications are involved. Thus, as N increases, the computational load of a communication system can become prohibitively high.
[0018] In some embodiments, several fast unitary transforms can be employed to reduce computational complexity. For example, matrix operations on vectors can be achieved using Fourier matrices, Walsh-Hadamard matrices, Haar matrices, Slant matrices, certain types of Toeplitz matrices, and certain types of circulant matrices that can operate on vectors of a fast complexity class. However, because these types of matrices only form a limited class of transformations, the resulting level of security may not be sufficient.
[0019] To address the complexity issue while maintaining communication security, the systems and methods described herein employ an approach for constructing arbitrary unitary matrices from smaller matrices. In this approach, unitary matrices are constructed in layers. Each layer involves two operations: the first is a transpose, and the second is a direct sum of U(2) matrices. Because the transpose matrix is a unitary matrix that does not require any floating-point operations, it requires no computation, i.e., it has a complexity of O(1). U(2) matrices are matrices in which most values are zero except for 2x2 blocks along the diagonal (also called block U(2) matrices). These block U(2) matrices involve only 4xN / 2 = 2xN multiplications. As a result, a layer containing block U(2) involves 2xN multiplications of block U(2), but no transpose multiplications. In other words, one layer in the construction of a unitary matrix has a complexity of O(N).
[0020] The total complexity for constructing a unitary matrix is the product of the number of layers and the complexity of each layer, O(N). In some embodiments, the total number of layers may be log(N), so the total complexity of all layers is O(N × log(N)), which is equal to the complexity of standard OFDM. Furthermore, log(N) layers and the transpose matrix of block U(2) can generate a dense unitary. Although the space of fast unitary matrices is not as large as the entire space of unitary matrices, it can still be large enough to prohibit attacks by eavesdroppers (see details below with reference to Figure 9).
[0021] In some embodiments, the approaches described herein may employ block U(m) matrices to construct unitary matrices, where m is a positive integer (e.g., m = 3, 4, 5, etc.). In some embodiments, when constructing unitary matrices, matrices with different sizes may also be used within a single layer. In some embodiments, different layers may use matrices with different sizes, e.g., a first layer may use block U(m) matrices and a second layer may use block U(l) matrices, where m is different from l. For example, if N = 8, a set of four 2x2 block U(2) matrices may be used in the first layer, followed by a transpose. Then, two U(3) matrices and a single U(2) matrix may be used in the second layer, followed by another transpose. A third layer may include a block U(2) matrix, a block U(4) matrix, then another block U(2) matrix, followed by a third transpose.
[0022] In some embodiments, certain types of fast unitary matrices can also be written in terms of layers, each of which involves the transpose and direct sum of blocks of smaller matrices. These types of matrices include, for example, Fourier matrices, Walsh-Hadamard matrices, Haar matrices, Slant matrices, and Toeplitz matrices. In some embodiments, unitary matrices that can be constructed using the layered approach include any matrix that is not a direct sum of discrete Fourier matrices.
[0023] Security issues regarding linear transformations in modulation. To illustrate the security vulnerability associated with data modulation using a linear transformation, let us consider the case where the sender and receiver only use a linear unitary matrix A to modulate the data symbols.
number
number
number
number
number
number
number
number
number
number
[0024] Nonlinear transformation in modulation The foregoing examples illustrate security vulnerabilities that may exist when using linear transforms for data modulation. The following sections describe embodiments of nonlinear transforms during data modulation that improve the security of data transmission while avoiding the drawbacks typically associated with nonlinear operations. For example, as previously described, nonlinear transforms can amplify and / or distort signals, thereby amplifying noise, reducing the signal-to-noise ratio (SNR), and / or increasing the bit error rate (BER). Some embodiments described herein achieve the destruction of linearity (i.e., nonlinearization) without amplifying (or minimizing) noise in a manner that may allow system designers to adjust the degree of nonlinearity. The nonlinear transforms described herein may not increase the total power of the signal and are reversible, thus permitting data recovery at the receiver. The nonlinear transform may be applied to input data (e.g., a data vector or symbols derived therefrom) once or several times and may optionally be interleaved with other transforms (linear or otherwise) any number of times before transmission of the transformed entity. For example, there may be five layers of "block U(2)" matrices with nonlinear transformations (as described herein) and transpositions.
[0025] 2 is a block diagram illustrating a process flow for encoding and decoding a signal using a nonlinear transform, according to one embodiment. During the encoding and decoding process 200, an input data vector "X" is input to a computing device at 202. A nonlinear transform (optionally a norm-preserving transform) is applied to the input data vector X via the computing device at 210 to generate a transformed vector. The transformed vector is transmitted at 212 to one or more transmitters for wireless transmission 220. One or more signals representing the transformed vector are transmitted to another receiver at 222, and upon reception at the one or more receivers, the transformed vector is decoded / demodulated at 230 based on the nonlinear transform, and the input data vector is reconstructed (output "Y") at 232. As indicated by the dashed lines in FIG. 2 , a representation of the nonlinear transform may have been transmitted from the computing device to one or more receivers (e.g., before, simultaneously, in parallel, overlapping in time, or after transmission of one or more signals representing the transformed vector to another receiver at 222).
[0026] In some embodiments, the nonlinear transformation includes applying a first nonlinear transformation and a second nonlinear transformation before transmitting signals representing the transformed data vector to multiple transmitters. The first nonlinear transformation and the second nonlinear transformation can be applied to a common collection or subset of the set of complex numbers, or each can be applied to a different collection or subset of the set of complex numbers. In the latter example, assume that the input data vector has a length of 4 and contains components (i.e., complex numbers) 1, 2, 3, and 4. Here, assume that components 1 and 2 are paired as one set and components 3 and 4 are paired as another set before the first nonlinear transformation. The first nonlinear transformation is then applied to the (1, 2) set and the (3, 4) set, for example, in parallel or overlapping time. Another collection of sets is then identified, with components 1 and 3 paired as a first set and components 2 and 4 paired as a second set. A second nonlinear transform is then applied to the (1, 3) set and the (2, 4) set, e.g., in parallel or overlapping time. In some embodiments, the first nonlinear transform may be applied to the (1, 2) set and the (3, 4) set in parallel, and the second nonlinear transform may be applied to the (1, 3) set and the (2, 4) set in parallel, although it should be noted that the first nonlinear transform and the second nonlinear transform are not performed in parallel because the input to the second nonlinear transform is the output from the first nonlinear transform.
[0027] Example Nonlinear Operations In some embodiments, a nonlinear operation Q is applied q times in the first part of the fast transform. i teeth,
number
number
number
number
[0028] Q i Operation (
number
number
number
[0029] The function Sign(x) returns +1 if x>0 and -1 if x<0. As an example, consider the case where w1 and w2 are (1;0) and (1;1), respectively, and b1=1+i and b2=-1+i. 11 = 1, so the imaginary part of b1 is considered. The sign of the imaginary part of b1 is Sign(Im(b1)) = Sign(Im(1+i)) = Sign(+1) = +1. Value (-1)w12 =(-1) 0 =+1. Therefore, it is (-1) w12 ==Sign(Im(b1)). Since w2 = (1,1), b2 ← -b2, and the behavior of Q for this doublet is:
number
[0030] Note that the first (top) component is unchanged. The above is performed for each doublet of the vector, and such operations collectively constitute a single application of Q. The transposition is included so that different components act as "control gates" for other components in each of the q layers. Note that the operation of Q, while unitary, is highly nonlinear.
[0031] In some embodiments, generating the transformed data vector also includes applying a nonlinear transformation followed by a linear transformation or a discrete Fourier transform. Alternatively, or in addition, the one or more receivers that receive the one or more signals representing the transformed vector may include multiple antenna arrays, and the receivers and transmitters may be configured to perform multiple-input multiple-output (MIMO) operations.
[0032] FIG. 3 is a diagram illustrating a system for encoding and decoding a signal (e.g., for implementing process 200 of FIG. 2), according to one embodiment. System 300 includes one or more transmitters ("T"), each including a processor 312 and multiple antennas 314a-314d. X The transmitter 310 includes one or more receivers ("T") 310, each including a processor 332 and multiple antennas 324a-324c, via a wireless communication network 320. Y") 330. An input data vector X is received at 302 by the system and converted via a nonlinear transformation by the transmitter 310 into a transformed data vector that is transmitted to the receiver 330 via one or more of the network 320 over antennas 314a-314d. The transformed vector is received at the receiver 330 over one or more of the antennas 324a-324c and demodulated based on the nonlinear transformation to generate a recovered data vector Y at 342. Each of the antennas 314a-314d can transmit signals to multiple ones of the antennas 324a-324c. In other words, the antennas 314a-314d of the receiver 310 and the antennas 324a-324d of the receiver 330 can be configured to perform multiple-input multiple-output (MIMO) operation as follows, and the antenna 314a of the transmitter 310 can transmit signals (as signals 322a, 322b, and 322c, respectively) to one, a subset, or all of the antennas 324a, 324b, and 324c of the receiver 330 via the wireless communication network 320. Similarly, antenna 314b of transmitter 310 can transmit signals (as signals 322d, 322e, and 322f, respectively) to one, a subset, or all of antennas 324a, 324b, and 324c of receiver 330 via wireless communication network 320, and antenna 314c of transmitter 310 can transmit signals (as signals 322g, 322h, and 322i, respectively) to one, a subset, or all of antennas 324a, 324b, and 324c of receiver 330 via wireless communication network 320.
[0033] FIG. 4 is a flowchart illustrating an exemplary method for modulating data using a nonlinear transform, according to one embodiment. As shown in FIG. 4, method 400 includes, at 410, identifying, via a processor of a first computing device, a plurality of complex number sets of an input data vector. The input data vector includes a plurality of complex numbers. At 420, a transformed data vector is generated by applying a nonlinear transform to each subset of a set of complex numbers from the plurality of sets of complex numbers. The nonlinear transform includes modifying the phase of a first complex number from the set of complex numbers based on a value associated with a second complex number from the set of complex numbers. At 830, signals representing the transformed data vector are transmitted to a plurality of transmitters for transmission of the signals representing the transformed data vector from the plurality of transmitters to a plurality of receivers. At 440, the signals representing the nonlinear transform are transmitted to a second computing device for transmission of the nonlinear transform to a plurality of receivers prior to, simultaneously with, overlapping in time with, or after transmission of the signals representing the transformed data vector to the plurality of receivers for recovery of the data vector at the plurality of receivers.
[0034] In some embodiments, modifying the phase of the first complex number from the set of complex numbers is also based on a predetermined factor, and method 400 also includes transmitting signals representing the predetermined factor to multiple receivers prior to, simultaneously with, overlapping in time with, or after transmission of signals representing the transformed data vector from the multiple transmitters to the multiple receivers for recovery of the data vector at the multiple receivers.
[0035] In some embodiments, the input data vector includes multiple complex numbers that are divided or decomposed into their "norm" (or "magnitude") and phase components. For example, each complex number z can be written as: z=re i*x , where r is a positive real number and x is a real number in [0, 2pi).
[0036] A plurality of complex numbers are divided or decomposed into sets of complex numbers (e.g., sets of plural complex numbers are detected or selected), and the difference between the two norms of each set of complex numbers is calculated. If r1 is the norm of one of the two complex numbers and r2 is the other norm, the difference is calculated as r1 - r2 or r2 - r1. Then, the difference is raised to the power of p to obtain an intermediate value (r1 - r2)*p or (r2 - r1)*p. Next, the intermediate value is multiplied by a predetermined constant R to obtain a value, R*(r1 - r2)*p or R*(r2 - r1)*p. Then, this value is used to define an angle for rotating / adjusting the phase of the original complex number (z1 or z2) with a smaller norm.
[0037] As an example, a set of complex numbers as follows is given. z1 = r1*e {ix1} z2 = r2*e {ix2}
[0038] Assuming r2 < r1, the phase of z2 is adjusted as follows while z1 remains unchanged. z1 = r1*e {ix1} z2 = r2*e {ix2} *e {iR*(r1-r2)^p}
[0039] In other words, the complex number with a smaller magnitude rotates in the complex plane at an angle proportional to the power of the difference in magnitudes of the complex numbers in the set (i.e., non-linear transformation). According to simulations, for any N (where N is the number of subcarriers) and any underlying constellation, there exist values of p and R that make attempts at any linear attack by eavesdroppers impossible while having a slight impact on the BER (cluster dispersion of less than 0.5 dB for realistic SNR). A "constellation" (or constellation diagram) represents the signal modulated by a digital modulation scheme.
[0040] In some embodiments, the values of R and p vary with each set of symbols for each baud. For example, R may be a function of its "layer" (e.g., in the sense above, where a "layer" consists of the block U(2) and transpose described above) and / or the set of symbols being manipulated.
[0041] In some embodiments, the nonlinear transform may be performed at any stage of the precoding or pre-transmission operation and / or on any collection of sets of complex numbers in the input data vector. For example, the nonlinear transform may be performed one or more of the following: once at the beginning of the precoding or pre-transmission operation, once at the end of the precoding or pre-transmission operation, between each block U(2) and the transpose (i.e., after block U(2) and before the transpose), etc. The nonlinear transform may be interleaved with any number and combination of other precoding operations, whether linear or nonlinear. In some embodiments, the nonlinear transform is applied to all complex sets of the input vector. In other words, each complex number is combined with one other complex number for a total of N / 2 sets. In other embodiments, the nonlinear transform is applied only to a subset of the complex sets of the input vector and not to other complex sets of the input vector.
[0042] In some embodiments, the nonlinear transformation is performed as follows: Take the two components of the total (length-N) baud. Since both components can be complex numbers, they can be written as:
number
[0043] Although a single 2-vector is shown above for illustrative purposes, other vector lengths / sizes can also be used (e.g., a single 3-vector, a single 4-vector, multiple vectors, etc.). The following operations can be performed on any two components of a vector, and the two components do not necessarily need to be adjacent to each other. In some implementations, several layers of the "fast UBDM" layer of block U(2) and a transpose are applied first, and then a nonlinear transform is applied to each set of vectors (e.g., a set that is now adjacent or "ordered" because the vector sets have been permuted and mixed several times by the layers), followed by one or more additional "fast" layers. Additional examples of fast UBDM layers are described below.
[0044] To perform a nonlinear transformation on a single set (e.g., a pair) of components, two parameters may be chosen: a power p (which may be any real number, e.g., 1, 2, or 3) and a value R, which is a real number. Given two complex numbers, a rotation is applied to the complex number with the smaller magnitude by an angle proportional to the difference between the absolute values of the two. The smallest rotation occurs when (r1 - r2) = 0, resulting in a rotation of 0. The largest rotation occurs when (r1 - r2) is the largest possible distance, which varies depending on the constellation being used.
[0045] For every set of complex numbers as in (20), the difference (r1 - r2) is calculated, raised to the pth power, and then multiplied by R to produce a value that defines the degree of phase rotation to be applied to the complex number with the smaller magnitude. In other words, the following phase shift is calculated:
number
[0046] If r1 = r2, this equation is 0. As (r1 - r2) increases, φ also increases, and the pth power controls the rate at which φ increases. Once φ is calculated, it is converted to a complex number with a smaller magnitude, e iφ For example, in (20), r 1>r2 The transformation is as follows:
number
[0047] The receiver performs a similar process, except that when the receiver calculates φ, it rotates the complex value with the smaller magnitude in the opposite direction.
[0048] High-speed unitary braid division multiplexing (UBDM) conversion overview The "bo" vector, which is a vector of length N with components in constellation C
number
number
[0049] In some embodiments, the "fast" UBDM transformation (or "transform") is expressed as an exemplary vector
number
[0050] In some embodiments, the linear layer is in the form:
number
[0051] Nonlinear Operations In some embodiments, the nonlinear operations (i.e., the nonlinear portion of the fast UBDM transform) include multiple one-time steps and a series of nonlinear and / or linear layers. The multiple one-time steps can include one or more operations from a general class of operations, including, by way of example, S-box applications, diffusion-linear transforms (e.g., Maximum Difference Separable (MDS) matrices), Xor additions, transpositions, etc. In some embodiments, the nonlinear operations (i.e., the nonlinear portion of the fast UBDM transform) include multiple applications of operations typically found in block ciphers (a general class of symmetric cryptanalysis methods), including, but not limited to, Substitution Permutation Network (SPN) structures, Feistel structures, Lai-Massey structures, S-boxes of any size, prime Xor additions, diffusion-linear transforms, transpositions, addition-rotation-Xor (ARX) operations, etc. These operations may be applied to complex values themselves, sign values, magnitude values, or any combination to vary the amplitude, frequency, and phase of various components of the signal waveform. The input is a bow vector
number
[0052] In some embodiments, the nonlinear operation is applied as follows: First, the N complex Boe vectors
number
number
number
number
[0053] Magnitude vector
number
number
number
number
[0054] The above modified sign vector
number
[0055] As an example, in some embodiments, when the mode of operation is CBC mode, the code vector is XORed with an initialization vector (IV), a length 2N bit vector that is part of the shared secret. However, when the mode of operation is ECB mode, the IV may not be applied. Instead, the first step in ECB mode (or the second step in CBC mode) may be to XOR the code vector with a "seed" vector, which is a length 2N binary vector. This length 2N seed vector is then XORed with the bit vector
number
[0056] Next, nonlinear "layers" can be applied in order, for example, from nonlinear layer 1 to nonlinear layer Q. Each nonlinear layer includes an S-box operation, a transpose
number
number
number
number
number
[0057] In some embodiments, when all of the nonlinear layers are applied and the system is in CBC mode, the resulting code vector is saved and then used as the initialization vector for the UBDM transformation of the next bow vector to be transformed.
[0058] An example pseudocode for the nonlinear transformation in ECB mode is provided below.
number
number
number
number
number
[0059] The output of the algorithm is the transformed value
number
[0060] An exemplary pseudocode for the nonlinear transform in CBC mode is provided below:
number
number
number
number
number
number
[0061] The output of the algorithm is the transformed value
number
number
[0062] In some embodiments, when the mode of operation is ECB mode and the algorithm is applied twice to the same Boh vector, the same output is obtained both times. In other embodiments, when the mode of operation is CBC mode, because an initialization vector is used (and thus incorporated) in each transformation, as transformations are performed on successive Boh vectors, different outputs are obtained even if the input is the same, thereby providing an additional obstacle for potential attackers to overcome and may enhance information security.
[0063] Once the aforementioned nonlinear operations are completed, the linear / unitary portion of a "fast" UBDM transformation is performed on the output of the nonlinear operations, as discussed below.
[0064] Example Block U(2) Operation In some embodiments, the operation of U is performed on a doublet of vectors resulting from a previous linear or non-linear operation. The operation of U achieves a unitary "mix" of the components. A single 2x2 block may be of the form:
number
[0065] The sum of N / 2 of the 2 × 2 blocks in (1.3.1) is a single matrix U i, which can contain 2N complex numbers (N is the UBDM block size, and if the system is OFDM, N can refer to the number of subcarriers). To improve efficiency and speed of data retrieval, in some implementations, only the angles α, φ, θ, and φ are stored rather than the entire complex numbers. Each of these angles can be stored using fewer bits (e.g., at least 8 bits for each angle) compared to storing the entire complex numbers. Therefore, for storage purposes, only 48(N / 2)=16N bits per U may be required. When it comes time to calculate the complex floats actually used in the matrix, for example, the 8-bit value of θ is an integer m (where m is an integer
number
number
[0066] U for two components of the bow vector 2×2 The operation is as follows.
number
[0067] The behavior of U is as shown above for each doublet of components of the vector resulting from the nonlinear operation. The transposition after each U serves to mix / combine as many different components as possible in unpredictable ways.
[0068] Example pseudocode for transposing after each U is as follows:
number
number
number
[0069] In the above pseudocode, U represents the collection of all block U(2) matrices in every layer. Therefore, U[I], in
number
number
[0070] An example transpose operation A variety of different transposes can be used in both the nonlinear portion of the fast UBDM transform and the linear portion of the fast UBDM transform. An exemplary efficient method for generating and storing such transposes is shown below.
[0071] Note that for N objects, there are N! unique transpositions. In other words, if a map is defined from the integers [0, N!), one such integer can be randomly generated and mapped to the corresponding transposition using, for example, a Lehmer code. Lehmer codes facilitate the conversion (or mapping) from transpositions to integers, and from integers to transpositions, in a fast and efficient manner. An example of mapping integers to transpositions is discussed below.
[0072] Assume N=4. Given that 4!=24, there are 24 permutations that can be labeled using the integers 0...23. One of these integers can be initially selected randomly. Suppose the selected integer is 17. The integer is then converted from a decimal number to a "base factorial", e.g., as follows: 17÷1=17 remainder 0 (1.4.1) 17÷2=8 remainder 1 (1.4.2) 8÷3=2 remainder 2 (1.4.3) 2÷4=0 remainder 2 (1.4.4)
[0073] The transformation ends when the quotient becomes 0 (optionally with a remainder). The factorial is then obtained using the remainder value as follows: 2×3!+2×2!+1×1!+0×0!=2×6+2×2+1×1=12+4+1=17(1.4.5)
[0074] Once the factorial representation of an integer, which can be written as (2,2,1,0), is obtained, the following algorithm is performed. The process starts with the rightmost component and moves to the left. At each step, every value to the right of the component in question is incremented by 1 if and only if it is greater than or equal to the component in question. In the above example,
number
[0075] The last item in the list above, (2,3,1,0), represents the transpose. Each element in the transpose corresponds to a column in P, and the positions within each column of P are vertically oriented downwards at positions 0, 1, 2, and 3. This indicates that the first element moves to position 2, the second element moves to position 3, the third element moves to position 1, and the last element moves to position 0. The matrix representation of this transpose is:
number
[0076] Consider another example where the integer is 8. Its factorial representation is: 8÷1=8 remainder 0 8÷2=4 remainder 0 4÷3=1 remainder 1 1÷4=0 remainder 1
[0077] So, in practice, 1×3!+1×2!+0×1!+0×0!=8. (1.4.8)
[0078] next,
number
[0079] This corresponds to the transpose of the matrix.
number
[0080] In some embodiments, to generate the transpose of a given N, a random integer between 0 and N!-1 is selected and converted to a radix factorial. The resulting array is then converted to its transpose. The number of bits to correspond to the integers between 0 and N!-1 can be determined, for example, using Stirling's approximation, which may be slightly overestimated in some implementations. Then, after converting the resulting bit string to an integer, the number of bits for each value can be directly estimated, rather than converting the integer to its radix factorial form. Note that a typical numerical value for a radix factorial is of the form: x=a0×0!+a1×1!+a2×2!+a3×3!+…(1.4.11)
[0081] Value a n is between 0 and n and represents the number of bits read for each value. As an example, let's assume N=8. Therefore, the approximate number of bits read is:
number
[0082] Next, consider a list of 16 random bits (e.g., using a pseudorandom number generator such as Mathematica's PRNG function). (0,0,1,0,0,0,1,0,1,0,0,1,0,1,0,1,1,0)
[0083] The first term in the list of 16 random bits above has coefficient 0!, which is 0, so that term can be ignored. The second term in the list of 16 random bits above has coefficient 1!, which can be either 0 or 1. If the first bit above (the leftmost in this case) is 0, then a1=0. That first bit is then cut (deleted) from the list of 16 random bit strings, leaving us with the next list of 15 bits. (0,1,0,0,0,1,0,1,0,0,1,0,1,1,0)
[0084] Next, the value a2 is taken. This value can be 0, 1, or 2, so a2 is represented by 2 bits. Since 2 bits can store just more than two possible values, we consider taking the value mod 2+1=3. The next 2 bits (the leftmost 2 bits of the 15-bit list above) are 0 and 1, which have a value of 1 (when concatenated, i.e., "01"), so a2 is set to a2=1. If we again cut (remove) the first 2 bits from the 15-bit list above, we are left with the following 13-bit list: (0,0,0,1,0,1,0,0,1,0,1,1,0)
[0085] Next, for a3, the value can be 0, 1, 2, or 3, so a3 is represented by 2 bits. The first 2 bits (the leftmost 2 bits in the 13-bit list above) are 0 and 0, which have a value of 0 (which when concatenated equals "00"), so a3 is set to a3=0. If we again cut (remove) the first 2 bits from the 13-bit list above, we are left with the following 11-bit list: (0,1,0,1,0,0,1,0,1,1,0)
[0086] Next, for a4, the value can be 0, 1, 2, 3, or 4, so a4 is represented by 3 bits. The next 3 bits (the leftmost 3 bits of the 11-bit list above) are (0,1,0), which have a value of 2 (which when concatenated equals "010"), so a4 is set to a4=2. If we chop (delete) the first 3 bits from the 11-bit list above, we are left with the following 8-bit list: (1,0,0,1,0,1,1,0)
[0087] Next, for a5, there are 6 values, so a5 is represented by 3 bits, which in this example (reading the leftmost 3 bits of the 8-bit list above) is (1,0,0), or 4. Therefore, a5=4, and if we cut (delete) the first 3 bits from the 8-bit list above, we are left with the following 5-bit list: (1,0,1,1,0) Next, a6 is represented by 3 bits, which in this example (reading the leftmost 3 bits from the 5-bit list above) is (1,0,1), or 5, so a6 = 5. If you cut (delete) the first 3 bits from the 5-bit list above, you are left with the following 2 bits:
number
[0088] For N=8, equation 1.4.13 produces a value of 17. The original random bit string with the added bits (now of length 17) is (0,0,1,0,0,0,1,0,1,0,0,1,0,1,1,0,1), As above, this produces a base factorial of (5,5,4,2,0,1,0,0). Applying transpose to the base factorial produces:
number
[0089] Note that the last (bottom) row is a valid transposition of eight objects.
[0090] In some embodiments, the permutation is reversed, for example, as follows: First, the permutation is placed in a first row, and the associated integers are placed in consecutive order in a second row below the first. In the example above, the rows would appear as follows:
number
[0091] Then the columns are rearranged so that the top row is in order, like this:
number
[0092] The bottom row of 1.4.16 is the inverse transpose. This result can be confirmed by examining the corresponding matrix. The matrix corresponding to (5,6,4,2,0,3,1,7) (using the rules above) is:
number
[0093] The inverse transpose (4,6,3,5,2,0,1,7) corresponds to the following matrix:
number
[0094] From examination of 1.4.17 and 1.4.18, it is clear that the matrices are inverses of each other (i.e., one is the transpose of the other).
[0095] Peak-to-Average Power Ratio (PAPR) Reduction Modification In some embodiments, modifications to the fast UBDM transform are performed to reduce the PAPR. Implementing such modifications may require one or more minor changes to the algorithm, but the total number of generator bits and their usage may remain roughly the same. Examples of such modifications to the algorithm are outlined below.
[0096] PAPR reduction in nonlinear transformations In one or more embodiments, when an APSK constellation is used, modifications to the nonlinear portion of the fast UBDM transform are performed, for example, because the non-square shape of the APSK constellation can result in undesirable bulging under UBDM. For example, the point a+b i and b+a i, where a>b. In a square constellation, the value a+ai may also be part of the constellation. Circular APSK constellations specifically avoid having such "edge" constellation points. However, when performing a fast UBDM transform as described herein, the transposition of the magnitude transform in the nonlinear portion of the transform may involve swapping points a+ib and b+ia with a+ai and b+bi. Point a+ai generally has a larger magnitude than either a+bi or b+ai, resulting in an increase in the overall PAPR. To avoid or mitigate such effects, changes can be made to the way the magnitude vectors are transformed in the nonlinear transform, as illustrated in the following example.
[0097] Consider the case where N=4. A transpose of magnitude is defined by a transpose of length 2N=8. For example, the transpose could be (2,4,1,5,3,8,6,7). The transpose is first separated into two lists of length N, the first with each element less than or equal to N, and the second with each element greater than N, and the order in which the elements appear for the transpose is not changed. In the current example, the two lists are (2,4,1,3) and (5,8,6,7). Note that the first of these lists is a valid transpose of N elements. The "upper half" (5,8,6,7) is then reduced modulo 2 to the following modified second list: (1,0,0,1).
[0098] In some embodiments, when performing the nonlinear portion of the fast UBDM transform, both of these vectors (i.e., the first list and the modified second list) are used to modify the constellation vector. Assume the original constellation vector is:
number
[0099] Then the magnitude vector of length 2N is (a1, b1, a2, b2, a3, b3, a4, b4).
number
[0100] First, the magnitude vector is divided into two blocks, and the real and imaginary parts of each number are paired. Thus, the magnitude vector becomes the divided magnitude vector ((a1,b1), (a2,b2), (a3,b3), (a4,b4)). The divided magnitude vector is then operated on using a length N transpose generated from the original length 2N transpose. In this case, the length N transpose is (2,4,1,3), so the divided magnitude vector becomes the rearranged divided magnitude vector ((a2,b2), (a4,b4), (a1,b1), (a3,b3)). Next, using the binary vector generated from the above vectors, the following is obtained: ((b2,a2), (a4,b4), (a1,b1), (b3,a3)).
[0101] The foregoing are then rearranged into vectors.
number
[0102] The sign of each of the numbers in Vector 1.5.2 can be determined using a procedure similar to the exemplary nonlinear operation of the sign bits during the fast UBDM transform described above. In some embodiments, the above-described modifications to the nonlinear portion of the fast UBDM transform are used when a reduction in PAPR is desired and / or when an APSK constellation is used.
[0103] PAPR Reduction in Linear Transforms In one or more embodiments, a modification to the linear / unitary part of the fast UBDM transform is performed, for example, to limit the zero values of the bow vector (1.3.2). In the Block U(2) operation section above, the angle bit was used to select an angle from a uniform distribution in [0,2π]. To reduce the PAPR, the value of this angle is selected, for example, by the value
number
[0104] Once the value of r is selected, the value θ selected by the generator bits is modified as follows:
number
[0105]
number
[0106] MEM diffusion In some embodiments, the "MEM" operation is performed during the nonlinear portion of the fast UBDM transform. The MEM operation involves the code vector
number
number
[0107] Alternatively, if the code vectors are expressed in units of {±1}, the operation can be:
number
number
number
[0108] Nonlinear transformation example The following is an exemplary implementation of the non-linear portion of a high-speed UBDM transform, according to one or more embodiments: Consider a 16-QAM block. (3-i,-1+i,-3-3i,1+3i)(0.-1.1)
[0109] As can be observed in (0.-1.1), in this example the block size is N=4.
[0110] First, the block is split or decomposed into two separate length 2N vectors, the first capturing the magnitude of the real and imaginary parts, and the second capturing the signs of the real and imaginary parts. In this example, these first and second vectors are:
number
[0111] For the magnitude vector, a transposition is applied, which depends on the generator bit / key value. For example, the transposition 'π' can be:
number
[0112] Applying the transpose (0.-1.3) to a magnitude vector produces a new magnitude vector:
number
[0113] In addition,
number
[0114] A block cipher is then applied to the code bits. For example, the code value can be converted to bits as follows: (1,-1,-1,1,-1,-1,1,1) → (0,1,1,0,1,1,0,0) (0.-1.5)
[0115] In this example, a "Substitution-Permutation-Network" (SPN) cipher is used, but other types of block ciphers will also work (e.g., Feistel cipher, Lai-Massey cipher, etc.).
[0116] The sign bit of (0.-1.5) is Xored with the generator / seed value. For example, the seed value could be (1,0,0,1,1,1,1,0). The output of the Xor operation is:
number
[0117] Next, "substitution boxes" or "s-boxes" are applied. Applying an S-box involves replacing a collection of bits of a predefined block size with other bits of the same block size. For the current example, consider a 4-bit S-box defined by the following lookup table: (0,0,0,0) → (0,0,0,0) (1,0,0,0) → (1,0,0,0) (0,0,0,1) → (0,0,0,1) (1,0,0,1) → (1,0,1,1) (0,0,1,0) → (0,0,1,0) (1,0,1,0) → (1,1,0,0) (0,0,1,1) → (1,1,0,1) (1,0,1,1) → (1,0,0,1) (0,1,0,0) → (0,1,0,0) (1,1,0,0) → (0,0,1,1) (0,1,0,1) → (0,1,1,1) (1,1,0,1) → (1,1,1,0) (0,1,1,0) → (1,1,1,1) (1,1,1,0) → (1,0,1,0) (0,1,1,1) → (0,1,1,0) (1,1,1,1) → (0,1,0,1) (0.-1.7)
[0118] To apply this s-box, the bit string (1,1,1,1,0,0,1,0) of (0.-1.6) is broken down into blocks of 4 bits each. These blocks are (1,1,1,1) and (0,0,1,0). Using s-boxes, it can be observed that (1,1,1,1) → (0,1,0,1) and (0,0,1,0) → (0,0,1,0).
[0119] So the bit string is just: (0,1,0,1,0,0,1,0)(0.-1.8)
[0120] Next, the transpose is applied to the bit string. In the current example, the transpose π = (1,3,5,7,2,4,6,8) is used, resulting in the bit string: π(0,1,0,1,0,0,1,0)=(0,0,0,1,1,1,0,0)(0.-1.9)
[0121] The above process is then repeated by Xoring another 8-bit string, applying an s-box, then applying a transpose, etc. Finally, a final 8-bit string is obtained, which is then converted back to code, for example, as follows (note that the following does not reflect any iteration of the conversion): (0,0,0,1,1,1,0,0) → (1,1,1,-1,-1,-1,1,1) (0.-1.10)
[0122] Then the vector (0.-1.10) is transformed into the sorted magnitude vector
number
[0123] The vector (0.-1.11) is a vector of constellation points, which is then passed to the linear / unitary part (layer / round) of the fast UBDM transform.
[0124] The above iteration (Xor → s-box → transpose) may be referred to as a "round" or "layer." The Xor value may be referred to as a "round key," "seed," or "activator." In some embodiments, the same S-box is applied at each layer from multiple layers. In other embodiments, a different S-box is applied at each layer from multiple layers. In still other embodiments, two or more different S-boxes may be used within multiple layers. The transposition may be the same for each round / layer, or may be different each time. Similarly, in some embodiments, the same transposition is used at each layer from multiple layers. In other embodiments, a different transposition is used at each layer from multiple layers. In still other embodiments, two or more different transpositions are used within multiple layers.
[0125] The number of layers / rounds, the actual value of the Xor value (seed / generator), and the value of the s-box can each be variable and / or predefined. The number of layers / rounds, the actual value of the Xor value (seed / generator), and the value of the s-box, whether keyed or fixed, can each be variable and / or predefined. In the example above, the block size was N=4, so
number
[0126] FIG. 5 is a flowchart illustrating an example method 500 for implementing a fast UBDM transform, according to one embodiment. As shown in FIG. 5, method 500 includes receiving a first vector via a processor at 510 and dividing the first vector to generate a magnitude vector and a code vector at 512. A second vector including a modified magnitude vector and a modified code vector is generated at 514 by applying a transpose to the magnitude vector to generate a modified magnitude vector at 514A, transforming the code vector to an intermediate code vector based on an algorithm at 514B, and applying multiple nonlinear layers to the intermediate code vector to generate a modified code vector at 514C. Transforming the code vector at 514B is optionally based on an initialization vector. Each nonlinear layer from the multiple nonlinear layers includes at least one of a transpose, an S-box transform, a diffuse linear operation, or an XOR operation, or any combination thereof, as discussed herein. Multiple linear layers are applied to the second vector at 516 to generate a third vector, the third vector being a transformed version of the first vector. A first signal representing the third vector is transmitted at 518, e.g., to at least one transmitter, for transmission of the second signal representing the transformed data vector from the at least one transmitter to at least one receiver. In some implementations, the transpose applied to the magnitude vector does not reduce the total power of the first vector.
[0127] In some embodiments, the method 500 also includes selecting an algorithm based on an encryption mode of operation of the processor. The algorithm may include an Xor operation, and the encryption mode of operation of the processor may be a Cipher Block Chaining (CBC) mode or an Electronic Codebook (ECB) mode. The number of nonlinear layers in the multiple nonlinear layers may be the same as or different from the number of linear layers in the multiple linear layers.
[0128] In some embodiments, at least one of the number of linear layers in the plurality of linear layers (“L”) or the number of nonlinear layers in the plurality of nonlinear layers (“Q”) is equal to [log2(N)].
[0129] In some embodiments, at least one of the number of nonlinear layers in the plurality of nonlinear layers or the number of linear layers in the plurality of linear layers is based on performance and / or security constraints (e.g., for a given communication system or components thereof).
[0130] FIG. 6 is a flowchart illustrating an example method 600 for implementing a high-speed UBDM transform, according to one embodiment. As shown in FIG. 6, method 600 includes receiving, via a processor, an input vector at 620, where the input vector includes a plurality of complex numbers. A transformed vector is generated based on the input vector and via the processor at 622 by applying a transpose to a magnitude vector associated with the input vector to generate a modified magnitude vector at 622A, applying an algorithm (e.g., including an Xor operation) and multiple nonlinear layers to a code vector associated with the input vector to generate a modified code vector at 622B, where the modified magnitude vector and the modified code vector define an intermediate vector, and applying multiple linear layers to the intermediate vector at 622C to generate a transformed vector. Method 600 also includes transmitting, at 624, a signal representing the transformed vector to at least one transmitter and a second signal representing the transformed vector for transmission from the at least one transmitter to at least one receiver, for example. In some implementations, the transpose applied to the magnitude vector does not reduce the total power of the input vector.
[0131] In some embodiments, each nonlinear layer from the plurality of nonlinear layers includes at least one of a transpose, an S-box transform, a diffused linear operation, or an Xor operation. The method 600 may also include selecting an algorithm based on an encryption operating mode of the processor (e.g., a Cipher Block Chaining (CBC) mode or an Electronic Codebook (ECB) mode).
[0132] The number of nonlinear layers in the plurality of nonlinear layers may be the same as or different from the number of linear layers in the plurality of linear layers. At least one of the number of nonlinear layers in the plurality of nonlinear layers or the number of linear layers in the plurality of linear layers may be based on at least one of a performance constraint or a security constraint.
[0133] In some embodiments, at least one of the number of linear layers in the plurality of linear layers (“L”) or the number of nonlinear layers in the plurality of nonlinear layers (“Q”) is equal to [log2(N)].
[0134] While various embodiments have been described above, it should be understood that they are presented by way of example only, and not by way of limitation. While the methods and / or schematic diagrams above depict particular events and / or flow patterns occurring in a particular order, the order of the particular events and / or flow patterns may be changed. While embodiments have been particularly shown and described, it will be understood that various changes in form and detail may be made. Additionally, some of the steps may be performed simultaneously in parallel processes where possible, or sequentially as described above. While various embodiments have been described as having particular combinations of features and / or components, other embodiments may have any combination or subcombination of any of the features and / or components from any of the embodiments described herein. Furthermore, while various embodiments have been described as having particular entities associated with particular computing devices, in other embodiments, different entities may be associated with other and / or different computing devices.
[0135] It is contemplated that the systems and methods described herein may be implemented by software (stored in memory and / or executed on hardware), hardware, or a combination thereof. Hardware modules may include, for example, general-purpose processors, field-programmable gate arrays (FPGAs), and / or application-specific integrated circuits (ASICs). Software modules (executing on hardware) may be expressed in a variety of software languages (e.g., computer code), including Unix utilities, C, C++, Java™, JavaScript, Ruby, SQL, SAS™, Python, Fortran, the R programming language / software environment, Visual Basic™, and other object-oriented, procedural, or other programming languages and development tools. Examples of computer code include, but are not limited to, microcode or microinstructions, machine instructions such as those generated by a compiler, code used to generate web services, and files containing high-level instructions executed by a computer using an interpreter. Additional examples of computer code include, but are not limited to, control signals, encryption code, and compression code. Each of the devices described herein may include one or more processors as described above.
[0136] Some embodiments described herein relate to devices comprising a non-transitory computer-readable medium (which may also be referred to as a non-transitory processor-readable medium or memory) having instructions or computer code for performing various computer-implemented operations. The computer-readable medium (or processor-readable medium) is non-transitory in the sense that it does not itself comprise a transient propagating signal (e.g., a propagating electromagnetic wave carrying information over a transmission medium such as space or a cable). The medium and computer code (which may also be referred to as code) may be designed and constructed for one or more specific purposes. Examples of non-transitory computer-readable media include, but are not limited to, magnetic storage media such as hard disks and solid-state storage devices; optical storage media such as compact discs / digital video discs (CDs / DVDs), compact disc read-only memories (CD-ROMs), and holographic devices; magneto-optical storage media such as optical discs; carrier wave signal processing modules; and hardware devices specifically configured to store and execute program code, such as application-specific integrated circuits (ASICs), programmable logic devices (PLDs), read-only memory (ROM), and random access memory (RAM) devices. Other embodiments described herein relate to computer program products that may include, for example, the instructions and / or computer code discussed herein.
[0137] Processor-executable instructions may be in many forms, such as program modules executed by one or more computing devices, and may include routines, programs, objects, components, data structures, and other suitable code that cause a processor to perform particular tasks or implement particular data types, and may combine and / or distribute functionality as desired in various embodiments.
[0138] The term "and / or," as used in the specification and claims, should be understood to mean "either or both" of the elements so conjoined, i.e., elements that may be present conjunctively or disjunctively. Multiple elements listed with "and / or" should be construed in the same manner, i.e., "one or more" of the elements so conjoined. Other elements, related or unrelated to those elements specifically identified, may optionally be present other than the elements specifically identified by the "and / or" clause. Thus, as a non-limiting example, when used in conjunction with open-ended language such as "comprising," a reference to "A and / or B" can refer to A only (optionally including elements other than B) in one embodiment; B only (optionally including elements other than A) in another embodiment; both A and B (optionally including other elements) in yet another embodiment; and so on.
Claims
1. 1. A method comprising: obtaining, via a processor of a first computing device, a first vector of length N, where N is a positive integer; applying a transformation to the first vector to generate a second vector by applying a plurality of layers to the first vector, each layer of the plurality of layers including a nonlinear portion and a linear portion; providing the second vector to at least one transmitter of the first computing device; transmitting a signal representing the second vector to a second computing device; the linear portion of each layer of the plurality of layers includes a transpose and a unitary operation; The unitary operation comprises mixing the components of the first vector with a unitary matrix U of the form: [Equation 1] In the above equation, α, ψ, θ, and φ are real numbers.
2. The method of claim 1 , wherein the nonlinear portion of each layer of the plurality of layers is based on a shared secret between the first computing device and the second computing device.
3. The method of claim 2 , wherein the nonlinear portion of each layer of the plurality of layers comprises a change to a sign value of each component of the first vector.
4. 4. The method of claim 3, wherein the modification to the code value of each component of the first vector is an XOR addition of the code value of each component of the first vector with a corresponding bit of the shared secret between the first computing device and the second computing device.
5. 4. The method of claim 3, further comprising selecting an operating mode from an electronic codebook (ECB) mode, a cipher block chaining (CBC) mode, a counter mode, an output feedback (OFB) mode, or a cipher feedback (CFB) mode, and wherein the change to the code value of each component of the first vector is based on the operating mode selected by the processor.
6. The layers in the transformation are log 2 The method of claim 1 having a number of layers equal to [N].
7. The method of claim 1 , wherein each unitary operation in the linear portion of each layer of the plurality of layers is based on a unitary matrix U having a different value for at least one of α, ψ, θ, or φ.
8. A non-transitory processor-readable medium storing instructions that, when executed by a processor of a first computing device, cause the processor to: obtaining a first vector of length N, where N is a positive integer; applying a transformation to the first vector to generate a second vector by applying a plurality of layers to the first vector, each layer of the plurality of layers including a nonlinear portion and a linear portion; providing the second vector to at least one transmitter of the first computing device; causing the at least one transmitter to transmit a signal representing the second vector to a second computing device; Let them do this, the instructions further include instructions that cause the processor to apply the linear portion of each layer of the plurality of layers, including a transpose and a unitary operation; The instructions further include instructions that cause the processor to apply the unitary operation, which includes mixing components of the first vector with a unitary matrix U of the form: [Equation 2] A non-transitory processor-readable medium, wherein α, ψ, θ, and φ are real numbers.
9. 10. The non-transitory processor-readable medium of claim 8, wherein the instructions further comprise instructions to cause the processor to apply the non-linear portion of each layer of the plurality of layers based on a shared secret between the first computing device and the second computing device.
10. 10. The non-transitory processor-readable medium of claim 9, wherein the instructions further comprise instructions that cause the processor to apply the non-linear portion of each layer of the plurality of layers by changing a sign value of each component of the first vector.
11. 11. The non-transitory processor-readable medium of claim 10, wherein the instructions further comprise instructions that cause the processor to modify the code value of each component of the first vector by applying an XOR addition of the code value of each component of the first vector with a corresponding bit of the shared secret between the first computing device and the second computing device.
12. 11. The non-transitory processor-readable medium of claim 10, wherein the instructions further include instructions for causing the processor to select an operating mode from an electronic codebook (ECB) mode, a cipher block chaining (CBC) mode, a counter mode, an output feedback (OFB) mode, or a cipher feedback (CFB) mode, and wherein modifying the code value of each component of the first vector is based on the operating mode selected by the processor.
13. The instructions cause the processor to perform the transformation at the plurality of layers as a log 2 The non-transitory processor-readable medium of claim 8 , further comprising instructions to apply a transform having a number of layers equal to [N].
14. 10. The non-transitory processor-readable medium of claim 8, wherein the instructions further comprise instructions that cause the processor to apply each unitary operation in the linear portion of each layer of the plurality of layers based on a unitary matrix U having a different value for at least one of α, ψ, θ, or φ.
Citation Information
Patent Citations
Encryption processing device, encryption processing method, and program
JP2012215813A
Data encryption on the physical layer of a data transmission system
US20050055546A1
Device and method for modulated waveform encryption
US20170150348A1
Method of adding encryption / encoding element to the modulation / demodulation process
US6157679A