Разбор задач CryptoCTF 2020

Содержание

Слайд 2

ASIS cryp.toc.tf/

ASIS cryp.toc.tf/

Слайд 3

Модульная арифметика

Простое число - натуральное число, имеющее ровно два различных натуральных делителя

Модульная арифметика Простое число - натуральное число, имеющее ровно два различных натуральных
— единицу и самого себя.
Взятие x по модулю (x % m) – вычисление остатка от деления x на m
a и b сравнимы по модулю m, если их остатки при делении на m равны (a ≡ b % m ). Класс вычетов – множество всех чисел, сравнимых с a по модулю m.
Отношение сравнимости является отношением эквивалентности (симметричным, транзитиным, рефлексивное)
Допустимые операции со сравнениями: a + m * x ≡ b % m; a - b ≡ 0 % m; a + x ≡ b + x % m; a * x ≡ b * x % m; ax ≡ bx % m; a / k ≡ b / k % m если НОД(k, m)=1
Обратное число по модулю – такое i, что a * i ≡ 1 % m. Существует для всех a, взаимнопростых с m
Теорема Эйлера: aφ( n ) ≡ 1 % m, φ(m) - функция Эйлера (количество натуральных чисел, не превышающих n и взаимно простых с ним)

Слайд 4

Encoding

Encoding

Слайд 7

Amsterdam

Amsterdam

Слайд 8

Amsterdam

Amsterdam

Слайд 9

Shift registers

Shift registers

Слайд 20

Mad hat

m – искомый вектор
K, d – закрытый ключ
K – матрица,

Mad hat m – искомый вектор K, d – закрытый ключ K
d – натуральное число
с = m * K + + [d, d … d]

Слайд 21

Mad hat

1) Какие передаваемые или генерируемые в самой функции параметры определяют ключевую

Mad hat 1) Какие передаваемые или генерируемые в самой функции параметры определяют ключевую матрицу?
матрицу?

Слайд 22

Mad hat

2) как именно они влияют и что нужно для их нахождения

p

Mad hat 2) как именно они влияют и что нужно для их
можно определить по размерности шифртекста:
p1 = 37
p2 = 75

Для d имеет значение только четность

Слайд 24

Algebraic

Algebraic

Слайд 25

Gambling

nc 05.cr.yp.toc.tf 33371

p, a, b – не известны
f(x) ≡ x3 + ax

Gambling nc 05.cr.yp.toc.tf 33371 p, a, b – не известны f(x) ≡
+ b % p
f(flag) = c
Мы можем получить f(x) для любого x

Слайд 26

Gambling

nc 05.cr.yp.toc.tf 33371

p, a, b – не известны
f(x) ≡ x3 + ax

Gambling nc 05.cr.yp.toc.tf 33371 p, a, b – не известны f(x) ≡
+ b % p
f(flag) = c
Мы можем получить f(x) для любого x

f(0) ≡ b % p – получаем b
f(1) ≡ 1 + a + b % p – получаем a
c1 = x13 + ax1 + b = f(x1) + k1p
c2 = x23 + ax2 + b = f(x2) + k2p
НОД (c1 – f(x1), c2 – f(x2)) делится на p
Решаем сравнение:
x3 + ax + b – с ≡ 0 % p

Слайд 27

Algebraic, pow

Algebraic, pow

Слайд 28

One line crypto

p = xm+1 - (x+1)m
q = ym+1 - (y+1)m

One line crypto p = xm+1 - (x+1)m q = ym+1 - (y+1)m

Слайд 29

One line crypto

p = xm+1 - (x+1)m
q = ym+1 - (y+1)m

One line crypto p = xm+1 - (x+1)m q = ym+1 - (y+1)m

Слайд 30

Three ravens

p, q, r – простые (секретный ключ, не известны)
s = p

Three ravens p, q, r – простые (секретный ключ, не известны) s
+ q + r - простое
n = p * q * r * s
s, n / s – открытый ключ, известны
с = me % n
m = ?

Слайд 31

Three ravens

Короткое сообщение (< длины любого из множителей n)
Известен один из множителей

Three ravens Короткое сообщение ( Известен один из множителей n c ≡
n
c ≡ me % p*q*r*s
c_ = me = k * (p*q*r*s) + c
me ≡ c % s
d ≡ e-1 % s
cd ≡ med ≡ m % s

Слайд 32

Model

nc 04.cr.yp.toc.tf 8001

p, q – простые
P = (q-1) // 2
Q = (p-1)

Model nc 04.cr.yp.toc.tf 8001 p, q – простые P = (q-1) //
// 2
r ≡ Q-1 % P
e = 2 * r * Q - 1
c ≡ me % p*q

Слайд 33

Model

nc 04.cr.yp.toc.tf 8001

p, q – простые
P = (q-1) // 2
Q = (p-1)

Model nc 04.cr.yp.toc.tf 8001 p, q – простые P = (q-1) //
// 2
r ≡ Q-1 % P
e = 2 * r * Q - 1
c ≡ me % p*q
e = 2 * Q-1 * Q - 1 = 1 % P
1) e ≡ 1 % (q-1)
c ≡ m % q
1) e ≡ 1 + P % (q-1)
c = m1+(q-1)/2 % q
c = m*11/2 % q
c = ± m % q
q = gcd(c ± m, n)

Слайд 34

Butterfly effect

Butterfly effect

Слайд 35

Butterfly effect

Butterfly effect

Слайд 36

Butterfly effect

https://blog.cryptohack.org/cryptoctf2020

Butterfly effect https://blog.cryptohack.org/cryptoctf2020

Слайд 37

Decent RSA

-----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA/Ug8rlEPci1UXMsT+UDo y8DfxbTHX/3BK2oU+FPWiJf+EiUBM2x4ep04qZ1SO9Pmqj/WH9skMrF1J/LXuY3l fjvJCh0DXa9VUyX2dAJidja9Ior7GpFwwjYdKh+OETNV+2/CcX4RiPvj+8ApmedW gn4Fxaeivki+f/UwDa+ws1fTUzmI325v8yvcryHhbgeUWiF85EP6HFAavTsVPlxb LikVMAB1fuzDbqqJvW2u138w6b2FH3WrezYF6tbAyZej2HX46phwDm9C7MXYJ/sU oS+E8P7S1jMTCWjfwMCOKU3SFGrkWtXuTaoMZ2nZ+HVfJV8xJOjWez1OxQ5P3F1w GQIDAQAB -----END PUBLIC KEY-----

Decent RSA -----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA/Ug8rlEPci1UXMsT+UDo y8DfxbTHX/3BK2oU+FPWiJf+EiUBM2x4ep04qZ1SO9Pmqj/WH9skMrF1J/LXuY3l fjvJCh0DXa9VUyX2dAJidja9Ior7GpFwwjYdKh+OETNV+2/CcX4RiPvj+8ApmedW gn4Fxaeivki+f/UwDa+ws1fTUzmI325v8yvcryHhbgeUWiF85EP6HFAavTsVPlxb LikVMAB1fuzDbqqJvW2u138w6b2FH3WrezYF6tbAyZej2HX46phwDm9C7MXYJ/sU oS+E8P7S1jMTCWjfwMCOKU3SFGrkWtXuTaoMZ2nZ+HVfJV8xJOjWez1OxQ5P3F1w GQIDAQAB -----END PUBLIC KEY-----

Слайд 38

Decent RSA

Official writeups

-----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA/Ug8rlEPci1UXMsT+UDo y8DfxbTHX/3BK2oU+FPWiJf+EiUBM2x4ep04qZ1SO9Pmqj/WH9skMrF1J/LXuY3l fjvJCh0DXa9VUyX2dAJidja9Ior7GpFwwjYdKh+OETNV+2/CcX4RiPvj+8ApmedW gn4Fxaeivki+f/UwDa+ws1fTUzmI325v8yvcryHhbgeUWiF85EP6HFAavTsVPlxb LikVMAB1fuzDbqqJvW2u138w6b2FH3WrezYF6tbAyZej2HX46phwDm9C7MXYJ/sU oS+E8P7S1jMTCWjfwMCOKU3SFGrkWtXuTaoMZ2nZ+HVfJV8xJOjWez1OxQ5P3F1w GQIDAQAB -----END PUBLIC KEY-----

Decent RSA Official writeups -----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA/Ug8rlEPci1UXMsT+UDo y8DfxbTHX/3BK2oU+FPWiJf+EiUBM2x4ep04qZ1SO9Pmqj/WH9skMrF1J/LXuY3l fjvJCh0DXa9VUyX2dAJidja9Ior7GpFwwjYdKh+OETNV+2/CcX4RiPvj+8ApmedW gn4Fxaeivki+f/UwDa+ws1fTUzmI325v8yvcryHhbgeUWiF85EP6HFAavTsVPlxb LikVMAB1fuzDbqqJvW2u138w6b2FH3WrezYF6tbAyZej2HX46phwDm9C7MXYJ/sU