
다양한 암호화 시스템, 디지털 서명, 키 교환, 인증 방법에 대한 모든 기존 공격의 설명과 구현, 그리고 CTF의 예제 문제로 구성된 라이브러리
Crypton은 공격 및 방어 암호학을 배우고 실습하기 위한 교육용 라이브러리입니다. 기본적으로 대칭 및 비대칭 암호화 시스템, 디지털 서명, 메시지 인증 코드 및 인증된 암호화 시스템에 존재하는 모든 취약점과 공격에 대한 설명과 구현을 모아놓은 것입니다. 각 공격에는 "Capture The Flag" 대회의 예제 문제와 해당 해설이 함께 제공됩니다. 이 분야에 이미 익숙하거나 CTF에 참여하는 개인은 Crypton을 특정 기존 취약점에 기반한 문제를 해결하는 도구로 사용할 수 있습니다.
라이브러리는 공격 설명과 CTF 문제로 계속 업데이트될 예정입니다! 제안 사항이 있으면 언제든지 이메일을 보내주세요!
이 라이브러리 개발 타임라인에 대한 블로그 게시물을 작성했습니다: https://masterpessimistaa.wordpress.com/2018/08/12/announcing-crypton-an-educational-library-to-learn-offensive-and-defensive-cryptography/
경고: 저자는 코드가 안전하다는 것을 보장하지 않습니다. 이 라이브러리는 교육 목적으로만 제공되며, 실제 환경에서 구현하기 위해 사용해서는 안 됩니다. 라이브러리의 모든 예제 스크립트는 간단한 구현입니다.
이 README에는 다음과 같은 섹션이 있습니다:
CTF 플레이어와 암호학 분야에 관심 있는 개인에게 암호 공격을 학습할 수 있는 플랫폼을 제공하고, 경험이 풍부한 CTF 플레이어가 암호학의 다양한 하위 도메인과 관련된 공격으로 체계적으로 분류된 문제를 연습할 수 있도록 돕습니다. 또한 다양한 공격 설명을 통해 프로토콜의 올바른 구현이 얼마나 중요한지 설명합니다.

|-------|:---------------------------:|:-----------------------------------------------------------------------------------------------:|:------------:|:----------:| | 1 | DLP- 순환군, 이산 로그 문제|
Ashutosh Ahelleya
| 번호 | 주제 | 설명 | 구현/익스플로잇 | 도전 과제# |
|---|
| 1 | Block Cipher Basics- 블록 암호 작동 방식, 패딩 등 |
|
|
|
| 2 | Modes of Encryption- 블록 암호의 다양한 운용 모드: ECB, CBC, CTR |
|
|
|
| 3 | Block Size Detection- 원격 서비스에서 데이터를 암호화하는 블록 암호의 블록 크기 탐지 |
|
|
|
| 4 | Mode Detection- 암호화 모드 유형 탐지: 블록의 독립 암호화 또는 종속 암호화 |
|
|
|
| 5 | ECB Byte at a Time- ECB 모드에서 input+secret을 암호화하는 원격 서비스에서 실행되는 secret 문자열의 바이트 단위 복호화 |
|
|
|
| 6 | CBC IV Detection- CBC 모드의 블록 암호로 우리 입력을 암호화하는 원격 서비스에서 초기화 벡터 값 탐지 |
|
|
|
| 7 | CBC Bit Flipping Attack- CBC 모드의 블록 암호로 쿠키가 생성될 때 쿠키 생성 메커니즘을 악용하여 관리자로 로그인 |
|
|
|
| 8 | CBC Byte at a Time- ECB 모드에서 input+secret을 암호화하는 원격 서비스에서 실행되는 secret 문자열의 바이트 단위 복호화 |
|
|
|
| 9 | CBC Padding Oracle Attack- 암호화/복호화를 제공하는 취약한 서비스에 의해 암호화된 데이터의 복호화 |
|
|
|
| 10 | CTR Bit Flipping- CBC 모드의 블록 암호로 쿠키가 생성될 때 쿠키 생성 메커니즘을 악용하여 관리자로 로그인 |
|
|
|
| 번호 | 주제 | 설명 | 구현/익스플로잇 | 도전 과제# |
|---|
| 1 | Unpadded RSA Enc/Dec- 키 생성, 분배, 암호화/복호화, 복호화 공식 검증 및 RSA 패딩 |
|
|
|
| 2 | Direct Root Attack- 낮은 공개 키 지수의 패딩되지 않은 RSA에 대한 공격 |
|
|
|
| 3 | Fermat's Factorisation- p와 q 값이 근접할 때 모듈러스 n을 인수분해하는 기법 |
|
|
|
| 4 | Pollard's p-1 Factorisation- n의 두 인수 p와 q의 p-1과 q-1이 모두 매우 작은 소인수를 가질 때 n을 인수분해하는 기법 |
|
|
|
| 5 | Common Modulus Attack- 동일한 평문이 동일한 모듈러스 n으로 두 번 암호화될 때 암호문 복호화 |
|
|
|
| 6 | Common Prime Attack- 모듈러스 n1과 n2가 공통 인수를 가질 때 해당 인수 검색 |
|
|
|
| 7 | Wiener's Attack- d < N0.25일 때 복호화 키 지수 d 값 획득 |
|
|
|
| 8 | Wiener's Attack Variant- d가 N0.25보다 몇 비트 더 크거나 d < N0.25일 때 복호화 키 지수 d 값 획득 |
|
|
|
| 9 | Coppersmith's Attack- Coppersmith 정리, 정형화된 메시지에 대한 공격 및 상위 비트 알려짐을 이용한 n 인수분해 |
|
|
|
| 10 | Franklin Reiter Related Message Attack- 동일한 모듈러스로 암호화된 관련 메시지를 검색하는 공격 |
|
|
|
| 11 | Hastad's Broadcast Attack- with extension- 동일한 지수이지만 다른 모듈러스를 사용하여 여러 사람에게 브로드캐스트된 메시지를 검색하는 공격 |
|
|
|
| 12 | PKCS1-v1.5-Padded-RSA-Encryption/Decryption- ASN1 인코딩, 패딩된 RSA 암호화 (수정 필요) |
|
|
|
| 13 | Least Significant Bit Oracle Attack- 복호화 시 최하위 비트 값을 유출하는 RSA 오라클에 대한 공격 |
|
|
|
| 14 | Attack-Retrieve-Modulus- RSA 오라클에 대한 공격으로 모듈러스가 공개되지 않은 경우 그 값 추출 |
|
|
|
| 15 | Intro-RSA-Challenges- 정수론 관련 RSA 기초 문제 |
|
|
|
| 번호 | 주제 | 설명 | 구현/익스플로잇 | 도전 과제# |
|---|
| 1 | Message Authentication Code- MAC의 내부 구조 및 보안 분석 |
|
|
|
| 2 | CBC MAC Forgery- 동일한 CBC-MAC 인증 태그를 갖는 두 개의 메시지 M1과 M2 생성 |
|
|
|
| 3 | Length Extension Attack on CBC-MAC- MAC(M1)이 주어졌을 때 메시지 M1 || M2 (연결)의 유효한 인증 태그 생성 |
|
|
|
| 번호 | 주제 | 설명 | 구현/공격 | 도전과제# |
|---|
| 1 | ElGamal 암호 시스템 - 암호화/복호화- ElGamal 암호 시스템의 키 생성, 암호화, 복호화 |
|
|
|
| 번호 | 주제 | 설명 | 구현/공격 | 도전과제# |
|---|
| 1 | AE 기본 및 내부 동작- 인증 암호의 작동 방식 |
|
|
|
| 2 | MAC을 사용한 AE- MAC으로 AE를 구현하는 다양한 기법: Encrypt and MAC, MAC then encrypt, encrypt then MAC |
|
|
|
| 3 | 인증 암호 |
|
|
|
| 4 | 연관 데이터 인증 암호 |
|
|
|
| 5 | AES-GCM- AES-GCM 암호화, Wegman-Carter MAC |
|
|
|
| 6 | AES-GCM에 대한 Forbidden 공격- nonce 재사용으로 인한 AES-GCM 공격 |
|
|
|
| 번호 | 주제 | 설명 | 구현/공격 | 도전과제# |
|---|
| 1 | 타원 곡선 내부 동작- 타원 곡선 정의, 점 덧셈, 점 두 배, 스칼라 곱셈 |
|
|
| 번호 | 주제 | 설명 | 구현/공격 | 도전과제# |
|---|
| 1 | ElGamal 서명- ElGamal 서명 방식의 키 생성, 서명 생성, 서명 검증 및 정확성 |
|
|
|
| 2 | 타원 곡선 DSA- 서명 생성, 서명 검증 및 서명 알고리즘의 정확성 |
|
|
|
| 3 | k 재사용 공격 ECDSA- k 재사용으로 인한 ECDSA 서명 위조 |
|
|
|
| 4 | 패딩 없는 RSA 디지털 서명- RSA 디지털 서명 방식의 서명 생성 및 검증 |
|
|
|
| 5 | PKCS1-v1.5 패딩 RSA 디지털 서명 |
|
|
|
| 6 | e=3 Bleichenbacher 공격 |
|
|
|
| 번호 | 주제 | 설명 | 구현/공격 | 도전과제# |
|---|
| 1 | 식별 내부 동작 |
|
|
|
| 2 | 임시 키 인증 |
|
|
|
| 번호 | 주제 | 설명 | 구현/공격 | 도전과제# |
|---|
| 1 | Diffie Hellman 키 교환 내부 동작 |
|
|
|
| 2 | 작은 부분군 감금 공격 |
|
|
|
| 3 | 잘못된 곡선 점 공격 |
|
|
|