워게임/CryptoHack
-
Armory 문제(및 설명) Shamir의 스키마를 개선하여 결정론적으로 파생된 공유를 사용했습니다. 비트코인 개인 키 및 기타 비밀 데이터 저장에 좋습니다. 당신은 첫 번째 공유만 가지고 있고 플래그를 해제하기 위해 3개가 필요하기 때문에 어떤 가능성도 없습니다. 풀이 더보기 #!/usr/bin/env python3 import hashlib FLAG = b"crypto{???????????????????????}" PRIME = 77793805322526801978326005188088213205424384389488111175220421173086192558047 def _eval_at(poly, x, prime): accum = 0 for coeff in reversed(poly): accum *..
[CryptoHack] MISC(Armory)Armory 문제(및 설명) Shamir의 스키마를 개선하여 결정론적으로 파생된 공유를 사용했습니다. 비트코인 개인 키 및 기타 비밀 데이터 저장에 좋습니다. 당신은 첫 번째 공유만 가지고 있고 플래그를 해제하기 위해 3개가 필요하기 때문에 어떤 가능성도 없습니다. 풀이 더보기 #!/usr/bin/env python3 import hashlib FLAG = b"crypto{???????????????????????}" PRIME = 77793805322526801978326005188088213205424384389488111175220421173086192558047 def _eval_at(poly, x, prime): accum = 0 for coeff in reversed(poly): accum *..
2024.03.31 -
Bit by Bit 문제(및 설명) 당신이 ElGamal에 대해 들었는데, 이것은 몇 가지 멋진 특성을 가지고 있다고 들었습니다. 저는 모든 비트를 다른 비밀로 암호화했으므로 당신은 제 플래그값을 복구할 수 못합니다. 풀이 더보기 from Crypto.Random import random from Crypto.Util.number import getPrime, bytes_to_long FLAG = b'crypto{??????????????????????????????????????????}' def get_padding(): seed = 256 e = random.randint(2, q) padding = pow(seed, e, q) return padding def public_key(): x = ra..
[CryptoHack] MISC(Bit by Bit)Bit by Bit 문제(및 설명) 당신이 ElGamal에 대해 들었는데, 이것은 몇 가지 멋진 특성을 가지고 있다고 들었습니다. 저는 모든 비트를 다른 비밀로 암호화했으므로 당신은 제 플래그값을 복구할 수 못합니다. 풀이 더보기 from Crypto.Random import random from Crypto.Util.number import getPrime, bytes_to_long FLAG = b'crypto{??????????????????????????????????????????}' def get_padding(): seed = 256 e = random.randint(2, q) padding = pow(seed, e, q) return padding def public_key(): x = ra..
2024.01.31 -
Find the Lattice 문제(및 설명) 보안 시스템에 대한 트랩도어 함수를 형성할 수 있는 어려운 문제를 포함하는 것으로 알려진 격자(lattices)를 살펴보았습니다. 또한, 암호 해독(cryptanalysis)에서는 격자가 격자와 관련이 없는 것처럼 보이는 암호 프로토콜을 깰 수 있습니다. 이 도전 과제는 플래그를 암호화하기 위해 모듈러 산술을 사용하지만, 프로토콜 내에는 2차원 격자가 숨겨져 있습니다. 이 도전에 시간을 투자하고 어떻게 격자를 사용하여 이를 깰 수 있는지 찾는 것을 강력히 권장합니다. 이것은 많은 자료가 있는 유명한 예제이지만, 시스템 내에서 격자를 찾아내는 것이 종종 깨는 핵심이 됩니다. 힌트로는 이 도전을 이전 도전에서 다룬 가우스 소거법(Gaussian reduction..
[CryptoHack] MATHMATICS(Find the Lattice)Find the Lattice 문제(및 설명) 보안 시스템에 대한 트랩도어 함수를 형성할 수 있는 어려운 문제를 포함하는 것으로 알려진 격자(lattices)를 살펴보았습니다. 또한, 암호 해독(cryptanalysis)에서는 격자가 격자와 관련이 없는 것처럼 보이는 암호 프로토콜을 깰 수 있습니다. 이 도전 과제는 플래그를 암호화하기 위해 모듈러 산술을 사용하지만, 프로토콜 내에는 2차원 격자가 숨겨져 있습니다. 이 도전에 시간을 투자하고 어떻게 격자를 사용하여 이를 깰 수 있는지 찾는 것을 강력히 권장합니다. 이것은 많은 자료가 있는 유명한 예제이지만, 시스템 내에서 격자를 찾아내는 것이 종종 깨는 핵심이 됩니다. 힌트로는 이 도전을 이전 도전에서 다룬 가우스 소거법(Gaussian reduction..
2023.12.31 -
Gram Schmidt 문제(및 설명) 지난 문제(Size and Basis)에서 우리는 직교 기저(orthogonal basis)라고 하는 특별한 종류의 기저가 있다는 것을 보았습니다. 어떤 벡터 공간 V에 대한 기저 v1, v2, ..., vn이 주어졌을 때, 그램-슈미트(Gram-Schmidt) 알고리즘은 벡터 공간 V에 속하는 직교 기저 u1, u2, ..., un을 계산합니다. 제프리 홉스타인, 질 파이퍼, 조셉 H. 실버먼의 '수학적 암호학 입문' 책에서 그램-슈미트 알고리즘은 다음과 같이 주어집니다: 그램-슈미트 알고리즘 u1 = v1 반복 i = 2,3,...,n μij = vi ∙ uj / ||uj||^2, 1 ≤ j
[CryptoHack] MATHMATICS(Gram Shcmidt)Gram Schmidt 문제(및 설명) 지난 문제(Size and Basis)에서 우리는 직교 기저(orthogonal basis)라고 하는 특별한 종류의 기저가 있다는 것을 보았습니다. 어떤 벡터 공간 V에 대한 기저 v1, v2, ..., vn이 주어졌을 때, 그램-슈미트(Gram-Schmidt) 알고리즘은 벡터 공간 V에 속하는 직교 기저 u1, u2, ..., un을 계산합니다. 제프리 홉스타인, 질 파이퍼, 조셉 H. 실버먼의 '수학적 암호학 입문' 책에서 그램-슈미트 알고리즘은 다음과 같이 주어집니다: 그램-슈미트 알고리즘 u1 = v1 반복 i = 2,3,...,n μij = vi ∙ uj / ||uj||^2, 1 ≤ j
2023.10.31 -
Vectors 문제(및 설명) 먼저 격자를 정의하거나 암호학에서 격자가 어떻게 나타나는지에 대해 이야기하기 전에, 선형 대수의 기본 사항을 살펴보겠습니다. 다음 도전 과제들은 복습으로 간주되어야 하며, 만약 이것이 완전히 처음이라면 약간의 백그라운드 독서가 필요할 수 있습니다. 여전히 우리는 "수학적 암호학 입문" (Hoffstein, Pipher, Silverman) 및 격자 및 그 응용에 대한 이 훌륭한 소개를 추천합니다. 벡터 공간 V는 필드 F 위에서 정의된 집합으로, 두 개의 이항 연산자로 구성됩니다. 벡터 v ∈ V 및 스칼라 a ∈ F에 대해, 벡터 합은 두 개의 벡터를 가져와서 다른 벡터를 생성합니다: v + w = z, 여기서 v, w, z ∈ V 및 스칼라 곱은 벡터와 스칼라를 가져와서..
[CryptoHack] MATHMATICS(Vectors)Vectors 문제(및 설명) 먼저 격자를 정의하거나 암호학에서 격자가 어떻게 나타나는지에 대해 이야기하기 전에, 선형 대수의 기본 사항을 살펴보겠습니다. 다음 도전 과제들은 복습으로 간주되어야 하며, 만약 이것이 완전히 처음이라면 약간의 백그라운드 독서가 필요할 수 있습니다. 여전히 우리는 "수학적 암호학 입문" (Hoffstein, Pipher, Silverman) 및 격자 및 그 응용에 대한 이 훌륭한 소개를 추천합니다. 벡터 공간 V는 필드 F 위에서 정의된 집합으로, 두 개의 이항 연산자로 구성됩니다. 벡터 v ∈ V 및 스칼라 a ∈ F에 대해, 벡터 합은 두 개의 벡터를 가져와서 다른 벡터를 생성합니다: v + w = z, 여기서 v, w, z ∈ V 및 스칼라 곱은 벡터와 스칼라를 가져와서..
2023.08.31 -
Gotta Go Fast 문제 저는 엔트로피가 고갈되는 것을 걱정할 필요가 없을 거에요. 이 새로운 스크립트로 영원히 OTP를 생성할 거예요! 풀이 더보기 더보기 #!/usr/bin/env python3 import time from Crypto.Util.number import long_to_bytes import hashlib from utils import listener FLAG = b'crypto{????????????????????}' def generate_key(): current_time = int(time.time()) key = long_to_bytes(current_time) return hashlib.sha256(key).digest() def encrypt(b): key = ge..
[CryptoHack] Misc (Gotta Go Fast)Gotta Go Fast 문제 저는 엔트로피가 고갈되는 것을 걱정할 필요가 없을 거에요. 이 새로운 스크립트로 영원히 OTP를 생성할 거예요! 풀이 더보기 더보기 #!/usr/bin/env python3 import time from Crypto.Util.number import long_to_bytes import hashlib from utils import listener FLAG = b'crypto{????????????????????}' def generate_key(): current_time = int(time.time()) key = long_to_bytes(current_time) return hashlib.sha256(key).digest() def encrypt(b): key = ge..
2023.07.30