AFAICT, нет, она не может сделать это, используя только информацию о ее паспорте, как вы ее описываете*, и рассматривая алгоритм цифровой подписи как черный ящик.
Однако, если правительство предусмотрело этот вариант использования и добавило немного больше информации в ее паспорт, является способ сделать это, например. метод хэш-цепочки, описанный в эта более ранняя ветка вопросов и ответов (на основе статья 2013 г., опубликованная Angel & Walfish).
В частности, Алисе нужно:
Криптографическая хеш-функция, устойчивая к прообразам $Ч$ стандартизированы правительством. Что-то вроде ША-256 было бы хорошо.
Секретный токен, выпущенный правительством $s$, вычислительно неотличимый от вывода $Ч$. (Например, $s$ может быть сгенерирован путем выбора случайной строки $г$ по крайней мере с таким количеством битов энтропии, как выходная длина $Ч$ и сдача $s = H(r)$.)
Заявление, подписанное правительством, по форме:
Алиса** родилась 01.01.2050 или ранее (решётка = $H^a(s)$).
куда $а$ возраст Алисы в днях на 01.01.2050 и $H^a$ обозначает $Ч$ повторяющийся $а$ раз, т.е. $H^0(s) = s$ и $H^{n+1}(s) = H(H^n(s))$
Теперь, чтобы доказать Бобу, что ей в настоящее время (2021-11-24) 18 лет или больше, Алиса должна предоставить подписанное выше заявление вместе с $ч = H^b(s)$, куда $b$ возраст Алисы в днях ровно 18 лет назад (т. е. 24 ноября 2003 г.).
Затем Боб может вычислить $ Н ^ с (ч) $, куда $с = 16840$ — количество дней между 24.11.2003 и 01.01.2003, и сравните его с хешем в подписанном Алисой заявлении. Если утверждение Алисы верно, они должны совпадать, так как $а = б + с$, и поэтому $H^c(h) = H^c(H^b(s)) = H^a(s)$.
(Конечно, Боб должен также убедиться, что заявление Алисы действительно правильно подписано с помощью государственного ключа подписи и что оно действительно принадлежит ей, а не, скажем, ее старшей сестре.)
Обратите внимание, что для удобства вычислений и для смягчения атак по времени Алисе может быть желательно предварительно вычислить и сохранить $H^{b'}(s)$ для различных значений $b'$ соответствует, скажем, ее возрасту в днях в начале каждого года. Таким образом, ей нужно будет выполнить не более 365 хэш-оценок на месте, чтобы вычислить $H^b(s)$ для любой $b$.
Чтобы уменьшить вычислительные потребности Боба, может быть желательно, чтобы правительство выдавало Алисе несколько подписанных заявлений формы, приведенной выше, но с разными датами и соответствующими значениями. $а$, чтобы Алиса могла отправить Бобу подписанное заявление, скажем, на 01.01.2004 вместо 01.01.2050. Опять же, несколько тысяч оценок SHA-256 в наши дни тоже не так уж и много, и Бобу не нужно беспокоиться об атаках по сторонним каналам.
Однако выдача нескольких подписанных операторов также помогает сохранить свойство нулевого разглашения при наличии ролловера. Например, давайте представим, что правительство изначально выбрало 01.01.2030 в качестве фиксированной даты для подписанных заявлений, но затем несколько лет назад решило перенести ее на 2050 год, поскольку они начали выдавать паспорта, действительные до 2030 года и позже. Это означало бы, что, как минимум, Боб мог узнать из даты в заявлении Алисы, был ли ее паспорт выдан до или после перехода, что могло бы коррелировать с другой информацией, включая ее возраст. Предоставляя Алисе подписанные заявления для обе 01.01.2030 и 01.01.2050 (и, возможно, другие применимые даты), этой утечки можно избежать, поскольку Алиса может просто выбрать оператор с более ранней подходящей датой для запроса Боба (но не, очевидно, ранее даты она хочет доказать, что она родилась не позднее).
Пс. Как отмечено в мой ответ на вопрос по ссылке выше, тот же протокол можно использовать, чтобы позволить Алисе подтвердить свой точный возраст. Для этого Алисе нужно знать не просто $s = H(r)$ но и оригинальный случайный токен $г$, который должен быть выбран правительством таким образом, чтобы он был нет действительный вывод $Ч$.
Тогда, если Алиса хочет доказать Бобу, что она родилась 04.05.1975 и не ранее, она может раскрыть эту дату вместе с $г$ и по крайней мере одно подписанное заявление формы выше. Затем Боб может рассчитать заявленный возраст Алисы в днях. $а$ на дату, указанную в ведомости, рассчитать $H^a(s) = H^{a+1}(r)$ и сравните его с хешем в подписанном заявлении.
Конечно, с этим вариантом протокола Бобу также необходимо проверить формат $s$ или же $г$ токен, отправленный Алисой (т. е. что это действительный вывод $Ч$ для заявлений «родился во время или раньше» и нет действительный вывод $Ч$ для заявлений «рожденных в этот день»).
Тем не менее, в вашем сценарии отдельная государственная подпись «Алиса родилась 04.05.1975» также послужит этой цели.
Сноски:
*) Ваше описание того, что «каждое свойство подписывается отдельно», на самом деле немного проблематично, если принимать его за чистую монету, поскольку то, что правительство подписывает отдельное свойство, такое как «имя: Алиса», означает, что любой, кто видел подпись Алисы имя может сделать копию подписи и использовать ее, чтобы заявить, что их имя также Алиса. Кроме того, например, если бы у Элис Эндрюс и Боба Баркера были паспорта с такими отдельно подписанными именами и фамилиями, они могли бы объединить их, чтобы создать поддельный паспорт для «Элис Баркер» или «Боб Эндрюс».
Несколько лучшим решением было бы сделать одно из свойств в паспорте уникальным идентификатором и включить этот идентификатор во все подписанные свойства. Таким образом, например, кто-то, кто видел подписанное заявление вида «ID: #123456789; имя: Алиса», теперь может подтвердить, что у Алисы, имеющей паспорт с ID #123456789, действительно есть имя «Алиса», но они не могут использовать подпись, чтобы требовать кого-либо чужой имя будет Алиса.
Конечно, у этой схемы все еще есть свои недостатки: например, Алиса может захотеть иметь возможность доказать Бобу, что ее зовут Алиса. без Боб может доказать этот факт кому-либо еще. Осуществление такой отрицательная аутентификация схема выходит за рамки этого ответа, хотя вы можете посмотреть, например. этот более ранний.
**) Здесь я использую «Алису» вместо уникального государственного удостоверения личности Алисы, как описано в предыдущей сноске выше.