What Is the RSA Class?
This class is the compulsory course for the freshman from the Cyber Security of the Department of Applied Mathematical Sciences in Sejong campus of Korea University. This class has a goal for implementing 1024-bit arithmetic operation of big number integer and making simple version of RSA by programming modular operation of big number integer. Furthermore, if the students fully understand how to make simple version of RSA, making Montgomerry version of the RSA is the additional goal. This class is maintained for 6 weeks of the winter vacation each year. At the same time, the lecture of the modern cryptography like AES-128 runs from students of the 1 year senior before the class. Both classes make the students skillful at the field of the information security.
How Did You Take Participate in the Class?
First of all, I took the course before campus transfer to Seoul, and I had a lot of interests toward the information security like hacking and cryptography at that time. Thus, I took the lectures “Number Theory”, and “Introductory of Information Security” at the 2nd semester of 2018 though they were not the courses of mine. Many of the students who already had taken the class insisted that I can enhance my programming skill of C Language though this class makes me hard and tired, so I wanted to take participate in the class at any cost. The grades from both classes were very excellent, so I could let the professor Lim know easily that I would like to join the activity in the winter. Then, the professor willingly said “Of course you can”. I pledged to do my best to enhance my C Language skills, and understanding of the field of information security.
What Did You Learn from the Class?
This course was not professor Lim’s. Instead, the professor Seo who was friend of Lim from Kookmin University proceeded the class.
Each of the big number integer represented in Hexadecimal.
The 1st WeekThe first lecture was about basic of C Language like pointers or file I/O. Most of the course consisted of grammatical stuffs.To be used to file I/O and read strings from the file, the assignment was ordering the 300,000 English words in alphabetical from the text file. There was no matter to use bubble sort stuffs, but recommended to use quick sort though it was from library “algorithm” of C Language.
The 2nd WeekIntroduction of the big number integer was the main subject of the lecture. In the lecture, we learned how to handle the addition operation to calculate 1024-bit numbers. The professor guided the example of addition between 32-bit numbers.The assignment was operating almost 100,000 big number integers from text files A and B by making a module of 1024-bit addition.
The 3rd WeekAs a week before, I learned how to handle the subtraction operation to calculate 1024-bit numbers. The professor guided the example of subtraction between 32-bit The assignment was operating almost 100,000 big number integers from text files A and B by making a module of 1024-bit subtraction.
The 4th WeekMultiplication and Square of Big Number Integer was the main course of this week. I learned the algorithm of them. Also, the example of 32-bit was provided.The assignment was making both modules of multiplication and square of big number integer. Multiplication had to be operated by both integers from text files multA and multB, and Square from the square text file.
The 5th WeekThe lecture was about division and modular algorithm for big number integer.The assignment was dividing the big number integer from text file A by the big number integer from text file B. Another assignment was making modular system of big number integer by the division model. By this implement the simple version of RSA.
The 6th WeekThere was the lecture of “Montgomerry Algorithm” for the Montgomerry version of the RSAThere were no assignments, but the professor kept taking questions and answered for the the student who wants to make Montgomerry version of the RSA.
What Kind of the Issues Did You Experience?
There were quite a lot problems during the classes, but a few main issues were written down below.
Actually, I only had some experiences of using C Language in the classes of the courses that I took (especially, assignments). Thus, there were a lot of difficulties to use file I/O of C Language such as reading line, processing end of the file. Also, I had to convert alphabets and numbers into the integer of the hexadecimal numbers for operations. For that, I made the modules to read 8 digits of the strings from a text file and saved them into a space of integer arrays(Every 8 digits of strings needs a space of arrays, so 1024-bit big number integer needs 32 spaces of arrays). This procedure was too weird to me, so I spent a lot of time to understand the concept. Besides, entire debugging for the big number integer was not that easy. Debugging of Raw 1024-bit number takes a long time, so there needs to debug briefly first 32-bit number. I had to follow the procedure, but I didn’t find it until the end of the 2nd week. Lastly, understanding every algorithms to make the modules of operations of big number integer was not going well. I need to spend much more time than understanding the concept of converting string into the hexadecimal. Every line of the algorithms needs deep understanding. Making the modular module for completing the simple version of RSA was the peak of embarrassment.
How Was the Class?
The issues were not that special. They required only understanding of making the projects like algorithms. Thus, I learned how to make the modules by algorithms from this activity. Not only my C Language skills were enhanced, but also I learned structures of the project like how to form them. Spending many times on designing header files and considering which functions do I have to make was the most impressive fact that I learned. This skill is not accustomed yet, I want to make it clear by practicing it a lot through many projects. Besides, I think that this concept would be more important when I program the OOP projects. This seems to be the one that I should practice with the 1st priority for programming.