AFAICT, không, cô ấy không thể làm điều đó bằng cách sử dụng chỉ cần thông tin trên hộ chiếu của cô ấy, như bạn mô tả,* và coi thuật toán chữ ký số như một hộp đen.
Tuy nhiên, nếu chính phủ đã thấy trước trường hợp sử dụng này và chỉ thêm một chút thông tin vào hộ chiếu của cô ấy, thì sẽ có Là một cách để làm điều đó bằng cách sử dụng ví dụ: phương pháp chuỗi băm được mô tả trong chủ đề hỏi đáp trước đó (dựa trên một bài báo năm 2013 của Angel & Walfish).
Cụ thể, điều Alice cần là:
Hàm băm mật mã chống ảnh trước $H$ tiêu chuẩn hóa bởi chính phủ. Cái gì đó như SHA-256 sẽ ổn thôi.
Mã thông báo bí mật do chính phủ phát hành $s$, không thể phân biệt về mặt tính toán với đầu ra của $H$. (Ví dụ, $s$ có thể được tạo bằng cách chọn một chuỗi ngẫu nhiên $r$ với ít nhất nhiều bit entropy bằng độ dài đầu ra của $H$ và để cho $s = H(r)$.)
Một tuyên bố có chữ ký của chính phủ, có dạng:
Alice** sinh vào hoặc trước ngày 2050-01-01 (hash = $H^a(s)$).
ở đâu $a$ là tuổi của Alice tính theo ngày vào ngày 2050-01-01 và $H^a$ biểu thị $H$ lặp đi lặp lại $a$ lần, tức là $H^0(s) = s$ và $H^{n+1}(s) = H(H^n(s))$
Bây giờ, để chứng minh với Bob rằng cô ấy hiện tại (24/11/2021) 18 tuổi trở lên, Alice cần đưa ra tuyên bố đã ký ở trên, cùng với $h = H^b(s)$, ở đâu $b$ là tuổi của Alice tính theo ngày cách đây đúng 18 năm (tức là vào ngày 24-11-2003).
Bob sau đó có thể tính toán $H^c(h)$, ở đâu $c = 16840$ là số ngày giữa 2003-11-24 và 2050-01-01, và so sánh nó với hàm băm trong tuyên bố đã ký của Alice. Nếu yêu cầu của Alice hợp lệ, chúng phải khớp nhau, vì $a = b + c$, và như vậy $H^c(h) = H^c(H^b(s)) = H^a(s)$.
(Tất nhiên, Bob cũng nên xác minh rằng tuyên bố của Alice thực sự được ký chính xác bằng khóa ký của chính phủ và rằng nó thực sự thuộc về cô ấy chứ không phải của chị gái cô ấy chẳng hạn.)
Lưu ý rằng, để thuận tiện cho việc tính toán và giảm thiểu các cuộc tấn công theo thời gian, Alice có thể tính toán trước và lưu trữ $H^{b'}(s)$ cho các giá trị khác nhau của $b'$ tương ứng với tuổi của cô ấy tính theo ngày vào đầu mỗi năm cho đến nay. Bằng cách đó, cô ấy sẽ chỉ cần thực hiện tối đa 365 đánh giá băm ngay tại chỗ để tính toán $H^b(s)$ bất cứ gì $b$.
Để giảm nhu cầu tính toán của Bob, chính phủ có thể mong muốn ban hành nhiều báo cáo có chữ ký của Alice ở dạng trên, nhưng với các ngày khác nhau và các giá trị tương ứng của $a$, để Alice có thể gửi cho Bob một tuyên bố đã ký cho, chẳng hạn, 2004-01-01 thay vì 2050-01-01. Mặt khác, một vài nghìn đánh giá SHA-256 ngày nay thực sự không nhiều và Bob không cần phải lo lắng về các cuộc tấn công kênh phụ.
Tuy nhiên, việc đưa ra nhiều câu lệnh đã ký cũng giúp duy trì thuộc tính không kiến thức khi có di chuột qua. Ví dụ: hãy tưởng tượng rằng chính phủ ban đầu chọn 2030-01-01 làm ngày cố định cho các tuyên bố đã ký, nhưng sau đó vài năm trước đã quyết định dời ngày đó sang năm 2050 khi họ bắt đầu cấp hộ chiếu có giá trị đến năm 2030 trở đi. Điều này có nghĩa là, ở mức tối thiểu, Bob có thể biết được từ ngày trong tuyên bố của Alice liệu hộ chiếu của cô ấy được cấp trước hay sau khi chuyển đổi, điều này có thể tương quan với các thông tin khác bao gồm cả tuổi của cô ấy. Bằng cách đưa ra các tuyên bố có chữ ký của Alice cho cả hai 2030-01-01 và 2050-01-01 (và có thể là các ngày áp dụng khác), có thể tránh được sự rò rỉ này, vì Alice chỉ có thể chọn tuyên bố có ngày phù hợp sớm hơn cho yêu cầu của Bob (nhưng rõ ràng là không sớm hơn ngày cô ấy muốn chứng minh rằng cô ấy được sinh ra vào hoặc trước đó).
ps. Như đã lưu ý trong câu trả lời của tôi cho câu hỏi được liên kết ở trên, giao thức tương tự cũng có thể được sử dụng để cho phép Alice chứng minh tuổi chính xác của mình. Để làm được điều này, Alice không chỉ cần biết $s = H(r)$ mà còn là mã thông báo ngẫu nhiên ban đầu $r$, nên được chính phủ lựa chọn sao cho không phải một đầu ra hợp lệ của $H$.
Sau đó, nếu Alice muốn chứng minh với Bob rằng cô ấy sinh vào ngày 1975-05-04 và không sớm hơn, cô ấy có thể tiết lộ ngày đó cùng với $r$ và ít nhất một tuyên bố có chữ ký của mẫu trên. Sau đó, Bob có thể tính tuổi được yêu cầu của Alice theo ngày $a$ vào ngày được chỉ định trong tuyên bố, tính toán $H^a(s) = H^{a+1}(r)$ và so sánh nó với hàm băm trong tuyên bố đã ký.
Tất nhiên, với biến thể này của giao thức, Bob cũng cần xác minh định dạng của $s$ hoặc $r$ mã thông báo được gửi bởi Alice (nghĩa là đó là đầu ra hợp lệ của $H$ đối với yêu cầu bồi thường "ra đời vào hoặc trước" và không phải một đầu ra hợp lệ của $H$ đối với yêu cầu "sinh vào ngày này").
Tất cả những gì đã nói, trong kịch bản của bạn, một chữ ký riêng của chính phủ cho "Alice sinh ngày 1975-05-04" cũng sẽ phục vụ mục đích này.
Chú thích:
*) Mô tả của bạn rằng "tài sản [e]ach được ký riêng" thực sự có một chút vấn đề nếu tính theo mệnh giá, vì việc chính phủ ký cho một tài sản riêng lẻ, chẳng hạn như "tên: Alice" có nghĩa là bất kỳ ai đã nhìn thấy chữ ký của Alice tên có thể tạo một bản sao của chữ ký và sử dụng nó để tuyên bố rằng tên của họ là Mà còn Alice. Ngoài ra, ví dụ: nếu Alice Andrews và Bob Barker có hộ chiếu với họ và tên được ký riêng như vậy, họ có thể kết hợp chúng để tạo hộ chiếu giả cho "Alice Barker" hoặc "Bob Andrews".
Một giải pháp tốt hơn một chút là có một trong các thuộc tính trên hộ chiếu là một ID duy nhất và bao gồm ID đó trong tất cả các thuộc tính đã ký. Do đó, ví dụ: một người nào đó đã xem một tuyên bố có chữ ký có dạng "ID: #123456789; first name: Alice" giờ đây có thể xác minh rằng Alice, mang hộ chiếu có ID #123456789, thực sự có tên là "Alice", nhưng họ không thể sử dụng chữ ký để yêu cầu bất cứ ai của người khác tên đầu tiên là Alice.
Tất nhiên, kế hoạch này vẫn có những thiếu sót của riêng nó: ví dụ, Alice có thể muốn chứng minh với Bob rằng tên của cô ấy là Alice không có Bob có thể chứng minh sự thật đó cho bất kỳ ai khác. Thực hiện như vậy xác thực từ chối lược đồ dường như nằm ngoài phạm vi của câu trả lời này, mặc dù bạn có thể muốn xem ví dụ: cái này sớm hơn.
**) Ở đây tôi đang sử dụng "Alice" làm tên thay thế cho ID duy nhất do chính phủ cấp của Alice, như được mô tả trong phần chú thích trước đó ở trên.