1 Mengapa privasi penting dalam aplikasi memo

Ide kerja, draf pribadi, catatan harian. Aplikasi memo mengumpulkan informasi sebelum menunjukkannya kepada orang lain. Sama pentingnya dengan mampu menulis dengan cepat, penting untuk memahami di mana itu disimpan dan ke mana itu dikirim.

Dalam artikel ini, kami akan menjelaskan enkripsi, cache komunikasi, tampilan layar, log diagnostik, dan analisis penggunaan di terminal secara terpisah. Satu perlindungan tidak menjamin perlindungan rute lainnya.

6 September 2026 pembaruan:Sumber versi yang sama (5.8.17) sebagai versi publik dibandingkan, dan penjelasan perlindungan layar, log, dan analisis penggunaan dikoreksi. Tuliskan apa yang dapat Anda lakukan dan apa yang Anda batasi.

2 Fungsi menyembunyikan catatan secara otomatis di pengalih aplikasi tidak diaktifkan

iOS menggunakan layar setelah aplikasi berpindah ke latar belakang sebagai snapshot. Apple memandu Anda untuk menghapus informasi rahasia di layar saat berpindah ke latar belakang.

Dalam sumber 5.8.17 dikonfirmasi, sceneWillResignActive dan sceneDidEnterBackground menyimpan draf dan tidak memanggil proses tampilan overlay privasi. Fungsi tampilan sebelumnya tetap ada, tetapi itu bukan jalur yang berfungsi sebagai perlindungan yang valid.

Ada kemungkinan bahwa catatan yang ditampilkan akan tetap berada di gambar pengalih aplikasi. Mengenkripsi Outbox tidak menyembunyikan gambar layar. Perbaiki penjelasan "selalu sembunyikan isi memo" di versi lama artikel ini.

3. ephemeral URLSession: Kurangi penyimpanan disk dalam cache komunikasi

URLSession standar menyimpan cache, cookie, dan informasi otentikasi di disk. Ini adalah fitur yang berguna untuk aplikasi umum, tetapi tidak diperlukan untuk aplikasi memo dan dapat menjadi risiko.

Jika cache komunikasi tetap ada di terminal, itu berarti ada jejak pada disk yang URL diakses dan kapan. Jika cookie disimpan, itu berarti bahwa informasi sesi akan tetap ada di terminal.

Gunakan URLSessionConfiguration.ephemeral di aplikasi ini.

private let session: URLSession = {
    let config = URLSessionConfiguration.ephemeral
    config.httpCookieAcceptPolicy = .never
    config.httpShouldSetCookies = false
    config.urlCache = nil
    return URLSession(configuration: config)
}()
  • Tidak ada cache disk:Jangan menyimpan cache Sesi URL ini ke disk
  • Nonaktifkan penggunaan cookie:Sesi URL ini tidak menerima cookie dan tidak mengatur permintaan
  • Pengabsahan cache URL:Atur penyimpanan cache itu sendiri ke nil
  • Konfigurasi yang tidak menggunakan penyimpanan persisten: Jangan menyimpan informasi sesi URLSession di disk

Ini adalah perlindungan yang terkait dengan cache URLSession, dll., dan bukan fungsi yang menghilangkan peristiwa penggunaan yang disimpan aplikasi dan ditransmisikan secara terpisah atau catatan transmisi di sisi server. Asosiasi dengan pengidentifikasi analisis penggunaan juga dilakukan secara terpisah dari pengaturan ini.

4. Rentang keluaran log pengukuran kinerja

Keluaran log dari PerformanceLogger dikelilingi oleh #if DEBUG. Dalam build di mana DEBUG tidak ditentukan, pemrosesan keluaran log dari logger ini tidak disertakan.

logError pencatat ini mencatat jenisnya, bukan pernyataan terperinci dari kesalahan tersebut. Misalnya, gunakan tipe URLError dan jangan lepaskan localizedDescription apa adanya, yang mungkin berisi jalur file dan input pengguna.

Di sisi lain, ini bukan mekanisme yang secara otomatis membahayakan semua nama acara dan string tambahan yang diteruskan ke logEvent. Penting untuk tidak memberikan alamat email, badan memo, atau informasi otentikasi kepada penelepon.

Penjelasan ini tidak akan diperluas ke jaminan "nol log" untuk seluruh aplikasi, SDK eksternal, dan OS. Transmisi acara penggunaan internal dan AppsFlyer diaktifkan sebagai mekanisme terpisah. Ruang lingkup akuisisi akan dijelaskan dalam FAQ analisis penggunaan artikel ini dan Kebijakan Privasi.

5. AES-GCM Enkripsi Outbox Jangkauan Perlindungan

Memo yang menunggu untuk dikirim dikelola dalam antrian yang disebut Outbox di terminal. Saat menyimpan, gunakan CryptoKit Apple untuk mengenkripsi dengan AES-GCM. Kunci enkripsi baru dihasilkan dengan bit 256.

Kunci disimpan di Keychain dengan kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly. Pengaturan ini memungkinkan akses setelah perangkat pertama kali dibuka kuncinya seusai dimulai ulang, hingga perangkat dimulai ulang lagi. Pemulihan cadangan ke perangkat lain tidak memindahkan kunci tersebut. Aplikasi membaca kunci untuk melakukan enkripsi dan dekripsi.

Ini adalah perlindungan data yang disimpan, bukan untuk menyembunyikan layar yang ditampilkan atau memastikan keamanan dari semua pelanggaran terminal. Sebelum mengubah model, harap pastikan bahwa catatan yang diperlukan telah mencapai alamat penyimpanan.

Saat menggunakan transmisi email, teks diproses oleh Relay API kami dan platform pengiriman, dan tetap sebagai email di kotak masuk. Enkripsi di terminal tidak berarti enkripsi ujung ke ujung (E2EE) untuk pengiriman surat. Detail dijelaskan dalam Kebijakan Privasi dan Jalur Data.

Mengirim antrian, lihat Penjelasan arsitektur Outbox.

6. Perlindungan isi memo dan peran SDK eksternal

Di aplikasi iOS, gunakan CryptoKit untuk mengenkripsi isi memo, Keychain untuk penyimpanan kunci, dan URLSession untuk mengirimkan teks. Network.framework memantau status koneksi, dan BackgroundTasks bertanggung jawab untuk menjadwalkan transmisi latar belakang.

Di sisi lain, aplikasi ini juga menggunakan SDK eksternal. GoogleSignIn dan Firebase Authentication digunakan untuk secara otomatis memasukkan email sewenang-wenang dengan akun Google, dan Pemeriksaan Aplikasi Firebase diinisialisasi saat startup untuk melindungi backend API. AppsFlyer digunakan untuk akuisisi dan analisis penggunaan, dan menetapkan pengidentifikasi instalasi yang umum untuk analisis Anda sendiri.

Meskipun desainnya tidak menyertakan badan memo dalam item acara, asosiasi pengidentifikasi dan catatan transmisi tetap ada. Ruang lingkup analisis penggunaan, termasuk SDK, perlu dikonfirmasi secara terpisah dari enkripsi teks. Item dan penggunaan dijelaskan dalam Kebijakan Privasi.

7. Tentukan cakupan perlindungan

Enkripsi di terminal, penanganan cache komunikasi, dan analisis pemanfaatan masing-masing memiliki peran yang berbeda. Bahkan dengan enkripsi Outbox dan URLSession fana, kumpulan acara penggunaan tidak hilang.

Hargai kemampuan untuk meninggalkan catatan dengan cepat dan kemampuan untuk memahami informasi yang Anda peroleh. Jelaskan tujuan, pengidentifikasi, dan cakupan asosiasi analisis penggunaan, dan tinjau sesuai dengan perubahan di aplikasi.

Pertanyaan umum

Q. Apakah isi memo akan disimpan di server?
Saat mengirim email, teks akan melewati Relay API kami dan platform pengiriman. Relay API kami tidak menyimpan teks secara permanen kecuali ada kebutuhan yang sah untuk kepatuhan hukum atau respons kegagalan. Ini berbeda dengan menyimpan di kotak surat tujuan pengiriman. Deskripsi dari setiap tujuan penyimpanan adalahDesain privasi.
Q. Apakah aplikasi tersebut mengenkripsi komunikasi?
Ya. HTTPS digunakan untuk komunikasi API. Sesi URL Ephemeral adalah konfigurasi yang tidak menyimpan cache, cookie, dan informasi otentikasi sesi secara permanen di disk. Itu tidak menghilangkan analisis penggunaan dan catatan sisi server yang dilakukan secara terpisah.
Q. Jika saya kehilangan terminal saya, apakah memo itu aman?
Outbox dienkripsi dengan AES-GCM sebelum disimpan, dan kunci baru dibuat dengan panjang 256 bit. Kunci menggunakan kelas perlindungan Keychain yang mencegahnya dipindahkan ke perangkat lain. Namun, perlindungan ini tidak mencakup isi yang sedang ditampilkan di layar atau email di tujuan pengiriman. Enkripsi pada perangkat saja tidak menjamin keamanan seluruh informasi jika perangkat hilang.
Q. Apakah ada analisis atau pelacakan?
Ya. Kami menggunakan analisis penggunaan kami sendiri dan AppsFlyer SDK. Pengidentifikasi instalasi acak, pengidentifikasi sesi, jenis dan waktu acara, versi aplikasi, hasil transmisi, dll. akan dikirim ke analisis kami sendiri. AppsFlyer mengirimkan acara seperti transmisi memo awal yang berhasil, otentikasi yang berhasil, tampilan layar penagihan, pemilihan paket, dan keberhasilan pembelian, dan jumlah, mata uang, periode, dll. dapat ditambahkan pada saat pembelian. Pengidentifikasi instalasi yang sama juga ditetapkan untuk ID Pengguna Pelanggan AppsFlyer, sehingga informasi akuisisi dan acara penggunaan dapat dikaitkan. Item acara yang ditetapkan dari aplikasi tidak secara langsung menyertakan alamat email, badan memo, atau kode otentikasi, tetapi ID pengirim dari analisis internal ditautkan ke hash alamat email tujuan, jadi itu bukan informasi yang sepenuhnya anonim. Untuk detailnyaLangkah-langkah teknis untuk kebijakan privasi.
Q. Bagaimana Anda menggunakan kerangka kerja asli Apple dan SDK eksternal secara terpisah?
iOS Gunakan CryptoKit dan Keychain untuk mengenkripsi dan menyimpan teks memo di aplikasi, dan mengirim teks melalui URLSession. Di sisi lain, SDK eksternal digunakan untuk masuk Google, perlindungan back-end oleh Firebase, dan analisis akuisisi dan penggunaan oleh AppsFlyer. Perlindungan teks dan analisis penggunaan dengan pengidentifikasi dijelaskan secara terpisah.