Как зашифровать информацию до определённой даты
Настольные атомные часы URWERK AMC с наручным модулем
Предположим, что путешественник во времени отправляет в 80-е годы компьютеры с софтом для технологического прогресса Земли. Там информация о науке и технологиях будущего, а также руководства и советы, как наиболее эффективно перейти от технологий эпохи 80-х к уровню будущего. Каждый компьютер содержит идентичную информацию. Их разбрасывают по всему миру с целью сделать информацию общедоступной.
Прогрессор (в терминологии Стругацких) хочет убедиться, что определённая информация не будет доступна до определённого времени.
То есть по замыслу прогрессоров, некоторая информация становится доступной только в определённые периоды времени, как в «Основании» Азимова. Это нужно для планомерного и грамотного развития цивилизации в соответствии с планом.
Наиболее реалистичный способ добиться поставленной цели — шифрование. То есть информация зашифрована блоками в соответствии с определёнными периодами. Пользователям предоставляют инструкции по генерации ключа для расшифровки, но с таким расчётом, чтобы информация, необходимая для генерации ключа, не была доступна до желаемого периода времени.
Вопрос в том, насколько надёжно можно реализовать такую систему и какую информацию использовать для генерации ключа. Задача в том, чтобы никто не мог получить доступ к информации до момента времени X, то есть нужен достаточно большой ключ, чтобы предотвратить любую попытку взлома шифрования в будущем. Также нужно корректировать некий диапазон ошибок, чтобы гарантировать сходимость результата с учётом возможных ошибок в битах из-за того, что датчики не идеально откалиброваны и т. д. В идеале пользователь должен иметь возможность генерировать ключ для любого времени X, просто загрузив исторические записи этого времени, а сам ключ не должен зависеть от редких астрономических условий.
Такой вопрос задали на форуме Stack Exchange в разделе Worldbuilding (вопросы развития цивилизации и будущего человечества).
Наилучшее решение проблемы основано на образовании новых звёзд.
Ежегодно в нашей галактике Млечный Путь образуется около десяти новых звёзд. Многие вблизи галактического центра, но ещё больше — вдали от него.
На фото классическая новая GK Persei, источник: НАСА
У каждой новой звезды чётко определённое положение на небе с прямым восхождением H₁H₂ часов M₁M₂ минут S₁S₂ секунд (от 0 до 24 часов) и склонением d₁d₂ градусов m₁m₂ минут s₁s₂ секунд (от -90° до +90°).
Для защиты от квантовых вычислений лучше использовать 256-битный ключ. Соответственно, для получения ключа на период от года n
до года n+4
путешественник во времени задаёт следующее правило:
- Берём 16 первых новых звёзд, которые появились в данный пятилетний период дальше, чем на пять градусов от галактического центра, и которые ярче 9-й величины. То есть настолько яркие, что их легко видно в бинокль. Там может быть несколько новых на границе заданного интервала (непонятно, учитывать их или нет). Но это означает лишь то, что в случае ошибки просто придётся произвести вычисления ещё несколько раз, пока не найдём правильный ключ.
- Для каждой из 16-ти звёзд записываем десятичное число H₁H₂M₁M₂S₁S₂d₁d₂m₁m₂s₁s₂ и представляем его в двоичном виде как 64-битное целое с порядком записи от младшего к старшему байту (low-endian).
- Объединяем 16 двоичных чисел, получая строку из 128 октетов.
- Вычисляем контрольную сумму SHA-256 этой двоичной строки.
- Получаем 256 бит, которые используются в качестве ключа для расшифровки фрагмента послания из будущего за данный период.
Метод достаточно надёжный, потому что появление новых звёзд в космосе невозможно предсказать заранее. В координатах более 16-ти бит случайности. Астрономам не составит труда измерить координаты с точностью до секунды (обычно они измеряют их с гораздо большей точностью). Предлагаемое правило фактически определяет совершенно случайное 256-битное число.
Заметим, что данный вопрос имеет практическую ценность только при возможности путешествия во времени, то есть при наличии доступа к информации, доступной в будущем.
В нашей текущей реальности проще всего реализовать компьютер с автоматической выдачей фрагментов зашифрованной информации по счётчику встроенных атомных часов.
Атомные часы Microchip 5071B
Для программного решения можно использовать другие счётчики времени (Unix-время). Например, некоторые сервисы в интернете предлагают услугу доверенных меток времени. Изначально такие метки предназначены для цифрового подтверждения целостности данных с доказательством даты и время совершения транзакции. Получатели документов и кода с доверенной временнóй меткой могут проверить, когда был подписан этот документ или код, а также убедиться, что документ или код не подвергались изменениям после этого момента. Но в описанной выше задаче метки можно использовать для проверки реальной даты, чтобы гарантировать расшифровку информации только в указанный период времени.
Существуют и практические реализации шифрования до указанной даты, такие как Timevault на базе tlock.
Схема работает благодаря запланированным раундам генерации случайных чисел от Лиги энтропии.