خط مشی شفافیت گواهی Android

لطفاً هرگونه سؤال در مورد این خط‌مشی را به انجمن خط‌مشی CT ارسال کنید: ct-policy@chromium.org

وقتی گواهی امنیت لایه حمل و نقل (TLS) اتصال در برنامه‌ای تأیید می‌شود که شفافیت گواهی را انتخاب می‌کند ، از نظر مطابقت با خط‌مشی شفافیت گواهی Android (CT) ارزیابی می‌شود. گواهینامه هایی که با مهر زمانی گواهی امضا شده (SCTs) همراه هستند که این خط مشی را برآورده می کنند، گفته می شود که مطابق با CT هستند.

انطباق با CT با یک گواهی و مجموعه ای از SCT های همراه با مجموعه ای از الزامات فنی که توسط کتابخانه های TLS محبوب (از جمله Conscrypt داخلی Android) در طول اعتبارسنجی گواهی که در این خط مشی تعریف شده است، اعمال می شود، به دست می آید.

ایالات ثبت CT

انطباق با CT در Android با ارزیابی SCTها از گزارش‌های CT و اطمینان از اینکه این گزارش‌ها در وضعیت(های) صحیح در زمان بررسی هستند تعیین می‌شود. مجموعه ای از حالت های احتمالی که یک لاگ CT می تواند در آن باشد عبارتند از:

  • Pending
  • Qualified
  • Usable
  • ReadOnly
  • Retired
  • Rejected

به منظور کمک به درک الزامات مربوط به انطباق با CT در Android، تعریف این حالت‌ها، الزامات گزارش‌ها در هر وضعیت، و همچنین نحوه تأثیر این حالت‌ها بر رفتار Android به تفصیل در توضیح چرخه زندگی CT Log مستندات Chrome توضیح داده شده است.

گواهینامه های سازگار با CT

اگر گواهی TLS با مجموعه ای از SCT ها همراه باشد که بسته به نحوه تحویل SCT ها به Android، حداقل یکی از معیارهای تعریف شده بعداً را برآورده کند، با CT سازگار است. در برنامه‌های اجرای CT اندروید، همه گواهی‌های TLS مورد اعتماد عمومی برای تأیید موفقیت‌آمیز باید با CT سازگار باشند. با این حال، گواهینامه هایی که در CT ثبت نشده اند یا دارای SCT ناکافی هستند، به عنوان اشتباه صادر نمی شوند.

هنگام ارزیابی یک گواهی برای انطباق با CT، Android چندین فاکتور را در نظر می‌گیرد، از جمله چند SCT وجود دارد، چه کسی CT Log صادرکننده SCT را اجرا می‌کند، و CT Log صادرکننده SCT در چه وضعیتی بود، هم در زمان تأیید اعتبار گواهی و هم در زمانی که SCT توسط CT Log ایجاد شد.

بسته به نحوه ارائه SCTها به Android، انطباق با CT را می توان با رعایت یکی از معیارهای زیر به دست آورد:

SCT های تعبیه شده:

  1. حداقل یک SCT جاسازی شده از یک گزارش CT که در زمان بررسی Qualified ، Usable یا ReadOnly بود. و
  2. SCTهای جاسازی شده از حداقل N گزارش CT مجزا وجود دارد که در زمان بررسی Qualified ، Usable ، ReadOnly یا Retired بودند، که در جدول زیر N تعریف شده است. و
  3. در میان SCTهایی که نیاز 2 را برآورده می کنند، حداقل دو SCT باید از اپراتورهای CT Log مجزا صادر شده باشد که توسط Android به رسمیت شناخته شده است. و
  4. در میان SCTهایی که نیاز 2 را برآورده می کنند، حداقل یک SCT باید از گزارشی صادر شود که توسط Android به عنوان سازگار با RFC 6962 شناخته شده است.
طول عمر گواهی تعداد SCTها از سیاهههای CT متمایز
<= 180 روز 2
> 180 روز 3

SCTهای تحویل شده از طریق OCSP یا TLS:

  1. حداقل دو SCT از یک CT Log که در زمان بررسی Qualified ، Usable یا ReadOnly بود. و
  2. در میان SCTهایی که نیاز 1 را برآورده می کنند، حداقل دو SCT باید از اپراتورهای CT Log مجزا صادر شده باشد که توسط Android به رسمیت شناخته شده است. و
  3. در میان SCTهایی که نیاز 1 را برآورده می کنند، حداقل یک SCT باید از یک گزارش CT صادر شود که توسط Android به عنوان سازگار با RFC6962 تشخیص داده شده است.

هم برای SCTهای جاسازی شده و هم برای آنهایی که با استفاده از OCSP یا TLS تحویل داده می شوند، منحصر به فرد بودن Log Operator به عنوان داشتن ورودی های جداگانه در بخش عملگرهای log_list.json تعریف می شود.

در شرایط نادری که یک CT Log در طول عمر خود عملگرها را تغییر می‌دهد، گزارش‌های CT به صورت اختیاری حاوی فهرستی از previous_operators هستند، همراه با مهر زمانی نهایی که این گزارش توسط اپراتور قبلی اداره می‌شود. برای جلوگیری از شکستن گواهی‌های موجود توسط تغییرات اپراتور گزارش، اپراتور گزارش هر یک از SCT به عنوان اپراتور در زمان صدور SCT، با مقایسه مهر زمانی SCT با مُهرهای زمانی previous_operators ، در صورت وجود، تعیین می‌شود.

نکات مهم

تا زمانی که یکی از معیارهای قبلی انطباق با CT توسط ترکیبی از SCT های ارائه شده در دست دادن برآورده شود، SCT های اضافی، بدون توجه به وضعیت SCT، بر وضعیت انطباق با CT گواهی تأثیر مثبت یا منفی نمی گذارد.

برای کمک به انطباق با CT گواهی، یک SCT باید قبل از مهر زمانی Log's Retired صادر شده باشد، در صورت وجود. Android از اولین SCT در بین همه SCT های ارائه شده برای ارزیابی انطباق CT در برابر مهر زمانی CT Log Retired استفاده می کند. این مربوط به موارد لبه ای است که در آن یک CT Log در طول فرآیند ارسال درخواست های ثبت گواهی بازنشسته می شود.

"SCT جاسازی شده" به معنای SCT است که با استفاده از پسوند SignedCertificateTimestampList X.509v3 در خود گواهی تحویل داده می شود. بسیاری از سرورهای TLS از OCSP Stapling یا افزونه TLS پشتیبانی نمی‌کنند، بنابراین CAها باید آماده باشند تا SCT‌ها را در گواهی‌های صادر شده جاسازی کنند تا از اعتبارسنجی موفقیت‌آمیز یا درمان EV در Android اطمینان حاصل کنند.

نحوه اضافه شدن CT Log به اندروید

معیارهای چگونگی Qualified شدن گزارش‌های CT و همچنین شرایطی که می‌تواند باعث Retired آن‌ها شود را می‌توان در خط‌مشی Chrome CT Log یافت.

مهلت اجرای CT

Google هر روز یک لیست جدید CT Log منتشر می کند که حاوی یک log_list_timestamp جدید است. یک بار در روز، دستگاه‌های Android سعی می‌کنند آخرین نسخه این فهرست را برای اهداف تأیید بارگیری کنند. در هر زمان معین، اگر هیچ لیست گزارشی در دستگاه موجود نباشد یا اگر مهر زمانی فهرست گزارش قدیمی‌تر از 70 روز باشد، اجرای CT غیرفعال می‌شود. این مهلت زمانی تضمینی حیاتی برای اکوسیستم CT فراهم می کند که گزارش های CT جدید می توانند با خیال راحت در مدت زمان معینی پس از Qualified شدن به حالت قابل استفاده منتقل شوند.