Use Two Hybrid SCA-AOA and Fuzzy SCA-AOA Algorithms in Information Security ()

Ayad Hamad Khalaf^{}, Ban Ahmed Mitras^{}

Department of Mathematics, College of Computer Sciences & Mathematics, Mosul University, Mosul, Iraq.

**DOI: **10.4236/oalib.1107339
PDF HTML XML
60
Downloads
207
Views
Citations

Department of Mathematics, College of Computer Sciences & Mathematics, Mosul University, Mosul, Iraq.

This research suggests the improving Sine Cosine algorithm and Arithmetic optimization algorithm (SCA-AOA), and the application in two directions: First, in special functions (N-P hard) problems; second, in code analysis and decryption for the method of encryption substitution of simple cipher. The proposed algorithm mathematically simulates the behavior of SCA and Arithmetic algorithm behavior in Mathematical. The measure of SCA-AOA has been measured on a set of test functions to know the power of its performance and efficiency, and verify and compare it with SCA and AOA, each one alone. The numerical results have proved that the proposed algorithm (SCA-AOA) is able to present excellent results as compared with SCA-AOA itself. The applied results have proved that the proposed algorithm is able to analyze and break code. It could also avoid the falling the local solution and reaching to the global optimum resolutions in majority of functions that have been applied on. The adoptive Fuzzy SCA-AOA has been proposed and used in analyzing cipher text and breaking the code by merging the proposed algorithm SCA-AOA with properties of fuzzy logic. Moreover, the simple encoding method is explained and used to encode the proposed text. The method of masking by images is explained and used to hide text. The standards are used to measure the image resolution and find the image resolution. The encrypted text was analyzed and returned to the explicit text using the proposed method, SCA-AOA and Fuzzy SCA-AOA both separately, and the code for the encryption was broken by the proposed method.

Keywords

Sine Cosine Algorithm, Arithmetic Optimization, Hybrid, Cipher, Encryption, Decryption, Frequency, Fuzzy Logic, Steganography

Share and Cite:

Khalaf, A.H. and Mitras, B.A. (2021) Use Two Hybrid SCA-AOA and Fuzzy SCA-AOA Algorithms in Information Security. *Open Access Library Journal*, **8**, 1-14. doi: 10.4236/oalib.1107339.

1. Introduction

Optimization is the process of getting the best values for variable certain problems for minimizing and maximizing certain function. To study the solution optimization problems, multiple complicated steps must be followed: First, determining land marks and building the nature of the world; second, categorizing the problem whether it is separated or continued and evaluating restraints to the restricted and not restricted; third, aims of a certain problem must be verified and the optimization problem is classified into problems with one aim versus multiple aims problems; finally, testing a suitable optimization, using it to solve the problem. In this research paper, a certain optimization has been used in solution of chosen problem, used in previous studies in this field, using of sine cosine algorithm (by S. M) [1] to resolve optimization problem in the engine of plane as Grasshopper optimization algorithm has been used for buildings and gables measurements. Furthermore, the PSO method has been used in the analysis of code breaking by (S. M. 2010) [2] and the SCA algorithm is hybridized with the classic CG methods by Ayad & Ban 2020 [3], and used in the analysis of a text that has been ciphered by simple substitutions (Mohammed F. & Amr M. 2006) [4].

2. Sine Cosine Algorithm (SCA)

This SCA has been proposed by (S. A. M. 2016) [1] it is a meta-heuristic algorithm. The basis of its work is sine and cosine mathematical function. This Algorithm presents a set of initial proposals for solution, then it presents restriction and optimization for this solution frequently till reaching to best solutions. Basic equations used in this algorithm are:

${X}_{k}^{t+1}={X}_{k}^{t}+{r}_{1}\times \mathrm{sin}\left({r}_{2}\right)\times \left|{r}_{3}{P}_{k}^{t}-{X}_{k}^{t}\right|,\text{\hspace{0.17em}}\text{\hspace{0.17em}}{r}_{4}<0.5$ (1)

${X}_{k}^{t+1}={X}_{k}^{t}+{r}_{1}\times \mathrm{cos}\left({r}_{2}\right)\times \left|{r}_{3}{P}_{k}^{t}-{X}_{k}^{t}\right|,\text{\hspace{0.17em}}\text{\hspace{0.17em}}{r}_{4}>0.5$ (2)

where
${X}_{k}^{t}$ is the current solution which has been changed by using the two functions sine and cosine with a set of iterations t-th, and r_{1}, r_{2}, r_{3} are random values by using absolute value which depends on r_{4} value as a random number,
$\left|{r}_{4}\right|<0.5$ of the scale of functions sine and cosine have been changed in the above mentioned equation by using:

${r}_{1}=a-t\frac{a}{T}$ (3)

where t is current iteration, T is max iteration & a is a constant.

3. Arithmetic Optimization Algorithm (AOA)

AOA is an algorithm suggested by (Laith and et al. 2020). The basis of its work is its reliance on known mathematical operations such as subtraction, addition, division and multiplication. Solutions are found and improved based on the parameters shown in the equations below.

$MOA\left(C\_Iter\right)=Min+C\_Iter\times \left(\frac{Max-Min}{M\_Iter}\right)$ (4)

“where MOA(C_Iter) the function value at the t-th iter., which is calculated by Equation (4). C_Iter the current iter., which is between 1 and the max number of iter. (M_Iter). Min and Max denote the min and maxi values of the accelerated function”

${X}_{i,j}\left(C\text{\_}Iter+1\right)=\{\begin{array}{l}best\left({x}_{j}\right)\xf7\left(MOP+\u03f5\right)\times \left(\left(U{B}_{j}-L{B}_{j}\right)\times \mu +L{B}_{j}\right),\text{\hspace{0.17em}}\text{\hspace{0.17em}}{r}_{2}<0.5\\ best\left({x}_{j}\right)\times MOP\times \left(\left(U{B}_{j}-L{B}_{j}\right)\times \mu +L{B}_{j}\right),\text{\hspace{0.17em}}\text{\hspace{0.17em}}o\text{.}w\text{.}\end{array}$ (5)

“where X_{i}(C_Iter + 1) denotes the ith solution in the next iteration, X_{i}_{,j}(C_Iter) denotes the jth position of the ith solution at the current iteration, and best(x_{j}) is the jth position in the best-obtained solution so far. ϵis a small integer number, UB_{j} and LB_{j} denote to the upper bound value and lower bound value of the jth position, respectively. μ is a control parameter to adjust the search process, which is fixed equal to 0.5 according to the experiments of this paper”.

$MOP\left(C\_Iter\right)=1-\frac{C\_Ite{r}^{1/\alpha}}{M\_Ite{r}^{1/\alpha}}$ (6)

“where Math Optimizer probability (MOP) is a coefficient, MOP(C_Iter) denotes the function value at the tth iteration”.

${X}_{i,j}\left(C\text{\_}Iter+1\right)=\{\begin{array}{l}best\left({x}_{j}\right)-\left(MOP\right)\times \left(\left(U{B}_{j}-L{B}_{j}\right)\times \mu +L{B}_{j}\right),\text{\hspace{0.17em}}\text{\hspace{0.17em}}{r}_{3}<0.5\\ best\left({x}_{j}\right)+MOP\times \left(\left(U{B}_{j}-L{B}_{j}\right)\times \mu +L{B}_{j}\right),\text{\hspace{0.17em}}\text{\hspace{0.17em}}o\text{.}w\text{.}\end{array}$ (7)

Solutions are found and improved based on the operations of multiplication and division, and then they are found using subtraction and addition operations, depending on the parameters, and solutions are optimized and measured by the fitness function [5].

4. Sine Cosine Algorithm-Arithmetic Optimization Algorithm (SCA-AOA)

It is a proposed algorithm which depends on the sine cosine algorithm (SCA) and the algorithm of Arithmetic metaheuristic (AOA). This algorithm has been hybridized by using properties of SCA algorithm and it is stable functions sine, cosine, confined between [−1, 1], and merging it with the algorithm of Arithmetic of random movement within a specific frame so produce an algorithm with excellent specifications that could avoid failing in local solutions as it is proved on reaching the global optimum solution during applying it on a set of states of testing to (N-P hard) optimization. As such, it has been used in code analysis and half coding by using simple substitution and the result was excellent by getting very small errors and finding half coding.

The Following Are the Basic Steps for This Algorithm SCA-AOA

1) Generating the initial community, the initial community is prepared randomly.

2) Measuring the fitness for each value of initial community.

3) Optimizing the value of solution by using AOA, the value of solution or when the element is optimized by using AOA and fitness measurement for it.

4) Optimizing the optimum resulted value by using SCA, and that is done by using the functions (1) and (2).

5) Measuring the final fitness and sorting solutions.

6) Choosing the best solution.

7) Comparing the best solution with the new one, using the best one between them.

If the number of iterations is less than the permissible limit, return (3-7) and do not stop.

Table 1 shows the test functions employed in experiment.

Tables 2-4 in it, it was shown that the proposed algorithm exceeds the original SCA algorithms for the number of elements 10, 30 and 50 elements. The results also showed the possibility of the proposed algorithm to avoid falling into local solutions and reach the best global results within the range of functions used. Figure 1 shows the flowchart Proposed SCA-AOA.

5. Simple Substitution Cipher

It is a well-known encrypt system and the simplest kind of encryption of replacement, where each letter is replaced by another one differs from English

Table 1. Test functions employed in experiment.

Table 2. Numerical results of the proposed algorithm SCA-AOA compared to a SCA at element = 10 and iterations = 500.

Table 3. Numerical results of the proposed algorithm SCA-AOA compared to a SCA at element = 30 and iterations = 500.

Table 4. Numerical results of the proposed algorithm SCA-AOA compared to a SCA at element = 50 and iterations = 500.

Figure 1. Flowchart proposed SCA-AOA.

language latters in the Encrypted text. All the code is used in this kind of encryption is made of English language alphabet that is formed of 26 letters from A-Z. The distances and marks will be considered hidden to clarify this method, and we will deal with text as a complete one without space and marks. Let Xi be defined as a group of algebraic values [X1, X2, X3, ・・・, X26] and Y is also group of alphabet letters G(X1), G(X2), ・・・, G(X26), Where G: X → Y, where G is the function key of encryption which can be seen as substituting the letters 26 and their applications (one to one mapping). Where each letter is substituted by a letter of decoding G-1(Yi). So the cipher is being broken by inverse function G and using the inverse key to find original key that was encrypted. There are 26 ≈ 288 probability of encryption replacement could be used with a simple alphabet of these 26 letters [4]. It is clear that this kind of encryption in this amount of probabilities could not be found by using a kind of a comprehensive research, but with the existence of the property of research by algorithms and using the frequency of the letters that could analyze this kind of problems, because of the existence of a certain frequency for each one of the English language letters. Which means that some letters appear more than others, so their frequency is bigger. By using this property of frequency amount and it’s statics, we can analyze the code. With employing this hybridized algorithm SCA-AOA and its excellent properties to find different solutions to reach the justified solution. Table 5 represents the frequency of each English language letter.

6. Cost Function (Fitness)

The solution X_{i} is evaluated and developed depending on the using of the frequency technique of selected letter and comparing it with the original unigram of the known letter frequency used in English language which is shown in Table 1. Using the following evaluating function to know the fitness degree relevant to each letter in the encrypt text with the frequency of the letter in the original language.

$\text{Fitness}={\displaystyle {\sum}_{i,j\in En}^{26}\left|\text{actual frequency}\left(i\right)-\text{cipher frequency}\left(j\right)\right|}$ (8)

where the actual frequencies are the letter ones of the English language alphabet, and the cipher frequencies are the letters ones of the cipher text and the used | | absolute value.

The solutions are to be presented by using the cost. When all the relevant letters will reach the solution of encryption of encrypted text, which means that the cost = 0 or about. Each encrypted letter refers to its corresponding letter, that means the actual frequency ≈ cipher frequency for each letter used in the encrypted text. Sowe get the plain text.

7. Finding the New Solution

The new solutions are found depending on SCA-AOA algorithm. Then, we optimize the solutions by the following steps:

Table 5. Frequencies of letters in alphabet English language.

$\begin{array}{l}{X}_{i,j}\left(C\text{\_}Iter+1\right)\\ =\{\begin{array}{l}best\left({x}_{j}\right)\left(\u201c\xf7\u201d\text{\hspace{0.17em}}\text{or}\text{\hspace{0.17em}}\u201c+\u201d\right)\left(MOP+\u03f5\right)\times \left(\left(U{B}_{j}-L{B}_{j}\right)\times \mu +L{B}_{j}\right),\text{\hspace{0.17em}}\text{\hspace{0.17em}}{r}_{2}<0.5\\ best\left({x}_{j}\right)\left(\u201c\times \u201d\text{\hspace{0.17em}}\text{or}\text{\hspace{0.17em}}\u201c-\u201d\right)MOP\times \left(\left(U{B}_{j}-L{B}_{j}\right)\times \mu +L{B}_{j}\right),\text{\hspace{0.17em}}\text{\hspace{0.17em}}o\text{.}w\text{.}\end{array}\end{array}$

(form AOA).

And SCA algorithm is used to get the best solution.

${X}_{inew}^{t+1}=\{\begin{array}{l}{X}_{k}^{t}+{r}_{1}\times \mathrm{sin}\left({r}_{2}\right)\times \left|{r}_{3}{P}_{k}^{t}-{X}_{k}^{t}\right|,\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}{r}_{4}<0.5\\ {X}_{k}^{t}+{r}_{1}\times \mathrm{cos}\left({r}_{2}\right)\times \left|{r}_{3}{P}_{k}^{t}-{X}_{kk}^{t}\right|.\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}{r}_{4}\ge 0.5\end{array}$

The value ${X}_{inew}^{t+1}$ is determined within the period [0.001, 0.127].

All possible probabilities for each letter of English language are gotten. And after comparing and evaluating it, to get code breaking for eachencrypted letter to reach solution of plain text.

8. Results and Discussion

In this research, all processes have been used in the text by using alphabet letters of English language from (A-Z). Neglecting the spaces and punctuation marks of thesentences and paragraphs, and they have been omitted before encryption. The proposed SCA-AOA algorithm is used on the encrypted text that is exposed to a big attack and encrypted it. This was achieved by different amounts of elements of research and a number of multiple repetitions. This algorithm proved it’s capability on breaking any amount of random messages by using this kind of encryption by different kinds, with the existence of a certain error probability rate because of the fact that the taken texts do not represent all English language. Matching letters, often reached the exact solution and break the code.

9. Conclusion

The proposed SCA-AOA algorithm provides a strong tool for analyzing and breaking the code of a (simple substitution encryption) kind for its accuracy of solutions in letters frequency of English language unigram and the fitness of the function used depending on it. Duo to the accountings of the SCA-AOA algorithm and the parameters that depend on, a certain rate of error is resulted. But it is possible to adjust the fitness function relevant to this work to reach to optimum solution. As such this algorithm proved capability on overcoming the falling in local solution and reaching the global optimization value in most functions, especially the applied test, and as shown in the practice.

10. The Practical and Applied Side

The proposed SCA-AOA and using it cipher text analyzing segment of developing skill book, unit 2, (L. G. Alexander), segment tittle “thirteen equal one” the text is taken from the segment and is encryption be method simple substitution and test the encryption letter as in Table 6.

Table 6. Cipher of letters.

The cipher text is gotten, after that the SCA-AOA algorithm is used to get the keys of cipher regarding the text by using the function fitness

$\text{Fitness}={\displaystyle {\sum}_{i,j\in En}^{26}\left|\text{actualfrequency}\left(i\right)-\text{cipherfrequency}\left(j\right)\right|}$

After that, the generated group of solutions of the proposed algorithm has been evaluated, and after a certain repetition to get fitness function equal zero, or near it (in case of the frequency of the capitalized letters does not exactly match the frequencies of the English language letters), So the letters are matched to get on letters that the text is encrypted on it and returning it to the original text. Therefore, the plain text is recoups.

Figure 2 shows the plain text and the end encrypted one before analysis and the scale of different among letters.

While Figure 3 shows the sketch of the plain text frequencies and frequencies of the decryption text has been broken to, which also shows the scale of capability of this algorithm on encrypted text analyzing and broking it. Figure 4 shows the plot standard and decryption cipher frequencies.

11. Fuzzy Logic

Lotfi Zadeh 1965 has proposed fuzzy logic depending on the theory of fuzzy sets, which is a design of classic sets generalized, and it aims to model logical thinking into a fuzzy set. Because it is based on the theory of variable values, which it could be of true values partially and wrong values partially on the contrary to the binary logic which is based on the wrong or right only. The fuzzy logic works on establishing a rough fact based on linguistic variable of Inference rules in a fuzzy set. So the element that the highly related to the membership function belongs to the scale [0,1]. The propose of the logic statement AND, OR, Min, Max and merging them together that has a huge effect in the processes used in the fuzzy set [6].

12. Adaptive Fuzzy SCA-AOA Optimization

The adaptive optimization of the sine cosine: Arithmetic algorithm is the system of fuzzy logic with developed metaheuristic algorithm and optimizing these as a kind of algorithm of Intelligent by the assistance of fuzzy logic. The both being a general flexible computing, and having a naturally inspired feature. We use it on the conventional method especially, and generally on the problems of education, modeling, optimization and the security information as encryption and steganography. The base of this adoption takes over the application the entered

Figure 2. Plot plan text and cipher text frequencies.

Figure 3. Encryption by simple substitution and cryptanalysis by SCA-AOA.

Figure 4. Plot standard and decryption cipher frequencies.

data which is considered the initial population of SCA-AOA, and the data is divided to a set of fuzzy sets by using FCM (fuzzy c-mean) method [7] by dividing it to clusters and then establishing a fuzzy relation and using thelogic statement, establishing a certain defuzzification modeling and restoring real values that is considered the plain text within this study.

13. Fuzzy SCA-AOA

This algorithm has been proposed. It is inspired by the SCA-AOA algorithm with fuzzy logic. It is very similar to it with the difference that this algorithm uses the starting values in the form of fuzzy groups. Then create fuzzy relationships resulting in the SCA-AOA method and the use of logical relationships and by using the fitness function of the SCA-AOA method, then the defuzzification is done to find the true values of the solutions.

The General Outlines of This Algorithm (Figure 5)

1) Enter the initial values.

2) Fuzziness of the initial values.

3) Use FC-MEAN to find clusters (fuzzy sets).

4) Create fuzzy relationships.

5) Use of logical operations.

6) Use an SCA-AOA.

7) Defuzzification.

8) Finding real values for solutions.

End.

14. Steganography

It is one of the important methods for hiding information and it is the process of hiding the information inside an image or a newspaper within letters or inside an audio record or by using unseen ink [8]. The steganography has many elements, and it is the way of covering an object and it is symbolizedas C, the Secret Message and it is symbolizedas M, and Stego Key and it is symbolizedas K, and the element of hiding Stego object and it is symbolized as S, and the Embedding process, which is symbolized as E. Finally, the process of restoring and we indicate it with D [9].

15. Steganography in Image

Image is one of the most important methods of hiding information, as it is a hidden messages conveyor. It is more used in media all over the world as an encrypted message content on the form of an image, and that is because of the large spreading information on the internet as a result of the that the computer is dealing with the image as it is a three-dimensional system, each site represents a spot of light called pixel. Highly increasing the number of pixels, the image is more clear. The colors of spots are three, Red, Green and Blue (RGB) [10]. The random message can be hidden in the image by using many methods. One of them is binary cell, the Least Significant Bit Insertion [11], as well as masking, filtering in addition to algorithms and Transformation, This kind is one of the most important kind and we are going to use it in this study. It is considered as the best method of resisting hacks and attacks [12].

Figure 5. Use SCA-AOA to decryption cipher text.

16. SSIM (Structural Similarity)

It is a complete reference picture quality-rating index that measures image similarity in three aspects, brightness, contrast and texture then compares between the images that have been used in hiding the encrypted text and the original one.

$\text{SIMM}\left(X,Y\right)=L\left(X,Y\right)\ast C\left(X,Y\right)\ast S\left(X,Y\right)$ (9)

SIMM in range [0, 1], the higher the value, the less distorted the image.

17. PSNR (Peak Signal to Noise Ratio)

It is one of the measurements that is used in the measurement of image accuracy and its clearness degree that is compared between the original the image and the image that the encryption is hidden inside it.

$\text{PSNR}=10\cdot {\mathrm{log}}_{10}\left(\frac{{\text{MAX}}^{2}}{\text{MSE}}\right)$ (10)

18. The Practice Side Related with Encryption and Steganography

This shown image has been used in Figure 6.

And then the encryption and Steganography algorithm are used in the text inside this image to increase the security of encrypted message and to be impossible to be determined to any attack. The following steps are done restore the encryption text from inside the image and analyzing it after that, then decipher it’s cryptogram and restore it to the plaintext as follows:

1) Interring plain text and interring the image that is requested hide the text in.

2) Ciphering the text in method simple substitution.

3) Chang the cipher text to ASCII Code.

4) Merging the text with image in hiding way.

5) Getting the image contain hide encrypted text.

6) Separate the encrypted text from the image.

7) Restoring ASCII Code to encrypted text.

Figure 6. The image contain hide cipher text.

8) By using SCA-AOA algorithm and in another direction fuzzy SCA-AA to break the encrypted text.

9) Restoring plain text.

In the application, we get:

PSNR = 90.9247.

SIMM = 1.000.

Acknowledgements

I would extend my high thanks and appreciation to the supervising, *Prof. Dr. Ban Ahmed Mitras*, who has never been late in providing assistance, in addition to the good directives and valuable advice that contributed to the completion of this paper. Finally, I thank everyone who taught me a letter, my teachers, lecturers and professors. Please accept my sincere regards.

Conflicts of Interest

The authors declare no conflicts of interest regarding the publication of this paper.

[1] | Mirjalili, S. (2016) SCA: A Sine Cosine Algorithm for Solving Optimization Problems. Knowledge Based Systems, 96, 120-133. https://doi.org/10.1016/j.knosys.2015.12.022 |

[2] |
Hameed, S.M. and Hmood, D.N. (2010) Particles Swarm Optimization for the Cryptanalysis of Transposition Cipher. Journal of Al-Nahrain University, 13, 211-215.
https://doi.org/10.22401/JNUS.13.4.30 |

[3] |
Hamad, A. and Mitras, B. (2020) Using Modified Conjugate Gradient Method to Improve SCA. Journal of Physics: Conference Series, 1591, 012050.
https://doi.org/10.1088/1742-6596/1591/1/012050 |

[4] | Uddin, M.F. and Youssef, A.M. (2006) Cryptanalysis of Simple Substitution Ciphers Using Particle Swarm Optimization. IEEE Congress on Evolutionary Computation, Vancouver, BC, Canada, date, 677-680. |

[5] |
Abualigah, L., Diabat, A., Mirjalili, S., Elaziz, M.A. and Gandomi, A.H. (2021) The Arithmetic Optimization Algorithm. Computer Methods in Applied Mechanics and Engineering, 376, 113609. https://doi.org/10.1016/j.cma.2020.113609 |

[6] | Chen, C.R. and Pham, T.T. (2001) Introduction to Fuzzy Set, Fuzzy Logic, Fuzzy Control Systems. LLC, USA. https://doi.org/10.1201/9781420039818 |

[7] | Miyamoto, S., Ichihashi, H. and Honda, K. (2008) Algorithms for Fuzzy Clustering, Methods in c-Means Clustering with Applications. In: Studies Fuzziness and Soft Computing, Vol. 229, Springer-Verlag, Berlin Heidelberg. |

[8] | Mitras, B.A. and Btty, K.D. (2009) Estimation of Parameter for Gibbs Random Distribution Which Is Used in Image Processing. Iraq Journal of Statistical Sciences, 16, 73-94. |

[9] | Qasim, W.A. and Mitras, B.A. (2020) Using Hybrid Intelligent Numerical Optimization Techniques in Steganography. College of Computer Sciences & Mathematics, Mosul University, Mosul, 7-9. |

[10] | Hamid, N., Yahya, A., Ahmad, R.B. and Al-Qershi, O.M. (2012) Image Steganography Techniques: An Overview. Int. J. Comput. Sci. Secur., 6, 168-187. |

[11] | Hariri, M., Karimi, R. and Nosrati, M. (2011) An Introduction to Steganography Methods. World Appl. Program., 13, 191-195. |

[12] | Cummins, J., Diskin, P., Lau, S. and Parlett, R. (2004) School of Computer Science, Univ. Birmingham, Steganography Digit. Watermarking. |

Journals Menu

Contact us

customer@scirp.org | |

+86 18163351462(WhatsApp) | |

1655362766 | |

Paper Publishing WeChat |

Copyright © 2022 by authors and Scientific Research Publishing Inc.

This work and the related PDF file are licensed under a Creative Commons Attribution 4.0 International License.