- 이 레포지토리는 암호학의 다양한 알고리즘들을 C 언어로 구현하여 공부한 내용을 정리한 프로젝트입니다. 이 프로젝트에서는 여러 암호화 기법들에 대해 자세히 학습하고 구현하여, 암호학의 기본 개념과 그 구현 방법을 이해하고자 했습니다.
- Elgamal 암호화 알고리즘은 공개키 암호화 알고리즘 중 하나로, RSA와 유사한 원리를 따르며, Diffie-Hellman 키 교환 프로토콜을 기반으로 한 암호화 방식입니다.
- 두 수의 최대공약수를 구하는 알고리즘인 유클리드 알고리즘을 구현하여, 암호학에서 중요한 역할을 하는 계산을 수행할 수 있습니다.
- RSA는 공개키 암호화 알고리즘으로, 두 개의 큰 소수를 사용하여 공개키와 개인키를 생성하고 데이터를 암호화 및 복호화하는 과정입니다.
- CBC 모드는 대칭키 암호화 알고리즘의 블록 암호화 모드 중 하나로, 암호화 과정에서 이전 블록의 암호문을 현재 블록의 평문에 XOR하여 암호화하는 방식입니다.
- CPA는 암호 시스템의 보안성을 평가하는 공격 기법 중 하나로, 공격자가 선택한 평문을 암호화하여 그 결과를 분석하는 방법입니다.
- CTR 모드는 대칭키 암호화 방식에서, 각 블록의 암호화를 카운터 값을 이용해 진행하는 방식입니다. 이는 암호화와 병렬 처리가 가능하게 하여 성능이 뛰어납니다.
- ECB 모드는 가장 기본적인 블록 암호화 모드로, 각 블록을 독립적으로 암호화하는 방식입니다. 그러나 동일한 평문 블록이 동일한 암호문 블록으로 변환되어 보안상 취약점이 있습니다.
- C 언어: 주요 구현 언어로 사용되었으며, 각 암호화 알고리즘과 기법을 C 언어로 직접 구현하였습니다.
- GNU GCC: C 컴파일러로, 소스 코드를 컴파일하고 실행합니다.
- OpenSSL (옵션): 암호화 관련 함수들을 활용할 때, OpenSSL 라이브러리를 일부 사용하여 기본적인 암호화 및 해싱 작업을 처리할 수 있습니다.