Как создать ключ RS-стопа для Android с бесконечной достоверностью?

Вот как Google предлагает создать хранилище ключей для Android:

keytool -genkey -v -keystore my-release-key.keystore -alias alias_name \
  -keyalg RSA -keysize 2048 -validity 10000

В то время как 10000 дней могут показаться вечностью, 27 лет могут проходить быстрее, чем вы думаете, и RSA может все еще использоваться.
Если в настройке аргумента командной строки теперь будет 0.01% шанс сохранить свою долю на рынке в будущем, я готов это сделать.

ВОПРОС: Как сделать этот период действия максимально возможным?

Ответ 1

3,3 миллиона лет, если я правильно сделал математику.

Я посмотрел на источник keytool, http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/sun/security/tools/KeyTool.java, и похоже, что срок действия хранится в секундах, как длинный. Наибольшее значение длинное может содержать 2 63 - 1 106751991167300 секунд, что равно 1235555453 дням, что равно 3,385,083 года. Могут быть и другие факторы, которые запрещают такое большое значение, но это, по-видимому, максимальная сумма, которую может генерировать инструмент.

Ответ 2

Пример "1000 лет":

Я создал хранилище ключей KKS "1000 лет" без проблем:

keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 365000

Затем проверяется на срок действия:

keytool -list -v -keystore my-release-key.keystore

Enter keystore password:  

Keystore type: JKS
Keystore provider: SUN

Your keystore contains 1 entry
...
Valid from: Tue Aug 04 15:28:01 BST 2015 until: Mon Dec 05 14:28:01 GMT 3014

Итак, ключ действует до Пн Дек 05 14:28:01 GMT 3014

Ответ 3

Делая несколько проб и ошибок, я вижу практический максимум около 9999 года. На сегодняшний день два ключа созданы следующим образом:

keytool -genkey -v -keystore year-9998.keystore -alias myalias -keyalg RSA -keysize 2048 -validity 2914760

keytool -genkey -v -keystore year-10002.keystore -alias myalias -keyalg RSA -keysize 2048 -validity 2916223

Хотя оба ключа, кажется, успешно создаются, проверка этих ключей с помощью команд:

keytool -list -v -keystore year-9998.keystore

Работает нормально, выдавая "Действителен с: Вт 29 Авг 11:12:45 CDT 2017 до: Чт 01 Янв 10:12:45 CST 9998"

keytool -list -v -keystore year-10002.keystore

Сбои с "ошибкой keytool: java.security.cert.CertificateParsingException: java.io.IOException: анализ обобщенного времени, неверный формат"

Поэтому я думаю, что максимальный практический срок действия - до 10000 года.

Ответ 4

Не беспокойтесь слишком много, через 27 лет, устройства Android, как мы их знаем, больше не будут существовать с тех пор, как долгое время; выдержка может быть в музее.