Любой криптографический протокол должен иметь:
- Некий (общедоступный) алгоритм, объясняющий, что делать. (В зависимости от секретных алгоритмов их можно назвать «безопасностью по неизвестности», и обычно их можно отбросить как небезопасные по своей сути.)
- Некоторая секретная информация (т.е. один или несколько ключей).
Чтобы иметь какое-либо практическое применение, ключевое пространство должно быть достаточно большим, чтобы сделать атаки грубой силы (особенно при знании полного алгоритма) невозможными.
Важно иметь в виду, что при размышлении о такой криптосистеме проблема «потери секрета» выходит за рамки. То есть секрет должен быть В самом деле секрет, можно и нужно предположить, что злоумышленник делает нет знать секрет, прежде чем начать свою атаку.
Возможно, самым безопасным и в то же время тривиальным алгоритмом было бы использование одноразового блокнота; то есть секрет представляет собой (возможно, очень большое) целое число; и алгоритм просто заключается в XOR секрета и открытого текста для шифрования и XOR секрета и зашифрованного текста для расшифровки.
Это можно использовать таким образом с небесными объектами:
- Ключ - это ID звезды.
- Алгоритм:
- Существует поток зашифрованного текста с постоянной пропускной способностью, который передается все время блоками фиксированного размера. Предположим, что эта передача работает достаточно хорошо, т. е. без значительных пауз и приблизительно известной задержкой.
- И отправитель, и получатель постоянно следят за звездой и в той или иной форме извлекают из нее случайные биты. Я не знаю, есть ли какие-то практические измерения, которые действительно работают сегодня, но можно представить, что яркость некоторых звезд «мерцает» достаточно, чтобы что-то из этого извлечь.
- Отправитель продолжает операцию XOR со своим следующим блоком открытого текста, контрольной суммой и дополнением до необходимой длины, с текущим пакетом случайных битов в реальном времени (т. е. одноразовым блокнотом) и отправляет его.
- Получатель декодирует это, используя ту же операцию XOR. Чтобы быть немного более безопасным от проблем с синхронизацией, он может хранить последние N одноразовых блокнотов и просто пытаться декодировать их всеми; с контрольной суммой и учитывая, насколько быстро XOR, можно иметь скользящее окно пэдов, чтобы найти правильный.
Сила алгоритма зависит от того, достаточно ли возможных звезд для выбора, и достаточно ли сложно измерение, чтобы злоумышленник не мог сканировать очень много звезд за раз.
Вот вам и базовое представление о том, как можно использовать небесные объекты в криптографии. В конце концов, все сводится к генерации действительно случайных битов, и вам даже не нужно время, если вы можете иметь постоянное соединение. Вы можете уточнить это по мере необходимости; то есть вы можете избежать постоянной отправки зашифрованного текста, если у вас есть какой-то общий источник времени (и он должен быть только примерно синхронизирован, в зависимости от того, сколько буферного пространства вы хотите использовать для своих битов). Существует множество практических проблем, которые необходимо решить (например, как генерировать воспроизводимые биты, избегая фазового сдвига из-за незначительных расхождений и, таким образом), но не нерешаемых в принципе.