Penjelasan kanonik tentang Enkripsi dan Kerentanan Android

16

Catatan: Ya, hadiahnya sudah kadaluwarsa dan satu alasan yang mungkin bisa menjadi upaya yang diperlukan untuk mengatasinya ketika saya mengumpulkan komentar. Melihat jumlah upvotes, tampaknya juga menarik bagi orang lain. Saya masih ingin mendapatkan jawaban jadi inilah yang saya usulkan - jawaban yang baik dalam sebulan, akan mendapat bonus 50. Ini akan saya harap berikan waktu dan insentif yang memadai


Saya telah mencoba untuk memahami proses Enkripsi Android dan kerentanannya untuk sementara waktu

Ada banyak pertanyaan yang membahas bagian dari topik ini di situs ini dan juga di situs saudara. Untuk mengarahkan poin saya ke rumah, pertanyaan-pertanyaan ini membahas bagian - bagian dan bukan keseluruhan (mengingatkan pada " orang buta dan gajah ?" :)

Pemahaman saya (atau kesalahpahaman?)

  1. Kata sandi enkripsi dihasilkan dari kombinasi PIN layar kunci pengguna dan algoritma enkripsi (di situlah letak kelemahan yang melekat karena panjang PIN yang terbatas)
  2. Ini asin , dan disimpan di lokasi root, tidak dapat diakses oleh pengguna
  3. Ini digunakan untuk menghasilkan kata sandi aktual untuk mengenkripsi / mendekripsi dan kata sandi yang sebenarnya disimpan dalam RAM
  4. Ini diperkuat dengan menghubungkan Langkah 1 ke perangkat SoC ( Versi Android mana? Yang merupakan elemen perangkat keras yang secara unik mengidentifikasi perangkat? Bisakah itu diganti dengan yang palsu? )
  5. Oleh karena itu, tidak mungkin untuk mendekripsi data tanpa kunci dan perangkat enkripsi (berlaku untuk SD eksternal juga)
  6. Metode pemulihan yang memungkinkan - brute force, menangkap informasi RAM (langkah 3) untuk mendapatkan kunci
  7. Perangkat yang di-root tampaknya lebih rentan untuk mengakses data langkah 2 melalui pemulihan kustom / mungkin ROM dan flashing kernel ?? ( Jika benar, mengapa ini tidak disebut-sebut sebagai risiko besar? )
  8. Bahkan jika informasi ini diperoleh, saya menduga itu adalah upaya yang tidak sepele untuk menghasilkan kata sandi yang sebenarnya
  9. Marshmallow dapat memperlakukan SD eksternal sebagai "penyimpanan internal" atau "penyimpanan portabel". Logikanya, seharusnya tidak membuat perbedaan tetapi saya tidak yakin

Ada kesenjangan dalam pemahaman saya, mungkin kehilangan aspek kunci lainnya juga.

Jadi, saya mencari penjelasan kanonik untuk pemahaman dari perspektif pengguna

  • Seluruh proses enkripsi (termasuk SD eksternal)

  • Variasi implementasi lintas versi Android - dari KitKat ke Marshmallow (termasuk opsi ganda untuk SD eksternal di Marshmallow)

  • Kerentanan pada tingkat pengguna

Catatan

  • Saya menyadari risiko pertanyaan yang dianggap terlalu luas tetapi IMO menjamin perawatan yang komprehensif
  • Memiliki pengalaman dalam keamanan komunikasi, saya memahami tantangan dalam menerjemahkan konsep-konsep kriptografi ke tingkat pengguna. Saya lebih suka jawaban untuk mengatasi ini, dengan petunjuk penjelasan untuk pemahaman yang lebih dalam. Contoh proses tidak harus benar secara kriptografis dalam arti yang ketat tetapi harus menyampaikan esensi

  • Kemungkinan keuntungan bisa "menipu" pertanyaan di masa depan pada aspek terkait

  • Dengan biaya pengulangan, jawaban harus terutama di tingkat pengguna , tetapi dengan penjelasan yang memadai untuk pemahaman yang lebih dalam. Membagi jawaban menjadi dua bagian mungkin merupakan cara yang cocok.

  • Saya akan membuat jawaban yang sepele / kasual / tambal sulam untuk mendorong jawaban yang komprehensif

beeshyams
sumber
1
Komentar bukan untuk diskusi panjang; percakapan ini telah dipindahkan ke obrolan . //Ini mungkin lebih cocok untuk Keamanan . Saya juga berpikir itu terlalu luas karena sebagian besar dari apa yang Anda tanyakan tergantung pada perangkat keras tertentu dan bagaimana produsen mengimplementasikannya.
Matius Baca

Jawaban:

3

Saya membayangkan itu bekerja seperti ini:

  • Penyimpanan dienkripsi menggunakan kunci acak sinkron.
  • Ketika pengguna memilih atau mengubah kata sandi yang didasarkan pada input apa pun, baik itu kata sandi yang terdiri dari huruf dan angka dan karakter, atau berupa kode pin, atau swipe pola, atau sidik jari, atau input lain apa pun, enkripsi asinkron. Algoritma digunakan untuk mengenkripsi kunci master, sehingga identifikasi yang benar akhirnya mendekripsi input yang menghasilkan kunci master, yang pada gilirannya memungkinkan untuk mengenkripsi dan mendekripsi penyimpanan.
  • Saat pengguna logout, memori yang menahan kunci master ditimpa

Trik besar di sini adalah enkripsi kunci master yang tidak sinkron. Setelah Android memiliki kunci master, ia memiliki kemampuan untuk bertukar data dengan penyimpanan. Hanya ketika pengguna masuk, kunci master itu diketahui. Enkripsi asinkron adalah apa yang disebut enkripsi kunci publik. Apa yang terjadi adalah kunci publik mengenkripsi data (kunci utama dalam kasus ini), dan kunci pribadi mendekripsi data. Jangan bingung dengan enkripsi penyimpanan di sini. Penyimpanan hanyalah enkripsi yang sinkron. Di sana kunci yang sama digunakan untuk mengenkripsi dan mendekripsi. Tetapi penemuan / pengambilan kunci "master" itu, adalah masalah besar. Ini berarti bahwa jika pada satu titik Anda memiliki metode login yang lemah, seperti untuk intance "1234" sebagai kode PIN, dan Anda berubah pikiran, dan mengubah kode PIN ke "5364", yang lebih sulit ditebak, kecuali yang sebelumnya "1234 " dicuri, diintai, pada titik mana saja, keamanan menjadi lebih baik. Kesepakatan yang sama ketika mengubah metode login menjadi kata sandi penuh yang tidak mungkin ditebak atau diserang kamus. Penyimpanan itu sendiri tidak perlu dienkripsi ulang sama sekali. Ini semua tentang menyembunyikan kunci master - secara internal. Pengguna tidak pernah melihat kunci utama itu, karena kemungkinan besar hanya berupa kode hash acak - tidak ada yang akan "menemukan" atau "menebak" kode hash itu. Bahkan NSA atau badan keamanan lainnya di planet ini tidak akan pernah bisa menemukan kunci yang cocok seperti itu. Satu-satunya vektor serangan berharap kelemahan pada bagian pengguna. Mungkin pengguna memilih kode PIN masuk. Jika 4 digit, maka maksimum 10.000 kode mungkin. OS mungkin "memblokir" perangkat setelah mencoba beberapa dalam waktu singkat. Solusinya adalah "meretas" OS, sehingga menjadi mungkin untuk mencoba semua kode mungkin tanpa OS mengintervensi dan memblokir perangkat. Saya percaya itulah cara FBI akhirnya mendapatkan akses ke telepon penjahat. Perusahaan pihak ketiga (beberapa perusahaan Israel dari yang saya ingat) melakukan peretasan untuk FBI saya pikir. Mereka melewati batas coba-kode pin. Jika login adalah kata sandi penuh, dan jika pengguna memilih kata sandi yang kuat, dan Anda sol. Tidak dalam waktu hidup dengan semua kekuatan cpu di planet ini akan meretas itu dalam sejuta tahun. Saya tidak membeli NSA yang dapat mendekripsi rumor apa pun. Saya pikir orang-orang itu terlalu banyak menonton film hitam pekat. Yang harus dilakukan adalah melihat dokumen-dokumen ilmiah tentang berbagai algoritma enkripsi (mis. AES), dan Anda akan tahu bahwa peretasan tidak akan terjadi, kecuali di masa lalu ketika ada 40 bit kunci. Hari-hari itu sudah lama berlalu. Saya kira AES128 sudah tidak dapat dibelokkan, dan jika ada yang khawatir, melompat ke AES256 membuatnya lebih aman dengan besarnya hingga ukuran alam semesta cukup banyak. Mungkin suatu hari komputer kuantum dapat mendekripsi, tapi saya ragu. Tidak yakin apakah mungkin memiliki sistem probabilitas, cukup sorot solusinya. Kita akan melihatnya nanti. Mungkin itu beberapa masa hidup lagi pula. Tidak ada yang perlu dikhawatirkan saat ini.

Jadi, pada akhirnya, batasan keamanan sepenuhnya terletak pada metode login yang digunakan. Orang dapat mengubah metode tanpa harus mengenkripsi ulang penyimpanan. Semua ini karena enkripsi kunci publik asinkron dari kunci master.

Mike
sumber
Saya pikir maksud Anda "simetris" dan "asimetris". Bukan "sinkron" dan "asinkron".
Jay Sullivan
1

Karena pembaruan sering terjadi, cara enkripsi pada telepon (OS berbasis Android) ditangani dapat berubah dari satu build ke yang berikutnya. Oleh karena itu, perhatian utama bukan pada enkripsi itu sendiri, tetapi di mana proses berjalan. Dan jika platform itu memiliki kerentanan, maka kekuatan algoritma enkripsi itu sendiri menjadi sedikit atau tidak penting.

Pada dasarnya, setelah perangkat Anda mendekripsi file, file tersebut dapat langsung diakses oleh suatu proses dengan hak Super User. Proses ini dapat memperoleh akses ke perangkat Anda dengan mengeksploitasi kelemahan dalam ROM (Android OS) itu sendiri. (Ini baru-baru ini dalam berita karena beberapa kekurangan diekspos oleh WikiLeaks)

Perangkat yang di-root tampaknya lebih rentan untuk mengakses data langkah 2 melalui pemulihan kustom / mungkin ROM dan flashing kernel ?? (Jika benar, mengapa ini tidak disebut-sebut sebagai risiko besar?)

Sebelum melakukan root : Untuk melakukan root pada perangkat Anda harus menggunakan alat eksternal yang semuanya memiliki akses yang dalam ke struktur internal perangkat. Beberapa alat ini sudah dikompilasi dan bukan open source. Mereka memang memiliki situs web "resmi", tetapi siapa orang-orang ini? (twrp.me, supersu.com misalnya, tetapi ada yang lain seperti KingoRoot) Bisakah kita benar-benar mempercayai mereka? Saya percaya lebih dari yang lain. Misalnya KingoRoot menginstal sebuah program di komputer saya yang berperilaku seperti virus (harus menggunakan dual-boot untuk menghapusnya).

Setelah Anda melakukan rooting : memberikan program yang dikompilasi (APK) akses SU berarti dapat melakukan apa saja yang diinginkan tanpa batasan atau menyatakan niat yang akan digunakan. (Maksudnya adalah cara APK untuk mengakses hal-hal seperti WiFi, Kamera, dll.) Jadi "aplikasi tepercaya", setelah diberikan akses root, dapat dengan mudah mengakses segala jenis informasi dan mengirimkannya kembali ke servernya.

Apakah enkripsi perangkat lengkap melindungi data saya dari Google dan pemerintah?

Google - ya. Itu tidak memiliki kunci untuk membuka kunci.

Pemerintah (atau peretas) - no. karena Pemerintah atau peretas pada dasarnya dapat menggunakan exploit yang akan mencegat file seperti yang saya sebutkan di atas.

Kompleksitas prosedur / algoritma keamanan tidak banyak berguna jika dapat dicegat dan dilewati.

Sunting: Perlu disebutkan bahwa Google sebenarnya memiliki kemampuan untuk mengunduh dan menginstal / memperbarui aplikasi ke perangkat Android Anda tanpa meminta izin, atau bahkan memberi tahu Anda bahwa pembaruan telah terjadi. Dan bahkan pada perangkat yang di-rooting, tampaknya tidak ada cara untuk memblokir ini tanpa kehilangan fungsi tombol (Play Store, Maps, Sync, dll.)

Emil
sumber