## 3 Novel Tiny Symmetric Encryption Algorithm (NTSA)  
The TEA algorithm and its variations use the same key in all rounds of encryption and are thus more prone to relative key attack where the attacker tries to realize some relationship between different keys used by the user. The proposed NTSA algorithm is intended to provide more confusion to the keys in each round dynamically. It uses 64-bit plaintext and key of 128 bits. There are 32 cycles and each cycle is composed of two rounds, resulting in 64 rounds. The plaintext is divided into two halves, v0 and v1, with 32 bits each. The round function op is applied to each half of plaintext. The 128-bit key is divided into four 32-bit partial keys k1, k2, k3, and k4. Partial keys k1 and k3 are applied to the odd numbered round and partial keys k2 and k4 are applied to even numbered round. Compute key schedule constant ksc = floor (\(2^{31}/\mathcal{O}\)) where \(\mathcal{O}\) is the golden ratio. The golden ratio \(\mathcal{O}\) is 1.618033988749895 and computed as (\(1+\sqrt{5}\))/2. NTSA round function is as follows:  
Round \(i\) (\(i\) is odd):  
\[v0+= \text{(}(v1\text{ {\em LSHIFT 4) AND k0}}\text{ {\em XOR (v1 AND kc)}}\text{ {\em XOR (v1 RSHIFT 5) AND k1}}\text{ {\em XOR (v2\text{ {\em XOR (v0 RSHIFT 5) AND k3}})}}\]  
\begin{table}
\begin{tabular}{c c c c c c} \hline \hline
**Algorithm** & **Developer** & \begin{tabular}{c} **Block/Stream** \\ **Cipher** \\ \end{tabular}  & **Key Size** & **Attack** & **Algorithm Structure** \\ \hline DES [41] & IBM & \ \begin{tabular}{c} Block cipher \\ (64 bits) \\ \end{tabular}  & 56 bits & Brute Force Attack & \begin{tabular}{c} 16 rounds Feistel \\ Structure \\ \end{tabular}  \\ \hline  
For 1 st cycle: the partial keys are k0, k1, k2 and k3. From 2 nd cycle onwards:  
For odd round k0 is kept constant but k1 changes for all odd rounds as follows,  
\[k1=k1+(k0 XOR(xtract(v0)))\]  
For even round k2 is kept constant but k3 changes for all even rounds as follows,  
\[k3=k3+(k2 XOR(xtract(v1)))\]  
The function xtract() will compute an integer in the range 0 to 32 from v0 or v1 depending upon the parameter being passed. This integer value is an index to an array that is generated dynamically based on the key value selection. The xtract() function will return the value from the array that is pointed by the index value computed. Thus, the key confusion is created dynamically and cannot be predicted prior to execution and the value changes on each execution of the algorithm. The NTSA encryption and decryption model is shown in Figure 4.  
The source file can be a file of any type such as a document, spreadsheet, pdf, presentation, image, text file etc. The text file can be sent directly to the NTSA encryption algorithm to obtain the cipher text. All the other types of files are converted into binary, the streams of ones and zeros. This binary stream is sent to the NTSA encryption algorithm to get the cipher text using the secret key which has already been agreed upon by the sender and the receiver. On reception of cipher text at the receiver end, the NTSA decryption algorithm converts the cipher text to plaintext. If the converted file is binary (that is streams of zeros and ones) the file is converted to the respective source file, otherwise the plaintext is already received. The NTSA Encryption technique is presented as Algorithm 1 and Decryption technique is presented as Algorithm 2. Figure 4: System model: novel tiny symmetric encryption algorithm (NTSA) encryption and decryption. The NTSA symmetric encryption algorithm uses the plaintext to encrypt with the key that was already agreed upon by the two parties in communication. The key constant is initialized to zero. The key schedule constant ksc is computed as floor (\(2^{31}/\O\)) where \(\O\) is the golden ratio. The golden ratio \(\O\) is 1.618033988749895. The 32-bit block plaintext v0 and v1 are recomputed each time for 32 cycles and partial keys k1 and k3 are recomputed for even and odd rounds respectively to induce key confusion.