توسعه دهندگان اندروید، در مراحل پایانی پروژه و قبل از انتشار برنامه در یکی از مارکت های موجود مانند گوگل پلی ، کافه بازار و... مسئله ی امضا کردن برنامه از طریق کلید (Keystore) رو تجربه کرده اند. امضا کردن برنامه باعث می شود مطمئن شویم که تنها افراد مجاز بتوانند برنامه را در آینده بروز رسانی کنند و بنابراین با این کار از دسترسی افراد غیر مجاز جهت بروزرسانی برنامه جلوگیری می کنیم. با این حال، به علت اینکه کلید برنامه ها، عضو مهمی از آنها محسوب می شود، در شرایطی خاص، ممکن است توسعه دهنده را دچار مشکلات زیادی کند. به علت معایب روش فعلی امضا کردن برنامه ها (که در ادامه به آن اشاره خواهیم کرد)، روشی دیگری جهت امضا کردن برنامه ها توسط گوگل پلی (Google Play App Signing) ارائه شده تا فرایند انتشار برنامه ها ساده تر و البته امن تر صورت گیرد. متاسفانه تا لحظه ی نگارش این مقاله، این روش فقط برای انتشار برنامه در مارکت رسمی گوگل(Google Play) ارائه شده و مارکت های ایرانی از این روش پشتیبانی نمی کنند. در این مقاله، قصد داریم این روش جدید به همراه مزایا و معایب آن را معرفی کنیم.
روش جدید امضا کردن برنامه (Google Play App Signing):
این روش که در واقع یک فرایند جدید و اختیاری برای توسعه دهندگان محسوب می شود، کل فرایند امضای برنامه را به گوگل واگذار می کند. به محض اینکه کلید امضای خود را به همراه نسخه برنامه به کنسول گوگل پلی معرفی کنید، گوگل فرایند امضاء برنامه ارسالی را برای انتشار برنامه انجام می دهد و در واقع برنامه ی ارسالی را برای ارائه به کاربران آماده سازی و امضاء می کند. صفر تا صد این فرایند در روش قبلی برعهده توسعه دهنده بوده است.
معایب روش قدیمی امضاء کردن برنامه ها
با وجود اینکه روش قدیمی امضا کردن برنامه ها هنوز به خوبی جوابگوی توسعه دهندگان هست و توسط همه ی مارکت های انتشار برنامه از جمله گوگل پلی پشتیبانی می شود، خطرهایی در این روش وجود دارد که می تواند نگرانی هایی را برای توسعه دهندگان به همراه داشته باشد:
بزرگترین مزیت استفاده از روش جدید امضای برنامه این است که زیرساخت گوگل، مسئولیت امضای برنامه را بر عهده خواهد گرفت و این به معنای امنیت هرچه بیشتر است. زمان استفاده از این روش، 2 کلید متفاوت برای فرایند امضای برنامه استفاده می شود:
همانطور که مشاهده می کنید، توسعه دهندگان هنوز می بایست یک نسخه از کلید را نزد خود نگهداری کنند. اما تفاوت این روش این است که کلید نزد توسعه دهنده(Upload Key)، برای امضای نسخه ای که قرار است منتشر شود، استفاده نمی شود و صرفا برای شناسایی مالک برنامه که قصد آپلود برنامه را دارد به کار می رود. به همین علت گوگل هر زمانی می تواند آن را جایگزین کند. اگر کلید مفقود یا رباییده شود، دیگر هیچ شخصی ثالثی دسترسی بروزرسانی برنامه را نخواهد داشت و گوگل به راحتی می تواند کلید قبلی را غیر فعال کرده و کلید دیگری را برای استفاده مجدد بکار گیرد.(روش انجام کار در انتهای مقاله ذکر شده است)
همانطور که در شکل می بینید، شما میتوانید کلید نزد خود(Upload Key) را به عنوان یک کلید معتبر( و نه کلید اصلی برنامه) در نظر بگیرید. این کلید به توسعه دهنده فقط اجازه ی بارگذاری نسخه های برنامه را در کنسول گوگل پلی خواهد داد و صرفا دارا بودن این کلید منجر به اعطای اجازه ی بروزرسانی، نخواهد شد.
برای ارسال برنامه به کنسول گوگل پلی 2 روش وجود دارد:
چنانچه بخواهید برنامه ی خود را از طریق روش Bundle به گوگل پلی معرفی کنید، امضا کردن برنامه به روش جدید اجبار است. زیرا شما Bundle برنامه خود را آپلود کرده اید و گوگل پلی نیاز دارد طی فرایندی APK برنامه شما را قبل از انتشار تولید و سپس امضا کند. بنابراین زمانی که کلید ها توسط توسعه دهنده مدیریت شوند، راهی برای انجام دادن این فرایند توسط کنسول گوگل پلی وجود ندارد.
نکات مهم:
جمع بندی
در این مقاله روش های امضا کردن و معرفی به کنسول گوگل پلی برای برنامه های اندرویدی گفته شد. بزرگترین مزیت استفاده از روش جدید امضا کردن برنامه که توسط گوگل پلی اخیرا معرفی شده است، امنیت بیشتر در برابر مفقود شدن یا رباییده شدن کلید امضای برنامه(Keystore) است. روشی که با اجرای آن میتوانیم با خیالی آسوده امضا کردن برنامه های خود را به گوگل پلی واگذار کنیم.
نظر شما در رابطه با روش جدید معرفی شده چیست؟ اگر هرگونه سوالی در مورد موضوع این مقاله ، یا تجربه ای دارید، لطفا به اشتراک بگذارید.
منابع:
https://support.google.com/googleplay/android-developer/answer/7384423?hl=en
https://medium.com/google-developer-experts/exploring-google-play-app-signing-b4d296f4ee9