Капсула времени с помощью TLock
Продолжаем параноить. Сегодня будем создавать шифрованную капсулу времени. То есть зашифрованные данные, невозможно будет расшифровать до какой-то определенной даты.
Очень удобно, если ты умер и хочешь чтобы твой отпрыск получил по наследству пароли от золотой коллекции прона, которую ты собирал 30 лет. Но ларчик должен открыться строго в 18 лет.
ЧИТАТЬ ПЕРВЫМ В ТЕЛЕГРАМ ЧИТАТЬ ПЕРВЫМ В MAX
Для реализации желаемого, воспользуемся утилитой под названием tlock.
TLock — это шифрование с отложенным доступом, которое опирается на доверенную аппаратную среду (TEE, чаще всего Intel SGX). Идея всего этого безумия до безобразия простая и красивая:
— данные шифруются сейчас — ключ не существует в открытом виде — расшифровка после определённого времени — даже владелец не может ускорить процесс
Есть TEE (Trusted Execution Environment), работает на drand (League of Entropy) + threshold BLS + Identity-Based Encryption. Дада, Artmoney тут тебе не поможет. Внутри TEE генерируется секрет, считается время, вычисляется ключ.
Ключ == f(секрет, время)
Пока время не наступило, ключ не вычисляется, не извлекается, не брутфорсится. Даже если ты владелец и у тебя есть дампы памяти, у тебя нихуя не получится ничего дешифровать.
Короче это нифига не cron + sleep, timestamp и т.п. Это прям технолоджи!
Устанавливаем:
- Качаем бинарник для своей ОС: https://github.com/drand/tlock/releases/
- Кидаем куда удобно, я закинул в
/usr/local/sbin
Создаем условный файл:
cd /tmp
echo "hello bashdays" >> bashdays.txt
Шифруем:
tle -e -D 10d -o bashdays.tlock bashdays.txt
Этот файл можно будет расшифровать только через 10 дней. Если сейчас посмотреть файл bashdays.tlock то увидим кучу мусора:
age-encryption.org/v1
-> tlock 26260588 52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971
jhUpzCk/LXUTkwghwKbyGH1gZ2BEy3p47X4yf+8qrv7+BIhJvEUK6QsVZNnZupxK
CsP1d2kGQAsy6GfEc544aZURB3zK3999bQbXzuhA0u4JV0J27ZqnjKBdtx2az603
tF54aRojO3OmwC2JNTkO/ObQID2xJTTidpgP8K1AEac
--- pN0y6uBfL8KOcoXKp1U6T0gbrWrgDoCmwJxBZ7LHspw
#�4x�&V����S�&e`�S�`���
z��? �A��%
Попробуем расшифровать:
tle -d -o bashdays.txt bashdays.tlock
И получаем: иди нахуй too early to decrypt: expected round 26260588 > 25972610 current round. Файл можно будет расшифровать только через 10 мать его дней. И пофигу root ты или супер хаксеп, нихуя у тебя не получится проникнуть в эту капсулу времени.
Пример в псевдокоде:
# encryption
ciphertext = TLock.encrypt(
data=plaintext,
unlock_time=TIMESTAMP
)
# decryption
if now() >= TIMESTAMP:
plaintext = TLock.decrypt(ciphertext)
else:
raise Nope("слишком рано")
keyнигде не лежитkeyнельзя украстьkeyнельзя вычислить заранее
Ключей и опций у этой штуковины дофига и больше, поэтому если интересно можешь сам их поизучать. Я принес тебе интересный инструмент, а дальше ты уж сам найди ему применение.
Век живи, век учись. Кстати эта технология применяется в крипте, насколько знаю в Ethereum.
Кстати для шифрования бекапов прям прикольная штука, юморная.