امنیت و معماری
قول حریم خصوصی واقعاً چطور ساخته شده.
پالس میگوید اندازهگیریهای خام سلامتت هیچوقت از گوشی بیرون نمیرود. این ادعایی قوی و در عین حال باریک است، پس این صفحه دقیقاً میگوید چه چیزی را پوشش میدهد، چه چیزی با این حال از گوشی بیرون میرود، کلیدها کجا هستند، سرورهای ما چه نگه میدارند، ما و اپل چه چیزی را همچنان میتوانیم بخوانیم، و چطور میتوانی همهٔ اینها را خودت وارسی کنی.
ادعا، دقیق بیانشده
ضربان، تغییرپذیری ضربان، خواب و حرکت تو روی آیفون خودت از Apple Health خوانده میشود، روی همان آیفون در برابر میانگین متحرک خودت تفسیر میشود و به یک جمله تبدیل میشود. هیچ اندازهگیری، هیچ امتیاز، هیچ نمودار و هیچ تاریخچهای به سرورهای ما نمیرسد، چون هیچ مسیری در کد نیست که چنین چیزی را بفرستد. اما خودِ جمله میرود: برای همراهت نوشته شده، از دادهٔ سلامت تو بیرون آمده، و از راه فضای مشترک iCloud شما به او میرسد. همین تفاوت، موضوع تمام این صفحه است.
این قولی باریکتر از «ما خصوصی هستیم» است، و همان است که ارزش بررسی دارد. باقی این صفحه همان بررسی است.
چهار چیزی که از آن نتیجه میشود
- نمیتوانیم تاریخچهٔ سلامت خودت را در یک داشبورد وب نشانت بدهیم، چون نداریمش.
- اگر کلید و همهٔ دستگاههایت را از دست بدهی نمیتوانیم گفتوگویت را برگردانیم، چون کلید هرگز مال ما نبود.
- نمیتوانیم قابلیت ابری روی محتوایت بسازیم، چون سرورهای ما نمیتوانند بخوانندش.
- یک حکم قضایی به ما، به رکوردهای عملیاتی میرسد نه به رکوردهای سلامت: شناسههای بینام، توکنهای اعلان، تنظیمات اعلان، لاگهای کوتاهعمر سرور و هر چیزی که خودت برای ما فرستادهای. به یک اندازهگیری یا به متن خوانای یک پیام رمزشده نمیرسد، چون هیچکدام دست ما نیست.
مسیری که یک روز طی میکند
پنج گام. سه گام اول روی گوشی خودت میافتد، تنها گام چهارم است که به کسی میرسد، و گام پنجم همان یک جواب است که میتواند برگردد.
-
۰۱
اندازهگیری
اپل واچ تو، یا بند WHOOP به محض آمدن این پشتیبانی، اندازهگیریها را در Apple Health روی آیفونت مینویسد. Apple Health یک پایگاه داده روی گوشی توست، نه سرویسی از ما.
-
۰۲
خواندن، با اجازه
پالس همان نوعهایی را میخواند که در صفحهٔ اجازههای Health در iOS تأیید کردهای، و فقط همانها. یکی را پس بگیر، اپ با باقیمانده کار میکند.
-
۰۳
تفسیر روی دستگاه
امروز با هفتههای اخیر خودت مقایسه میشود، با کدی که روی آیفون تو اجرا میشود. در این گام هیچ سروری نیست و هیچجای آن هیچ مدلی نیست.
-
۰۴
یک جمله رد میشود
جملهٔ حاصل، یک برچسب کلی حال و نام نمایشیای که انتخاب کردهای از راه iCloud به همراهت میرسد، در فضایی که دقیقاً با یک نفر مشترک است. نام و عکس تو رمزنگاری سرتاسری دارند. جمله و برچسب حال ندارند، پس اپل میتواند آنها را همانجا بخواند.
-
۰۵
یک جواب میتواند برگردد
صبح روز بعد، کسی که اشاره دربارهٔ او بوده میتواند بگوید طوری که همراهش کنارش بود کمک کرد یا نه، با انتخاب یکی از چهار گزینهٔ ثابت. فقط همان گزینه برمیگردد، از همان فضای مشترک، بدون هیچ اندازهگیری و بدون هیچ متن آزادی پشتش.
هر تکه داده، و جایی که مینشیند
سه فهرست: آنچه روی دستگاهت میماند، آنچه به فضای مشترک با همراهت میرود، و آنچه برنامهٔ ما ذخیره میکند. هر سطر میگوید چه چیزی از آن محافظت میکند و آن محافظت کجا تمام میشود.
روی دستگاه تو، و نه روی سرورهای ما
در Keychain آیفون، خواندنی فقط بعد از اینکه گوشی از زمان روشن شدن یک بار باز شده باشد. ردیفهای سلامت آگاهانه بیرون از پشتیبان iCloud تو میمانند. کلید گفتوگو استثناست و از راه iCloud Keychain همگام میشود تا دستگاههای خودت بتوانند از آن استفاده کنند.
-
ضربان، ضربان استراحت، HRV، خواب، قدم، دقیقهٔ تمرین و ایستادن، نرخ تنفس، اکسیژن خون، جلسههای تمرکز
از Apple Health خوانده میشود. یک تاریخچهٔ ۹۰ روزهٔ چرخشی روی گوشی میماند تا اپ بتواند نمودار بکشد.
-
دادهٔ چرخهٔ قاعدگی
فقط وقتی خوانده میشود که پشتیبانی آگاه از چرخه («آگاهی از ریتم») را روشن کنی، که بهطور پیشفرض خاموش است؛ بدون آن، نشانهات بیهیچ ورودی از چرخه محاسبه میشود. mirroring روی iCloud برایش در کد خاموش شده، پس خود گزارش هرگز sync نمیشود و علائم و یادداشتها اصلاً از دستگاه بیرون نمیروند. فاز فقط در صورتی بیرون میرود که کلید جداگانهٔ تقویم پریود و چرخه را هم روشن کنی، که در جدول پایین ردیف خودش را دارد.
-
بازههای نشانهٔ غیرعادی قلبی
روی دستگاه دیده میشود. تا وقتی همان یک لحظه را تأیید نکنی چیزی فرستاده نمیشود، و یک فیلتر پیش از خروج هر عدد و هر واژهٔ مربوط به چرخه را از متن حذف میکند. تمرینها و انرژی فعال فقط برای این خوانده میشوند که ورزش از این بررسی کنار گذاشته شود، و پالس حداکثر روزی سه بار میپرسد.
-
کلید خصوصی هویت گفتوگوی تو
روی دستگاه خودت ساخته میشود و در iCloud Keychain تو میماند تا دستگاههای دیگر خودت هم بتوانند از آن استفاده کنند. هرگز به ما آپلود نمیشود.
-
توکنهای دسترسی و تازهسازی WHOOP
فقط اگر بندی وصل کنی، که اول باید پشتیبانی WHOOP بیاید. در keychain اپ، با نشان «فقط همین دستگاه» تا هرگز همگام نشود، و هنگام قطع اتصال سمت WHOOP هم باطل میشود.
-
سند رضایت تو، و فهرست اعلانهای خود اپ
سندی نسخهدار و زماندار از آنچه پذیرفتهای، که هر وقت بخواهی پس میگیری. پس گرفتنش بلافاصله هر پردازش سلامتی را متوقف میکند.
چه چیزی به همراهت میرسد
از راه iCloud خودت، در فضایی خصوصی که با یک نفرِ نامبرده به اشتراک گذاشته شده. آن فضا عمومی نیست: لینکش برای کسی که هویت iCloud او در فهرست شرکتکنندگان نباشد به هیچ درد نمیخورد.
| چه چیزی | محافظت |
|---|---|
| نشانهٔ روزانه، حرکتهای پیشنهادیاش، یک برچسب کلی حال، نام نمایشی و عکست، و ساعت محلیات اگر آن را به اشتراک بگذاری، همراه با وضعیت زندهٔ «احتمالاً خواب»؛ و وقتی کلیدهایت جلوی یک خوانش را بگیرند، بهجایش یک نشانهٔ خنثی «فعلاً چیز تازهای نیست» | فضای مشترک iCloud، برای شریکت فقط خواندنی. نام، عکس و ساعت محلیات رمزگذاری سرتاسری دارند. نشانه و برچسب حال از دادهٔ سلامتی مشتق شدهاند و ندارند، پس اپل میتواند بخواندشان. نشانهها آخر روز منقضی میشوند. وضعیت خواب یک ساعت میماند و آن هم رمزگذاری سرتاسری ندارد. |
| پیامها، عکسها، گیفها، پیامهای صوتی، نشانهها، درخواستها، «داستان ما»، رویدادهای تقویم، فهرست خرید، یادداشتهای مشترک، پاسخهای پرسش روز | روی دستگاه تو رمزنگاری سرتاسری میشوند. نه ما و نه اپل نمیتوانیم بخوانیمشان. |
| ورودیهای فهرست تماشا و آرزوها: عنوان، نوع، لینک، کاور، وضعیت، و برای آرزویی که از یک مکان واقعی ذخیره شده، نشانی و موقعیت آن روی نقشه؛ بهعلاوهٔ روزی که از آن میشمارید | ساده داخل فضای مشترک، پس اپل میتواند بخواندشان. هرگز دادهٔ سلامت. نظرها، واکنشها و نظر شخصی هر کدام رمزنگاری سرتاسریاند. |
| پرسش روزانه و پاسخ هر دو نفر | هر پاسخ روی دستگاه تو مثل یک پیام گفتوگو رمزنگاری سرتاسری میشود؛ فقط روزی که به آن تعلق دارد خواناست. ظرف ۴۸ ساعت از فضای مشترک پاک میشوند. |
| نشانگر تایپ، رسید خواندن، و سیگنال «با هم نگهداشتن» | تا وقتی گفتوگو باز است زنده رد میشوند و هیچجا ذخیره نمیشوند. سیگنال نگهداشتن یک بله یا نه است، بدون هیچ محتوایی. |
| تقویم پریود و چرخهات، اگر آن کلید را روشن کنی: فاز فعلی، روزهای این پریود، روزهای پیشبینیشده برای بعدی، و پنجرهٔ تخمکگذاری | بدون رمزگذاری داخل فضای مشترکت، پس اپل میتواند بخواندش. این تنها ردیف این جدول است که دادهٔ سلامتی است، و برای همین کلیدش از همهٔ کلیدهای دیگر جداست، پیشفرض خاموش است، و لحظهای که خاموشش کنی تقویم را از دستگاه شریکت پاک میکند. علائم و یادداشتهایی که ثبت میکنی هرگز سفر نمیکنند. |
اپل اینجا چه میتواند بخواند و چه نمیتواند
فضای مشترک شما ناحیهای درون iCloud است، پس هر چه در جدول بالاست نزد اپل ذخیره میشود. گفتوگو، عکسها، گیفها، پیامهای صوتی، اشارهها، درخواستها، «داستان ما»، رویدادهای تقویم، نوشتههای Know Us، یادداشتهای «ناگفته» که خودت میفرستی و آنچه در جوابشان گفته میشود، و نظرهای یک آیتم فهرست تماشا، همگی به شکل متن رمزشدهای که گوشی خودت ساخته آنجا مینشینند و اپل هم مثل ما نمیتواند بازشان کند. جملهٔ روز، برچسب حال کنارش، پرسش روز با هر دو پاسخ، و آیتمهای سادهٔ فهرست تماشا و فهرست آرزو، و اگر آن کلید را روشن کرده باشی تقویم چرخهٔ مشترک، با قواعد اشتراک آن فضا محافظت میشوند نه با آن رمزنگاری، یعنی اپل از نظر فنی میتواند بخواندشان. مرز میان این دو همین است، و به همین دلیل این صفحه هیچجا نمیگوید هیچکس هیچچیز نمیبیند.
آنچه برنامهٔ ما آگاهانه ذخیره میکند
اپ سیستم حساب کاربری ندارد، پس سمت ما پروفایلی، بایگانی پیامی و پروندهای از سلامت وجود ندارد. آنچه در پایین آمده چیزی است که برنامه آگاهانه نگه میدارد. رد پاهای عادی کار، لاگهای فنی، صفها، و وضعیت رلهای که یک گفتوگوی باز لازم دارد، مثل هر سرویس میزبانیشدهٔ دیگری وجود دارند و سطر آخر همین را میگوید تا لازم نباشد خودت حدس بزنی.
| رکورد | چرا هست | تا کِی میماند |
|---|---|---|
| یک شناسهی مستعار iCloud، یک توکن push، پلتفرم، سه کلید روشن و خاموش اعلان، و اثر انگشت کلیدی که فقط تو و شریکت دارید؛ و فقط اگر «اعلان اطلاعیهها» را روشن کنی، همین انتخاب و زبان اپ تو | تا اعلان به گوشی درست برسد. | تا وقتی حسابت را در اپ پاک کنی، سرویس اعلان گوگل یا اپل توکن را نامعتبر اعلام کند، یا گوشیات ۱۸۰ روز آن را تازه نکرده باشد. |
| پیام فرم تماس: نام، ایمیل، کشور (اختیاری) و آنچه نوشتهای | تا یک آدم بتواند جوابت را بدهد. | تا پایان گفتوگو. با ایمیل به صندوق ما میرود؛ فقط موضوعش لاگ میشود. |
| کوکی نشست وبسایت و توکن CSRF | تا سایت کار کند. کاملاً ضروری؛ هیچ کوکی تحلیلی یا تبلیغاتی وجود ندارد. | تا پایان نشست مرورگر. |
| حسابهای مدیریتی همین وبسایت و گزارش ورودهایشان | تا بتوانیم همین صفحهها را منتشر کنیم. بیربط به اپ، که اصلاً ورود ندارد. | تا وقتی حساب پاک شود. گزارش ورودها ۱۲ ماه نگه داشته میشود. |
| ایدهٔ یک قابلیت که از صفحهٔ قابلیتها فرستاده شده: عنوان و هر چه خودت افزودهای، توضیح، لینک، نام و ایمیل | تا کسی بخواندش، جوابت را بدهد و بداند پیشتر چه پیشنهاد شده. | از ما بخواهی پاکش کنیم، یا کار آن ایده تمام شود. |
| توکنهای Live Activity، لاگهای فنی کوتاهعمر، و وضعیت رلهای که یک گفتوگوی باز لازم دارد | تا یک اشاره به Dynamic Island برسد، تا سایت بچرخد و سوءاستفاده بررسی شود، و تا دو گفتوگوی باز در لحظه با هم حرف بزنند. | توکنها با خاموش کردن قابلیت، حذف حساب، یا پس از ۱۸۰ روز بیتازهسازی میروند. لاگها پس از ۱۴ روز پاک میشوند. سیگنالهای رلهشده اصلاً نوشته نمیشوند. |
| یک گزارش خطا، فقط اگر آن را بخوانی و ارسال را بزنی: نسخهی اپ و iOS، مدل دستگاه، زبان، آخرین تب، جزئیات فنی و یادداشتی که خودت اضافه کنی | تا بتوانیم علت را پیدا و رفعش کنیم. هیچوقت شناسهی iCloud، نام، دادهی سلامت یا پیامی در آن نیست. | ۹۰ روز، بعد خودکار پاک میشود. |
| اینکه هر نسخهی اپ چند بار باز شده: یک جمع روزانه برای هر build و هر ساعت هفته، بدون شناسه و بدون ردیفی برای هر گوشی | تا بدانیم کدام نسخهها هنوز استفاده میشوند و کی میشود نسخهی قدیمی را کنار گذاشت. | حداکثر ۱۳ ماه، بعد جمعهای روزانه خودکار پاک میشوند. |
| فقط اگر «به بهتر شدن پالس کمک کن» را روشن کنی: فهرست روزانهی شمارشهای ناشناس (کدام صفحهها و کارها استفاده شدهاند و چند بار) که به یک جمع روزانه اضافه میشود | تا ببینیم کدام بخشهای پالس استفاده میشوند. هیچ شناسه، زمان یا محتوایی فرستاده نمیشود، پس شمارش نه به تو وصل میشود نه دوباره بیرون کشیده میشود. | حداکثر ۱۳ ماه بهصورت جمعهای روزانه. خاموشش کنی دیگر چیزی فرستاده نمیشود. |
آنچه آگاهانه غایب است: هر مقدار سلامت، هر متن پیام، هر نامی از اپ، هر موقعیت مکانی، هر شناسهٔ تبلیغاتی. شناسههای بینام یعنی نام مستعار، نه ناشناسی: یک جفت از آنها به ما نشان میدهد دو حساب به هم وصلاند، و همین همان محدودیت فراداده است که پایینتر آمده.
مدل رمزنگاری
نامبرده، نه اشارهشده، تا بشود سرش بحث کرد.
- توافق کلید
- Curve25519، از راه CryptoKit اپل. هر طرف یک جفتکلید هویت روی دستگاه خودش میسازد و دو طرف مستقیم روی یک راز مشترک توافق میکنند. در هیچ نقطهای مادهٔ کلید از سرورهای ما رد نمیشود.
- رمزنگاری پیام
- AES-GCM، از راه CryptoKit، که علاوه بر رمز کردن، اصالت را هم بررسی میکند: متن رمزشدهٔ دستکاریشده باز نمیشود، به جای اینکه به چیز دیگری باز شود.
- کلیدها کجا زندگی میکنند
- کلید خصوصی تو در iCloud Keychain خودت است، گرهخورده به Apple ID تو و در دسترس دستگاههای خودت. ما نه کپی داریم و نه راهی برای درخواستش. خواندههای سلامتِ محلیِ ذخیرهشده در keychain دستگاهاند، زیر ردهٔ «فقط همین دستگاه»، که آنها را بیرون از پشتیبان iCloud نگه میدارد.
- انتقال
- بستههای رمزشده از CloudKit اپل عبور میکنند. تا وقتی هر دو گفتوگو را باز دارید، همان بایتهای ازپیشرمزشده میتوانند مسیر سریعتری از رلهٔ زمانواقعی خود ما هم بگیرند. آن رله امضا و عبور میدهد و چیزی ذخیره نمیکند. بایتهای مُهرومومشدهٔ یک پیام گفتوگو ممکن است درون اعلانش هم، از راه سرور ما و Firebase Cloud Messaging گوگل، برود تا گوشی همراهت پیش از باز شدن اپ بتواند بازش کند؛ هیچکدام نمیتوانند آن را بخوانند و سرور ما نگهش نمیدارد.
- اعلانها
- بخش قابلمشاهدهٔ اعلان آگاهانه بیمحتواست: یک عنوان و متن ثابت که سرور ما مینویسد بهعلاوهٔ یک رشتهٔ نوع، هرگز خود پیام. اعلانِ یک پیام گفتوگو ممکن است همان پیام را مُهرومومشده هم حمل کند، همانطور که زیر «انتقال» آمده؛ هیچکس میان دو گوشی نمیتواند بازش کند. درخواست چیزی خصوصی هیچوقت روی صفحهٔ قفل نوشته نمیشود، جایی که کسی کنارت ایستاده میتواند بخواندش.
- ورود به WHOOP
- گوشی تو مستقیم با WHOOP حرف میزند. سرور ما فقط تبادل توکن را انجام میدهد، چون WHOOP یک کلید محرمانه میخواهد و کلیدی که داخل یک اپ iOS بفرستی برای هر کسی که اپ را دانلود کند خواندنی است. از آن تبادل هیچچیز ذخیره نمیشود: نه توکن، نه شناسهٔ کاربر WHOOP، نه یک ردیف. بازگشت روی دامنهای مینشیند که این اپ از راه Associated Domains آن را از آنِ خود کرده، پس کد مجوز را اپ دیگری روی دستگاه نمیتواند برباید.
چه کسان دیگری چیزی دریافت میکنند
هر گیرنده، با آنچه واقعاً دریافت میکند. چند تای اینها فقط برای کسانی وجود دارند که قابلیت خاصی را به کار میبرند.
| گیرنده | چه چیزی میگیرد | کِی |
|---|---|---|
| اپل | دو چیز متفاوت درون iCloud خودت: بستههای رمزشدهای که اپل نمیتواند بازشان کند، و رکوردهای خوانای فضای مشترک که میتواند، یعنی جملهٔ روز، برچسب حال، آیتمهای فهرست تماشا و فهرست آرزو، و روزی که از آن میشمارید. بهعلاوهٔ تحویل اعلان. و فقط وقتی از آنها استفاده میکنی: Apple Maps (جستوجوهای مکانی که مینویسی، و محدودهای که قرارها را در آن برنامهریزی میکنید) و iTunes Search API (عنوان یک آیتم فهرست تماشا، وقتی گوشیات دنبال کاور میگردد). | همیشه. فضای مشترک شما همانجاست. |
| گوگل (Firebase Cloud Messaging) | یک push token و عنوان، متن و نوعِ یک نوتیفیکیشن بدون محتوا؛ و برای پیام گفتوگو شاید خودِ آن پیام، مُهرومومشده با رمزنگاری سرتاسری که گوگل نمیتواند بازش کند. Firebase Crashlytics هم لینک شده، ولی کرش را فقط روی گوشیات ثبت میکند و گزارش را تنها وقتی میفرستد که پس از کرش روی «ارسال» بزنی: stack trace، مدل دستگاه، نسخهٔ iOS و یک شناسهٔ تصادفی نصب؛ هرگز دادهٔ سلامتی، محتوای پیام یا اطلاعات تماس. analytics و تبلیغات Firebase در build خاموشاند. | وقتی نوتیفیکیشنی برایت فرستاده میشود، و پس از کرش فقط اگر روی «ارسال» بزنی. |
| GIPHY | عبارتهای جستوجوی گیف تو. خود گیفی که میفرستی مثل هر پیام دیگری رمزنگاری سرتاسری سفر میکند. | فقط تا وقتی جستوجوی گیف باز است. هیچوقت بازش نکنی، هیچچیز نمیرود. |
| WHOOP | ورود خودت و اندازهگیریهای خودت، که گوشیات مستقیم از WHOOP میخواند. | فقط اگر بندی وصل کنی، به محض آمدن این پشتیبانی. |
| Fastmail | پیام تماسی که برایمان نوشتهای. | فقط اگر برایمان بنویسی. |
در هر دو کدپایه نبودنش بررسی شده
- هیچ SDK تحلیلی، از هیچ نوعی
- هیچ SDK تبلیغاتی یا انتساب
- هیچ شناسهٔ تبلیغاتی و هیچ درخواست اجازهٔ ردیابی، چون چیزی برای ردیابی نیست
- هیچ SDK ای برای analytics، بازپخش نشست یا attribution وجود ندارد. گزارش کرش تنها استثنای تشخیصی است و در جدول بالا نامش آمده، نه اینکه بیصدا از این فهرست جا بیفتد. دو شمارندهی خودمان در جدول بالا SDK نیستند، شناسه ندارند و چیزی به شخص ثالث نمیفرستند.
- هیچ پردازشگر پرداخت یا اشتراک
- هیچ مدل مولد یا زبانی واژههای تو را نمینویسد و نمیخواند، نه در اپ و نه روی سرور. اقدام اختیاری «ترجمه» روی یک پیام از ترجمهٔ داخلی اپل استفاده میکند.
این از چه چیزی محافظتت نمیکند
بخشی که بیشتر سایتها جا میاندازند، و اینجا عمداً بلندترین بخش است. هیچکدام گزارش خطا نیست؛ همه یا معاملهٔ آگاهانهاند یا محدودیتی شناختهشده که بهتر است از زبان ما بشنوی تا خودت کشفش کنی.
-
جملهٔ روز از دادهٔ سلامت تو بیرون آمده، و از گوشی بیرون میرود
چارهای نیست: این جمله برای همراهت نوشته شده. کنار برچسب حال، درون فضای مشترک iCloud شما سفر میکند و مثل گفتوگو رمزنگاری سرتاسری جداگانه ندارد، پس اپل از نظر فنی میتواند بخواندش. این را صریح میگوییم چون «روی دستگاه تفسیر میشود» بهسادگی شنیده میشود «هیچچیزی از سلامتت بیرون نمیرود»، و فقط جملهٔ اول درست است. آنچه سفر نمیکند، اندازهگیری پشت جمله است: نه ضربان، نه تغییرپذیری ضربان، نه ساعت خواب. تنها عدد سلامتیای که میتواند بهتنهایی سفر کند تقویم چرخه است، که کلید جداگانهای دارد، پیشفرض خاموش است، و در جدول بالا ردیف خودش را دارد.
-
ما فراداده را میبینیم و رمزنگاری آن را از بین نمیبرد
میبینیم حسابی وجود دارد، دو حساب به هم وصلاند، پیامی با اندازهای مشخص در زمانی مشخص بینشان جابهجا شده، و توکنی که اپل برای تحویل لازم دارد. تا جای ممکن کمش را نگه میداریم و هیچکدامش را نمیفروشیم، اما «نمیتوانیم پیامهایتان را بخوانیم» و «هیچچیز دربارهٔ شما نمیدانیم» دو جملهٔ متفاوتاند و فقط اولی دربارهٔ هیچکس دروغ نیست.
-
نسخههای داخل یک تقویم بیرون از رمزنگاریاند
اگر برنامههایتان را در یک تقویم آینه کنی، پالس ورودیهای معمولی تقویم مینویسد: عنوانها، زمانها، مکانها و یادداشتها، خوانا. تقویمی که با iCloud، Google یا Outlook همگام میشود آنها را نزد همان سرویس نگه میدارد، و هر کسی که تقویم را با او به اشتراک گذاشتهای میتواند ببیندشان. پالس پیش از نوشتن در چنین تقویمی میپرسد، اما وقتی نسخه آنجا باشد، قواعد همان تقویم حاکم است، نه قواعد ما. این را صریح میگوییم چون خودِ تقویم مشترک رمزنگاری سرتاسری دارد و خواننده بهدرستی فرض میکند نسخه هم دارد.
-
بعضی ورودیهای مشترک عمداً سادهاند
ورودیهای فهرست تماشا و آرزوها، یعنی عنوان و نوع و لینک و وضعیت، و برای آرزویی که از یک مکان واقعی ذخیره شده نشانی و موقعیتش روی نقشه، بهصورت رکوردهای ساده داخل فضای مشترک همگام میشوند، چون پیش از تبادل کلیدی جریان دارند که گفتوگو را محافظت میکند. روزی که از آن میشمارید هم همینطور. اپل میتواند بخواندشان؛ هرگز دادهٔ سلامت ندارند. نظرها و واکنشهای روی آیتمهای فهرست تماشا رمز شدهاند.
-
اپل زیر همهٔ اینهاست
فضای مشترک شما ناحیهای در iCloud است، کلیدهایت در iCloud Keychain مینشینند و اندازهگیریهایت در Apple Health. رکوردهای رمزشده برای اپل دقیقاً همانقدر بستهاند که برای ما. بقیهٔ فضای مشترک اینطور نیست، همانطور که دو سطر بالا گفت. استفاده از پالس یعنی همین اندازه به اپل اعتماد کردن، و معماریای که چیز دیگری بگوید، اپ دیگری را وصف میکند.
-
ما ادعای forward secrecy نداریم
کلید گفتوگو از توافق Curve25519 میان دو کلید هویت شما میآید، نه از زنجیرهٔ کلید تازه برای هر پیام که یک مسنجر تخصصی به کار میبرد. پس ادعای forward secrecy نمیکنیم: کلید خصوصیای که از یک دستگاه برداشته شود میتواند پیامهایی را که با آن محافظت شدهاند باز کند، نه فقط پیام بعدی را. ترجیح میدهیم محدودیت را نام ببریم تا اینکه بگذاریم «رمزنگاری سرتاسری» خاصیتی را حمل کند که نساختهایم.
-
کلیدهایت به حساب اپل تو وابستهاند
کلید خصوصیات در iCloud Keychain میماند تا دستگاههای خودت به آن برسند. همین است که گوشی تازه را بیآنکه نسخهای دست ما باشد به کار میاندازد، و همین هم یک وابستگی است: کسی که حساب اپل تو را در اختیار دارد و میتواند دستگاهی به آن بیفزاید، جایی ایستاده که ما کاری از دستمان برنمیآید، چون هیچ رمز عبوری از ما سر راه نیست. ورود دومرحلهای آن حساب را روشن نگه دار.
-
وصل شدن ردی کوتاه و عمومی باقی میگذارد
تا وقتی یک دعوت باز است، رکوردی شامل یک شناسهٔ بینام iCloud، نام نمایشی انتخابی تو و یک کد کوتاه برای دیگر کاربران واردشدهٔ کانتینر iCloud این اپ خواندنی است. کدها بعد از ۴۸ ساعت منقضی میشوند و رکوردها هنگام پذیرش، قطع اتصال و حذف حساب پاک میشوند. خود فضای مشترک اینطور در معرض نیست: به هویت iCloud همراهت محدود شده، پس لینکی که کسی برداشته باشد چیزی را باز نمیکند.
-
نقطهٔ پایانی اعلان با کلیدی محافظت میشود که داخل اپ میآید
یعنی راز واقعی نیست. بدترین حالت این است که کسی بتواند روی گوشیای که شناسهٔ بینامش را از قبل میداند یک اعلان بیمحتوا ظاهر کند؛ آن نقطهٔ پایانی فقط تعداد تحویل را برمیگرداند و چیزی دربارهٔ آن آدم فاش نمیکند. نرخش محدود شده، و سفتتر کردنش با تأیید هویت هر دستگاه در فهرست کارهاست، نه انجامشده.
-
دستگاههای خودت، و آدمهای نزدیکشان
هر کس بتواند گوشیات را باز کند میتواند پیامهایت را بخواند، و این دربارهٔ هر اپ پیامرسانی صادق است. اگر برایت مهم است، قفل Face ID داخل اپ را روشن کن. به همین ترتیب، رمزنگاری سرتاسری از سیم محافظت میکند، نه از آدمی که خودت انتخاب کردی چیزی برایش بفرستی.
-
همراه، همیشه آدم امنی نیست
پالس برای دو نفر ساخته شده که همدیگر را انتخاب کردهاند، و هیچچیز در آن فرق میان همراهی که نگرانت است و همراهی که کنترلت میکند را نمیفهمد. اگر کسی فشار میآورد که اپ را نصب کنی، اشتراک را دوباره روشن کنی یا گوشیات را بدهی، این مسئلهای نیست که رمزنگاری حلش کند. مکث و قطع اتصال یک لمس فاصله دارند، مکث میتواند نامرئی باشد، و بابت هیچکدام به کسی توضیح بدهکار نیستی.
-
مکث جلوی چیز بعدی را میگیرد، نه چیزی که رسیده
مکث هر چیز تازه را متوقف میکند و میتواند بیخبر دادن به همراهت این کار را بکند. به عقب نمیرسد: جمله یا پیامی که رسیده روی دستگاه اوست و هیچ دکمهای از ما برش نمیگرداند. قطع اتصال هم رکوردهای مشترک را برمیدارد و به همان دلیل نمیتواند گوشی او را خالی کند. هر مسنجری همینطور است، و بهتر است پیش از روزی که به کار بیاید بدانیاش.
-
هنوز هیچ بازرسی مستقلی نشده
بررسیای که این صفحه از رویش ساخته شده را خودمان انجام دادهایم، در برابر کد خودمان، در تاریخهایی که پایین آمده. این بیشتر از یک نیت است و کمتر از یک آدیت بیرونی، و هر اسم دیگری رویش بگذاریم اولین جملهٔ نادرست این صفحه خواهد بود. میخواهیم بررسی مستقلی سفارش بدهیم و هر وقت شد، تاریخش همینجا میآید.
-
یک ارتباط میتواند تمام شود بدون اینکه هیچکدامتان تمامش کرده باشید
Pulse مراقب فضای مشترک همراه شماست، چون خداحافظی صریح ممکن است گم شود: ممکن است آنها ارتباط را تمام کنند در حالی که گوشی شما آفلاین است، و بدون این بررسی یک دستگاه تا ابد به هیچکس «متصل» میماند. پس فضای مشترکی که دائم در دسترس نباشد، بالاخره به معنای ارتباطی تمامشده گرفته میشود، در حالی که دادههای شما سر جایشان میمانند. این را اینجا میگوییم چون تصمیمی است که اپ به جای شما میگیرد، و چون یک بار بد اشتباهش کردیم: نسخهای قدیمیتر بعد از سه بررسی، حدود یک دقیقه، عمل میکرد، و چون تمام کردن ارتباط روی یک گوشی دقیقا همان چیزی را برمیدارد که گوشی دیگر دنبالش میگردد، یک اختلال کوتاه میتوانست هر دو نفر را در فاصلهی چند دقیقه قطع کند. حالا هفت روز پیوسته لازم است، یک بار دیده شدن ساعت را صفر میکند، و هر چیزی که اپ نتواند مطمئن باشد، از جمله آفلاین بودن، اصلا شمرده نمیشود.
چطور خودت این را بررسی کنی
نباید مجبور باشی حرف ما را قبول کنی، و روی iOS تا حد زیادی مجبور هم نیستی.
-
۰۱
گزارش حریم خصوصی اپ را روشن کن
در تنظیمات iOS، زیر Privacy & Security، گزارش حریم خصوصی اپ ثبت میکند هر اپ با چه دامنههایی تماس میگیرد و چه حسگرهایی را لمس میکند. یک هفته از پالس استفاده کن و بخوان چه فهرست میکند. دنبال نبودِ دامنههای تحلیلی و تبلیغاتی بگرد.
-
۰۲
صفحهٔ اجازههای Health را بخوان
تنظیمات، بعد Health، بعد Data Access & Devices، بعد Pulse. هر نوعی که اپ میتواند بخواند و بنویسد آنجا نوشته شده. یکی را پس بگیر و ببین اپ با کمتر ادامه میدهد.
-
۰۳
برچسب حریم خصوصی در App Store را ببین
اپل میخواهد برچسب با کد بخواند، و برچسب ما یک نام، یک شناسهٔ بینام کاربر و یک توکن دستگاه را اعلام میکند؛ همه با نشان «کارکرد اپ»، هیچکدام با نشان ردیابی.
-
۰۴
ترافیک را خودت تماشا کن
اگر از آن آدمهایی هستی که پروکسی دارند، یکی را روی اپ بگیر. چیزی که میبینی iCloud است، نقطهٔ پایانی اعلان ما، رلهٔ ما تا وقتی گفتوگو باز است، GIPHY اگر جستوجوی گیف را باز کنی، Apple Maps وقتی دنبال مکانی میگردی، جستوجوی iTunes اپل وقتی فهرست تماشا دنبال کاور میگردد، و WHOOP اگر بندی وصل کرده باشی. چیزی که نمیبینی یک اندازهگیری است.
-
۰۵
یک چیز مشخص از ما بپرس
پرسشهای مبهم دربارهٔ حریم خصوصی همهجا جواب مبهم میگیرند. پرسش مشخص دربارهٔ یک جریان مشخص از ما جواب مشخص میگیرد، و اگر جواب ناخوشایند باشد باز هم داده میشود.
آخرین بار کِی بررسی شد
هر سطر یا وارسی کد منتشرشده در برابر ادعاهای این سایت و سیاست حریم خصوصی است، یا اصلاح خودِ آن ادعاها، همراه با آنچه پیدا و عوض شد.
-
۲ ژوئیهٔ ۲۰۲۶
بررسی کامل هر دو مخزن. پیدا و اصلاح شد: فهرست ناقص گیرندگان، ادعای «ما چیزی ذخیره نمیکنیم» که دربارهٔ رکورد اعلان درست نبود، و حذف حسابی که آن رکورد را پاک نمیکرد. برچسب حریم خصوصی App Store هم در همان دور اصلاح شد.
-
۲۴ ژوئیهٔ ۲۰۲۶
بررسی رلهٔ زمانواقعی و دو قابلیت تازه. رله بهعنوان یک مسیر انتقال اضافه افشا شد، و صریح نوشته شد که پرسش روزانه مثل گفتوگو رمزنگاری سرتاسری ندارد.
-
۲۹ اوت ۲۰۲۶
بررسی فهرست تماشای مشترک و ورود WHOOP. WHOOP بهعنوان گیرندهٔ نامبرده برای کسانی که بند وصل میکنند اضافه شد، و مستند شد که پیشنمایش لینک و کاور فقط توسط دستگاه فرستنده گرفته میشوند.
-
۱۳ سپتامبر ۲۰۲۶
وارسی متن کل سایت، نه وارسی تازهٔ کد، پس تاریخ بالا عوض نشده. ادعاهایی که از معماری فراتر رفته بودند اصلاح شد: جملهٔ روز طوری توصیف شده بود که انگار روی دستگاه میماند، پرسش روز در صفحهٔ قابلیتها «مثل گفتوگو سرتاسری» خوانده شده بود، فهرست دادههای سرور «کامل» نامیده شده بود بیآنکه ایدههای قابلیت و توکنهای Live Activity در آن باشند، و پاسخ مربوط به حکم قضایی چنان بود که انگار اصلاً چیزی نداریم. دید اپل به فضای مشترک صریح شد و محدودیتهای forward secrecy، حساب اپل، فشار از سوی یک آدم نزدیک، و مکث اضافه شدند.
چیزی پیدا کردی؟
افشای مسئولانه خوشآمد است و نامت ذکر میشود. به [email protected] بنویس، با جزئیات کافی برای بازتولید، و پیش از انتشار فرصت معقولی به ما بده. جایزهٔ باگ پولی نداریم، برای آنکه صادقانه باشد خیلی کوچکیم، اما وکیل هم سراغت نمیفرستیم.
باقیاش را بخوان.
سند حریم خصوصی نسخهٔ حقوقی همهٔ چیزهای بالا را دارد، شامل حقهای تو و راه استفاده از آنها.