diff --git a/docs/crypto/Tools/index.md b/docs/crypto/Tools/index.md index f80a3b24c..bae1203bc 100644 --- a/docs/crypto/Tools/index.md +++ b/docs/crypto/Tools/index.md @@ -28,10 +28,20 @@ > docker run -p 127.0.0.1:8888:8888 -it hyperreality/cryptohack:latest ``` -### لینک های مفید - -- https://www.sagemath.org/ -- https://github.com/cryptohack/cryptohack-docker +### ابزارهای آنلاین +- [Discrete Logarithm](https://www.alpertron.com.ar/DILOG.HTM) +- [Sage](https://sagecell.sagemath.org/) +- [factordb](https://factordb.com/) +- [quipqiup](https://quipqiup.com/) + +### ابزارهای متفرقه + +- [RSACTFTool](https://github.com/RsaCtfTool/RsaCtfTool) +- [RSATool](https://github.com/ius/rsatool) +- [XORTool](https://github.com/hellman/xortool) +- [Yafu](https://github.com/bbuhrow/yafu) +- [Hash_extender](https://github.com/iagox86/hash_extender) +- [cryptohack-docker](https://github.com/cryptohack/cryptohack-docker) --- diff --git a/docs/crypto/mindmap/index.md b/docs/crypto/mindmap/index.md index 6f8c88f70..d6cf8d442 100644 --- a/docs/crypto/mindmap/index.md +++ b/docs/crypto/mindmap/index.md @@ -9,7 +9,7 @@ tags: در این نقشه مفاهیم کلیدی، تکنیک‌ها و الگوریتم‌های رمزنگاری به تصویر کشیده شده‌اند. ???+ Tip "نکته" - با حرکت موس بر روی کلیدواژه‌ها، توضیحات بیشتر در مورد آن عنوان نمایش داده میشود. + با حرکت موس بر روی کلیدواژه‌ها، توضیحات بیشتر در مورد آن عنوان نمایش داده می‌شود. --- @@ -33,7 +33,7 @@ tags: (getOptions || markmap.deriveOptions)(jsonOptions), root2 ); - })(() => window.markmap,null,{"content":"Cryptography","children":[{"content":"
Classical Cryptography
","children":[{"content":"
Permutation Ciphers
","children":[{"content":"\n
Scytale
","children":[],"payload":{"lines":"6,8"}},{"content":"\n
Rail Fence
","children":[],"payload":{"lines":"8,10"}},{"content":"\n
Columnar Transposition
","children":[],"payload":{"lines":"10,12"}},{"content":"\n
Myszkowski
","children":[],"payload":{"lines":"12,14"}}],"payload":{"lines":"4,5"}},{"content":"
Substitution Ciphers
","children":[{"content":"\n
Monoalphabetic
","children":[{"content":"\n
Caesar
","children":[],"payload":{"lines":"18,20"}},{"content":"\n
Playfair
","children":[],"payload":{"lines":"20,22"}},{"content":"\n
Atbash
","children":[],"payload":{"lines":"22,25"}}],"payload":{"lines":"16,25"}},{"content":"\n
Polyalphabetic
","children":[{"content":"\n
Vigenère
","children":[],"payload":{"lines":"27,29"}},{"content":"\n
Beaufort
","children":[],"payload":{"lines":"29,31"}},{"content":"\n
Hill
","children":[],"payload":{"lines":"31,33"}},{"content":"\n
Enigma machine
","children":[],"payload":{"lines":"33,36"}}],"payload":{"lines":"25,36"}}],"payload":{"lines":"14,15"}},{"content":"
Hybrid Ciphers
","children":[{"content":"\n
ADFGX
","children":[],"payload":{"lines":"38,40"}},{"content":"\n
ADFGVX
","children":[],"payload":{"lines":"40,42"}},{"content":"\n
Bifid
","children":[],"payload":{"lines":"42,45"}}],"payload":{"lines":"36,37"}}],"payload":{"lines":"2,3"}},{"content":"
Modern Cryptography
","children":[{"content":"
Symmetric Cryptography
","children":[{"content":"\n
Stream Ciphers
","children":[{"content":"\n
ChaCha20
","children":[],"payload":{"lines":"52,54"}},{"content":"\n
Salsa20
","children":[],"payload":{"lines":"54,56"}},{"content":"\n
RC4
","children":[],"payload":{"lines":"56,59"}}],"payload":{"lines":"50,59"}},{"content":"\n
Block Ciphers
","children":[{"content":"\n
Feistel
","children":[],"payload":{"lines":"61,63"}},{"content":"\n
DES
","children":[],"payload":{"lines":"63,65"}},{"content":"\n
DES3
","children":[],"payload":{"lines":"65,67"}},{"content":"\n
AES
","children":[],"payload":{"lines":"67,69"}},{"content":"\n
Blowfish
","children":[],"payload":{"lines":"69,71"}},{"content":"\n
Twofish
","children":[],"payload":{"lines":"71,74"}}],"payload":{"lines":"59,74"}},{"content":"\n
Modes of Operation
","children":[{"content":"\n
ECB
","children":[],"payload":{"lines":"76,78"}},{"content":"\n
CBC
","children":[],"payload":{"lines":"78,79"}},{"content":"\n
CFB
","children":[],"payload":{"lines":"79,81"}},{"content":"\n
OFB
","children":[],"payload":{"lines":"81,83"}},{"content":"\n
CTR
","children":[],"payload":{"lines":"83,86"}}],"payload":{"lines":"74,86"}}],"payload":{"lines":"48,49"}},{"content":"
Asymmetric Cryptography
","children":[{"content":"\n
Encryption
","children":[{"content":"\n
RSA
","children":[],"payload":{"lines":"90,92"}},{"content":"\n
Merkle–Hellman knapsack
","children":[],"payload":{"lines":"92,94"}},{"content":"\n
ElGamal
","children":[],"payload":{"lines":"94,96"}},{"content":"\n
ECC
","children":[{"content":"\n
Curve25519
","children":[],"payload":{"lines":"98,100"}},{"content":"\n
P-256
","children":[],"payload":{"lines":"100,102"}}],"payload":{"lines":"96,102"}}],"payload":{"lines":"88,102"}},{"content":"\n
Key Exchange
","children":[{"content":"\n
DH
","children":[],"payload":{"lines":"104,106"}},{"content":"\n
ECDH
","children":[],"payload":{"lines":"106,108"}}],"payload":{"lines":"102,108"}},{"content":"\n
Signature
","children":[{"content":"\n
RSA
","children":[],"payload":{"lines":"110,112"}},{"content":"\n
ElGamal
","children":[],"payload":{"lines":"112,114"}},{"content":"\n
DSA
","children":[],"payload":{"lines":"114,116"}},{"content":"\n
ECDSA
","children":[],"payload":{"lines":"116,118"}},{"content":"\n
Schnorr
","children":[],"payload":{"lines":"118,121"}}],"payload":{"lines":"108,121"}}],"payload":{"lines":"86,87"}}],"payload":{"lines":"45,46"}},{"content":"
Post-quantum Cryptography
","children":[{"content":"
Lattice-based
","children":[{"content":"\n
Key Encapsulation
","children":[{"content":"\n
NTRUEncrypt
","children":[],"payload":{"lines":"127,129"}},{"content":"\n
Kyber
","children":[],"payload":{"lines":"129,131"}},{"content":"\n

FrodoKEM

","children":[],"payload":{"lines":"131,132"}}],"payload":{"lines":"125,132"}},{"content":"\n

Signature

","children":[{"content":"Dilithium","children":[],"payload":{"lines":"133,134"}},{"content":"Falcon","children":[],"payload":{"lines":"134,136"}}],"payload":{"lines":"132,136"}}],"payload":{"lines":"123,124"}},{"content":"
Code-based
","children":[{"content":"\n
Key Encapsulation
","children":[{"content":"Niederreiter","children":[],"payload":{"lines":"140,141"}},{"content":"Classic McEliece","children":[],"payload":{"lines":"141,142"}},{"content":"Bike","children":[],"payload":{"lines":"142,143"}}],"payload":{"lines":"138,143"}},{"content":"\n

Signature

","children":[{"content":"Niederreiter","children":[],"payload":{"lines":"144,146"}}],"payload":{"lines":"143,146"}}],"payload":{"lines":"136,137"}},{"content":"
Hash-based Signatures
","children":[{"content":"XMSS","children":[],"payload":{"lines":"148,149"}},{"content":"Sphincs+","children":[],"payload":{"lines":"149,151"}}],"payload":{"lines":"146,147"}},{"content":"
Multivariate-based
","children":[{"content":"\n
Key Encapsulation
","children":[{"content":"Matsumoto-Imai","children":[],"payload":{"lines":"156,157"}},{"content":"HFE","children":[],"payload":{"lines":"157,158"}}],"payload":{"lines":"154,158"}},{"content":"\n

Signature

","children":[{"content":"Matsumoto-Imai","children":[],"payload":{"lines":"159,160"}},{"content":"Rainbow","children":[],"payload":{"lines":"160,162"}}],"payload":{"lines":"158,162"}}],"payload":{"lines":"151,152"}},{"content":"
Isogeny-based
","children":[{"content":"Sike","children":[],"payload":{"lines":"164,167"}}],"payload":{"lines":"162,163"}}],"payload":{"lines":"121,122"}},{"content":"
Hash Functions
","children":[{"content":"MD5","children":[],"payload":{"lines":"169,170"}},{"content":"SHA-1","children":[],"payload":{"lines":"170,171"}},{"content":"SHA-2 (SHA-256, SHA-512)","children":[],"payload":{"lines":"171,172"}},{"content":"SHA-3 (Keccak)","children":[],"payload":{"lines":"172,173"}},{"content":"HMAC (Hash-based Message Authentication Code)","children":[],"payload":{"lines":"173,174"}},{"content":"BLAKE2","children":[],"payload":{"lines":"174,175"}},{"content":"PBKDF2 (Password-Based Key Derivation Function 2)","children":[],"payload":{"lines":"175,176"}},{"content":"bcrypt","children":[],"payload":{"lines":"176,177"}},{"content":"Argon2","children":[],"payload":{"lines":"177,180"}}],"payload":{"lines":"167,168"}},{"content":"
Main Threats
","children":[{"content":"\n

Brute Force Attack

","children":[],"payload":{"lines":"183,185"}},{"content":"\n

Frequency Analysis (Classical Ciphers)

","children":[],"payload":{"lines":"185,187"}},{"content":"\n

Known-plaintext Attack

","children":[],"payload":{"lines":"187,189"}},{"content":"\n

Chosen-plaintext Attack

","children":[],"payload":{"lines":"189,191"}},{"content":"\n

Chosen-ciphertext Attack

","children":[],"payload":{"lines":"191,193"}},{"content":"\n

Meet-in-the-Middle Attack

","children":[],"payload":{"lines":"193,195"}},{"content":"\n

Side-Channel Attacks

","children":[{"content":"\n

Timing Attacks

","children":[],"payload":{"lines":"196,198"}},{"content":"\n

Power Analysis

","children":[],"payload":{"lines":"198,200"}}],"payload":{"lines":"195,200"}},{"content":"\n

Differential Cryptanalysis

","children":[],"payload":{"lines":"200,202"}},{"content":"\n

Linear Cryptanalysis

","children":[],"payload":{"lines":"202,204"}},{"content":"\n

Padding Oracle Attacks

","children":[],"payload":{"lines":"204,206"}},{"content":"\n

Quantum computing

","children":[{"content":"Shor's Algorithm","children":[],"payload":{"lines":"207,208"}},{"content":"Grover's Algorithm","children":[],"payload":{"lines":"208,210"}}],"payload":{"lines":"206,210"}}],"payload":{"lines":"180,181","fold":1}},{"content":"
Misc Algorithms
","children":[{"content":"\n

Homomorphic Encryption

","children":[{"content":"\n

Partial Homomorphic (PHE)

","children":[{"content":"RSA","children":[],"payload":{"lines":"214,215"}},{"content":"Paillier","children":[],"payload":{"lines":"215,217"}}],"payload":{"lines":"213,217"}},{"content":"\n

Fully Homomorphic (FHE)

","children":[{"content":"CKKS","children":[],"payload":{"lines":"218,219"}},{"content":"BVG","children":[],"payload":{"lines":"219,220"}}],"payload":{"lines":"217,220"}}],"payload":{"lines":"211,220"}},{"content":"\n

Secret Sharing

","children":[],"payload":{"lines":"220,221"}},{"content":"\n

Linear Feedback Shift Register (LFSR)

","children":[],"payload":{"lines":"221,222"}},{"content":"\n

Commitment scheme

","children":[{"content":"Pedersen Commitment","children":[],"payload":{"lines":"223,227"}}],"payload":{"lines":"222,227"}}],"payload":{"lines":"210,211","fold":1}}],"payload":{"lines":"0,1"}},{"colorFreezeLevel":3,"initialExpandLevel":3}) + })(() => window.markmap,null,{"content":"Cryptography","children":[{"content":"
Classical Cryptography
","children":[{"content":"
Permutation Ciphers
","children":[{"content":"\n
Scytale
","children":[],"payload":{"lines":"6,8"}},{"content":"\n
Rail Fence
","children":[],"payload":{"lines":"8,10"}},{"content":"\n
Columnar Transposition
","children":[],"payload":{"lines":"10,12"}},{"content":"\n
Myszkowski
","children":[],"payload":{"lines":"12,14"}}],"payload":{"lines":"4,5"}},{"content":"
Substitution Ciphers
","children":[{"content":"\n
Monoalphabetic
","children":[{"content":"\n
Caesar
","children":[],"payload":{"lines":"18,20"}},{"content":"\n
Playfair
","children":[],"payload":{"lines":"20,22"}},{"content":"\n
Atbash
","children":[],"payload":{"lines":"22,25"}}],"payload":{"lines":"16,25"}},{"content":"\n
Polyalphabetic
","children":[{"content":"\n
Vigenère
","children":[],"payload":{"lines":"27,29"}},{"content":"\n
Beaufort
","children":[],"payload":{"lines":"29,31"}},{"content":"\n
Hill
","children":[],"payload":{"lines":"31,33"}},{"content":"\n
Enigma machine
","children":[],"payload":{"lines":"33,36"}}],"payload":{"lines":"25,36"}}],"payload":{"lines":"14,15"}},{"content":"
Hybrid Ciphers
","children":[{"content":"\n
ADFGX
","children":[],"payload":{"lines":"38,40"}},{"content":"\n
ADFGVX
","children":[],"payload":{"lines":"40,42"}},{"content":"\n
Bifid
","children":[],"payload":{"lines":"42,45"}}],"payload":{"lines":"36,37"}}],"payload":{"lines":"2,3"}},{"content":"
Modern Cryptography
","children":[{"content":"
Symmetric Cryptography
","children":[{"content":"\n
Stream Ciphers
","children":[{"content":"\n
ChaCha20
","children":[],"payload":{"lines":"52,54"}},{"content":"\n
Salsa20
","children":[],"payload":{"lines":"54,56"}},{"content":"\n
RC4
","children":[],"payload":{"lines":"56,59"}}],"payload":{"lines":"50,59"}},{"content":"\n
Block Ciphers
","children":[{"content":"\n
Feistel
","children":[],"payload":{"lines":"61,63"}},{"content":"\n
DES
","children":[],"payload":{"lines":"63,65"}},{"content":"\n
DES3
","children":[],"payload":{"lines":"65,67"}},{"content":"\n
AES
","children":[],"payload":{"lines":"67,69"}},{"content":"\n
Blowfish
","children":[],"payload":{"lines":"69,71"}},{"content":"\n
Twofish
","children":[],"payload":{"lines":"71,74"}}],"payload":{"lines":"59,74"}},{"content":"\n
Modes of Operation
","children":[{"content":"\n
ECB
","children":[],"payload":{"lines":"76,78"}},{"content":"\n
CBC
","children":[],"payload":{"lines":"78,79"}},{"content":"\n
CFB
","children":[],"payload":{"lines":"79,81"}},{"content":"\n
OFB
","children":[],"payload":{"lines":"81,83"}},{"content":"\n
CTR
","children":[],"payload":{"lines":"83,86"}}],"payload":{"lines":"74,86"}}],"payload":{"lines":"48,49"}},{"content":"
Asymmetric Cryptography
","children":[{"content":"\n
Encryption
","children":[{"content":"\n
RSA
","children":[],"payload":{"lines":"90,92"}},{"content":"\n
Merkle–Hellman knapsack
","children":[],"payload":{"lines":"92,94"}},{"content":"\n
ElGamal
","children":[],"payload":{"lines":"94,96"}},{"content":"\n
ECC
","children":[{"content":"\n
Curve25519
","children":[],"payload":{"lines":"98,100"}},{"content":"\n
P-256
","children":[],"payload":{"lines":"100,102"}}],"payload":{"lines":"96,102"}}],"payload":{"lines":"88,102"}},{"content":"\n
Key Exchange
","children":[{"content":"\n
DH
","children":[],"payload":{"lines":"104,106"}},{"content":"\n
ECDH
","children":[],"payload":{"lines":"106,108"}}],"payload":{"lines":"102,108"}},{"content":"\n
Signature
","children":[{"content":"\n
RSA
","children":[],"payload":{"lines":"110,112"}},{"content":"\n
ElGamal
","children":[],"payload":{"lines":"112,114"}},{"content":"\n
DSA
","children":[],"payload":{"lines":"114,116"}},{"content":"\n
ECDSA
","children":[],"payload":{"lines":"116,118"}},{"content":"\n
Schnorr
","children":[],"payload":{"lines":"118,121"}}],"payload":{"lines":"108,121"}}],"payload":{"lines":"86,87"}}],"payload":{"lines":"45,46"}},{"content":"
Post-quantum Cryptography
","children":[{"content":"
Lattice-based
","children":[{"content":"\n
Key Encapsulation
","children":[{"content":"\n
NTRUEncrypt
","children":[],"payload":{"lines":"127,129"}},{"content":"\n
Kyber
","children":[],"payload":{"lines":"129,131"}},{"content":"\n

FrodoKEM

","children":[],"payload":{"lines":"131,132"}}],"payload":{"lines":"125,132"}},{"content":"\n

Signature

","children":[{"content":"Dilithium","children":[],"payload":{"lines":"133,134"}},{"content":"Falcon","children":[],"payload":{"lines":"134,136"}}],"payload":{"lines":"132,136"}}],"payload":{"lines":"123,124"}},{"content":"
Code-based
","children":[{"content":"\n
Key Encapsulation
","children":[{"content":"Niederreiter","children":[],"payload":{"lines":"140,141"}},{"content":"Classic McEliece","children":[],"payload":{"lines":"141,142"}},{"content":"Bike","children":[],"payload":{"lines":"142,143"}}],"payload":{"lines":"138,143"}},{"content":"\n

Signature

","children":[{"content":"Niederreiter","children":[],"payload":{"lines":"144,146"}}],"payload":{"lines":"143,146"}}],"payload":{"lines":"136,137"}},{"content":"
Hash-based Signatures
","children":[{"content":"XMSS","children":[],"payload":{"lines":"148,149"}},{"content":"Sphincs+","children":[],"payload":{"lines":"149,151"}}],"payload":{"lines":"146,147"}},{"content":"
Multivariate-based
","children":[{"content":"\n
Key Encapsulation
","children":[{"content":"Matsumoto-Imai","children":[],"payload":{"lines":"156,157"}},{"content":"HFE","children":[],"payload":{"lines":"157,158"}}],"payload":{"lines":"154,158"}},{"content":"\n

Signature

","children":[{"content":"Matsumoto-Imai","children":[],"payload":{"lines":"159,160"}},{"content":"Rainbow","children":[],"payload":{"lines":"160,162"}}],"payload":{"lines":"158,162"}}],"payload":{"lines":"151,152"}},{"content":"
Isogeny-based
","children":[{"content":"Sike","children":[],"payload":{"lines":"164,167"}}],"payload":{"lines":"162,163"}}],"payload":{"lines":"121,122"}},{"content":"
Hash Functions
","children":[{"content":"MD5","children":[],"payload":{"lines":"169,170"}},{"content":"SHA-1","children":[],"payload":{"lines":"170,171"}},{"content":"SHA-2 (SHA-256, SHA-512)","children":[],"payload":{"lines":"171,172"}},{"content":"SHA-3 (Keccak)","children":[],"payload":{"lines":"172,173"}},{"content":"HMAC (Hash-based Message Authentication Code)","children":[],"payload":{"lines":"173,174"}},{"content":"BLAKE2","children":[],"payload":{"lines":"174,175"}},{"content":"PBKDF2 (Password-Based Key Derivation Function 2)","children":[],"payload":{"lines":"175,176"}},{"content":"bcrypt","children":[],"payload":{"lines":"176,177"}},{"content":"Argon2","children":[],"payload":{"lines":"177,180"}}],"payload":{"lines":"167,168"}},{"content":"
Main Threats
","children":[{"content":"\n

Brute Force Attack

","children":[],"payload":{"lines":"183,185"}},{"content":"\n

Frequency Analysis (Classical Ciphers)

","children":[],"payload":{"lines":"185,187"}},{"content":"\n

Known-plaintext Attack

","children":[],"payload":{"lines":"187,189"}},{"content":"\n

Chosen-plaintext Attack

","children":[],"payload":{"lines":"189,191"}},{"content":"\n

Chosen-ciphertext Attack

","children":[],"payload":{"lines":"191,193"}},{"content":"\n

Meet-in-the-Middle Attack

","children":[],"payload":{"lines":"193,195"}},{"content":"\n

Side-Channel Attacks

","children":[{"content":"\n

Timing Attacks

","children":[],"payload":{"lines":"196,198"}},{"content":"\n

Power Analysis

","children":[],"payload":{"lines":"198,200"}}],"payload":{"lines":"195,200"}},{"content":"\n

Differential Cryptanalysis

","children":[],"payload":{"lines":"200,202"}},{"content":"\n

Linear Cryptanalysis

","children":[],"payload":{"lines":"202,204"}},{"content":"\n

Padding Oracle Attacks

","children":[],"payload":{"lines":"204,206"}},{"content":"\n

Quantum computing

","children":[{"content":"Shor's Algorithm","children":[],"payload":{"lines":"207,208"}},{"content":"Grover's Algorithm","children":[],"payload":{"lines":"208,210"}}],"payload":{"lines":"206,210"}}],"payload":{"lines":"180,181","fold":1}},{"content":"
Misc Algorithms
","children":[{"content":"\n

Homomorphic Encryption

","children":[{"content":"\n

Partial Homomorphic (PHE)

","children":[{"content":"RSA","children":[],"payload":{"lines":"214,215"}},{"content":"Paillier","children":[],"payload":{"lines":"215,217"}}],"payload":{"lines":"213,217"}},{"content":"\n

Fully Homomorphic (FHE)

","children":[{"content":"CKKS","children":[],"payload":{"lines":"218,219"}},{"content":"BVG","children":[],"payload":{"lines":"219,220"}}],"payload":{"lines":"217,220"}}],"payload":{"lines":"211,220"}},{"content":"\n

Secret Sharing

","children":[],"payload":{"lines":"220,221"}},{"content":"\n

Linear Feedback Shift Register (LFSR)

","children":[],"payload":{"lines":"221,222"}},{"content":"\n

Commitment scheme

","children":[{"content":"Pedersen Commitment","children":[],"payload":{"lines":"223,227"}}],"payload":{"lines":"222,227"}}],"payload":{"lines":"210,211","fold":1}}],"payload":{"lines":"0,1"}},{"colorFreezeLevel":3,"initialExpandLevel":3}) --- diff --git a/docs/crypto/source/index.md b/docs/crypto/source/index.md index 56e050a3e..adac2c00c 100644 --- a/docs/crypto/source/index.md +++ b/docs/crypto/source/index.md @@ -14,8 +14,8 @@ ## معرفی کتاب - ### An Introduction to Mathematical Cryptography by Jeffrey Hoffstein Introduction-to-Mathematical-Cryptography_Hoffstein - این کتاب یکی از کتاب‌های پرطرفدار در مباحث رمزنگاری است. دلیل آن این است که مفاهیم پیچیده و عمیق ریاضی رمزنگاری را به زبان ساده و همراه با مثال و تمرین بیان می‌کند تا درک مطلب خواننده را افزایش دهد. - این کتاب عمدتاً بر روی سیستم‌های رمزنگاری کلید عمومی و امضای دیجیتال و همچنین ریاضیات آن‌ها تمرکز می‌کند. خواننده‌ای که بر مطالب این کتاب تسلط داشته باشد، نه تنها برای مطالعه بیشتر در رمزنگاری به خوبی آماده می‌شود، بلکه به درک واقعی اصول ریاضی اساسی که رمزنگاری مدرن بر آن استوار است، دست خواهد یافت. + این کتاب یکی از کتاب‌های پرطرفدار و توصیه شده در جامعه رمزنگاری است. دلیل آن این است که مفاهیم پیچیده و عمیق ریاضی رمزنگاری را به زبان ساده و همراه با مثال و تمرین بیان می‌کند تا درک مطلب خواننده را افزایش دهد. + این کتاب عمدتاً بر روی سیستم‌های رمزنگاری کلید عمومی و امضای دیجیتال و همچنین ریاضیات آن‌ها تمرکز می‌کند. خواننده‌ای که بر مطالب این کتاب تسلط داشته باشد، نه تنها برای مطالعه بیشتر در رمزنگاری به خوبی آماده می‌شود، بلکه به درک عمیق اصول ریاضی که رمزنگاری مدرن بر آن استوار است دست خواهد یافت و می‌تواند به حل چالش‌های CTF مبتنی بر مفاهیم ریاضی کمک شایانی کند. --- - ### Cryptography and Network Security by Behrouz Forouzan Cryptography-And-Network-Security_Forouzan diff --git a/docs/crypto/wiki/rsa/rsa.md b/docs/crypto/wiki/rsa/rsa.md index ca679348a..989543df9 100644 --- a/docs/crypto/wiki/rsa/rsa.md +++ b/docs/crypto/wiki/rsa/rsa.md @@ -41,7 +41,10 @@ $$M \equiv C^d \pmod{N}$$ - دو عدد اول بزرگ، \( p \) و \( q \)، انتخاب می‌شوند. - حاصل‌ضرب آن‌ها \( N = p \times q \) بخش مشترک کلید عمومی و خصوصی است. -- یک نمایه عمومی \( e \) انتخاب می‌شود (معمولاً 65537 به دلیل امنیت و کارایی آن انتخاب می‌شود). +- نمایه عمومی \( e \) باید به گونه‌ای انتخاب شود که 1=(\(e,\phi(N)\))GCD + + - در دنیای واقعی معمولاً عدد 65537 به دلیل امنیت و کارایی آن انتخاب می‌شود. + - نمایه خصوصی \( d \) از طریق معکوس پیمانه ای \( e \) محاسبه می‌شود. ### مثال RSA diff --git a/docs/crypto/writeups/2024/SnappCTF/mascot.md b/docs/crypto/writeups/2024/SnappCTF/mascot.md index 9c7cb1b27..121baeaf9 100644 --- a/docs/crypto/writeups/2024/SnappCTF/mascot.md +++ b/docs/crypto/writeups/2024/SnappCTF/mascot.md @@ -7,6 +7,8 @@ tags: - ECB mode --- +# چالش mascot + تو این چلنج یه فایل بش داریم که به ما میفهمونه انکریپشن استفاده شده تایپ ECB هست و این تایپ از انکریپشن AES یه باگ (که البته فیچر هم هست :joy:) که باید از این باگ سوء استفاده کنیم تا بتونیم فلگ رو بخونیم معروف ترین عکس در رابطه با این باگ این عکسه diff --git a/docs/crypto/writeups/2024/USCCTF/Its-Not-Called-Data-Loss-Prevention.md b/docs/crypto/writeups/2024/USCCTF/Its-Not-Called-Data-Loss-Prevention.md new file mode 100644 index 000000000..cbdb285c9 --- /dev/null +++ b/docs/crypto/writeups/2024/USCCTF/Its-Not-Called-Data-Loss-Prevention.md @@ -0,0 +1,106 @@ +--- +tags: + - USCCTF + - USCCTF-2024 + - Crypto + - Pohlig_hellman algorithm + - Discrete logarithm + - Smooth prime + - Safe prime +--- + +# چالش It's Not Called Data Loss Prevention + + +
+![Its-Not-Called-Data-Loss-Prevention.png](Its-Not-Called-Data-Loss-Prevention.png){ width="400" } +
+ +## شرح چالش + +در این چالش فقط script زیر به ما داده شده است. + +```python title="chall.py" linenums="1" + +from Crypto.Util.number import * +p = 72582273207584409523836416205503873456840672244861668902068962428022358668644213717033410220094858213785909158082084409697781833525734642650576180002727864094178853739590888445753712196268567738582111704293273201721006648707008913242412196989487167851968618303659742648153352883917176492356546118351747721810800909873736282570227177961197335450387989276806079489 +g = 3 +FLAG = b"REDACTED" +a = pow(g, bytes_to_long(FLAG), p) +print(a) + +""" +24393771488717960431147269064624631828310604373526026598603386491263061338072489803153972728250242949112187407825532440328751180404635401465476512488685185622725060580628770654048867200033806585934697471249921972700552978079752695585970921337459580789152970187925768085334409084092041192304935279345047595337816976845617649400223935358270007572542969925561362228 +""" +``` +اول با استفاده کتابخانه `Crypto.isPrime(p)` بررسی کردم که آیا مقدار `p` اول است یا نه که اره یک عدد اول است. +پس در این اینجا مقدار `g` به توان فلگ رسیده و سپس در پیمانه `p`محاسبه شده است. خب حالا بریم ببینیم چطوری می‌تونیم فلگ بدست بیاوریم: + +## راه‌حل چالش + +اولین ایده که مسلما به ذهن میرسه اینه که بیایم با استفاده از لگاریتم گسسته(DLP) به مقدار فلگ برسیم.با استفاده از ابزار sage این روش امتحان کردم + +???+ tip "ایده اول" + + امتحان کردن ایده اول با استفاده کتابخانه sage + + ```py + from sage.all import * + flag= discrete_log(a, g) + print(long_to_bytes(flag).decode()) + ``` +اما چون مقدار پیمانه `p` و توان (فلگ) اعداد بزرگی هستن عملا امکانپذیر نیست و باید از یک آسیب‌پذیری استفاده این مسئله رو حل کنیم!؟ + +شروع به جستجو در اینترنت و چت کردن با chatgpt کردم تا ببینم چه راه‌حل‌هایی ممکنی وجود دارد. +بعد از مقدار جستجو متوجه شدم که اگر مقدار `p` به شکل **امن** تولید نشده باشه در این صورت آسیب‌پذیری در مقدار p وجود دارد که احتمالا با استفاده از الگوریتم **Pohlig–Hellman** بتوان به مقدار فلگ رسید. + +??? info "عدد اول امن" + یک عدد اول $q$ را عدد اول سوفی ژرمن (Sophie Germain) می‌گویند اگر $2q+1$ نیز اول باشد. حال عدد اول $p$ که از رابطه $p =2q+1$ مرتبط با عدد اول سوفی ژرمن تولید شده را عدد اول امن می‌گویند. + +همان‌طور که در تصویر زیر با استفاده از سایت [factordb](https://factordb.com/) مشاهده می‌کنید مقدار $p-1$ شامل مقسوم‌علیه‌های مختلفی (smooth prime) است که نشان می‌دهد به شکل امن تولید نشده است. + +
+![factors](factor p-1.png) +
+ + +پس تا اینجا فهمیدیم که باید از الگوریتم Pohlig–Hellman استفاده کنیم تا به مقدار فلگ برسیم. اما در اینجا یک مشکل وجود دارد و آن این است که یکی از مقسوم‌علیه‌های $p-1$ یک مقدار خیلی بزرگ است (232 رقم) و نمی‌توان دوباره مقدار لگاریتم گسسته را در این الگوریتم انجام داد. من تا همین مرحله پش رفته بودم و نمیدونستم دیگه باید چیکار کنم و در اینترنت هم راه‌حلی برای این مشکل پیدا نکردم. بعد از مسابقه یک شخصی با استفاده از کد زیر مسئله رو حل کرده بود. + +یکی از نکاتی که باید توجه می کردم این بود که نیاز به گرفتن لگاریتم گسسته روی تمام مقسوم‌علیه‌ها نیست و در کد پایتون زیر هم این مشاهده می‌شود: + + + +```python title="solve.py" linenums="1" +from sage.all import * +from Crypto.Util.number import * + +p = 72582273207584409523836416205503873456840672244861668902068962428022358668644213717033410220094858213785909158082084409697781833525734642650576180002727864094178853739590888445753712196268567738582111704293273201721006648707008913242412196989487167851968618303659742648153352883917176492356546118351747721810800909873736282570227177961197335450387989276806079489 +g = 3 +a = 24393771488717960431147269064624631828310604373526026598603386491263061338072489803153972728250242949112187407825532440328751180404635401465476512488685185622725060580628770654048867200033806585934697471249921972700552978079752695585970921337459580789152970187925768085334409084092041192304935279345047595337816976845617649400223935358270007572542969925561362228 +order1 = p - 1 +factors = [2**10, 787**4, 32587**3, 708667**7, 19964029**6, 856892137**2, 1279562789201591523940850597505137258079950871699945159663662131835076279131726053889024495522041177924458398143694947568877887370555653768499066503948935672363148134562050374459082232131445656948264915239888005511288832804262243257] + +K = GF(p) +res = [] +for i in factors[:-1]: + g_i = K(pow(g, order1 // i, p)) + a_i = K(pow(a, order1 // i, p)) + order = ZZ(i) + x = discrete_log(a_i, g_i, ord=order) + res.append(x) +b = crt(res, factors[:-1]) + +print(long_to_bytes(b).decode()) + +``` +در نهایت با استفاده این کد بعد از چند ثانیه به مقدار فلگ می‌رسیم. + + +??? success "FLAG :triangular_flag_on_post:" +
`CYBORG{p0hl1g_h3llm4n_f7w!!}`
+ +--- + +!!! نویسنده + [HIGHer](https://twitter.com/HIGH01012) + diff --git a/docs/crypto/writeups/2024/USCCTF/Its-Not-Called-Data-Loss-Prevention.png b/docs/crypto/writeups/2024/USCCTF/Its-Not-Called-Data-Loss-Prevention.png new file mode 100644 index 000000000..8ec2d0269 Binary files /dev/null and b/docs/crypto/writeups/2024/USCCTF/Its-Not-Called-Data-Loss-Prevention.png differ diff --git a/docs/crypto/writeups/2024/USCCTF/decipherium.md b/docs/crypto/writeups/2024/USCCTF/decipherium.md new file mode 100644 index 000000000..a7fc91ebc --- /dev/null +++ b/docs/crypto/writeups/2024/USCCTF/decipherium.md @@ -0,0 +1,73 @@ +--- +tags: + - USCCTF + - USCCTF-2024 + - Crypto + - Encoding + - periodic table +--- + +# چالش decipherium + +
+![cover](decipherium.png){ width="400" } +
+ +## شرح چالش + +این چالش یک دنباله کد را به شکل زیر به ما داده که براساس اسم چالش و حروف داخل کد که حروف بزرگ و سپس کوچک دارد به نظر نمادهای عناصر شیمیایی جدول تناوبی را ارائه می‌داد که به صورت پشت سر هم و بدون هیچ فاصله‌ای نوشته شده‌اند. در اینجا، هدف هر نماد عنصری احتمالاً به عدد اتمی آن عنصر اشاره دارد. + +``` +TeSbILaTeSnTeNoISnTeCsCsDyICdTeIISnTeLaSbCdTeTeTeLaTeSbINoTeSbSbInICdTeBaSbSbISnIYbSbCdTeXeINoSbSbTeHoTeITeFmTeITeMdITeSbICsEr +``` + +
+![periodic_Table.png](periodic_Table.png) +
+ +## راه‌ حل چالش + +برای کدگشایی، ابتدا نمادهای شیمیایی را از هم جدا می‌کنیم و نماد هر عنصر را به عدد اتمی متناظر با آن تبدیل کردیم و در یک لیست قرار می‌دهیم. سپس دیکشنری شامل نمادهای شیمیایی هر عنصر و اعداد اتمی آن‌ها استفاده می کنیم. . + +**تبدیل اعداد به کاراکترهای ASCII:** سپس اعداد به‌دست‌آمده را به کاراکترهای ASCII تبدیل کردیم، چرا که این اعداد به نظر در بازه‌ای قرار دارند که با استاندارد ASCII همخوانی دارند. در نتیجه، هر عدد(عدد اتمی) به یک کاراکتر خاص تبدیل شد. + پس از تبدیل به ASCII، خروجی به‌دست‌آمده شامل رشته‌ای از کاراکترهای hex بود. در این مرحله، این رشته hex را به متن قابل‌ خواندن (text) تبدیل کردیم. + + +```python title="solve.py" linenums="1" + +import binascii +import re + +encoded_text = "TeSbILaTeSnTeNoISnTeCsCsDyICdTeIISnTeLaSbCdTeTeTeLaTeSbINoTeSbSbInICdTeBaSbSbISnIYbSbCdTeXeINoSbSbTeHoTeITeFmTeITeMdITeSbICsEr" +elements = re.findall(r'[A-Z][a-z]?', encoded_text) + +#atomic numbers dict +atomic_numbers_dict = { + "H": 1, "He": 2, "Li": 3, "Be": 4, "B": 5, "C": 6, "N": 7, "O": 8, "F": 9, "Ne": 10, + "Na": 11, "Mg": 12, "Al": 13, "Si": 14, "P": 15, "S": 16, "Cl": 17, "Ar": 18, "K": 19, "Ca": 20, + "Sc": 21, "Ti": 22, "V": 23, "Cr": 24, "Mn": 25, "Fe": 26, "Co": 27, "Ni": 28, "Cu": 29, "Zn": 30, + "Ga": 31, "Ge": 32, "As": 33, "Se": 34, "Br": 35, "Kr": 36, "Rb": 37, "Sr": 38, "Y": 39, "Zr": 40, + "Nb": 41, "Mo": 42, "Tc": 43, "Ru": 44, "Rh": 45, "Pd": 46, "Ag": 47, "Cd": 48, "In": 49, "Sn": 50, + "Sb": 51, "Te": 52, "I": 53, "Xe": 54, "Cs": 55, "Ba": 56, "La": 57, "Ce": 58, "Pr": 59, "Nd": 60, + "Pm": 61, "Sm": 62, "Eu": 63, "Gd": 64, "Tb": 65, "Dy": 66, "Ho": 67, "Er": 68, "Tm": 69, "Yb": 70, + "Lu": 71, "Hf": 72, "Ta": 73, "W": 74, "Re": 75, "Os": 76, "Ir": 77, "Pt": 78, "Au": 79, "Hg": 80, + "Tl": 81, "Pb": 82, "Bi": 83, "Po": 84, "At": 85, "Rn": 86, "Fr": 87, "Ra": 88, "Ac": 89, "Th": 90, + "Pa": 91, "U": 92, "Np": 93, "Pu": 94, "Am": 95, "Cm": 96, "Bk": 97, "Cf": 98, "Es": 99, "Fm": 100, + "Md": 101, "No": 102, "Lr": 103} + +ascii_sequence = [atomic_numbers_dict.get(symbol, None) for symbol in elements] +ascii_decoded= ''.join(chr(num) if 32 <= num <= 126 else '?' for num in ascii_sequence) +decoded_text = binascii.unhexlify(ascii_decoded).decode('utf-8', errors='replace') +print("FLag:", decoded_text) +``` + + + +??? success "FLAG :triangular_flag_on_post:" +
`CYBORG{PERI0DIC_C1PH3R_0F_3LEMENT5}`
+ +--- + +!!! نویسنده + [HIGHer](https://twitter.com/HIGH01012) + diff --git a/docs/crypto/writeups/2024/USCCTF/decipherium.png b/docs/crypto/writeups/2024/USCCTF/decipherium.png new file mode 100644 index 000000000..cbeb2abf9 Binary files /dev/null and b/docs/crypto/writeups/2024/USCCTF/decipherium.png differ diff --git a/docs/crypto/writeups/2024/USCCTF/factor p-1.png b/docs/crypto/writeups/2024/USCCTF/factor p-1.png new file mode 100644 index 000000000..82d77c6a0 Binary files /dev/null and b/docs/crypto/writeups/2024/USCCTF/factor p-1.png differ diff --git a/docs/crypto/writeups/2024/USCCTF/periodic_Table.png b/docs/crypto/writeups/2024/USCCTF/periodic_Table.png new file mode 100644 index 000000000..845994334 Binary files /dev/null and b/docs/crypto/writeups/2024/USCCTF/periodic_Table.png differ diff --git a/docs/getStarted/CTF-in-Iran.md b/docs/getStarted/CTF-in-Iran.md index 2fa22e247..597b34944 100644 --- a/docs/getStarted/CTF-in-Iran.md +++ b/docs/getStarted/CTF-in-Iran.md @@ -7,4 +7,5 @@ ### فتح پرچم دانشگاه ارومیه ### سایر مسابقات ## سطح کیفی مسابقات در ایران -## تیم ها مطرح ایرانی \ No newline at end of file +## تیم ها مطرح ایرانی +## قوانین و شرایط عجیب غریب در مسابقات داخلی \ No newline at end of file diff --git a/docs/getStarted/beginners-guide/index.md b/docs/getStarted/beginners-guide/index.md index c4a6332a6..4f47abccb 100644 --- a/docs/getStarted/beginners-guide/index.md +++ b/docs/getStarted/beginners-guide/index.md @@ -20,7 +20,7 @@ tags: ### ۲- استفاده از منابع آموزشی :globe_with_meridians: :books: -بعد از پیدا کردن حوزه مورد علاقه باید شروع به مطالعه منابع آموزشی مختلف (وبسایت، کتاب، بلاگ) کنید تا دانش پایه آن حوزه کسب کنید. یک از سایت‌های خوب در این زمینه بخش یادگیری سایت [picoctf](https://primer.picoctf.org/) است که می‌توانید استفاده کنید. سایت‌های آموزشی دیگری هم به شکل تخصصی روی یک حوزه خاص آموزش یا چالش‌هایی را ارائه می‌دهند که می‌توانید به آن‌ها مراجعه کنید. +بعد از پیدا کردن حوزه مورد علاقه باید شروع به مطالعه منابع آموزشی مختلف (وبسایت، کتاب، بلاگ) کنید تا دانش پایه آن حوزه کسب کنید. دو نمونه از سایت‌های خوب در این زمینه بخش یادگیری سایت [picoctf](https://primer.picoctf.org/) و [CTF101](https://ctf101.org/) است که می‌توانید استفاده کنید. سایت‌های آموزشی دیگری هم به شکل تخصصی روی یک حوزه خاص آموزش یا چالش‌هایی را ارائه می‌دهند که می‌توانید به آن‌ها مراجعه کنید.
@@ -38,7 +38,7 @@ tags: -### ۳- خواندن Write-up :open_book: :memo: +### ۳- خواندن writeup :open_book: :memo: شاید «**مهم‌ترین**» عامل برای یادگیری و تقویت در CTF خواندن رایتاپ یا نحوه حل چالش توسط دیگران است. خواندن مداوم رایتاپ چالش‌ها بسیار مفید است. این کار شما را با نگرش‌ افراد مختلف در حل یک مسئله آشنا می‌کند و کمک می‌کند در آینده مقابل چالش‌های مشابه با تجربه و دانش بیشتری وارد شوید. علاوه‌براین، گاهی نوشتن نحوه حل برای خود و همچنین خلاصه یا نکته‌برداری یک چالش به ماندگاری آن در ذهن کمک می‌کند. @@ -68,7 +68,7 @@ tags:
برخی از سایت‌های wargame معروف
-### ۵- شرکت کردن در مسابقه :trophy: :video_game: +### ۵- شرکت در مسابقات CTF :trophy: :video_game: راه دیگر برای شروع و تقویت مهارت مسابقه دادن است. بعد از اینکه اندکی با حوزه چالش‌ها و نحوه حل آن‌ها آشنا شدید وقت خوبی است که در یک مسابقه شرکت کنید. برای این کار می‌توانید به سایت [ctftime](https://ctftime.org) سر بزنید. بهتر است که ابتدا در مسابقاتی با وزن کم (۰ تا ۲۵) شرکت کنید چون این مسابقات برای افرادی است که تازه وارد این عرصه شده‌اند. **- توصیه:** diff --git a/docs/getStarted/customization.md b/docs/getStarted/customization.md index 51389e402..c14aa9cbf 100644 --- a/docs/getStarted/customization.md +++ b/docs/getStarted/customization.md @@ -1,26 +1,28 @@ - # شخصی‌سازی -## انواع زمینه‌های رنگی +در این قسمت می‌توانید با استفاده از گزینه‌های تعبیه شده، برخی از قسمت‌های سایت را برای خود شخصی‌سازی کنید. + +## انواع زمینه‌های رنگی ### ۱_ روشن و تاریک بودن پس‌زمینه با استفاده از این ویژگی می‌توانید براساس تنظیمات مرورگر و سیستم، به طور خودکار یا به صورت دستی بین زمینه‌های روشن و تاریک جابجا شوید.
- - + +
+ ### ۲_ رنگ‌های قالب اصلی برای تغییر رنگ اصلی قالب اصلی روی بلوک رنگ کلیک کنید. @@ -57,7 +59,7 @@ }) -### ۳_ رنگ‌های مربوط تاکید +### ۳_ رنگ‌های تاکیدی برای تغییر رنگ بخش‌های تاکیدی مانند عبور ماوس از روی لینک‌ها و برچسب‌ها، روی بلوک رنگی دلخواه خود در این بخش کلیک کنید.
@@ -88,20 +90,71 @@ }) + + +## تغییر خط نوشتاری +برای انتخاب Font دلخواه خود، می‌توانید از گزینه‌های زیر استفاده کنید. + + +
+ + + + + + + + +
+ + + + + + +