\chapter{Conclusion}\label{chap:conclusion}
\par In conclusion, we successfully built a symmetric encryption protocol and a key exchange protocol using the Rubik's Cube. The steps we took demonstrated the general strategy of constructing encryption schemes: we first need to find a problem that is computationally hard, and we must analyze the problem and understand it well. We have shown the central role that a formal definition of security plays in the cryptography world. You must know what you are trying to achieve to deduce if you succeed or not. While we are not recommending commercial usage of this encryption system, we believe that it does provide a secure environment for two parties to communicate without leaking any visible information, given that the attacker possesses limited computational power such as one laptop.
\par Future work on this topic includes testing the Rubik's Cube encryption under even stronger definitions. Recall that in the security game described in Chapter~\ref{chap:security}, Alice can interact with the protocol only once before she guesses the encrypted message. But in the real world, once parties construct a secure channel, they will likely communicate multiple times. Thus under a stronger definition of security, we allow Alice to make multiple requests and observe the results to catch potentially leaked information. Then if she notices any vulnerabilities in the trial queries, she can generate two corresponding messages to crack the protocol. For the key exchange protocol, we can expand this to an $n-$party key exchange protocol, rather than the two-party protocol we designed.