امضای برنامه

امضای برنامه به توسعه دهندگان اجازه می دهد تا نویسنده برنامه را شناسایی کرده و برنامه خود را بدون ایجاد رابط ها و مجوزهای پیچیده به روز کنند. هر برنامه ای که روی پلتفرم اندروید اجرا می شود باید توسط توسعه دهنده امضا شود. برنامه‌هایی که سعی می‌کنند بدون امضا نصب شوند، توسط Google Play یا نصب‌کننده بسته در دستگاه Android رد می‌شوند.

در Google Play، امضای برنامه، اعتمادی را که Google به توسعه‌دهنده دارد و اعتمادی که توسعه‌دهنده به برنامه خود دارد، پیوند می‌دهد. توسعه دهندگان می دانند که برنامه آنها بدون تغییر در دستگاه Android ارائه شده است. و توسعه دهندگان را می توان در مورد رفتار برنامه خود مسئول دانست.

در اندروید، امضای برنامه اولین قدم برای قرار دادن یک برنامه در Application Sandbox آن است. گواهی برنامه امضا شده مشخص می کند که کدام شناسه کاربری با کدام برنامه مرتبط است. برنامه های مختلف تحت شناسه های کاربری مختلف اجرا می شوند. امضای برنامه تضمین می کند که یک برنامه نمی تواند به هیچ برنامه دیگری به جز از طریق IPC کاملاً تعریف شده دسترسی داشته باشد.

وقتی یک برنامه (فایل APK) روی دستگاه Android نصب می‌شود، Package Manager تأیید می‌کند که APK به درستی با گواهی موجود در آن APK امضا شده است. اگر گواهی (یا به‌طور دقیق‌تر، کلید عمومی در گواهی) با کلید مورد استفاده برای امضای هر APK دیگری در دستگاه مطابقت داشته باشد، APK جدید این گزینه را دارد که در مانیفست مشخص کند که یک UID با دیگری که به طور مشابه امضا شده است به اشتراک بگذارد. فایل های APK

برنامه ها را می توان توسط شخص ثالث (OEM، اپراتور، بازار جایگزین) امضا کرد یا خود امضا کرد. Android امضای کد را با استفاده از گواهینامه‌های خودامضا ارائه می‌کند که توسعه‌دهندگان می‌توانند بدون کمک یا اجازه خارجی ایجاد کنند. برنامه ها نباید توسط یک مقام مرکزی امضا شوند. Android در حال حاضر تأیید CA را برای گواهی‌های برنامه انجام نمی‌دهد.

برنامه‌ها همچنین می‌توانند مجوزهای امنیتی را در سطح حفاظت از امضا اعلام کنند و دسترسی را فقط به برنامه‌هایی که با همان کلید امضا شده‌اند محدود می‌کنند و در عین حال UID و Application Sandbox‌های مجزا را حفظ می‌کنند. با استفاده از ویژگی UID مشترک که در آن دو یا چند برنامه امضا شده با کلید توسعه‌دهنده یکسان می‌توانند یک UID مشترک را در مانیفست خود اعلام کنند، ارتباط نزدیک‌تر با یک Sandbox برنامه مشترک مجاز است.

طرح های امضای APK

اندروید از سه طرح امضای برنامه پشتیبانی می کند:

برای حداکثر سازگاری، برنامه ها را با همه طرح ها امضا کنید، ابتدا با v1، سپس v2 و سپس v3. Android نسخه 7.0 و بالاتر و دستگاه‌های جدیدتر، برنامه‌های امضاشده با طرح‌های v2+ را سریع‌تر از برنامه‌هایی که فقط با طرح v1 امضا شده‌اند، نصب می‌کنند. پلتفرم‌های قدیمی‌تر اندروید، امضاهای v2+ را نادیده می‌گیرند و بنابراین به برنامه‌ها نیاز دارند که دارای امضاهای v1 باشند.

امضای JAR (طرح v1)

امضای APK از ابتدا بخشی از اندروید بوده است. این بر اساس JAR امضا شده است. برای جزئیات استفاده از این طرح، به مستندات Android Studio در امضای برنامه خود مراجعه کنید.

امضاهای v1 از برخی از بخش‌های APK مانند ابرداده ZIP محافظت نمی‌کنند. تأییدکننده APK باید تعداد زیادی از ساختارهای داده غیرقابل اعتماد (هنوز تأیید نشده) را پردازش کند و سپس داده‌هایی را که توسط امضاها پوشش داده نمی‌شود دور بریزد. این یک سطح حمله قابل توجهی را ارائه می دهد. علاوه بر این، تأیید کننده APK باید تمام ورودی های فشرده را از حالت فشرده خارج کند و زمان و حافظه بیشتری را مصرف کند. برای رفع این مشکلات، Android 7.0 APK Signature Scheme v2 را معرفی کرد.

طرح امضای APK نسخه 2 و 3 (طرح v2+)

دستگاه‌هایی که Android نسخه ۷.۰ و جدیدتر دارند، از طرح امضای APK نسخه ۲ (طرح نسخه ۲) و جدیدتر پشتیبانی می‌کنند. (طرح v2 در اندروید 9 به نسخه 3 به روز شد تا اطلاعات اضافی را در بلوک امضاء گنجانده باشد، اما در غیر این صورت یکسان عمل می کند.) محتویات APK هش شده و امضا می شود، سپس بلوک امضای APK حاصل در APK درج می شود. برای جزئیات در مورد اعمال طرح v2+ در یک برنامه، APK Signature Scheme v2 را ببینید.

در طول اعتبارسنجی، طرح v2+ فایل APK را به عنوان یک لکه در نظر می گیرد و بررسی امضا را در کل فایل انجام می دهد. هر گونه تغییر در APK، از جمله اصلاحات فراداده ZIP، امضای APK را باطل می کند. این شکل از تأیید APK به طور قابل ملاحظه‌ای سریع‌تر است و امکان شناسایی دسته‌های بیشتری از تغییرات غیرمجاز را فراهم می‌کند.

فرمت جدید با نسخه قبلی سازگار است، بنابراین فایل‌های APK امضا شده با فرمت امضای جدید را می‌توان در دستگاه‌های Android قدیمی‌تر (که به سادگی داده‌های اضافی اضافه شده به APK را نادیده می‌گیرند) نصب کرد، تا زمانی که این APK‌ها دارای امضای v1 نیز باشند.

فرآیند تأیید امضای APK

شکل 1. فرآیند تأیید امضای APK

هش کل فایل APK با امضای v2+ ذخیره شده در بلوک امضای APK تأیید می شود. هش همه چیز را پوشش می دهد به جز بلوک امضای APK که حاوی امضای v2+ است. هرگونه تغییر در APK خارج از بلوک امضای APK، امضای v2+ APK را باطل می‌کند. فایل‌های APK با امضای v2+ حذف شده نیز رد می‌شوند، زیرا امضای v1 آنها مشخص می‌کند که APK دارای امضای v2 است، که باعث می‌شود اندروید 7.0 و جدیدتر از تأیید APK با استفاده از امضای v1 خودداری کند.

برای جزئیات در مورد فرآیند تأیید امضای APK، به بخش تأیید APK Signature Scheme v2 مراجعه کنید.

،

امضای برنامه به توسعه دهندگان اجازه می دهد تا نویسنده برنامه را شناسایی کرده و برنامه خود را بدون ایجاد رابط ها و مجوزهای پیچیده به روز کنند. هر برنامه ای که روی پلتفرم اندروید اجرا می شود باید توسط توسعه دهنده امضا شود. برنامه‌هایی که سعی می‌کنند بدون امضا نصب شوند، توسط Google Play یا نصب‌کننده بسته در دستگاه Android رد می‌شوند.

در Google Play، امضای برنامه، اعتمادی را که Google به توسعه‌دهنده دارد و اعتمادی که توسعه‌دهنده به برنامه خود دارد، پیوند می‌دهد. توسعه دهندگان می دانند که برنامه آنها بدون تغییر در دستگاه Android ارائه شده است. و توسعه دهندگان را می توان در مورد رفتار برنامه خود مسئول دانست.

در اندروید، امضای برنامه اولین قدم برای قرار دادن یک برنامه در Application Sandbox آن است. گواهی برنامه امضا شده مشخص می کند که کدام شناسه کاربری با کدام برنامه مرتبط است. برنامه های مختلف تحت شناسه های کاربری مختلف اجرا می شوند. امضای برنامه تضمین می کند که یک برنامه نمی تواند به هیچ برنامه دیگری به جز از طریق IPC کاملاً تعریف شده دسترسی داشته باشد.

وقتی یک برنامه (فایل APK) روی دستگاه Android نصب می‌شود، Package Manager تأیید می‌کند که APK به درستی با گواهی موجود در آن APK امضا شده است. اگر گواهی (یا به‌طور دقیق‌تر، کلید عمومی در گواهی) با کلید مورد استفاده برای امضای هر APK دیگری در دستگاه مطابقت داشته باشد، APK جدید این گزینه را دارد که در مانیفست مشخص کند که یک UID با دیگری که به طور مشابه امضا شده است به اشتراک بگذارد. فایل های APK

برنامه ها را می توان توسط شخص ثالث (OEM، اپراتور، بازار جایگزین) امضا کرد یا خود امضا کرد. Android امضای کد را با استفاده از گواهینامه‌های خودامضا ارائه می‌کند که توسعه‌دهندگان می‌توانند بدون کمک یا اجازه خارجی ایجاد کنند. برنامه ها نباید توسط یک مقام مرکزی امضا شوند. Android در حال حاضر تأیید CA را برای گواهی‌های برنامه انجام نمی‌دهد.

برنامه‌ها همچنین می‌توانند مجوزهای امنیتی را در سطح حفاظت از امضا اعلام کنند و دسترسی را فقط به برنامه‌هایی که با همان کلید امضا شده‌اند محدود می‌کنند و در عین حال UID و Application Sandbox‌های مجزا را حفظ می‌کنند. با استفاده از ویژگی UID مشترک که در آن دو یا چند برنامه امضا شده با کلید توسعه‌دهنده یکسان می‌توانند یک UID مشترک را در مانیفست خود اعلام کنند، ارتباط نزدیک‌تر با یک Sandbox برنامه مشترک مجاز است.

طرح های امضای APK

اندروید از سه طرح امضای برنامه پشتیبانی می کند:

برای حداکثر سازگاری، برنامه ها را با همه طرح ها امضا کنید، ابتدا با v1، سپس v2 و سپس v3. Android نسخه 7.0 و بالاتر و دستگاه‌های جدیدتر، برنامه‌های امضاشده با طرح‌های v2+ را سریع‌تر از برنامه‌هایی که فقط با طرح v1 امضا شده‌اند، نصب می‌کنند. پلتفرم‌های قدیمی‌تر اندروید، امضاهای v2+ را نادیده می‌گیرند و بنابراین به برنامه‌ها نیاز دارند که دارای امضاهای v1 باشند.

امضای JAR (طرح v1)

امضای APK از ابتدا بخشی از اندروید بوده است. این بر اساس JAR امضا شده است. برای جزئیات استفاده از این طرح، به مستندات Android Studio در امضای برنامه خود مراجعه کنید.

امضاهای v1 از برخی از بخش‌های APK مانند ابرداده ZIP محافظت نمی‌کنند. تأییدکننده APK باید تعداد زیادی از ساختارهای داده غیرقابل اعتماد (هنوز تأیید نشده) را پردازش کند و سپس داده‌هایی را که توسط امضاها پوشش داده نمی‌شود دور بریزد. این یک سطح حمله قابل توجهی را ارائه می دهد. علاوه بر این، تأیید کننده APK باید تمام ورودی های فشرده را از حالت فشرده خارج کند و زمان و حافظه بیشتری را مصرف کند. برای رفع این مشکلات، Android 7.0 APK Signature Scheme v2 را معرفی کرد.

طرح امضای APK نسخه 2 و 3 (طرح v2+)

دستگاه‌هایی که Android نسخه ۷.۰ و جدیدتر دارند، از طرح امضای APK نسخه ۲ (طرح نسخه ۲) و جدیدتر پشتیبانی می‌کنند. (طرح v2 در اندروید 9 به نسخه 3 به روز شد تا اطلاعات اضافی را در بلوک امضاء گنجانده باشد، اما در غیر این صورت یکسان عمل می کند.) محتویات APK هش شده و امضا می شود، سپس بلوک امضای APK حاصل در APK درج می شود. برای جزئیات در مورد اعمال طرح v2+ در یک برنامه، APK Signature Scheme v2 را ببینید.

در طول اعتبارسنجی، طرح v2+ فایل APK را به عنوان یک لکه در نظر می گیرد و بررسی امضا را در کل فایل انجام می دهد. هر گونه تغییر در APK، از جمله اصلاحات فراداده ZIP، امضای APK را باطل می کند. این شکل از تأیید APK به طور قابل ملاحظه‌ای سریع‌تر است و امکان شناسایی دسته‌های بیشتری از تغییرات غیرمجاز را فراهم می‌کند.

فرمت جدید با نسخه قبلی سازگار است، بنابراین فایل‌های APK امضا شده با فرمت امضای جدید را می‌توان در دستگاه‌های Android قدیمی‌تر (که به سادگی داده‌های اضافی اضافه شده به APK را نادیده می‌گیرند) نصب کرد، تا زمانی که این APK‌ها دارای امضای v1 نیز باشند.

فرآیند تأیید امضای APK

شکل 1. فرآیند تأیید امضای APK

هش کل فایل APK با امضای v2+ ذخیره شده در بلوک امضای APK تأیید می شود. هش همه چیز را پوشش می دهد به جز بلوک امضای APK که حاوی امضای v2+ است. هرگونه تغییر در APK خارج از بلوک امضای APK، امضای v2+ APK را باطل می‌کند. فایل‌های APK با امضای v2+ حذف شده نیز رد می‌شوند، زیرا امضای v1 آنها مشخص می‌کند که APK دارای امضای v2 است، که باعث می‌شود اندروید 7.0 و جدیدتر از تأیید APK با استفاده از امضای v1 خودداری کند.

برای جزئیات در مورد فرآیند تأیید امضای APK، به بخش تأیید APK Signature Scheme v2 مراجعه کنید.

،

امضای برنامه به توسعه دهندگان اجازه می دهد تا نویسنده برنامه را شناسایی کرده و برنامه خود را بدون ایجاد رابط ها و مجوزهای پیچیده به روز کنند. هر برنامه ای که روی پلتفرم اندروید اجرا می شود باید توسط توسعه دهنده امضا شود. برنامه‌هایی که سعی می‌کنند بدون امضا نصب شوند، توسط Google Play یا نصب‌کننده بسته در دستگاه Android رد می‌شوند.

در Google Play، امضای برنامه، اعتمادی را که Google به توسعه‌دهنده دارد و اعتمادی که توسعه‌دهنده به برنامه خود دارد، پیوند می‌دهد. توسعه دهندگان می دانند که برنامه آنها بدون تغییر در دستگاه Android ارائه شده است. و توسعه دهندگان را می توان در مورد رفتار برنامه خود مسئول دانست.

در اندروید، امضای برنامه اولین قدم برای قرار دادن یک برنامه در Application Sandbox آن است. گواهی برنامه امضا شده مشخص می کند که کدام شناسه کاربری با کدام برنامه مرتبط است. برنامه های مختلف تحت شناسه های کاربری مختلف اجرا می شوند. امضای برنامه تضمین می کند که یک برنامه نمی تواند به هیچ برنامه دیگری به جز از طریق IPC کاملاً تعریف شده دسترسی داشته باشد.

وقتی یک برنامه (فایل APK) روی دستگاه Android نصب می‌شود، Package Manager تأیید می‌کند که APK به درستی با گواهی موجود در آن APK امضا شده است. اگر گواهی (یا به‌طور دقیق‌تر، کلید عمومی در گواهی) با کلید مورد استفاده برای امضای هر APK دیگری در دستگاه مطابقت داشته باشد، APK جدید این گزینه را دارد که در مانیفست مشخص کند که یک UID با دیگری که به طور مشابه امضا شده است به اشتراک بگذارد. فایل های APK

برنامه ها را می توان توسط شخص ثالث (OEM، اپراتور، بازار جایگزین) امضا کرد یا خود امضا کرد. Android امضای کد را با استفاده از گواهینامه‌های خودامضا ارائه می‌کند که توسعه‌دهندگان می‌توانند بدون کمک یا اجازه خارجی ایجاد کنند. برنامه ها نباید توسط یک مقام مرکزی امضا شوند. Android در حال حاضر تأیید CA را برای گواهی‌های برنامه انجام نمی‌دهد.

برنامه‌ها همچنین می‌توانند مجوزهای امنیتی را در سطح حفاظت از امضا اعلام کنند و دسترسی را فقط به برنامه‌هایی که با همان کلید امضا شده‌اند محدود می‌کنند و در عین حال UID و Application Sandbox‌های مجزا را حفظ می‌کنند. با استفاده از ویژگی UID مشترک که در آن دو یا چند برنامه امضا شده با کلید توسعه‌دهنده یکسان می‌توانند یک UID مشترک را در مانیفست خود اعلام کنند، ارتباط نزدیک‌تر با یک Sandbox برنامه مشترک مجاز است.

طرح های امضای APK

اندروید از سه طرح امضای برنامه پشتیبانی می کند:

برای حداکثر سازگاری، برنامه ها را با همه طرح ها امضا کنید، ابتدا با v1، سپس v2 و سپس v3. Android نسخه 7.0 و بالاتر و دستگاه‌های جدیدتر، برنامه‌های امضاشده با طرح‌های v2+ را سریع‌تر از برنامه‌هایی که فقط با طرح v1 امضا شده‌اند، نصب می‌کنند. پلتفرم‌های قدیمی‌تر اندروید، امضاهای v2+ را نادیده می‌گیرند و بنابراین به برنامه‌ها نیاز دارند که دارای امضاهای v1 باشند.

امضای JAR (طرح v1)

امضای APK از ابتدا بخشی از اندروید بوده است. این بر اساس JAR امضا شده است. برای جزئیات استفاده از این طرح، به مستندات Android Studio در امضای برنامه خود مراجعه کنید.

امضاهای v1 از برخی از بخش‌های APK مانند ابرداده ZIP محافظت نمی‌کنند. تأییدکننده APK باید تعداد زیادی از ساختارهای داده غیرقابل اعتماد (هنوز تأیید نشده) را پردازش کند و سپس داده‌هایی را که توسط امضاها پوشش داده نمی‌شود دور بریزد. این یک سطح حمله قابل توجهی را ارائه می دهد. علاوه بر این، تأیید کننده APK باید تمام ورودی های فشرده را از حالت فشرده خارج کند و زمان و حافظه بیشتری را مصرف کند. برای رفع این مشکلات، Android 7.0 APK Signature Scheme v2 را معرفی کرد.

طرح امضای APK نسخه 2 و 3 (طرح v2+)

دستگاه‌هایی که Android نسخه ۷.۰ و جدیدتر دارند، از طرح امضای APK نسخه ۲ (طرح نسخه ۲) و جدیدتر پشتیبانی می‌کنند. (طرح v2 در اندروید 9 به نسخه 3 به روز شد تا اطلاعات اضافی را در بلوک امضاء گنجانده باشد، اما در غیر این صورت یکسان عمل می کند.) محتویات APK هش شده و امضا می شود، سپس بلوک امضای APK حاصل در APK درج می شود. برای جزئیات در مورد اعمال طرح v2+ در یک برنامه، APK Signature Scheme v2 را ببینید.

در طول اعتبارسنجی، طرح v2+ فایل APK را به عنوان یک لکه در نظر می گیرد و بررسی امضا را در کل فایل انجام می دهد. هر گونه تغییر در APK، از جمله اصلاحات فراداده ZIP، امضای APK را باطل می کند. این شکل از تأیید APK به طور قابل ملاحظه‌ای سریع‌تر است و امکان شناسایی دسته‌های بیشتری از تغییرات غیرمجاز را فراهم می‌کند.

فرمت جدید با نسخه قبلی سازگار است، بنابراین فایل‌های APK امضا شده با فرمت امضای جدید را می‌توان در دستگاه‌های Android قدیمی‌تر (که به سادگی داده‌های اضافی اضافه شده به APK را نادیده می‌گیرند) نصب کرد، تا زمانی که این APK‌ها دارای امضای v1 نیز باشند.

فرآیند تأیید امضای APK

شکل 1. فرآیند تأیید امضای APK

هش کل فایل APK با امضای v2+ ذخیره شده در بلوک امضای APK تأیید می شود. هش همه چیز را پوشش می دهد به جز بلوک امضای APK که حاوی امضای v2+ است. هرگونه تغییر در APK خارج از بلوک امضای APK، امضای v2+ APK را باطل می‌کند. فایل‌های APK با امضای v2+ حذف شده نیز رد می‌شوند، زیرا امضای v1 آنها مشخص می‌کند که APK دارای امضای v2 است، که باعث می‌شود اندروید 7.0 و جدیدتر از تأیید APK با استفاده از امضای v1 خودداری کند.

برای جزئیات در مورد فرآیند تأیید امضای APK، به بخش تأیید APK Signature Scheme v2 مراجعه کنید.

،

امضای برنامه به توسعه دهندگان اجازه می دهد تا نویسنده برنامه را شناسایی کرده و برنامه خود را بدون ایجاد رابط ها و مجوزهای پیچیده به روز کنند. هر برنامه ای که روی پلتفرم اندروید اجرا می شود باید توسط توسعه دهنده امضا شود. برنامه‌هایی که سعی می‌کنند بدون امضا نصب شوند، توسط Google Play یا نصب‌کننده بسته در دستگاه Android رد می‌شوند.

در Google Play، امضای برنامه، اعتمادی را که Google به توسعه‌دهنده دارد و اعتمادی که توسعه‌دهنده به برنامه خود دارد، پیوند می‌دهد. توسعه دهندگان می دانند که برنامه آنها بدون تغییر در دستگاه Android ارائه شده است. و توسعه دهندگان را می توان در مورد رفتار برنامه خود مسئول دانست.

در اندروید، امضای برنامه اولین قدم برای قرار دادن یک برنامه در Application Sandbox آن است. گواهی برنامه امضا شده مشخص می کند که کدام شناسه کاربری با کدام برنامه مرتبط است. برنامه های مختلف تحت شناسه های کاربری مختلف اجرا می شوند. امضای برنامه تضمین می کند که یک برنامه نمی تواند به هیچ برنامه دیگری به جز از طریق IPC کاملاً تعریف شده دسترسی داشته باشد.

وقتی یک برنامه (فایل APK) روی دستگاه Android نصب می‌شود، Package Manager تأیید می‌کند که APK به درستی با گواهی موجود در آن APK امضا شده است. اگر گواهی (یا به‌طور دقیق‌تر، کلید عمومی در گواهی) با کلید مورد استفاده برای امضای هر APK دیگری در دستگاه مطابقت داشته باشد، APK جدید این گزینه را دارد که در مانیفست مشخص کند که یک UID با دیگری که به طور مشابه امضا شده است به اشتراک بگذارد. فایل های APK

برنامه ها را می توان توسط شخص ثالث (OEM، اپراتور، بازار جایگزین) امضا کرد یا خود امضا کرد. Android امضای کد را با استفاده از گواهینامه‌های خودامضا ارائه می‌کند که توسعه‌دهندگان می‌توانند بدون کمک یا اجازه خارجی ایجاد کنند. برنامه ها نباید توسط یک مقام مرکزی امضا شوند. Android در حال حاضر تأیید CA را برای گواهی‌های برنامه انجام نمی‌دهد.

برنامه‌ها همچنین می‌توانند مجوزهای امنیتی را در سطح حفاظت از امضا اعلام کنند و دسترسی را فقط به برنامه‌هایی که با همان کلید امضا شده‌اند محدود می‌کنند و در عین حال UID و Application Sandbox‌های مجزا را حفظ می‌کنند. با استفاده از ویژگی UID مشترک که در آن دو یا چند برنامه امضا شده با کلید توسعه‌دهنده یکسان می‌توانند یک UID مشترک را در مانیفست خود اعلام کنند، ارتباط نزدیک‌تر با یک Sandbox برنامه مشترک مجاز است.

طرح های امضای APK

اندروید از سه طرح امضای برنامه پشتیبانی می کند:

برای حداکثر سازگاری، برنامه ها را با همه طرح ها امضا کنید، ابتدا با v1، سپس v2 و سپس v3. Android نسخه 7.0 و بالاتر و دستگاه‌های جدیدتر، برنامه‌های امضاشده با طرح‌های v2+ را سریع‌تر از برنامه‌هایی که فقط با طرح v1 امضا شده‌اند، نصب می‌کنند. پلتفرم‌های قدیمی‌تر اندروید، امضاهای v2+ را نادیده می‌گیرند و بنابراین به برنامه‌ها نیاز دارند که دارای امضاهای v1 باشند.

امضای JAR (طرح v1)

امضای APK از ابتدا بخشی از اندروید بوده است. این بر اساس JAR امضا شده است. برای جزئیات استفاده از این طرح، به مستندات Android Studio در امضای برنامه خود مراجعه کنید.

امضاهای v1 از برخی از بخش‌های APK مانند ابرداده ZIP محافظت نمی‌کنند. تأییدکننده APK باید تعداد زیادی از ساختارهای داده غیرقابل اعتماد (هنوز تأیید نشده) را پردازش کند و سپس داده‌هایی را که توسط امضاها پوشش داده نمی‌شود دور بریزد. این یک سطح حمله قابل توجهی را ارائه می دهد. علاوه بر این، تأیید کننده APK باید تمام ورودی های فشرده را از حالت فشرده خارج کند و زمان و حافظه بیشتری را مصرف کند. برای رفع این مشکلات، Android 7.0 APK Signature Scheme v2 را معرفی کرد.

طرح امضای APK نسخه 2 و 3 (طرح v2+)

دستگاه‌هایی که Android نسخه ۷.۰ و جدیدتر دارند، از طرح امضای APK نسخه ۲ (طرح نسخه ۲) و جدیدتر پشتیبانی می‌کنند. (طرح v2 در اندروید 9 به نسخه 3 به روز شد تا اطلاعات اضافی را در بلوک امضاء گنجانده باشد، اما در غیر این صورت یکسان عمل می کند.) محتویات APK هش شده و امضا می شود، سپس بلوک امضای APK حاصل در APK درج می شود. برای جزئیات در مورد اعمال طرح v2+ در یک برنامه، APK Signature Scheme v2 را ببینید.

در طول اعتبارسنجی، طرح v2+ فایل APK را به عنوان یک لکه در نظر می گیرد و بررسی امضا را در کل فایل انجام می دهد. هر گونه تغییر در APK، از جمله اصلاحات فراداده ZIP، امضای APK را باطل می کند. این شکل از تأیید APK به طور قابل ملاحظه‌ای سریع‌تر است و امکان شناسایی دسته‌های بیشتری از تغییرات غیرمجاز را فراهم می‌کند.

فرمت جدید با نسخه قبلی سازگار است، بنابراین فایل‌های APK امضا شده با فرمت امضای جدید را می‌توان در دستگاه‌های Android قدیمی‌تر (که به سادگی داده‌های اضافی اضافه شده به APK را نادیده می‌گیرند) نصب کرد، تا زمانی که این APK‌ها دارای امضای v1 نیز باشند.

فرآیند تأیید امضای APK

شکل 1. فرآیند تأیید امضای APK

هش کل فایل APK با امضای v2+ ذخیره شده در بلوک امضای APK تأیید می شود. هش همه چیز را پوشش می دهد به جز بلوک امضای APK که حاوی امضای v2+ است. هرگونه تغییر در APK خارج از بلوک امضای APK، امضای v2+ APK را باطل می‌کند. فایل‌های APK با امضای v2+ حذف شده نیز رد می‌شوند، زیرا امضای v1 آنها مشخص می‌کند که APK دارای امضای v2 است، که باعث می‌شود اندروید 7.0 و جدیدتر از تأیید APK با استفاده از امضای v1 خودداری کند.

برای جزئیات در مورد فرآیند تأیید امضای APK، به بخش تأیید APK Signature Scheme v2 مراجعه کنید.