*6.3. Encryption Process*

The encryption process begins after obtaining the signal *Mb*(*k*) from the Delta modulator. First, the secret key of the proposed encryption scheme is mainly generated from the initial values and a control parameter of the 2D-ICSM, as illustrated in Figure 11. As can be seen from this figure, the secrete key consists of 5 parts with 232 bits in which (*x*0, *y*0) and *α* are the initial values control parameter of the 2D-ICSM. Meanwhile, *s* and *z* are added to increase the security by increasing the key space and changing the initial values and control parameters. It is crucial to state here that the proposed key is symmetric, which means that it can be used for both encryption and decryption processes.

**Figure 11.** The secret key structure.

Now, the obtained signal *Mb*(*k*) can be encrypted using the hyperchaotic sequence generated by the 2D-ICSM. Algorithm 2 illustrates the pseudo-code of generating the secrete key and the encryption process.

**Algorithm 2:** The encryption process.

**Input:** The secret key of size 232 bits, *Mb*(*k*), and the length of input data *Q*. **Output:** The serial data *Me*(*k*) and *si*. **<sup>1</sup>** *x*<sup>0</sup> = ∑<sup>64</sup> *<sup>j</sup>*=<sup>1</sup> *<sup>k</sup>*[*j*] × 264−*<sup>j</sup>* /264; **<sup>2</sup>** *y*<sup>0</sup> = ∑<sup>128</sup> *<sup>j</sup>*=<sup>65</sup> *<sup>k</sup>*[*j*] × <sup>2</sup>128−*<sup>j</sup>* /264; **<sup>3</sup>** *α* = ∑<sup>192</sup> *<sup>j</sup>*=<sup>129</sup> *<sup>k</sup>*[*i*] × <sup>2</sup>192−*<sup>j</sup>* /264; **<sup>4</sup>** *s* = ∑<sup>212</sup> *<sup>j</sup>*=<sup>193</sup> *<sup>k</sup>*[*j*] × <sup>2</sup>212−*<sup>j</sup>* /220; **<sup>5</sup>** *z* = ∑<sup>232</sup> *<sup>j</sup>*=<sup>213</sup> *<sup>k</sup>*[*j*] × <sup>2</sup>232−*<sup>j</sup>* ; **<sup>6</sup>** *x* = (*x*<sup>0</sup> + *s* × *z*) mod 1; **<sup>7</sup>** *y* = (*y*<sup>0</sup> + *s* × *z*) mod 1; **<sup>8</sup>** *α* = (*α*<sup>0</sup> + *s* × *z*) mod 8; **<sup>9</sup>** Generate the hyperchaotic sequence *ci* using the 2D-ICSM; **<sup>10</sup> for** *i=1 to Q* **do <sup>11</sup>** Obtain N-bit key vectors *si* from the chaotic sequence *ci*; **<sup>12</sup>** *Me*(*k*) = (!*Mb*(*k*)*AND si*) *OR* (*Mb*(*k*)*AND* !*si*). **<sup>13</sup> end**

It is crucial to mention here that the encrypted signal will be the pulses (1's on and 0's off) that is sent from pin 1 in Arduino (board 1) to the electronic laser circuit as shown in Figure 9. The laser diode output depends on the diode injected current instead of voltage. The Arduino pin 1 is used to power the diode directly. Its processor draws 30 mA with 40 mA outputs. When the current enters into the laser diode circuit (LDC), it should be controlled by a modulated data stream. This current has high speed, where this circuit inverts the signal phase before the Laser diode (LD) is injected. Figure 12 shows a simulation example of the LDC. The inputs of the data stream are modulated through the LDC directly. The output of LD as an emitted light represents the reaction of "one" or "zero" logic. The direct modulation is considered as the most commonly used. It is utilized to modulate the light intensity for the transmission of information through free space.

**Figure 12.** The input signal (yellow) and the output signal of the laser diode circuit (LDC) (blue).

Besides that, the laser beam transmitted by the photodiode is received in the form of light pulses. The photodiode acts as a semiconductor device used to convert light into a current that converts the received beam into an electrical signal within a voltage range between two volts (0–0.5). The encoded signal received by the photodiode passes various stages to amplify the signal voltage and return it to

5 volts, as can be seen in Figure 13. Furthermore, the binary signal is inverted and then sent it to pin 0 of Arduino (Board 2), as shown in Figure 12.

**Figure 13.** The receiver circuit.
