Как создать ключ 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, как мы их знаем, больше не будут существовать с тех пор, как долгое время; выдержка может быть в музее.