76
T.C. BEYKENT ÜNİVERSİTESİ FEN BİLİMLERİ ENSTİTÜSÜ BİLGİSAYAR MÜHENDİSLİĞİ ANABİLİM DALI BİLGİSAYAR MÜHENDİSLİĞİ BİLİM DALI MOBİL İŞLETİM SİSTEMLERİNDE GÜVENLİK ( Yüksek Lisans Projesi ) Projeyi Hazırlayan: Fuat SAVAŞ İSTANBUL, 2015

Mobil i̇şletim sistemlerinde güvenlik

Embed Size (px)

Citation preview

Page 1: Mobil i̇şletim sistemlerinde güvenlik

T.C.

BEYKENT ÜNİVERSİTESİ

FEN BİLİMLERİ ENSTİTÜSÜ

BİLGİSAYAR MÜHENDİSLİĞİ ANABİLİM DALI

BİLGİSAYAR MÜHENDİSLİĞİ BİLİM DALI

MOBİL İŞLETİM SİSTEMLERİNDE GÜVENLİK

( Yüksek Lisans Projesi )

Projeyi Hazırlayan:

Fuat SAVAŞ

İSTANBUL, 2015

Page 2: Mobil i̇şletim sistemlerinde güvenlik

T.C.

BEYKENT ÜNİVERSİTESİ

FEN BİLİMLERİ ENSTİTÜSÜ

BİLGİSAYAR MÜHENDİSLİĞİ ANABİLİM DALI

BİLGİSAYAR MÜHENDİSLİĞİ BİLİM DALI

MOBİL İŞLETİM SİSTEMLERİNDE GÜVENLİK

( Yüksek Lisans Projesi )

Projeyi Hazırlayan:

Fuat SAVAŞ

Öğrenci No:

110820031

Danışman:

Yrd. Doç. Dr. Ediz ŞAYKOL

İSTANBUL, 2015

Page 3: Mobil i̇şletim sistemlerinde güvenlik

YEMİN METNİ

Yüksek lisans projesi olarak sunduğum “ Mobil İşletim Sistemlerinde Güvenlik ”

başlıklı bu çalışmanın, bilimsel ahlak ve geleneklere uygun şekilde tarafımdan

yazıldığını, yararlandığım eserlerin tamamının kaynaklarda gösterildiğini ve

çalışmamın içinde kullanıldıkları her yerde bunlara atıf yapıldığını belirtir ve bunu

onurumla doğrularım. ( 29.01.2015 )

Fuat SAVAŞ

Page 4: Mobil i̇şletim sistemlerinde güvenlik
Page 5: Mobil i̇şletim sistemlerinde güvenlik

TEŞEKKÜR

Proje çalışmalarım esnasında bana yardımcı olan proje danışmanım Beykent

Üniversitesi Yrd. Doç. Dr. Ediz ŞAYKOL'a ve manevi desteğini üzerimden hiç eksik

etmeyen rahmetli validem Ayşe SAVAŞ hanımefendiye teşekkür ederim.

Fuat SAVAŞ

Page 6: Mobil i̇şletim sistemlerinde güvenlik

I

MOBİL İŞLETİM SİSTEMLERİNDE GÜVENLİK

Projeyi Hazırlayan: Fuat SAVAŞ

ÖZET

Türkiye'de mobil cihaz kullanımının her geçen gün yaygınlaşmasıyla birlikte

kullanıcılar tıpkı masaüstü ve dizüstü bilgisayarlarda olduğu gibi mobil cihazlarda da

artık belli başlı özellikler aramaktadırlar. Bunlar; işletim sistemi, tasarım, alışkanlık

ve diğer teknik özelliklere göre değişmektedir. Fakat mesleki sebepler dışında

güvenlik konusunu umursayan pek kimse yok ne yazık ki.

Oysa Mobil uygulama geliştiricisi Lookout'un yayınladığı "2013 Mobil Güvenlik

Öngörüleri" başlıklı raporda web tabanlı mobil tehditler, 2013 yılı içinde

kullanıcıların en çok dikkat etmesi gereken tehditler arasında başta yer almaktadır.

Ortada yeterince kimsenin farkında olmadığı çok ciddi bir güvenlik riski

bulunmaktadır. Burada önemli olan henüz yeni gelişmekte olan bu mobil hacking

karşısında önlem almaktır.

Mobil cihazların hacklenmesiyle birlikte bilgisayarlardan farklı olarak telefon

rehberimiz, mesajlarımız, sosyal medya bilgilerimiz, mobil uygulamalardaki

verilerimizde tamamen kötü niyetli kişilerin eline geçebilecek. Bu muhtemel

sorunları telefonları kullanım amaçlarına göre çeşitlendirebiliriz.

Anahtar Kelimeler: Android, IOS, API, Sandbox, Linux.

Page 7: Mobil i̇şletim sistemlerinde güvenlik

II

SECURITY ON MOBILE OPERATING SYSTEMS

Prepared by Fuat SAVAŞ

ABSTRACT

Users demand some special features from mobile devices as in laptop and desktop

computers in line with gradually increasing usage of them. Those features vary

according to operating systems, designs, habits and other technical specialities.

However, nobody unfortunately cares about security issues except occupational

reasons. In fact, web based mobile threats comes first within the most noticable ones

indicated by the “Mobile Security Projections” report which has been published by

Lookout, mobile application developer.

There is a very important security risk outstanding that nobody be aware of. The

most important point is here to take measures against this newly developing mobile

hacking.

With the mobile hacking, unlike in computers, bad persons will be able to get our

telephone books, messages, social media user infos and our dats in mobile

applications. We can categorize those potential problems in terms of our aims to use

mobile devices.

Key Words: Android, IOS, API, Sandbox, Linux

Page 8: Mobil i̇şletim sistemlerinde güvenlik

III

İÇİNDEKİLER

ÖZET .............................................................................................. ............................ I

ABSTRACT ............................................................................................ ................. II

ŞEKİLLER LİSTESİ............................................................................................ VII

KISALTMALAR LİSTESİ .............................................................................. .. VIII

1. GİRİŞ ...................................................................................................................... 1

2. IOS GÜVENLİK .................................................................................................... 1

2.1. SİSTEM MİMARİSİ ..................................................................................... 2

2.1.1. GÜVENLİK ÖNYÜKLEME ZİNCİRİ .................................................. 2

2.1.2. SİSTEM YAZILIMI KİŞİSELLEŞTİRME ............................................. 3

2.1.3. UYGULAMA KOD İMZALAMA ......................................................... 4

2.1.4. ÇALIŞMA ZAMANI İŞLEM GÜVENLİĞİ .......................................... 5

2.2. AĞ GÜVENLİĞİ ........................................................................................... 7

2.2.1. SSL, TSL ................................................................................................. 7

2.2.2. VPN ......................................................................................................... 7

2.2.3. WI - FI ..................................................................................................... 8

2.2.4. BLUETOOTH ......................................................................................... 8

2.3. VERİ KORUMA VE ŞİFRELEME ............................................................. 9

2.3.1. DONANIM VE GÜVENLİK ÖZELLİKLERİ ........................................ 9

2.3.2. DOSYA VERİLERİNİ KORUMA ........................................................ 10

2.3.3. GEÇİŞ KODLARI ................................................................................. 11

2.3.4. ANAHTARLIK VERİ KORUMA ........................................................ 14

2.3.5. KEYBAGS ........................................................................................... 16

2.4. CİHAZ ERİŞİMİ ......................................................................................... 18

2.4.1. GEÇİŞ KODU KORUMASI ................................................................. 18

Page 9: Mobil i̇şletim sistemlerinde güvenlik

IV

2.4.2. YAPILANDIRMA UYGULAMA ........................................................ 19

2.4.3. MOBİL CİHAZ YÖNETİMİ ................................................................. 20

2.4.4. APPLE YAPILANDIRICISI ................................................................. 21

2.4.5. CİHAZ KISITLAMALARI ................................................................... 21

2.4.6. UZAKTAN SİLME ............................................................................... 22

3. ANDROID GÜVENLİK ................................................................................. 23

3.1. GİRİŞ ....................................................................................................... 23

3.1.1. ANDROID GÜVENLİK GENEL BAKIŞ ....................................... 23

3.1.2. ANDROID GÜVENLİK MİMARİSİ ................................................ 25

3.2. SİSTEM VE ÇEKİRDEK GÜVENLİK DÜZEYİ ................................ 26

3.2.1. LINUX GÜVENLİK .......................................................................... 26

3.2.2. APPLICATION SANDBOX ............................................................. 27

3.2.3. SİSTEM BÖLÜMÜ VE GÜVENLİ MOD ....................................... 28

3.2.4. DOSYA SİSTEMİ İZİNLERİ ........................................................... 28

3.2.5. ŞİFRELEME ..................................................................................... 29

3.2.6. BELLEK YÖNETİMİ GÜVENLİK GELİŞTİRMELERİ ................ 29

3.2.7. CİHAZLARIN KÖKLEŞMESİ ........................................................ 32

3.2.8. KULLANICI GÜVENLİK ÖZELLİKLERİ ..................................... 33

3.2.8.1. DOSYA SİSTEMİ ŞİFRELEME ................................................ 33

3.2.8.2. PAROLA KORUMASI ............................................................... 34

3.2.8.3. CİHAZ YÖNETİMİ .................................................................... 34

3.3. ANDROID UYGULAMA GÜVENLİĞİ ................................................ 35

3.3.1. UYGULAMANIN UNSURLARI ....................................................... 35

3.3.2. ANDROID İZİN MODELİ: ERİŞİM KORUMALI API' LER .......... 36

3.3.3. KULLANICILAR 3.PARTİ UYGULAMALARI NASIL ANLAR ... 38

3.3.4. İŞLEMLERARASI İLETİŞİM ........................................................... 39

Page 10: Mobil i̇şletim sistemlerinde güvenlik

V

3.3.5. MALİYET DUYARLI API' LER ....................................................... 40

3.3.6. SIM KART ERİŞİM ............................................................................ 40

3.3.7. KİŞİSEL BİLGİLER ........................................................................... 40

3.3.8. HASSAS VERİ GİRİŞ CİHAZLARI ................................................. 41

3.3.9. UYGULAMA İMZALAMA ............................................................... 42

3.3.10. UYGULAMA DOĞRULAMASI ..................................................... 42

3.3.11. DİJİTAL HAKLAR YÖNETİMİ ...................................................... 43

3.4. ANDROID GÜNCELLEMELERİ ............................................................... 43

3.5. GÜVENLİK İPUÇLARI ............................................................................... 44

3.5.1. VERİ DEPOLAMA ................................................................................... 45

3.5.1.1. DAHİLİ DEPOLAMAYI KULLANMAK ....................................... 45

3.5.1.2. HARİCİ DEPOLAMAYI KULLANMAK ....................................... 46

3.5.1.3. İÇERİK SAĞLAYICILARI KULLANMAK ................................... 46

3.5.2. İZİNLERİ KULLANMA .......................................................................... 47

3.5.2.1. İZİNLERİ İSTEMEK ........................................................................ 47

3.5.2.2. İZİNLERİ OLUŞTURMAK ............................................................. 48

3.5.3. AĞ KULLANMA .................................................................................... 49

3.5.3.1. IP AĞI KULLANMA .......................................................................... 49

3.5.3.2. TELEFON AĞI KULLANMA ........................................................... 49

3.5.4. GİRİŞ DOĞRULAMASI GERÇEKLEŞTİRME ................................ 50

3.5.5. KULLANICI VERİLERİ İŞLEME ...................................................... 50

3.5.5.1. WEBVIEW KULLANARAK ............................................................ 52

3.5.5.1.1. KİMLİK BİLGİLERİ KULLANARAK ..................................... 52

3.5.5.2. ŞİFRELEME KULLANARAK ...................................................... 53

3.5.5.3. İŞLEMLERARASI İLETİŞİM KULLANARAK .............................. 54

3.5.5.3.1. NİYETLERİ KULLANARAK ................................................... 54

Page 11: Mobil i̇şletim sistemlerinde güvenlik

VI

3.5.5.3.2. SERVİSLERİ KULLANARAK ................................................. 55

3.5.5.3.3. BINDER / MESSENGER ARABİRİMLERİ KULLANARAK 55

3.5.5.3.4. YAYIN ALICILARI KULLANARAK ...................................... 56

3.5.6. DİNAMİK YÜKLEME KODU ................................................................. 56

3.5.7. SANAL MAKİNEDE GÜVENLİK ......................................................... 57

3.5.8. YEREL KOD GÜVENLİĞİ ..................................................................... 58

4. SÖZLÜK .............................................................................................................. 58

SONUÇ VE ÖNERİLER ........................................................................................ 61

KAYNAKLAR ........................................................................................................ 62

Page 12: Mobil i̇şletim sistemlerinde güvenlik

VII

ŞEKİLLER LİSTESİ

ŞEKİL 1. ANDROID YAZILIM YIĞINI ................................................................ 26

ŞEKİL 2. UYGULAMA İÇİN İZİNLER GÖSTERİMİ ........................................... 37

ŞEKİL 3. HASSAS KULLANICI VERİLERİNE ERİŞİM ..................................... 41

ŞEKİL 4. DİJİTAL HAKLAR YÖNETİMİNİN MİMARİSİ .................................. 43

Page 13: Mobil i̇şletim sistemlerinde güvenlik

VIII

KISALTMALAR LİSTESİ

API : Application Programming Interface (Uygulama Programlama Arabirimi)

IPC : Inter Process Communication ( İşlemler Arası İletişim )

SSP : System Software Personalization ( Sistem Yazılımı Kişiselleştirme )

OTA : Over The Air ( Şebeke Üzerinden )

GCM : Galois Counter Mode ( Galois Sayaç Modu )

MDM : Mobile Device Management ( Mobil Cihaz Yönetimi )

SDK : Software Development Kit ( Yazılım Geliştirme Kiti )

LLB : Low Level Bootloader ( Düşük Seviye Önyükleme Yükleyicisi )

DFU : Device Firmware Upgrade ( Cihaz Yazılım Yükseltmesi )

RNG : Random Number Generator ( Rastgele Sayı Üreteci )

APK : Android Package ( Android Paketi )

OEM : Original Equipment Manufacturer ( Orijinal Ekipman Üreticisi )

RIL : Radio Interface Layer ( Radyo Arabirimi Katmanı )

NDA : Non-Disclosure Agreement ( Gizlilik Sözleşmesi )

GID : Group Identity Device ( Aygıt Grup Kimliği )

DRM : Dijital Rights Management ( Dijital Haklar Yönetimi )

ARM : Acorn Risc Machine ( Acorn Risk Makinesi )

UID : Unique Identity Device ( Cihazın Benzersiz Bir Kullanıcı Kimliği )

ECID : Device Unique Identity Device (Cihazın Benzersiz Kullanıcı Kimliği )

SKAG : Shared Keychain Access Groups (Paylaşılan Anahtarlık Erişim Gruplar)

ASLR : Address Space Layout Randomization (Adres Alanı Düzeni Rastgelesi)

UI : User Interface ( Kullanıcı Arabirimi )

IV : Initialization Vector ( Başlangıç Vektörü )

APNS : Apple Push Notification Service ( Apple Push Bildirim Hizmeti )

Page 14: Mobil i̇şletim sistemlerinde güvenlik

1

1.GİRİŞ

Mobil İşletim Sistemleri, akıllı telefonlar ve tablet bilgisayarlar için üretilmiş

yazılımlardır. Bugün dünyada en yaygın ve bilinenleri IOS ve Android'tir. Bu iki

işletim sistemi dışında 3.cü olarak Windows Phone bulunmaktadır. Ayrıca, Firefox

4.cü olarak mobil işletim sistemi piyasasına güçlü bir giriş yapmak için

hazırlanmaktadır. IOS yalnızca Apple ve Windows Phone yalnızca Sony Ericsson

akıllı telefonlarında kullanılırken Android ise Samsung, Htc, Huawei, LG, Acer ve

General Mobile gibi birçok akıllı telefonda kullanılmaktadır. Böylelikle, pazarın

aslan payına sahiptir fakat IOS'ta Apple çatısı altında olmasının avantajıyla hatırı

sayılır bir paya sahiptir.

Android, açık kaynak kodlu bir yazılım olduğu için birçok yazılımcı tarafından da

sempati görmektedir. IOS'un, her ne kadar yerleşik güvenlik önlemleri bakımından

daha güvenli olduğu söylense de Android cihazların kullanımının kolaylığı hakkında

kullanıcılar arasında fikirbirliği vardır.

Her iki işletim sistemi de kendilerinin kullanıcı güvenliğini sağlama da daha

güvenilir olduklarını belirtselerde kullanıcıların ezici bir çoğunluğunun birçok dahili

ve harici olmak üzere birçok güvenlik önleminden habersiz oldukları bilinen bir

gerçektir. Kullanıcılar, akıllı telefonlarını sosyal medya, ücretsiz sohbet uygulamaları

ve kamera / fotoğraf makinesi olarak kullanmaktan ibaret gördüğü için veri güvenliği

konusunda duyarsızdır. Hangi işlev için kullanılır olursa olsun bilinçsiz kullanım

sonucunda mail, mesaj, rehber, banka, adres, fotoğraf, bireysel ve kurumsal tüm bilgi

ile belgelerin kötü niyetli insanların eline geçmesi ciddi bir risktir.

2. IOS GÜVENLİK

Mobil cihazlarda bilgi güvenliği ister kişisel ister kurumsal kullanıcı için olsun

oldukça önemlidir. Çünkü; müşteri veya kullanıcı, kişisel veya kurumsal

farketmeksizin bilgilerini depolamaktadır. IOS cihazlar, her kullanıcının bilgisinin

güvenli olması gerektiğinden yola çıkarak güçlü güvenlik teknolojileri sağlamaktadır

ve aynı zamanda kullanımı kolaydır. Cihazlar, güvenliği mümkün olduğunca şeffaf

yapmak için tasarlandığından güvenlik özelliklerinin çoğu varsayılan olarak etkindir

bu yüzden bilgi teknolojisi departmanları kapsamlı yapılandırmalar gerçekleştirmeye

ihtiyaç duymaz. Örneğin; cihaz şifreleme gibi bazı temel özellikler yapılandırılabilir

değildir, böylelikle kullanıcılar yanlışlıkla bunları devre dışı bırakamaz [5].

Page 15: Mobil i̇şletim sistemlerinde güvenlik

2

IOS cihazlar güvenlik katmanlarıyla tasarlanmıştır. Düşük düzey donanım ve

yazılım özellikleri, kötü amaçlı yazılımlara ve virüslere karşı koruma sağlar. Üst

düzey işletim sistemi özellikleri, kişisel ve kurumsal bilgilerinize güvenli erişime izin

verir ve yetkisiz kullanım ile saldırıları önlemeye yardımcı olur. IOS güvenlik

modeli, mobil kullanım senkronizasyon ve 3.parti uygulamaları etkinleştirirken

bilgileri korur. Sistemin çoğu endüstri standardı güvenli tasarım ilkelerine dayanır.

2.1. SİSTEM MİMARİSİ

IOS cihazlarda yazılım ve donanımın sıkı entegrasyonu cihazın tüm katmanları

arasındaki faaliyetlerin onaylanmasına izin verir. IOS, yazılım yükleme ve 3.parti

uygulamalar sayesinde ilk açılıştan itibaren her bir aşamada her kaynağın düzgün

kullanıldığından ve faaliyetlerin güvenilir olduğundan emin olmak için analiz edilir

ve onaylanır [5].

Sistem çalışmaya başladıktan sonra bu entegre güvenlik mimarisi, XNU' nun

güvenilirliği ve bütünlüğüne bağlıdır. XNU, güvenlik özelliklerini zamanında

çalışmaya zorlar, üst düzey fonksiyonlar ve uygulamalara güvenmek için gereklidir.

2.1.1. GÜVENLİ ÖNYÜKLEME ZİNCİRİ

Açılış işleminin her adımı bütünlüğü sağlamak için Apple tarafından imzalanmış

şifreli bileşenleri içerir ve sadece güven zinciri doğruladıktan sonra devam eder. Bu

önyükleme yükleyiciler; çekirdek, çekirdek uzantıları ve baseband yazılım içerir.

Bir IOS cihaz açık olduğunda, uygulama işlemcisi hemen Boot ROM olarak bilinen

salt okunur bellek üzerinden kodu çalıştırır. Bu değişmez kod, çip üretim sırasında

koyulur ve dolaylı olarak güvenilirdir. Boot ROM kodu, LLB yüklemek için izin

vermeden önce Apple tarafından imzalanmış olduğunu doğrulamak için kullanılan

Apple Kök CA ortak anahtarı içerir. Bu, her adımın bir sonrakisinin Apple tarafından

imzalanmış olmasını sağlayan güven zincirinin ilk adımıdır. LLB görevlerini

bitirdiğinde, bu doğrular ve sonraki aşama Önyükleme yükleyicisi sırayla doğrular ve

IOS çekirdeği çalışır.

Bu güvenli önyükleme zinciri, bu yazılımın en düşük seviyelerinin tahrif

edilmemesini sağlar ve IOS yalnızca doğrulanmış Apple cihazları çalıştırmak için

izin verir [5].

Page 16: Mobil i̇şletim sistemlerinde güvenlik

3

Eğer bu önyükleme işleminin bir adımı yükleme veya sonrasında doğrulama

yapamıyorsa, boot-up durur ve cihaz "i-Tunes' a bağlayın" ekranını görüntüler. Bu

kurtarma modu olarak adlandırılır. Eğer Boot ROM bile, LLB yüklemek veya

doğrulamak için mümkün değilse DFU moduna girer. Her iki durumda da, cihaz

USB ile iTunes'a bağlanmalı ve varsayılan fabrika ayarlarına geri yüklenmelidir.

DFU MODUNA GİRME

DFU moduna, hem Home hem de Sleep / Wake tuşlarına basılı tutarken, USB

kablosu kullanarak cihazı bir bilgisayara manuel olarak bağlayarak girilebilir. 8

saniye geçtikten sonra Home tuşuna basılı tutmaya devam ederken Sleep / Wake

tuşunu serbest bırakın.

NOT: DFU modunda ekranda hiçbirşey görüntülenmeyecek. Apple logosu

görülürse Sleep / Wake tuşuna uzun süre basılı tutun. Geri yüklenen bir cihaz DFU

moduna girdikten sonra yalnızca Apple imzalı değiştirilmemiş mevcut kod ile

kesinlikle bilinen iyi bir duruma geri döner.

2.1.2. SİSTEM YAZILIMI KİŞİSELLEŞTİRME

Apple, ortaya çıkan güvenlik endişelerini gidermek için düzenli olarak yazılım

güncellemeleri yayımlar. Bu güncellemeler, destekleyen tüm cihazlar için aynı anda

sağlanır.

Kullanıcılar; cihaz üzerinde ve iTunes üzerinden IOS güncelleme bildirimlerini alır

ve güncellemeler kablosuz olarak teslim edilir, son güvenlik düzeltmeleri hızla

benimsenir.

Yukarıda açıklanan önyükleme işlemi, sadece Apple imzalı kodun bir cihazda yüklü

olmasını sağlar. Cihazları en son güvenlik güncelleştirmelerinden yoksun eski

sürümlere döndürmemek için, IOS SSP denilen bir işlem kullanır. Eğer gerileştirme

mümkün olsaydı, bir saldırgan IOS'un eski bir sürümünü yükleyebilir ve cihazın yeni

sürümde elde ettiği giderilmiş olan bir güvenlik açığından yararlanabilirdi.

IOS yazılım güncellemeleri iTunes kullanarak veya cihaz üzerindeki OTA üzerinden

yüklenebilir. iTunes ile IOS'un tam bir kopyası indirilir ve yüklenir. OTA yazılım

güncelleştirmeleri ağ verimliliği için deltalar gibi sağlanmaktadır.

Page 17: Mobil i̇şletim sistemlerinde güvenlik

4

IOS yükleme veya yükseltme sırasında, Apple kurulum yetkilendirme sunucusuna

bağlanır ve ECID, rastgele bir antireplay değeri ve yükleme paketinin yüklenecek her

bölümü ( LLB, iBoot, çekirdek ve OS görüntü ) için şifreleme ölçümlerinin listesini

gönderir.

Sunucu, sürümlere karşı yükleme izni için ölçümlerin sunulan listesini denetler, eğer

bir eşleşme bulursa, ölçüme ECID ekler ve sonucu imzalar. İmzalanan verilerin

komple tam dizisi, sunucudan yükleme veya yükseltme sürecinin bir parçası olarak

cihaza geçirilir. ECID ekleme, talep eden cihaz için "kişiselleştiren"

yetkilendirmedir. Sunucu, bilinen ölçümler için yetkilendirerek ve sadece

imzalayarak Apple tarafından sağlanan güncelleştirmenin tam olmasını sağlar.

Önyükleme süresi; imza ile kaplı eşleşme, cihazın benzersiz kimliği ile birlikte

diskten yüklenen öğenin ölçümü ve Apple'den imzalı gelen güven değerlendirme

zincirini doğrular.

Bu adımlar yetkilendirme sağlar ve belirli bir cihaz için eski bir IOS sürümü bir

cihazdan diğerine kopyalanamaz. Antireplay, saldırganın sunucunun yanıtını

kaydetmesini ve bunu kullanarak kullanıcının cihazı gelecekte downgrade için

kullanmasını önler.

2.1.3. UYGULAMA KOD İMZALAMA

IOS çekirdek başladıktan sonra, kullanıcı işlemlerini ve uygulamaları çalıştırmayı

kontrol edebilir. Tahrif edilmemiş, bilinen ve onaylanmış bir kaynaktan gelen tüm

uygulamaları sağlamak için IOS ile Apple tarafından verilmiş bir sertifikayı

kullanarak tüm kod çalıştırılabilir. 3.parti uygulamalar doğrulanmış ve Apple

tarafından verilmiş bir sertifika kullanılarak imzalanmış olmalıdır. Zorunlu kod

imzalama, işletim sistemi uygulamaları için güven zinciri kavramını genişletir.

3.parti uygulamalar, imzasız kod kaynakları veya kendini değiştiren kodu kullanarak

yüklenmesini engeller.

Geliştiriciler, IOS cihazlarda uygulamalar kurmak ve geliştirmek için Apple ile kayıt

olmalı ve IOS geliştirici programına katılmalıdır. Her geliştiricinin gerçek dünyadaki

kimliği, ister bir birey veya faaliyet olsun onların sertifikası verilmeden önce Apple

tarafından doğrulanır [5].

Page 18: Mobil i̇şletim sistemlerinde güvenlik

5

Bu sertifika uygulamaları imzalamak için geliştiricilere olanak sağlar ve onları

dağıtım için Apple Store'a teslim eder. Sonuç olarak, Apple Store'daki tüm

uygulamalar, kötü niyetli uygulamalar oluşturulması için bir caydırıcı olarak hizmet

veren tanımlanabilir bir kişi veya kuruluş tarafından teslim edilmiştir.

İşletmeler ayrıca şirket içi uygulamaları kendi bünyesinde kullanılmak üzere

çalışanlara dağıtmak için yazma yeteneğine sahiptir. İşletmeler ve kuruluşlar, bir D-

U-N-S numarası ile IOS geliştirici Enterprise programına başvurabilir. Apple, kimlik

ve uygunluğunu kontrol ettikten sonra başvuruyu onaylar. Bir organizasyon IDEP

üyesi olduktan sonra, bu yetki cihazlarda çalıştırmak için organizasyon içi

uygulamalara izin veren bir "hazırlama profili" elde etmek için kayıt olunabilinir.

Kullanıcılar, organizasyon için uygulamaları çalıştırmak için hazırlama profili yüklü

olmalıdır. Bu yalnızca, kuruluşun hedeflenen kullanıcıların IOS cihazlar üzerine

uygulamaları yüklemesinin mümkünlüğünü sağlar.

Diğer mobil platformların aksine IOS, kullanıcıların kötü amaçlı imzasız

uygulamaları web sitelerinden yüklemeye veya güvenilmeyen kod çalıştırmasına izin

vermez. Çalışma zamanında, bir uygulamanın son güncelleme veya yüklemeden

sonra değiştirilmemişliğini sağlamak için onları yüklü oldukları gibi tüm

çalıştırılabilir bellek sayfalarının kod imza kontrolleri yapılır.

2.1.4. ÇALIŞMA ZAMANI İŞLEM GÜVENLİĞİ

Bir uygulama onaylanmış bir kaynaktan doğrulandıktan sonra, IOS diğer

uygulamalar veya sistemin geri kalanını garantiye almak için güvenlik önlemlerini

güçlendirir.

Tüm 3.parti uygulamalar "sandboxed" yani korumalıdır, bu yüzden onların diğer

uygulamalar tarafından depolanan dosyalara erişmesi veya cihazda değişiklik

yapması kısıtlıdır. Bu, uygulamaların diğer uygulamalar tarafından depolanan

bilgileri değiştirmelerini veya toplamalarını engeller. Her uygulamanın, dosyaları

için uygulama kurulduğunda rastgele atanmış benzersiz bir giriş dizini vardır.

Bir 3. parti uygulamanın kendi dışındaki bilgilere erişmesi gerekiyorsa sadece

API'ler ve IOS tarafından sağlanan hizmetleri kullanarak yapar. Sistem dosyaları ve

kaynakları da kullanıcının uygulamalarından korumalıdır. IOS çoğunluğu, tüm

3.parti uygulamaları gibi ayrıcalıklı olmayan "mobil" kullanıcı gibi çalışır.

Page 19: Mobil i̇şletim sistemlerinde güvenlik

6

Tüm işletim sistemi bölümü salt okunur monte edilmiştir. Böyle uzaktan oturum

açma hizmetleri gibi gereksiz araçlar sistem yazılımına dahil değildir ve API'ler,

uygulamalara diğer uygulamaların veya IOS'un kendi ayrıcalıklarını değiştirmesi için

yükseltmesine izin vermez [5].

3.parti uygulamalar ile kullanıcı bilgi ve özelliklerine erişim, iCloud gibi yetki

bildirimleri kullanılarak kontrol edilir. Yetkilerin, bir uygulama için imzalanmış olan

şifre / değer çiftleri vardır ve UNIX kullanıcı kimliği gibi çalışma zamanı

faktörlerinin haricinde kimlik doğrulamasına izin verir. Yetkiler, dijital olarak

imzalanmış olduğundan değiştirilemez. Yetkiler, sistem uygulamaları ve araçlar

tarafından ayrıcalıklı belirli işlemler için yoğun olarak kullanılmaktadır aksi taktirde

"root" olarak çalıştırmak için işlem gerekir. Bu büyük ölçüde sistem uygulaması

veya araçlar tarafından bir uzlaşmayla ayrıcalık yükseltme olasılığını azaltır.

Uygulamalar sadece sistem tarafından sağlanan API'ler sayesinde arka plan işlemi

gerçekleştirebilir. Bu, uygulamaların performansını düşürmeden veya pil ömrünü

önemli ölçüde etkilemeden işlevine devam etmesini sağlar. Uygulamalar birbirleri ile

doğrudan veri paylaşmaz; paylaşım, uygulamalar özel URL şemalarını kullanarak

yalnızca hem alma hem gönderme veya SKAG aracılığıyla gerçekleştirilebilir.

ASLR, bellek bozulması hatalarını sömürüye karşı korur. Yerleşik uygulamalar, tüm

bellek bölgelerinin rastgele başlatılmasını sağlamak için ASLR kullanır. İlaveten,

cihaz her açılışta sistem paylaşılan kütüphane konumlarını rastgele seçer. Xcode IOS

geliştirme ortamı, açık ASLR desteği ile otomatik olarak 3.parti programları derler.

Daha fazla koruma, IOS'un ARM'nin bellek sayfalarını yürütülemez olarak

işaretleyen Execute Never özelliğini kullanmasıyla sağlanmaktadır. Hem yazılabilir

hem de yürütülebilir olarak işaretlenmiş bellek sayfaları sıkı şekilde denetlenen

koşullar altında yalnızca uygulamalar tarafından kullanılabilir:

Çekirdek, sadece Apple'ın varlığı için "dinamik kod imzalama" yetkisini denetler. O

zaman bile, rastgele seçme adresi verilen yürütülebilir ve yazılabilir bir sayfa istemek

için sadece tek bir "mmap" çağrı yapılabilir. Safari, bu işlevi kendi JavaScript JIT

derleyicisi için kullanır.

Page 20: Mobil i̇şletim sistemlerinde güvenlik

7

2.2. AĞ GÜVENLİĞİ

Mobil kullanıcıların, dünyanın herhangi bir yerinden kurumsal bilgi ağlarına

erişmesi gerekebilir, bu yüzden onların yetkilerini ve veri iletimi sırasında

korunmasını sağlamak önemlidir. IOS, kimliği doğrulanmış yetkili ve şifreli iletişim

için standart ağ protokollerini kullanır ve geliştirici erişimi sağlar. IOS, hem Wi-Fi

hem de hücresel veri ağ bağlantıları için kanıtlanmış teknolojiler ve bu güvenlik

hedeflerini gerçekleştirmek için en son standartları sağlar.

Diğer platformlarda, çok sayıda açık iletişim portlarını izinsiz girişlere karşı

korumak için güvenlik duvarı yazılımı gereklidir. Çünkü, IOS dinlenme bağlantı

portlarını sınırlayarak azaltılmış bir saldırı yüzeyini elde eder ve telnet, kabuklar

veya bir web sunucusu gibi gereksiz ağ programlarını kaldırır, bu güvenlik duvarı

yazılımı gerektirmez. Ayrıca; iMessage, Facetime ve APNS kullanarak iletişim

tamamen şifrelenir ve kimlik doğrulanır.

2.2.1. SSL, TSL

IOS, DTLS ve Aktarım Katmanı Güvenliği ( TLS v1.1, TLS v1.2 ) gibi Güvenli

Yuva Katmanı'nı ( SSL v3 ) da destekler. Safari, Takvim, Mail ve diğer internet

uygulamaları ağ hizmetleri ve cihaz arasında şifreli bir iletişim kanalı etkinleştirmek

için otomatik olarak bu mekanizmaları kullanır. Düşük seviyeli ( SecureTransport )

API'ler "ince taneli kontrolü" sağlarken, Yüksek seviyeli ( CFNetwork gibi ) API'ler

geliştiricilerin kendi uygulamalarında TLS benimsemesini kolaylaştırır [4].

2.2.2. VPN

Güvenli ağ hizmetleri, sanal özel ağ gibi tipik olarak IOS cihazlar ile çalışmak için

en az kurulum ve yapılandırma gerektirir. IOS cihazlar, aşağıdaki protokolleri ve

kimlik doğrulama yöntemlerini destekleyen VPN sunucuları ile çalışır:

* Apple Store'dan uygun istemci uygulaması kullanarak Juniper Networks, Cisco,

Aruba Networks, SonicWALL, Check Point, and F5 Networks SSL-VPN

Bu uygulamalar, yerleşik IOS desteği için kullanıcı kimlik doğrulaması sağlar.

* Şifre, RSA SecurID veya CRYPTOCard tarafından kullanıcı kimlik doğrulaması

ile Cisco IPSec ve paylaşılmış gizlilik ve sertifikalar ile makine kimlik doğrulaması

Page 21: Mobil i̇şletim sistemlerinde güvenlik

8

* Cisco IPSec, cihaz yapılandırması sırasında belirtilen etki alanları için VPN On

Demand'ı destekler.

* MS-CHAPV2 şifre, RSA SecurID veya CRYPTOCard tarafından kullanıcı kimlik

doğrulaması ile L2TP/IPSec ve paylaşılmış gizlilik ve sertifikalar ile makine kimlik

doğrulaması

* MS-CHAPV2 şifre, RSA SecurID veya CRYPTOCard tarafından kullanıcı kimlik

doğrulaması ile PPTP

IOS, sertifika tabanlı kimlik doğrulaması kullanan ağlar için VPN On Demand'ı

destekler. Bilgi Teknolojileri politikaları, hangi etki alanlarının bir yapılandırma

profili kullanarak bir VPN bağlantısı gerektirdiğini belirler.

2.2.3. WI - FI

IOS, kablosuz kurumsal ağlara kimliği doğrulanmış erişim sağlamak için WPA2

Kurumsal dahil olmak üzere endüstri standardı Wi-Fi protokollerini destekler.

WPA2 Kurumsal, veri gönderirken kullanıcılara en yüksek seviyede güvence

vererek 128-bit AES şifreleme kullanır ve Wi-Fi üzerinden veri alır. 802.1X desteği

ile IOS cihazlar, RADIUS kimlik doğrulama ortamlarında geniş bir yelpazeye

entegre edilebilir. 802.1X, iPhone ve iPad'te EAP-TLS, EAP-TTLS, EAP-FAST,

EAP-SIM, PEAPv0, PEAPv1, ve LEAP dahil kablosuz kimlik doğrulama

yöntemlerini destekler [4].

2.2.4. BLUETOOTH

IOS'un Bluetooth desteği gereksiz yere artan özel veriye erişim olmadan yararlı

işlevsellik sağlamak üzere tasarlanmıştır. IOS cihazlar; Şifreleme Modu 3, Güvenlik

Modu 4 ve Servis Seviyesi 1 bağlantılarını destekler.

IOS, aşağıdaki Bluetooth profillerini destekler:

* Eller serbest profili ( HFP 1.5 )

* Telefon defteri erişim profili ( PBAP )

* Gelişmiş ses dağıtım profili ( A2DP )

* Ses / video uzaktan kumanda profili ( AVRCP )

* Kişisel alan ağı profili ( PAN )

* İnsan arabirim cihaz profili ( HID )

Page 22: Mobil i̇şletim sistemlerinde güvenlik

9

2.3. VERİ KORUMA VE ŞİFRELEME

Güvenli önyükleme zinciri, kod imzalama ve çalışma zamanı işlem güvenliğini

sağlamak için sadece güvenilen kod ve uygulamaları bir cihaz üzerinde

çalıştırılabilinir. IOS, güvenlik altyapısının bir cihaz üzerinde yetkisiz değişiklikler

ile diğer bölgelerde tehlikeye düştüğü durumlarda bile kullanıcı verilerini korumak

için ek güvenlik özellikleri vardır. Sistem mimarisi kendisi gibi, bu şifreleme ve veri

koruma yetenekleri yazılım teknolojilerini ve entegre donanım katmanlarını kullanır

[4].

2.3.1. DONANIM GÜVENLİK ÖZELLİKLERİ

Mobil cihazlarda, hız ve güç verimliliği kritik öneme sahiptir. Şifreleme işlemleri

karmaşıktır. Doğru tasarlanmamış ve uygulanmamışsa, performans veya pil ömrü

sorunlarıyla karşılaşılabilinir. Her IOS cihazın, flash depolama ve ana sistem belleği

ile DMA içinde dosya şifrelemeyi çok verimli yapan adanmış bir AES 256 şifreleme

motoru vardır. AES motor ile birlikte SHA - 1, daha fazla şifreleme işleminin

yükünü azaltarak donanımda uygulanmaktadır.

UID ve GID üretim sırasında AES 256-bit anahtarları uygulama işlemcisinin içine

kaynaşır. Hiçbir yazılım veya ürün bilgisi, onları doğrudan okuyamaz; onlar, bunları

kullanarak gerçekleştirilen şifreleme ve şifre çözme işlemlerin yalnızca sonuçlarını

görebilir. UID her cihaz için benzersizdir ve Apple veya tedarikçilerin herhangi birisi

tarafından kaydedilmez [5].

GID, cihaz sınıfının tüm işlemcileri için ortaktır. Yükleme ve geri yükleme sırasında

sistem yazılımı teslim edilirken ek bir koruma seviyesi olarak da kullanılır. Hararetli

bu anahtarlar, silikon içinde bunların tahrif veya bypass edilmesini engeller ve

sadece AES motoru tarafından ulaşılabilir olduğunu garanti eder.

UID, verilerin şifreli olarak belirli bir cihaza bağlanmasına olanak sağlar. Örneğin;

dosya sistemini koruyan anahtar hiyerarşisi kullanıcı kimliği içerir, bu yüzden bellek

yongaları fiziksel olarak bir cihazdan başka bir cihaza taşınırsa dosyalar erişilemez

olur. UID, cihazdaki başka bir tanımlayıcı ile ilişkili değildir.

UID ve GID dışındaki diğer tüm şifreleme anahtarları "yarrow" 'a dayalı bir

algoritmayı kullanarak sistemin RNG'si tarafından oluşturulur.

Page 23: Mobil i̇şletim sistemlerinde güvenlik

10

Sistem entropisi, önyükleme sırasında ara verme zamanından ve ilave olarak cihaz

önyüklemeye başladıktan sonra gelen iç sensörlerden toplanır.

Güvenli bir şekilde kaydedilen anahtarları silmek, onları üreten kadar önemlidir. Bu

özellikle flash depolama üzerinde zorludur, bu yüzden aşınma - düzeltme verilerinin

çoklu kopyalarının silinmesi gerekir anlamına gelebilir. Bu sorunu çözmek için IOS

cihazlar, "silinebilir depolama" adı verilen özel bir güvenli veri silme özelliği içerir.

Bu özellik, çok düşük bir düzeydeki blokların az sayıdakini silmek ve doğrudan

adres için temel depolama teknolojisine erişir.

2.3.2. DOSYA VERİLERİNİ KORUMA

Yerleşik donanım şifreleme özelliklerine ek olarak, ayrıca cihazdaki flash bellekte

saklanan verileri daha fazla korumak için "veri koruma" adlı bir teknoloji kullanılır.

Bu teknoloji mobil cihazların her zaman açık ve internete bağlı oldukları, herhangi

bir zamandaki telefon görüşmeleri, metin, mesaj ve e-mailler alabileceği gerçeği

dikkate alınarak tasarlanmıştır. Veri koruma, bir cihaza kilitliyken yeni bilgi

indirmeksizin ve hassas verilerin şifresini çözmeksizin gelen telefon aramaları gibi

olaylara yanıt vermesini sağlar. Bu bireysel davranışlar, "sınıflar" bölümünde

açıklandığı gibi her bir dosya için bir sınıf için her dosyayı atayarak kontrol edilir.

Veri koruma, her sınıftaki verilerin erişilmesi gerektiğinde verileri korur.

Erişilebilirlik, sınıf anahtarları kilidinin açılmış olup olmadığına göre belirlenir. Veri

koruma, anahtarların bir hiyerarşisi oluşturularak ve yönetilerek uygulanır, daha önce

açıklanan donanım şifreleme teknolojileri üzerine inşa edilir [4].

MİMARİYE BAKIŞ

Her zaman veri bölümü üzerine bir dosya oluşturulduğunda; Veri koruma, dosya

başına yeni bir 256-bit şifre oluşturur ve onu dosyayı şifrelemek için AES CBC

modunu kullanarak flash belleğe yazılır gibi şifre kullanan AES motor donanımına

verir. IV, dosya anahtar başına SHA-1 hash ile şifrelenmiş, kapalı blok dosyasına

ayarlanmış hesaplanan bir geribildirim kaydırma kaydının çıktısıdır.

Dosya başına anahtar, dosya erişilebilir olması gereken şartlar altında çeşitli sınıf

anahtarlarından biri ile örülmüştür. Diğer tüm sargılar gibi, bu RFC 3394 başına

NIST AES anahtar sarması kullanılarak yapılır. Sarılmış dosya başına anahtar

dosyanın metadatasında depolanır.

Page 24: Mobil i̇şletim sistemlerinde güvenlik

11

Bir dosya açıldığında, onun metadatası dosya sistemi anahtarı ile şifresi çözülür.

Sarılı dosya başına anahtar açığa çıkar ve üzerinde sınıfı koruyan bir notasyon olur.

Dosya başına anahtar sınıf anahtarı ile sarılmamıştır, daha sonra flash bellekten

okunduğu gibi dosyanın şifresini çözen AES motor donanımına verilir.

Dosya sistemindeki tüm dosyaların metadataları, IOS ilk yüklendiğinde veya cihaz

bir kullanıcı tarafından silindiği zaman rastgele oluşturulan bir anahtar ile şifrelenir.

Dosya sistem anahtarı, "silinebilir depolama" da saklanır.

Bu anahtar cihazda depolandığından beri, verilerin gizliliğini korumak için

kullanılmaz, bunun yerine isteğe bağlı olarak hızlıca silinecek şekilde tasarlanmıştır.

Bu şekilde anahtarın silinmesi, tüm dosyaları şifreli olarak erişilemez hale getirir.

Bir dosyanın içeriği, bir sınıf anahtarı ile sarılmış bir dosya başına anahtar ile

şifrelenmiştir ve sırayla dosya sistemi anahtarı ile şifrelenen bir dosyanın

metadatasında saklanır. Sınıf anahtarı donanım UID ile korunur. Bu hiyerarşi,

esneklik ve performans sağlar.

TÜM İÇERİK VE AYARLARI SİL

Ayarlar'daki "tüm içerik ve ayarları sil" seçeneği silinebilir depolamadaki bütün

anahtarları yok eder ve tüm kullanıcı verilerini cihaz üzerinde şifrelemeye erişemez

hale getirir.

GÜÇLÜ APPLE ID PAROLALARI OLUŞTURMA

Apple ID'ler; iCloud, Facetime ve iMessage gibi hizmetleri bir diziye bağlamak için

kullanılır. Kullanıcıların, güçlü şifreler oluşturmasına yardımcı olmak için tüm yeni

hesaplar aşağıdaki parola nitelikleri içermelidir:

* En az 8 karakter * En az 1 sayı

* En az 1 harf * En fazla 3 ardışık aynı karakter

* En az 1 büyük harf * Hesap adıyla aynı olmayacak

2.3.3. GEÇİŞ KODLARI

Bir cihaz geçiş kodu ayarlayarak kullanıcı otomatik olarak veri koruma sağlar. IOS,

dört haneli ve keyfi uzunluktaki alfanumerik geçiş kodlarını destekler.

Page 25: Mobil i̇şletim sistemlerinde güvenlik

12

Cihazın kilidini açmaya ek olarak, bir geçiş kodu cihazda depolanmayan şifreleme

anahtarları için entropi sağlar. Bu, cihaza sahip bir saldırganın geçiş kodu olmaksızın

veri koruma sınıflarındaki verilere erişim sağlayamaması anlamına gelir.

Geçiş kodu, cihazın UID'le karışık olmalıdır. Bu yüzden brute-force girişimleri

saldırı altındaki cihazda yapılmalıdır. Büyük bir yineleme sayısı her girişimi daha

yavaş yapmak için kullanılır. Yineleme sayısı kalibre edilir, böylece bir girişim

yaklaşık seksen milisaniye sürer. Bu, küçük harfler ve sayılar ile altı karakterli

alfanumerik bir parolanın tüm kombinasyonlarını denemek için en fazla 5½ ( 5,5 yıl )

veya yalnızca sayılarla dokuz basamaklı bir parola için 2½ ( 2,5 yıl ) alacağı

anlamına gelir.

Ayrıca brute-force geçiş kodu saldırılarından vazgeçirmek için, IOS arabirimi kilit

ekranında geçersiz bir geçiş kodu girmesinden sonra artan zaman gecikmelerini

zorlar. Kullanıcılar, başarısız on parola girişiminden sonra cihazı otomatik olarak

silmeyi seçebilir. Bu ayar, MDM ve Exchange ActiveSync üzerinden yönetim ilkesi

olarak da kullanılabilir ve aynı zamanda daha düşük bir eşik değeri ile ayarlanabilir.

GEÇİŞ KODU HAKKINDA ÖNEMLİ HUSUSLAR

Yalnızca sayı içeren uzun bir geçiş kodu girilirse, bir sayısal tuş takımı kilit

ekranında tam klavye yerine görüntülenir. Benzer güvenlik sağlarken, uzun bir

sayısal geçiş kodu girmek kısa bir alfanumerik geçiş kodu girmekten daha kolay

olabilir [5].

SINIFLAR

IOS cihaz üzerinde yeni bir dosya oluşturulduğunda, onu oluşturan uygulama

tarafından bir sınıf atanmıştır. Her sınıf, veri erişilebilirliğini belirlemek için farklı

politikalar kullanır.

Temel sınıflar ve politikalar aşağıdaki gibidir:

TAM KORUMA (NSFILEPROTECTIONCOMPLETE)

Sınıf anahtarı, UID cihaz ve kullanıcı geçiş kodundan türetilen bir şifre ile

korunmaktadır. Kullanıcı cihazı kilitledikten kısa süre sonra şifresi çözülmüş sınıf

anahtarı bir kenara ayrılır, kullanıcı geçiş kodunu tekrar girene kadar bu sınıftaki tüm

verilere ulaşılamaz. Mail uygulaması, iletiler ve ekleri için tam koruma sağlar.

Page 26: Mobil i̇şletim sistemlerinde güvenlik

13

Uygulama başlatma görüntüleri ve konum bilgileri de tam koruma ile

saklanmaktadır.

AÇIK OLDUKÇA (NSFILEPROTECTIONCOMPLETEUNLESSOPEN)

Bazı dosyaların cihaz kilitliyken yazılması gerekebilir. Arka planda bir mail ekini

indirmek bunun en iyi örneğidir. Bu davranış, asimetrik eliptik eğri şifreleme

kullanılarak elde edilir. Her zamanki dosya başına anahtar ile birlikte veri koruma,

ortak dosya / özel anahtar çifti üretir.

Paylaşılan bir gizli dosya, dosyanın özel anahtarı kullanılarak hesaplanır ve cihazın

UID ve kullanıcının geçiş kodu ile açık olduğu sürece koruma ortak sınıf anahtarına

karşılık gelen özel anahtar korunmaktadır.

Dosya başına anahtar, bu paylaşılan gizliliğin hashi ile sarılır ve dosyanın ortak

anahtarı ile birlikte dosyanın metadatasında saklanır; karşılık gelen özel anahtar

sonra hafızadan silinir. En kısa sürede kapalı dosya, dosya başına anahtar da aynı

zamanda hafızadan silinir.

Dosyayı yeniden açmak için, açık olduğu sürece koruma ortak sınıf anahtarı ve

dosyanın geçici ortak anahtarı kullanılarak paylaşılan gizlilik yeniden oluşturulur;

hash, daha sonra dosyanın şifresini çözmek için kullanılan dosya başına anahtar

paketini açmak için kullanılır [5].

İLK KULLANICI KİMLİK DOĞRULAMASINA KADAR

(NSFILEPROTEC. COMP. UNTILFIRSTUSERAUTHENTICATION)

Bu sınıf, "tam koruma" ile aynı şekilde davranır. Cihaz kilitlendiğinde şifresi

çözülmüş sınıf anahtarı dışında bellekten kaldırılmaz. Bu sınıftaki koruma, masaüstü

tam disk şifrelemeye benzer özelliklere sahiptir ve verileri yeniden başlatılmasını

gerektiren saldırılardan korur.

KORUMASIZ (NSFILEPROTECTIONNONE)

Bu sınıf anahtarı yalnızca UID ile korunur ve silinebilir depolamada ( Effaceable

Storage ) saklanır. Bu varsayılan sınıf, tüm dosyalar için değildir aksi taktirde bir veri

koruma sınıfına atanır. Bu sınıftaki dosyaların şifresini çözmek için gerekli tüm

anahtarlar cihazınızda saklanır, şifreleme yalnızca uzaktan hızlı silmeye yarar. Eğer,

bir dosyaya veri koruma sınıfı atanmamışsa, yine de bu bir IOS cihaz üzerindeki tüm

veriler gibi şifrelenmiş biçimde depolanır.

Page 27: Mobil i̇şletim sistemlerinde güvenlik

14

IOS SDK, 3.parti uygulamaları kolay hale getirmek ve ev geliştiricilerine veri

koruma benimsemesi için tam bir API'ler takımı sunar ve kendi uygulamalarında en

üst düzeyde koruma sağlar. Veri koruma; SQLite, NSData, CoreData ve

NSFileManager dahil dosya ve veritabanı API'leri için kullanılabilir.

2.3.4. ANAHTARLIK VERİ KORUMA

Uygulamaların birçoğunun parolaları ve anahtarlar ile giriş belirteçleri gibi diğer

kısa ama hassas veri bitlerini ele alması gerekir.

Anahtarlık, güvenlik dosyalarını korumak için kullanılan anahtar hiyerarşisine

paralel çalışan farklı bir anahtar hiyerarşisi tarafından sağlanan "korumasız" sınıftaki

dosya sisteminde depolanan SQLite veri tabanı olarak uygulanır. Yalnızca tek bir

veritabanı vardır; "securityd" daemon, anahtarlık öğelerinin her bir işlem veya

uygulamaya erişebilmesini belirler.

Anahtarlık erişim API'leri, "securityd" çerçevesinde yapılan uygulamanın

"anahtarlık-erişim-gruplar" ve "uygulama-tanımlayıcı" yetkisini sorgulayan

çağrıların nedenidir. Tek bir işlemi kısıtlamak yerine, erişim grupları Anahtarlık

öğeleri uygulamalar arasında paylaşılmasına olanak sağlar [5].

Anahtarlık öğeleri yalnızca aynı geliştirici uygulamalar arasında paylaşılabilir. Bu,

erişim gruplarını kullanmak için 3.parti uygulamalar gerektiren IOS geliştirici

Programı aracılığıyla kendilerine ayrılan bir önek ile yönetilir. Önek gereksinimi,

kod imzalama ve Provizyon profilleri üzerinden uygulanır.

Anahtarlık verisi, Veri Koruma dosyasında kullanılan benzer bir sınıf yapısı

kullanılarak korunmaktadır. Bu sınıflar, dosya veri koruma sınıfları için eşdeğer

davranışlara sahiptir ama farklı tuşları kullanır ve API'lerin farklı adlandırılan

parçasıdır.

Her Anahtarlık sınıfı, yedekleme sırasında cihazdan kopyalanmaya başladığı zaman

UID ile daima korunan "sadece bu cihaz" muadiline sahiptir. Eğer farklı bir cihaza

geri yüklediyseniz bunu işe yaramaz hale getirir.

Apple, işletim sistemi tarafından ihtiyaç duyulduğunda bilgi güvenliğinin türüne

bağlı olarak Anahtarlık sınıfları tarafından dikkatle dengelenmiş güvenlik ve

kullanılabilirliğe sahiptir.

Page 28: Mobil i̇şletim sistemlerinde güvenlik

15

Örneğin; bir VPN sertifikası her zaman kullanılabilir olmalıdır, bu yüzden cihaz

sürekli bir bağlantı tutar ama başka bir cihaza taşınamaz olduğundan non-migratory

olarak sınıflandırılmıştır.

IOS tarafından oluşturulan Anahtarlık öğeleri için aşağıdaki sınıf korumaları

uygulanır:

Eleman Erişilebilir

Wi-Fi passwords After first unlock

Mail accounts After first unlock

Exchange accounts After first unlock

VPN certificates Always, non-migratory

VPN passwords After first unlock

LDAP, CalDAV, CardDAV After first unlock

Social network account tokens After first unlock

Home sharing password When unlocked

Find My iPhone token Always

iTunes backup When unlocked, non-migratory

Voicemail Always

Safari passwords When unlocked

Bluetooth keys Always, non-migratory

Apple Push Notification Service Token Always, non-migratory

iCloud certificates and private key Always, non-migratory

iCloud token After first unlock

iMessage keys Always, non-migratory

SIM PIN Always, non-migratory

Certificates and private keys installed Always, non-migratory

by Configuration Profile

BİR ANAHTARLIK ÖĞESİNİN BİLEŞENLERİ

Erişim grubu ile birlikte her bir anahtarlık öğesi, metadata ( "oluşturulmuş" ve "en

son güncellenmiş" zaman belirteci gibi ) içerir.

Page 29: Mobil i̇şletim sistemlerinde güvenlik

16

Aynı zamanda, sorgulamak için kullanılan hesap ve sunucu adı gibi her bir öğenin

şifresini çözmeden arama izni vermek için SHA-1 özniteliklerinin karmalarını içerir.

Son olarak, aşağıdakileri şifreleme verilerini içerir:

* Sürüm numarası

* Değer koruma sınıfını belirten eleman

* Eleman başına koruma sınıfı anahtar ile sarılmış

* Elemanı açıklayan neiteliklerin sözlüğü ( SecItemAdd için geçti gibi ), bir ikili plist

olarak kodlanmış ve şifrelenmiş

Şifreleme, GCM'deki AES 128'dir: erişim grubu nitelikleri içinde ve GMAC

tarafından korunmaktadır.

2.3.5. KEYBAGS

Anahtarlar; hem dosya hem de Anahtarlık Veri Koruma sınıfları için toplanır ve

keybags içinde yönetilir. IOS, aşağıdaki 4 keybags'i kullanır:

SYSTEM KEYBAG

Cihazın normal çalışmasında kullanılan sarılmış sınıf anahtarlarının depolandığı

yerdir. Örneğin; bir geçiş kodu girildiğinde, NSFileProtectionComplete anahtarı

sistem anahtarlığından yüklenir ve paketi açar.

Bu, "Korumasız" sınıfta depolanan bir ikili plisttir ama içerikleri Silinebilir

Depolama'da tutulan bir anahtar ile şifrelenir. Keybags için ileri güvenlik sağlamak

amacıyla, bu anahtar silinir ve bir kullanıcı geçiş kodunu değiştirdiği her zamanda

yenilenir. Sistem Keybag, cihazda depolanan tek keybag'tir. AppleKeyStore çekirdek

uzantısı Sistem Keybag'i yönetir ve bir cihazın kilit durumu ile ilgili sorgulanabilir.

Bu raporlar, paket açılması başarılı bir şekildeyken eğer sistemdeki tüm sınıf

anahtarları erişilebilir ise sadece cihazın kilidinin açık olduğunu bildirir.

BACK-UP KEYBAG

Back-up Keybag, iTunes tarafından şifrelenmiş bir yedekleme yapıldığında

oluşturulur ve cihazın yedeklendiği bilgisayarda depolanır. Yeni bir keybag yeni bir

anahtar dizisiyle oluşturulur ve yedeklenmiş veriler bu yeni anahtarlar için yeniden

şifrelenir.

Page 30: Mobil i̇şletim sistemlerinde güvenlik

17

Daha önce açıklandığı gibi, non-migrator Anahtarlık öğeleri UID türetilmiş anahtar

ile sarılı kalır, onlar orijinalinde yedeklenmiş cihaza restore edilmeye izin verir ancak

onları farklı bir cihazda ulaşılamaz hale getirir.

Keybag, iTunes' taki ayarlanan parolayla korunur ve PBKDF2' nin 10.000

yinelemesi aracılığıyla çalışır. Bu büyük yineleme sayısına rağmen, belirli bir aygıt

için herhangi bir bağ yoktur ve bu nedenle back-up keybag üzerindeki birçok

bilgisayar arasında paralel bir brute-force saldırısı denenebilir. Bu tehdit yeterince

güçlü bir parola ile azaltılabilir.

Eğer bir kullanıcı iTunes yedekleme için şifrelemeyi seçmezse, yedekleme dosyaları

onların Veri Koruma sınıfına bakılmaksızın yani sınıfı ne olursa olsun şifrelenmez

ama Anahtarlık, türetilmiş bir anahtar ile korumalı kalır. Bu yüzden, eğer yalnızca bir

yedekleme parolası ayarlanırsa Anahtarlık öğeleri yeni bir cihaza taşınır.

ESCROW KEYBAG

iTunes senkronizasyonu ve MDM için kullanılır. iTunes'u yedeklemeyi ve kullanıcı

geçiş kodu girmesini gerektirmeden senkronize etmeyi sağlar ve uzaktan bir

kullanıcının şifresini temizlemek için bir MDM sunucusu sağlar. Senkronizasyon

için kullanılan bilgisayarda veya cihazı yöneten MDM sunucusunda depolanır.

Escrow keybag, cihaz senkronizasyonu sırasında potansiyel verilerin tüm sınıflarına

erişimi gerektiren kullanıcı deneyimini geliştirir. Bir geçiş kodu ile kilitli cihaz,

iTunes'a bağlandığında kullanıcıdan bir geçiş kodu girmesi istenir. Bundan sonra

cihaz, bir Escrow Keybag oluşturur ve Host'a iletir. Escrow Keybag, tam olarak yeni

oluşturulan anahtar tarafından korunan cihazda kullanılan aynı sınıf anahtarları içerir.

Bu anahtar, Escrow Keybag kilidini açmak için gereklidir ve Protected Until First

User Authentication sınıfındaki cihazda depolanır. Bu yüzden, cihaz yeniden

başlatıldıktan sonra ilk kez iTunes yedeklemeden önce geçiş kodu girilmelidir.

ICLOUD BACK-UP KEYBAG

Back Up Keybag'e benzemektedir. Bu keybag'in tüm sınıf anahtarları asimetriktir,

bu yüzden iCloud yedeklemeleri arka planda gerçekleşebilir. "No Protection" hariç

tüm veri koruma sınıfları için şifrelenmiş veri cihazdan okunur ve iCloud'a

gönderilir. İlgili sınıf anahtarları, iCloud anahtarları tarafından korunur.

Page 31: Mobil i̇şletim sistemlerinde güvenlik

18

Anahtarlık sınıfı anahtarları, şifrelenmemiş bir iTunes yedeklemesiyle aynı şekilde

UID türetilmiş bir anahtar ile sarılır.

BİR KEYBAG BİLEŞENLERİ

Başlık İçerikleri:

* Sürüm ( IOS 3 veya daha sonra 5'e ayarlama )

* Tür ( Sistem, Yedekleme, Emanet, iCloud Yedekleme )

* Keybag UID

* Keybag imzalanmış ise bir HMAC

* Sınıf anahtarlarının sarılması için kullanılan yöntem: UID veya PBKDF ile

birbirine dolaşmış, salt ve yineleme sayısı ile birlikte

Sınıf anahtarlarının bir listesi:

* Anahtar UUID

* Sınıf ( Bu, hangi dosya veya Anahtarlık veri koruma sınıfı )

* Sarma Türü

* Sarmalanmış sınıf anahtarı

* Asimetrik sınıflar için ortak anahtar

2.4. CİHAZ ERİŞİMİ

IOS, esnek güvenlik politikaları ve kolayca uygulanan yapılandırmaları destekler ve

yönetir. Bu, şirketlerin kurumsal bilgilerini korumayı ve çalışanların kurumsal

beklentilerini karşılamayı sağlar.

2.4.1. GEÇİŞ KODU KORUMASI

Kriptografik koruma sağlamanın yanı sıra, geçiş kodları cihazın kullanıcı kimliğine

yetkisiz erişimini önler. IOS arabirimi, geçersiz bir geçiş kodu girildikten sonra artan

zaman gecikmelerini zorlar, kilit ekranı üzerinden brute-force saldırıların etkinliğini

önemli ölçüde azaltır.

Kullanıcılar, başarısız on geçiş kodu denemesinden sonra cihaz otomatik olarak

silinebiliri seçebilir. Bu ayar, idari bir yönetim politikası olarak kullanılabilir. Ayrıca

Exchange ActiveSync ve MDM sayesinde daha düşük bir eşik değeri ayarlanabilir

[5].

Page 32: Mobil i̇şletim sistemlerinde güvenlik

19

Varsayılan olarak, kullanıcının geçiş kodu 4 haneli PIN olarak tanımlanabilir.

Kullanıcılar, daha uzun alfanumerik ( alfasayısal ) geçiş kodu belirleyebilir: Settings

> General > Passcode > Complex Passcode. Daha uzun ve daha karmaşık geçiş

kodlarını tahmin etmek ya da saldırmak zordur ve kurumsal kullanım için tavsiye

edilmektedir.

Yöneticiler, karmaşık parola gereksinimlerini ve MDM veya Exchange ActiveSync

gibi diğer politikaları kullanarak veyahut kullanıcıların el ile yapılandırma profilleri

zorunlu kılarak zorlayabilir.

Aşağıdaki geçiş kodu politikaları kullanılabilir:

* Basit bir değere izin vermek

* Alfanumerik değer gerektirir

* Minimum geçiş kodu uzunluğu

* Minimum sayıda karmaşık karakter

* Maksimum geçiş kodu yaşı

* Geçiş kodu geçmişi

* Otomatik kilit zaman aşımı

* Cihaz kilidi için mühlet verilen süre

* Maksimum sayıda başarısız girişim

2.4.2. YAPILANDIRMA UYGULAMA

Bir yapılandırma profili, bir yöneticiye IOS cihazlar için yapılandırma bilgisini

dağıtmayı sağlayan bir XML dosyasıdır. Yüklenmiş bir yapılandırma profili

tarafından tanımlanmış ayarlar, kullanıcı tarafından değiştirilemez. Eğer kullanıcı,

yapılandırma profilini silerse profil tarafından tanımlanmış tüm ayarlar da kaldırılır.

Böylelikle, yöneticiler politikaları erişime bağlayarak ayarlarını uygulayabilirler.

Örneğin; bir e-mail yapılandırması sağlayan bir yapılandırma profili, ayrıca cihaz

geçiş kodu politikasını belirler. Kullanıcıların, geçiş kodları yöneticinin

gereksinimlerini karşıladığı sürece maillerine erişmek mümkün olmayacaktır.

Page 33: Mobil i̇şletim sistemlerinde güvenlik

20

Bir IOS yapılandırma profili, aşağıda belirtilen bir dizi ayarı içerir:

* Geçiş kodu politikaları

* Cihaz özelliklerini kısıtmala ( kamerayı devre dışı bırakma gibi )

* Wi - Fi ayarları

* VPN ayarları

* E-mail sunucu ayarları

* Exchange ayarları

* LDAP dizin hizmeti ayarları

* CalDAV takvim hizmeti ayarları

* Web klipleri

* Kimlik bilgileri ve anahtarlar

* Gelişmiş hücresel ağ ayarları

Yapılandırma profilleri imzalanmış ve kökeni doğrulamak, onların bütünlüğünü

sağlamak ve içeriğini korumak için şifreli olabilir. Yapılandırma profilleri, 3DES ve

AES-128 destekleyen CMS ( RFC 3852 ) kullanılarak şifrelenir.

Yapılandırma profilleri, onların tamamen kaldırılmasını engellemek için bir cihaza

kilitlenebilir veya bir geçiş kodu ile yalnızca kaldırmak için izin verir.

Birçok kurumsal kullanıcı, kişisel olarak kendi IOS cihazlarını kullandığı için

yapılandırma profilleri kaldırılabilir bir MDM sunucusuna bir cihazı bağlar ancak

bunu yaparken aynı zamanda yönetilen tüm yapılandırma bilgileri, veri ve

uygulamaları kaldırır.

Kullanıcılar, iPhone Configuration Utility kullanarak kendi cihazları üzerinde

doğrudan Yapılandırma Profilleri yükleyebilirler. Yapılandırma Profilleri, bir MDM

sunucusu kullanarak havadan veya e-mail yoluyla indirilebilir.

2.4.3. MOBİL CİHAZ YÖNETİMİ

IOS, işletmelerin güvenli bir şekilde yapılandırmasını sağlamak için MDM'yi

destekler ve onların kendi arasındaki ölçeklendirilmiş iPhone ve iPad dağıtımlarını

yönetir. MDM yetenekleri; OTA Enrollment, APNS ve yapılandırma profilleri gibi

mevcut IOS teknolojileri üzerine inşa edilmiştir.

Page 34: Mobil i̇şletim sistemlerinde güvenlik

21

MDM kullanarak, Bilişim Teknolojileri departmanları kurumsal bir ortamda IOS

cihazları kaydedebilir, kablosuz yapılandırma yapabilir ve ayarları güncelleyebilir,

kurumsal politikalar ile uyumu izleyebilir ve hatta uzaktan silme veya cihazları

kilitlemeyi yönetebilir.

2.4.4. APPLE YAPILANDIRICISI

MDM'ye ek olarak, Apple Yapılandırıcısı IOS cihazları herkese dağıtmak için OS

X' i kolaylaştırır. Apple yapılandırıcısı; ayarlar, uygulamalar ve veri ile çok sayıda

cihazı yapılandırmak için hızlı kullanılabilir. Başlangıçta yapılandırılmış cihazlar,

yüklenmesi için gerekli kısıtlamalar ve ek ayarları sağlayan Apple yapılandırıcısı

kullanarak denetlenebilir. Bir cihaz; Apple yapılandırıcısı ile bir kez denetlendikten

sonra, mevcut tüm ayarlar ve kısıtlamalar OTA üzerinden yüklenir, MDM yoluyla da

yüklenebilir.

2.4.5. CİHAZ KISITLAMALARI

Yöneticiler, bir yapılandırma profili yükleyerek cihaz özelliklerini kısıtlayabilir.

Aşağıdaki mevcut kısıtlamalar:

* Uygulama yüklemeye izin ver

* Kamera kullanımına izin ver

* Facetime izin ver

* Ekran yakalama izin ver

* Sesli arama izin ver

* Dolaşımdayken otomatik eşitlemeye izin ver

* Uygulama satınalıma izin ver

* Eklenen mailler senkronizasyonuna izin ver

* Tüm alımlar için kullanıcıyı mağaza şifresini girmeye zorlamak

* Çok oyunculu oyun izin ver

* Oyun merkezi arkadaşları eklemeye izin ver

* Siri kullanımına izin ver

* Cihaz kilitliyken Siri kullanımına izin ver

* Youtube kullanımına izin ver

* Cihaz kilitliyken hesap cüzdanı bildirimlerine izin ver

* iTunes Store kullanımına izin ver

* Safari kullanımına izin ver

Page 35: Mobil i̇şletim sistemlerinde güvenlik

22

* Safari otomatik doldurmayı etkinleştirme

* Sahte Web sitesi uyarısını zorlama

* JavaScript etkinleştirmek

* Açılır pencereleri engelle

* Çerezleri ( tanımlama bilgileri ) kabul et

* iCloud yedekleme ve belge senkronizasyonuna izin ver

* Fotoğraf akışına izin ver

* Paylaşılan fotoğraf akışına izin ver

* Apple için tanılama ( teşhis ) gönderilmesine izin ver

* Güvenilmeyen TLS sertifikaları kabul etmek için kullanıcıya izin ver

* Zor şifrelenmiş yedekleme

* İçerik derecelendirme tarafından medya kısıtlaması

Sadece Denetimli Kısıtlamalar

* iMessage izin ver

* Oyun merkezi izin ver

* iBookStore izin ver

* iBookStore'dan erotik izin ver

* Uygulamaların kaldırılmasına izin ver

* Siri küfür filtresini etkinleştir

* Elle yapılandırma profilleri yüklenmesine izin ver

2.4.6. UZAKTAN SİLME

IOS cihazlar, bir yönetici veya kullanıcı tarafından uzaktan silinebilir. Silinebilir

depolama'dan bloke edilmiş depolama şifreleme anahtarı atılarak, anında uzaktan

silme güvenli bir şekilde elde edilir ve tüm veriler okunamaz hale gelir. Uzaktan

silme; iCloud, Exchange veya MDM tarafından başlatılabilir.

Uzaktan silme, MDM veya iCloud tarafından tetiklendiğinde cihaz bir bildirim

gönderir ve silme gerçekleştirilir. Exchange ile uzaktan silme için, cihaz silme

işlemini gerçekleştirmeden önce Exchange sunucu ile denetler.

Ayrıca, kullanıcılar ayarlar uygulamasını kullanarak ellerindeki cihazları silebilir.

Ve belirtildiği gibi, cihazlar bir dizi başarısız geçiş kodu denemesinden sonra

otomatik olarak silmek için ayarlanabilir.

Page 36: Mobil i̇şletim sistemlerinde güvenlik

23

3. ANDROID GÜVENLİK

3.1. GİRİŞ

3.1.1. ANDROID GÜVENLİK GENEL BAKIŞ

Android uygulamaları, platform sayesinde yerel ve görev verilerinin yanısıra

gelişmiş donanım ve yazılım kullanımını da sağlar. Bu değeri korumak için

kullanıcıların veri, uygulamalar, cihaz ve ağ güvenliğini sağlayan uygulama ortamı

sunulmalıdır. Açık bir platformu korumak için güvenlik mimarisi ve ciddi güvenlik

programları gereklidir. Android, tüm kullanıcılara gerekli korumayı sağlarken açık

bir platform için gerekli esnekliği sağlayan çok katmanlı güvenlik ile tasarlanmıştır.

Android, güvenlik kontrollerinin geliştiricilerin üzerindeki yükü azaltması

düşünülerek tasarlanmıştır. Güvenlik uzmanı geliştiriciler, esnek güvenlik kontrolleri

üzerinde kolayca çalışabilir ve güvenebilirler.

Android, aynı zamanda kullanıcılar düşünülerek tasarlanmıştır. Kullanıcılar,

uygulamaların nasıl çalıştığını ve bu uygulamaların üzerinde denetimin nasıl

göründüğünü sağlar. Bu tasarım, saldırganların cihaza kötü niyetli yazılım yüklemek

için sosyal mühendislik gibi yaygın saldırıları ve 3.cü taraf uygulamalar üzerinden

saldırı beklentilerini içerir. Android, hem bu saldırıların olasılığını azaltmak hem de

etkisini sınırlandırmak için tasarlanmış ve bunda da başarılı olmuştur.

Android plaftormunun ana yapı taşları:

CİHAZ DONANIMI: Android OS; akıllı telefonlar, tabletler ve set-top-boxes dahil

olmak üzere donanım yapılandırmalarının geniş bir yelpazesinde çalışır. Anroid,

bilinemez işlemcidir ama ARM v6 eXecute-Never gibi donanıma özgü güvenlik

özelliklerinin bazı avantajlarından yararlanır.

ANDROID İŞLETİM SİSTEMİ: Çekirdek işletim sistemi, Linux çekirdeği üzerine

inşa edilmiştir. Kamera işlevleri, GPS verileri, Bluetooth işlevleri, telefon işlevleri,

ağ bağlantıları vb. gibi tüm cihaz kaynaklarına işletim sistemi üzerinden erişilebilir.

ANDROID UYGULAMA ÇALIŞMA ZAMANI: Android uygulamaları en sık

Java programlama dilinde yazılmıştır ve Dalvik sanal makinesinde çalıştırılır ancak

uygulamaların birçoğu, çekirdek Android hizmetlerini kapsar ve yerli uygulamaları

veya yerli kütüphaneleri kapsar. Hem Dalvik hem yerli uygulamalar, Application

Sandbox içinde bulunan aynı güvenlik ortamı içinde çalışır.

Page 37: Mobil i̇şletim sistemlerinde güvenlik

24

Uygulamalar için birincil iki kaynak şunlardır:

ÖNCEDEN YÜKLENMİŞ UYGULAMALAR: Android; telefon, e-posta, takvim,

web tarayıcı ve kişiler de dahil olmak üzere önceden yüklenmiş bir dizi uygulama

içerir. Bu fonksiyon hem kullanıcı uygulamaları gibi hem de diğer uygulamalar

tarafından erişilebilen anahtar cihaz yeteneklerini sağlar. Önceden Yüklenmiş

Uygulamalar, açık kaynak kodlu Android platformunun bir parçası olabilir ya da özel

bir cihaz için bir OEM tarafından geliştirilebilir.

KULLANICI TARAFINDAN YÜKLENEN UYGULAMALAR: Android,

herhangi bir 3.parti uygulamayı destekleyen açık bir geliştirme ortamı sağlar.

Birincil hizmetler şunlardır:

GOOGLE PLAY: Kullanıcıya uygulama keşfetmek, denemek, yüklemek ve web

satınalma izni veren bir hizmet topluluğudur. Google Play; geliştiriciler için, Android

kullanıcılarına ve potansiyel müşterilere ulaşmayı kolaylaştırır. Google Play; aynı

zamanda topluluk gözden geçirme, uygulama lisans doğrulama, uygulama güvenliği

tarama ve diğer güvenlik hizmetlerini sağlar.

ANDROID GÜNCELLEMELERİ: Android güncelleme servisi, OTA üzerinden

veya web sayesinde güncelleştirmeler dahil olmak üzere Android cihazlar için

güvenlik güncelleştirmeleri ve yeni özellikler sunar.

UYGULAMA HİZMETLERİ: Çerçeveler, push mesajları için buluttan cihaza

mesajlaşma ve uygulama verisi ve ayarları gibi Android uygulamalarının bulut

yetenekleri kullanmasına izin verir.

Android Güvenlik Programı, anahtar bileşenleri içerir:

Temel Bileşenler;

TASARIM İNCLEMESİ: Android güvenlik süreci, zengin ve yapılandırılabilir

güvenlik modeli ve tasarım oluşturulması ile erken geliştirme yaşam döngüsünde

başlar. Platformun her önemli özelliği mühendislik ve güvenlik kaynakları tarafından

sistem mimarisine entegre edilmiş uygun güvenlik kontrolleri ile gözden geçirilir.

Page 38: Mobil i̇şletim sistemlerinde güvenlik

25

PENETRASYON TESTİ VE KOD İNCELEME: Platform geliştirilmesi sırasında,

Android oluşturulan ve açık kaynak bileşenleri güçlü güvenlik değerlendirmelerine

tabidir. Bu inceleme Google Bilgi Güvenliği Mühendislik Ekibi ve bağımsız

güvenlik danışmanları tarafından Android Güvenlik Ekibi ile yapılmaktadır. Bu

incelemenin amacı açık kaynak platformdan önce zayıf ve olası güvenlik açıklarını

tespit etmek ve dış güvenlik uzmanları tarafından gerçekleştirilecek analiz türlerini

taklit etmektir.

AÇIK KAYNAK VE TOPLULUK İNCELEME: Android, Linux çekirdeği gibi

önemli dış güvenliği inceleyen açık kaynak teknolojilerini de kullanır. Google Play;

kullanıcılar ve şirketler için, kullanıcılara belirli uygulamalar hakkında doğrudan

bilgi vermek için forum sağlamaktadır.

OLAYA MÜDAHALE: Tüm bu önlemlere rağmen, güvenlik sorunları Android

Projesi'nin kapsamlı bir güvenlik tepki süreci oluşturmasından sonra meydana

gelebilir. İşte bu yüzden tam zamanlı bir Android güvenlik ekibi, potansiyel güvenlik

açıklarının tartışılması için Android'e özgü güvenlik topluluğunu sürekli izler.

3.1.2. ANDROID PLATFORMU GÜVENLİK MİMARİSİ

* kullanıcı verilerini korumak

* sistem kaynaklarını korumak ( ağ dahil olmak üzere )

* uygulama yalıtımı sağlamak

Bu hedeflere ulaşabilmek için Android'in sunduğu gerekli güvenlik özellikleri:

* Linux çekirdeği sayesinde işletim sistemi düzeyinde güçlü güvenlik

* Tüm uygulamalar için zorunlu Sandbox uygulaması

* Güvenli işlemler arası iletişim

* Uygulama İmzalama

* Uygulama tanımlı ve kullanıcıya verilen izinler

Şekil1'de Android yazılım yığınının çeşitli düzeylerde düşünceleri ve güvenlik

bileşenleri belirtilmiştir.

Her bileşen, aşağıdaki bileşenlerin tamamen güvenli olduğunu varsayar. Kök olarak

çalışan Android İşletim Sistemi kodunun küçük bir miktarı haricinde, Linux

çekirdeği üzerindeki tüm kodlar Sandbox Uygulama tarafından kısıtlanır.

Page 39: Mobil i̇şletim sistemlerinde güvenlik

26

A p p l i c a t i o n s

A p p l i c a t i o n F r a m e w o r k

h o m e d i a l e r imS m s /

m m s

c l o c ka l b u m s

c a l c u l a t o ra l a r mc a m e r ab r o w s e r

c o n t a c t s e - m a i l c a l e n d a r …

A c t i v i t y

M a n a g e r

M e d i a

p l a y e r

V o i c e

d i a l

W i n d o w s

M a n a g e r

C o n t e n t

P r o v i d e r s

N o t i f i c a t i o n

M a n a g e rV i e w S y s t e m

P a c k a g e

M a n a g e r

T e l e p h o n e

M a n a g e r

R e s o u r c e

M a n a g e r

l o c a t i o n

M a n a g e r

X m p p

S e r v i c e

S u r f a c e

M a n a g e r

M e d i a

F r a m e w o r k

O p e n G L - E S L i b W e b C o r eF r e e T y p e

S Q L i t e

L i b r a r i e s

L i b cS S LS G L

A n d r o i d R u n t i m e

C o r e L i b r a r i e s

D a l v i k V i r t u a l

M a c h i n e

D i s p l a y

D r i v e r

B lu e t o o t h

D r i v e r

K e y p a d

D r i v e r

A u d i o

D r i v e r s

F l a s h

M e m o r y

D r i v e r

C a m e r a

D r i v e r

U S B D r i v e r W i - F i D r i v e r

B in d e r ( I P C )

D r i v e r

P o w e r

M a n a g e m e n t

L i n u x K e r n e l

Şekil 1: Android yazılım yığını

3.2. SİSTEM VE ÇEKİRDEK GÜVENLİK DÜZEYİ

İşletim sistemi düzeyinde Android platformu, işlemler arası güvenli bir iletişim

kolaylığının yanısıra, farklı süreçlerde çalışan uygulamalar arasında güvenli iletişimi

sağlamak için Linux çekirdeğinin güvenliğini sağlar. Bu güvenlik özellikleri, işletim

sistemi düzeyinde Sandbox Uygulama tarafından yerel kodun bile kısıtlanmasını

sağlar. Kod, uygulama davranışının dahili bir sonucu veya bir uygulamanın güvenlik

açığının sömürüsü olsa da olmasa da Sistem; cihazın kendisi, Android sistemi veya

diğer uygulamalardan gelen zararlı sahte uygulamayı önleyebilecektir [3].

3.2.1. LINUX GUVENLİK

Android platformunun temeli Linux çekirdeğidir. Linux çekirdeğinin kendisi

yıllardır yaygın olarak kullanılmaktadır, aynı zamanda güvenlik duyarlı ortamlarda

milyonlarca kez kullanılmıştır. Tarihi boyunca binlerce geliştirici tarafından sürekli

araştırılmış, saldırılmış ve düzeltilmiştir. Linux, birçok şirket ve güvenlik uzmanı

tarafından istikrarlı ve güvenli bir çekirdek haline gelmiştir [3].

Page 40: Mobil i̇şletim sistemlerinde güvenlik

27

Bir mobil bilgi işlem ortamı için temel olarak Linux çekirdeği, Android ile çeşitli

anahtar güvenlik özellikleri sağlar.

Bunlar;

* Kullanıcı tabanlı izinler modeli

* İşlem yalıtımı

* Güvenli IPC için genişletilebilir mekanizma

* Çekirdeğin gereksiz ve potansiyel olarak güvenli olmayan parçalarını kaldırma

yeteneği

Çok kullanıcılı bir işletim sistemi olarak Linux çekirdeğinin temel güvenlik amacı

kullanıcı kaynaklarını birbirinden izole etmektir.

Böylece Linux;

* a kullanıcısının b kullanıcısının dosyalarını okumasını önler.

* a kullanıcısının b kullanıcısının belleğini tüketmemesini sağlar

* a kullanıcısının b kullanıcısının cpu kaynaklarını tüketmemesini sağlar

* a kullanıcısının b kullanıcısının telefon, GPS, Bluetooth cihazlarını tüketmemesini

sağlar.

3.2.2. APPLICATION SANDBOX

Android platformu, uygulama kaynaklarını belirlemek ve izole etmek için bir araç

olarak Linux kullanıcı tabanlı korumadan faydalanır. Android sistemi, her Android

uygulama için UID atar ve ayrı bir işlemde kullanıcı gibi çalışır. Bu yaklaşım,

geleneksel Linux yapılandırma da dahil olmak üzere birden fazla uygulamanın aynı

kullanıcı izinleriyle çalıştığı diğer işletim sistemlerinden farklıdır [7].

Çekirdek, kullanıcı ve uygulamalar için atanmış olan grup kimlikleri gibi standart

Linux imkanları aracılığıyla işlem düzeyinde sistem ve uygulamalar arasındaki

güvenliği zorlar. Varsayılan olarak, uygulamalar birbirleriyle etkileşemez ve işletim

sistemine sınırlı erişim hakkına sahiptirler. Eğer, A uygulaması B uygulamasının izni

olmaksızın telefonu veya verilerini okumak gibi zararlı birşey yapmaya çalışırsa ,

işletim sistemi bunu korur. Çünkü, A uygulaması uygun kullanıcı ayrıcalıklarına

sahip değildir.

Page 41: Mobil i̇şletim sistemlerinde güvenlik

28

Sandbox; basit, denetlenebilir ve dosya izinleri ile onlarca yıldır süren UNIX stili

kullanıcı ayırma işlemlerine dayanmaktadır.

Application Sandbox, çekirdekte olduğundan bu güvenlik modeli yerel kod ve

işletim sistemi uygulamalarına genişler. Şekil 1'deki çekirdek üzerinde yazılımın

tümü; işletim sistemi kütüphaneleri, uygulama çerçevesi ve uygulama zamanı dahil

tüm uygulamalar Application Sandox içinde çalışır.

Bazı platformlarda geliştiriciler belirli bir geliştirme çerçevesi, API'lerin dizisi veya

dil güvenliğini sağlamak için sınırlandırılmıştır. Android'te güvenlik sağlamak için

gerekli bir uygulamanın nasıl yazılmış olduğuyla ilgili herhangi bir kısıtlama yoktur;

bu bağlamda yerel kod sadece güvenli olarak yorumlanır.

Bazı işletim sistemlerinde bellek bozulması hataları genellikle tamamen cihazın

güvenliğini tehlikeye sokar. Bu durum, kendi kaynakları işletim sistemi seviyesinde

korumalı alan olan tüm uygulamalar için Android'te böyle değildir. Bir bellek

bozulması hatası, işletim sistemi tarafından kurulan izinler ile sadece belirli bir

uygulama bağlamında rastgele kod yürütülmesine izin verecektir.

3.2.3. SİSTEM BÖLÜMÜ VE GÜVENLİ MOD

Sistem bölümü; uygulamalar, işletim sistemi kütüphaneleri, uygulama çalışma

zamanı ve uygulama çerçevesinin yanı sıra Android çekirdeğini de içerir. Bu bölüm

salt okunur olarak ayarlanır. Bir kullanıcı cihaza güvenli modda önyükleme

yaptığında yalnızca çekirdek Android uygulamaları mevcuttur. Bu 3.parti bir

yazılımın ücretsiz olduğu bir ortamda kullanıcının kendi telefonuna önyükleme

yapabilmesini sağlar.

3.2.4. DOSYA SİSTEMİ İZİNLERİ

UNIX tarzı bir ortamda, dosya sistemi izinleri bir kullanıcının, bir başka kullanıcının

dosyalarını değiştirememesini veya okuyamamasını sağlar. Android'in durumunda

ise her bir uygulama kendi kullanıcı olarak çalışır. Geliştirici, diğer uygulamalar için

dosyaları ortaya çıkarmadıkça bir uygulama tarafından oluşturulan dosyalar, başka

bir uygulama tarafından değiştirilemez veya okunamaz.

Page 42: Mobil i̇şletim sistemlerinde güvenlik

29

3.2.5. ŞİFRELEME

Android, uygulamalar tarafından kullanılmak üzere bir kriptografik API dizisi

sağlar. Bu AES, RSA, DSA ve SHA gibi standart ve yaygın olarak kullanılan ilkel

şifreleme uygulamalarını içerir. İlaveten API'ler, SSL ve HTTPS gibi yüksek seviyeli

protokoller sağlar [4].

3.2.6. BELLEK YÖNETİMİ GÜVENLİK GELİŞTİRMELERİ

Android, yaygın bellek sorunlarını önemli ölçüde zorlaştıran birçok özellik içerir.

Android SDK, derleyiciler ve işletim sistemi yaygın bellek sorunlarını önemli ölçüde

zorlaştırmak için aşağıdaki araçları kullanır.

ANDROID 1.5.

* Yığın ( öbek ) arabellek taşmalarını önlemek için ProPolice (f-stack-protector)

* Tamsayı taşmalarını azaltmak için safe_iop

* Serbest çift güvenlik açıklarını ve yığın birleştirme ( sağlamlaştırma ) saldırılarını

önlemek için OpenBSD dlmalloc uzantıları

* Bellek tahsisi sırasında tamsayı taşmalarını önlemek için OpenBSD calloc

ANDROID 2.3.

* Biçim dizesi güvenlik açığı koruması

* Donanım tabanlı yığın ve üzerinde kod yürütülmesini engellemek için No eXecute

* Boş işaretçi etkisini azaltmak ve ayrıcalık yükseltmek için Linux mmap_min_addr

KQUEUE

ANDROID 4.0.

* Hafızada anahtar yerleri rastgele seçmek için ASLR

ANDROID 4.1.

* Konumdan bağımsız yürütülebilir destek ( PIE )

* Salt okunur yer değiştirmeler / anında bağlanma (-Wl,-z,relro -Wl,-z,now )

* Etkin dmesg_restrict ( çekirdek adreslerinin sızmaması )

* Etkin kptr_restrict ( çekirdek adreslerinin sızmaması ) [8].

ANDROID 4.2.

Uygulama Doğrulama: Zararlı olabilecek bir uygulama yüklemeye çalışırsanız

uygulama doğrulama kullanıcıyı uyarabilir. Eğer bir uygulama özellikle kötüyse

yüklemeyi engelleyebilir.

Page 43: Mobil i̇şletim sistemlerinde güvenlik

30

FORTIFY_SOURCE: Bellek bozulmasını önlemek için sistem kütüphaneleri ve

uygulamalar tarafından kullanılır.

Daha fazla hediye SMS kontrolü: Android, bir uygulama için ek masrafa neden

olabilecek premium servislerden kısa sms gönderme girişiminde bir bildirim

sağlayacak. Kullanıcı uygulama izni için mesaj göndermeyi / engellemeyi seçebilir.

Her zaman açık VPN: Uygulamalar, VPN bağlantısı kuruluncaya kadar ağa

erişemez. Böylece, VPN yapılandırılabilir. Bu uygulamalar diğer ağlar arasında veri

göndermesini engeller.

Sertifika Sabitleme: Android çekirdek kütüphaneleri sertifika tutturmayı destekler.

Eğer sertifika beklenen sertifika zincir kümesi değilse tutturulmuş sertifika

doğrulama hatası alırsınız. Bu sertifika yetkililerini olası uzlaşmasına karşı korur.

Android İzinlerin Geliştirilmiş Ekranı: İzinler kullanıcı tarafından daha kolay

anlaşılır gruplar halinde organize edilmiştir. İzinlerin incelenmesi sırasında kullanıcı

izni hakkında daha detaylı bilgi izni için tıklayabilirsiniz.

Installd Sabitleme: Installd komutu kök ayrıcalık yükseltmek için potansiyel saldırı

alanını azaltarak kök kullanıcısı olarak çalışmaz.

Init Komut Sabitleme: Semantik saldırıları ile ilgili sembolik koruma için

O_NOFOLLOW Inıt komutunu şimdi uygula

ContentProvider Varsayılan Yapılandırma: API seviyesindeki 17 uygulamanın

her biri için varsayılan olarak her içerik sağlayıcının hedefi hatalıyı dışa çıkararak

uygulamalar için varsayılan saldırı alanın azaltılmasıdır.

Kriptografi: SecureRandom ve Cipher'ın varsayılan uygulamaları modifiye etmek.

RSA,OpenSSL kullanacak. OpenSSL 1.0.1 kullanılarak TLSv1.1 ve TLSv1.2 için

SSL Socket eklendi.

Güvenlik Düzeltmeleri: Güvenlik düzeltmeleri açık kaynak kütüphaneleri ile

Webkit , libpng , OpenSSL ve LibXML'de dahil olmak üzere yükseltilmiştir [6].

ANDROID 4.3.

Selinux ile güçlendirilmiş Android Sandbox: Selinux güçlendirme kullanıcılara ve

geliştiriciye görünmez. Mevcut uygulamalar ile uyumluluğu korurken mevcut

android güvenlik modeline sağlamlık ekler. Uyumluluğun devamını sağlamak için

Selinux'un kullanıma izin verir. Bu mod kurallara aykırı kayıtları tutar ama

uygulamaları kesmez / bölmez ve sistemin davranışını etkilemez.

Page 44: Mobil i̇şletim sistemlerinde güvenlik

31

No setuid / setgid programları: Android sistem dosyalarında dosya sistemi

kabiliyeti desteği eklendi. Tüm setuid / setguid programları kaldırıldı. Bu kök saldırı

yüzeysel ve olası güvenlik açıkları olasılığını azaltır.

ADB Kimlik Doğrulama: Android 4.2.2'den beri, ADB bağlantıları bir RSA

keypair ile doğrulanır. Bu, saldırganın bir cihaza fiziksel erişimi olan ADB yetkisiz

kullanımını önler.

Android uygulamalarından gelen setuid sınırlama: zigot proces, android

sisteminin setuid programının çalışmasını önlüyor.

Yetenek sınırlayıcı: Android, zigot ve ADB önceki gereksiz uygulamaları

kaldırmak için artık PR_CAPBSET_DROP'u kullanıyor. Bu, kabuktan gelen

ayrıcalıklı özelliğe sahip Android uygulamaların ve uygulamaların başlamasını

engeller.

Android şifre deposu sağlayıcısı: API'li Android uygulamalarında özel kullanım

tuşları imkanı veren şifre deposu vardır. Bu şifre deposu API'li uygulamalara kendine

özel şifre tanımlamalarına izin verir ve bu şifre başka uygulama tarafından

kullanılamaz.

KeyChain isBoundKeyAlgorithm: Şimdi keychain API şimdi isbound keytype

isimli bir method sunuyor. Bu method uygulamaya sistem genelinde cihaz için

güvenliğin bir donanım köküne bağlı olduğunu doğrulamak için izin veren bir

yöntemdir. Bu da kök uzlaşma durumunda dahi cihaz dışına çıkmaması için özel

anahtarı oluşturmak veya saklamak için bir yer sağlar.

NO_NEW_PRIVS.: Android zigot, ilaveten kullanılan bir önceki kod uygulayıcıyı

engellemek için PR_SET_NO_NEW_PRIVS kullanır.

FORTIFY_SOURCE geliştirmeleri: Potansiyel zayıf noktaları ya da bitirilmemiş

dizilerin kayıt hatalarını tespit eder.

Yer Değiştirme korumaları: Yalnızca statik haldeki yer değişimini okumasına izin

verir ve Android kodundaki yeri değiştirilmiş tüm metinler kaldırıldı.

Geliştirilmiş EntropyMixer: Kapatma yeniden başlatma ve ek olarak karışık

zamanlardaki düzensizlik. Tüm cihazlar açıkken entropy yapmasına izin verir ve

özellikle hemen yeniden başlattan sonra hazır olan cihazlar için yararlıdır [9].

Page 45: Mobil i̇şletim sistemlerinde güvenlik

32

ANDROID 4.4.

Selinux ile güçlendirilmiş Android Sandbox: Android, şimdi güçlendirme

modunda Selinux kullanır. Selinux, mevcut isteğe bağlı erişim denetim tabanlı

güvenlik modelini arttırmada kullanılan linux çekirdeğindeki zorunlu bir erişim

kontrol sistemidir. Bu potansiyel güvenlik açıklarına karşı ek koruma sağlar.

Kullanıcı başına VPN: Çok kullanıcılı cihazlarda, VPN şimdi kullanıcı başına

uygulanır. Böylelikle kullanıcı cihaz üzerinde diğer kullanıcıları etkilenmeden VPN

üzerinden tüm ağ trafiğini yönlendirmek için izin verebilir.

AndroidKeyStore'da ECDSA Destek Sağlayıcı: Android'te şimdi ECDSA ve DSA

algoritmalarının kullanımını sağlayan bir şifre deposu sağlayıcısı vardır.

Cihaz İzleme Uyarıları: Herhangi bir sertifika şifreli ağ trafiğini izlemek için cihaz

sertifika deposuna eklenmişse Android bir uyarı ile kullanıcılara bunu bildirir.

FORTIFY_SOURCE: Android, 2.ci seviyeyi destekler. Tüm kod bu uygulamalarla

derlenmiştir. FORTIFY_SOURCE C için bir derleyici olan Clang ile çalışmak için

geliştirilmiştir.

Sertifika Sabitleme: Android, güvenli SSL / TLS iletişimlerinde kullanılan Google

sertifikalarının hileli kullanımını algılar ve önler.

Güvenlik Düzeltmeleri: 4.4 aynı zamanda Android'e özel güvenlik açıkları için

düzeltmeler içerir.

3.2.7. CİHAZLARIN KÖKLEŞMESİ

Varsayılan olarak, Android üzerinde sadece çekirdek ve çekirdek uygulamaların

küçük bir alt kümesi kök izinleri ile çalıştırılır. Android; kök izinleri ile işletim

sistemi, çekirdek ve herhangi diğer bir uygulamayı değiştirerek bir kullanıcı veya

uygulamayı engellemez. Genel olarak, kök tüm uygulamalara ve tüm uygulama

verilerine tam erişime sahiptir. Kullanıcılar, uygulamalara kök erişimi vermek için

Android cihaz üzerinde izinleri değiştirir, kötü niyetli uygulamalar ve potansiyel

uygulama kusurları için güvenlik arttırır.

Sahip oldukları bir Android cihaz değiştirme yeteneği, Android platformu ile çalışan

geliştiriciler için önemlidir. Birçok Android cihaz kullanıcısı, alternatif bir işletim

sisteminin kurulumunu sağlamak için bootloader kilidini açma yeteneğine sahiptir.

Bu alternatif işletim sistemleri, hata ayıklama uygulamaları ve sistem bileşenleri

veya Android API'leri tarafından uygulamalara sunulmamış özelliklere erişmek için

sahibinin kök erişim sağlamasına izin verebilir [7].

Page 46: Mobil i̇şletim sistemlerinde güvenlik

33

Bazı cihazlarda, fiziksel bir cihaz kontrolü ve bir USB kablosu ile bir kişinin

kullanıcıya kök ayrıcalıkları sağlayan yeni bir işletim sistemi yüklemek mümkündür.

Varolan herhangi bir kullanıcı verisini korumak için, kilit açma adımın bir parçası

olarak önyükleme yükleyicisi varolan herhangi bir kullanıcı verisini silmeyi

gerektirir. Kök, bir çekirdek hatasından faydalanarak veya güvenlik açığı bu

korumayı atlayarak erişim kazanabilir.

Cihaz üzerinde saklı bir anahtar ile veri şifrelemek, kök kullanıcılardan gelen

uygulama verisine koruma sağlamaz. Uygulamalar, bir kullanıcı parolası veya bir

sunucu üzerindeki gibi kapalı cihazda saklı bir anahtar ile şifreleme kullanarak veri

koruma katmanı ekleyebilir. Bu yaklaşım , anahtar halihazırda değilse geçici koruma

sağlayabilir ancak eninde sonunda uygulama için anahtar sağlanmalıdır, ancak o

zaman kök kullanıcılar erişilebilir olur.

Donanım çözümlerinin kullanımı yoluyla kök kullanıcılardan veri korumak daha

sağlam bir yaklaşımdır. OEM'ler, Google cüzdan için NFC ile ilgili güvenilir

depolama veya video oynatımı için DRM gibi belirli içerik türlerine erişimi

sınırlandıran donanım çözümleri uygulamayı seçebilir.

Bir kayıp yada çalıntı cihaz durumunda, tam dosya sistemi şifreleme Android

cihazlarda şifreleme anahtarını korumak için cihaz parolasını kullanır, bu yüzden

kullanıcının cihaz parolası olmadan önyükleme yükleyicisini veya işletim sistemini

değiştirmek kullanıcı verisine erişmek için yeterli değildir.

3.2.8. KULLANICI GÜVENLİK ÖZELLİKLERİ

3.2.8.1. DOSYA SİSTEMİ ŞİFRELEME

Android 3.0 ve sonraki sürümler tam dosya sistemi şifreleme sağlar, bu yüzden tüm

kullanıcı verileri ESSIV:SHA256 ve CBC ile AES128'in dmcrypt uygulamasını

kullanarak çekirdekte şifreli olabilir. Şifreleme anahtarı, kullanıcı cihaz parolası

olmadan depolanmış verilere yetkisiz erişimi engelleyen ve kullanıcı parolasından

türetilen bir anahtar kullanarak AES128 ile korunur.

Sistematik parola tahmin saldırılarına karşı direnç sağlamak için, parola rastgele bir

"salt" ile birleştirilir ve dosyasistemi anahtarının şifresini çözmek için daha önce

kullanılan standart PBKDF2 algoritmasını kullanarak SHA1 ile defalarca "hash"

edilir.

Page 47: Mobil i̇şletim sistemlerinde güvenlik

34

Sözlük parola tahmin saldırılarına karşı direnç sağlamak için, Android tarafından

zorunlu ve cihaz yöneticisi tarafından ayarlanabilir karmaşık parola kuralları sağlar

[4].

Dosyasistemi şifreleme, bir kullanıcı parolasının kullanımını gerektirir. Örnek

tabanlı ekran kilidi desteklenmez.

* hash: bir hashing algoritmasının ( md5, sha1, sha2 ) şifrelenmiş çıktısıdır. Bir

hashing algoritmasında açık metin ve şifrelenmiş metin arasında tek yönlü bir ilişki

vardır. Yani herhangi bir açık metin şifrelenmiş metine dönüştürüldüyse, şifrelenmiş

bir metin açık bir metine dönüştürülemez. Hashing algoritmasında girdinin boyutu

standart dışında büyük olsa bile şifrelenmiş çıktısı sabit değerdedir. Bu sayede

girdinin boyutu veya türü belirlenemez.

* salt: rastgele üretilmiş ve oluşturulmuş değerdir. Şifre ve salt birleştirilerek ortaya

çıkan metin bir hash fonksiyonuna gönderilir. Sonra ortaya çıkan bu hash veri, salt

ile birlikte kaydedilir. Büyük boyutlardaki salt değer, her şifreyi eşsiz hashleyerek

önceden hesaplanmış saldırıları engeller.

Örneğin; X ve Y' ye ait aynı veritabanında saklanan aynı şifreler, salt değerleri

farklı hash değerlerine sahip olacakları için bir saldırgan veritabanına erişse bile bu

ikisinin şifresinin aynı olduğu bilemeyecektir. Saldırganın başarılı olabilmesi için her

salt değerinin ayrı ayrı hesaba katılması gerekir. Salt kullanılmasının amacı

şifrelerdeki entropi seviyesini arttırarak daha iyi bir koruma sağlamaktır.

3.2.8.2. PAROLA KORUMASI

Android, bir cihaza erişim sağlamadan önce kullanıcı tarafından sağlanan parolayı

doğrulamak için yapılandırabilir. Cihazın yetkisiz kullanımını önlemeye ek olarak,

bu parola tam dosyasistemi şifrelemesi için şifreleme anahtarını korur. Bir parola

veya karmaşık parola kurallarının kullanımı bir cihaz yöneticisi tarafından gerekli

olabilir.

3.2.8.3. CİHAZ YÖNETİMİ

Android 2.2 ve sonraki sürümler sistem düzeyinde Android cihaz yönetim özellikleri

sağlayan API sağlar. Örneğin; Yerleşik Android E-posta uygulaması, Exchange

desteği arttırmak için API'leri kullanır.

Page 48: Mobil i̇şletim sistemlerinde güvenlik

35

E-posta uygulaması sayesinde, Exchange yöneticileri cihazlar arasında sayısal

PIN'ler ve alfasayısal parolalar dahil parola politikalarını uygulayabilir. Yöneticiler,

ayrıca kayıp veya çalıntı telefonları uzaktan silebilir. Android sistemiyle birlikte

dahili uygulamalarda kullanmaya ek olarak, bu API'ler Aygıt yönetimi çözümlerinin

3.taraf sağlayıcıları için kullanışlıdır.

3.3. ANDROID UYGULAMA GÜVENLİĞİ

3.3.1. UYGULAMANIN UNSURLARI

Android, mobil cihazlar için açık kaynak platformu ve uygulama ortamı sağlar.

Çekirdek işletim sistemi, Linux çekirdeğe dayalıdır. Android uygulamaları en çok

Java programlama dilinde yazılmıştır ve Dalvik sanal makinesinde çalıştırılır. Ancak,

uygulamalar yerel kodda da yazılmış olabilir. Uygulamalar, .APK dosya uzantısına

sahip tek bir dosyadan yüklenir.

Ana Android uygulama yapı taşları:

AndroidManifest.xml: AndroidManifest.xml dosyası, bir uygulama içindeki tüm

üst düzey bileşenler ile sisteme ne yapacağını söyleyen denetim dosyasıdır. Bu aynı

zamanda hangi izinlerin gerekli olduğunu belirtir.

Etkinlikler: Genellikle tek bir kullanıcı odaklı görev için koddur ve kullanıcı için bir

UI görüntülenmesini içerir ancak zorunda değildir ( bazı etkinlikler kullanıcı

arabirimlerini asla görüntüleyemez ).

Tipik olarak, uygulamanın etkinliklerinin biri uygulama için bir giriş noktasıdır.

Hizmetler: Bir hizmet, arka planda çalışan bir kod parçasıdır. Bu kendi işleminde

veya başka bir uygulama süreci bağlamında çalıştırılabilir. Diğer bileşenler bir

hizmete engel olur ve uzaktan prosedür çağrıları ile üzerindeki yöntemleri çağırır.

Bir medya oynatıcı bir hizmet örneğidir: kullanıcı, medya seçimi kullanıcı

arabirimini sonlandırdığında bile kullanıcı muhtemelen hala müzik çalmaya devam

etme niyetindedir.

Yayın Alıcısı: Başka bir uygulama veya işletim sistemi tarafından verilen, amacı

bilinen IPC mekanizmasında örnek bir nesnedir. Bir uygulama, düşük pil mesajı için

veya bu bilgilere dayanarak onun davranışını değiştirmek için bir alıcıya

kaydolabilir.

Page 49: Mobil i̇şletim sistemlerinde güvenlik

36

3.3.2. ANDROID İZİN MODELİ: ERİŞİM KORUMALI API'LER

Android üzerindeki tüm uygulamalar, bir Application Sandbox içinde çalışır.

Varsayılan olarak bir Android uygulaması sadece sistem kaynaklarının sınırlı bir

alanına erişebilir. Sistem, kaynakların yanlış veya kötü niyetle kullanılması halinde

olumsuz kullanıcı deneyimi, ağ veya cihazdaki verileri etkileyebilecek Android

uygulamaya erişimi yönetir [7].

Bu kısıtlamalar birçok farklı biçimde uygulanır. Bazı yetenekler, hassas işlevselliği

için API'lerin kasıtlı bir eksikliği tarafından kısıtlıdır ( Sim kartı doğrudan

değiştirmek için bir Android API yoktur ). Bazı durumlarda, uygulama başına

depolama yalıtımı gibi rollerin ayrılması bir güvenlik önlemi sağlar. Diğer

durumlarda hassas API'ler, izinler olarak bilinen bir güvenlik mekanizması sayesinde

korunmak ve güvenilir uygulamalar tarafından kullanılmak için amaçlanmıştır.

Bu korumalı API'lerin içerdikleri:

* Kamera İşlevleri

* Konum İşlevleri

* Bluetooth İşlevleri

* Telefon İşlevleri

* SMS / MMS İşlevleri

* Ağ / Veri Bağlantıları

Bu kaynaklar, yalnızca işletim sistemi üzerinden erişilebilirdir. Cihaz üzerinde

korumalı API'lerin kullanımını sağlamak için, bir uygulama onun bildiriminde

ihtiyacı olan yetenekleri tanımlamalıdır. Bir uygulama yüklemeye hazırlanırken,

sistem kullanıcıya istenen izinleri gösteren bir iletişim kutusu görüntüler ve

yüklemeye devam etmek isteyip istemediğinizi sorar. Kullanıcı yüklemeye devam

ederse, sistem kullanıcıya istenen tüm izinlerin verilmiş olduğunu kabul eder.

Kullanıcı, izinleri tek tek red veya kabul edemez. Hepsini bir bütün olarak red veya

kabul edebilir. Bir kez verilen izinler, uygulamaya yüklü olduğu müddetçe uygulanır.

Kullanıcı karışıklığını önlemek için; sistem, uygulamaya verilen izinlerin tekrarı için

kullanıcıya bildirimde bulunmaz. Çekirdek işletim sisteminde bulunan veya bir OEM

ile paketlenmiş uygulamalar, kullanıcıdan izin istemez.

Page 50: Mobil i̇şletim sistemlerinde güvenlik

37

Eğer bir uygulama kaldırılırsa izinleri de kaldırılır bu yüzden bir sonraki yeniden

yükleme için yeni izin ekranlarına ihtiyaç olacaktır.

Cihaz ayarları içinde, kullanıcılar daha önceden yüklü uygulamaları için izinleri

görüntüleyebilecek, GPS, radyo veya Wi-Fi gibi bazı küresel işlevleri seçerek devre

dışı bırakabilecektir. Bir uygulama; uygulamanın beyanında bildirilmemiş korumalı

özelliği kullanmak için çalıştığında, izin hatası uygulamaya geri atılan bir güvenlik

istisnasına tipik sonuç olacaktır.

Korumalı API izin denetimi, tuzakları önlemek için mümkün olan en düşük seviyede

uygulanır. Bir uygulama yüklendiğinde kullanıcı mesajlaşma örneği korumalı

API'lere erişim talep ederken Şekil 2 'de gösterilmiştir.

Uygulama Yükleme İzinleri & G. Maps Yüklenmiş Uygulama İzinleri & Gmail

Şekil 2: Uygulama için izinlerin gösterimi

Page 51: Mobil i̇şletim sistemlerinde güvenlik

38

OEM tarafından önceden yüklenmiş uygulamalar ile kullanılıyor olabilen, 3.parti

uygulamalar için geçerli olmayan ama SMS yayın amaçları gönderme yeteneği gibi

bazı cihaz yetenekleri vardır.

3.3.3. KULLANICILAR 3. PARTİ UYGULAMALARI NASIL ANLAR?

Android, 3.parti uygulamalar ile etkileşime girdiğinde kullanıcılara açık hale

getirmek için çaba harcar ve bu uygulamalar kullanıcıyı bilgilendirme yeteneklerine

sahiptir. Herhangi bir uygulama yüklemeden önce, uygulamanın istediği farklı izinler

hakkında kullanıcıya net bir mesaj gösterilir. Yüklendikten sonra, herhangi bir izin

için kullanıcıya onay sorulmaz [7].

Yükleme zamanından önce, izinleri göstermek için pek çok sebep vardır. Bu

olduğunda kullanıcı etkin olarak uygulama hakkındaki bilgileri, onların ihtiyaç ve

beklentilerinin uyumlu olup olmadığını belirlemek için işlevsellik ve geliştiriciyi

gözden geçirir.

Diğer bazı platformlar, kullanıcı bildirimi için uygulamalar kullanımdayken veya

her oturumun başında izin isteyen farklı bir yaklaşım kullanır. Android'in vizyonu,

kullanıcılar için uygulamalar arasında sorunsuz geçiştir. Her defasında teyit

sağlanması, kullanıcıyı yavaşlatacak ve harika bir kullanıcı deneyimi sunan Androd'i

engelleyecektir. Kullanıcı, yükleme zamanında eğer onlar rahatsız ediyorsa

kullanıcıya uygulamayı yüklememe seçeneği sunan inceleme izinlerine sahiptir.

Ayrıca, birçok kullanıcı arabirimi üzerindeki çalışmalar kullanıcının gösterilen

herhangi bir iletişimi "tamam" diyerek başlatması için bazı sebeplere sahip olduğunu

göstermiştir. Android'in güvenlik hedeflerinden birisi, kullanıcıya kendisinin

görmezden gelindiği yok sayıldığı iletişimleri kullanarak yapılamayan önemli

güvenlik bilgilerini etkin bir şekilde iletmektir. Bir kez ve yalnızca önemli olduğunda

önemli bilgileri sunarak, onların kabul ettiğinin hakkında kullanıcının ne düşündüğü

daha olasıdır.

Bazı platformlar, tüm uygulama işlevselliği hakkında herhangi bir bilgi göstermeyi

tercih etmez. Bu yaklaşım, kullanıcıları uygulama yeteneklerini tartışmaktan ve

kolayca anlamaktan engeller. Tüm kullanıcıların her zaman tam bilinçli kararlar

alması mümkün değilken, Android kullanıcının geniş bir yelpazesindeki kolayca

erişilebilir uygulamalar hakkında izinleri model bilgi haline getirir.

Page 52: Mobil i̇şletim sistemlerinde güvenlik

39

Örneğin; beklenmedik izin istekleri, uygulama işlevselliği hakkında kritik sorular

sormak için daha sofistike yani çok yönlü gelişmiş kullanıcıları isteyebilir ve onlar

tüm kullanıcılar tarafından görülebilen Google Play gibi yerlerde kaygılarını

paylaşabilir.

3.3.4. İŞLEMLERARASI İLETİŞİM

İşlemler, geleneksel UNIX tipi mekanizmalardan birini kullanarak iletişim kurabilir.

Dosya sistemi, yerel yuva ve sinyaller gibi örnekleri içerir. Ancak, yine de Linux

izinleri geçerliliğini korur.

Android, ayrıca yeni IPC mekanizmaları sağlamaktadır:

Binder ( bağ ): Hafif bir yetenek tabanlı yordam çağrı mekanizması, süreç ve süreç

dışı çapraz aramalar gerçekleştirilirken yüksek performans için tasarlanmıştır.

Binder, özel bir Linux sürücüsü kullanılarak uygulanır.

Services: Hizmetler, Binder kullanarak doğrudan erişilebilir arabirimleri sağlar.

Niyetler ( Girişimler ): Bir niyet, birşey yapmak için bir "niyeti" temsil eden basit

bir mesaj nesnesidir. Örneğin; uygulama bir web sayfasını görüntülemek istiyorsa,

bir "niyet örneği" oluşturarak URL'yi görüntülemek için bir "niyet" ifade edilerek

kapalı sisteme teslim edilir. Sistem, kodun bazı diğer parçalarının "niyeti" nasıl

koruduğunu bulur ve onu çalıştırır. Niyetler, ayrıca sistem genelinde ilginç olayların

yayını için kullanılabilir.

Content Providers ( İçerik Sağlayıcılar ): Bir İçerik Sağlayıcı, cihazdaki verilere

erişimi sağlayan bir veri deposudur ve kullanıcının kişiler listesine erişmek için

kullanılan klasik bir örnektir. Bir uygulama, İçerik Sağlayıcı yoluyla diğer

uygulamaların ortaya çıkardığı verilere erişebilir ve ayrıca bir uygulama kendi

verilerini ortaya çıkarmak için kendi İçerik Sağlayıcılarını tanımlayabilir.

Ağ yuvaları veya herkes tarafından yazılabilir dosyalar gibi diğer mekanizmaları

kullanarak IPC uygulamak mümkün olsa da, bunlar önerilen Android IPC

çerçeveleridir.

Page 53: Mobil i̇şletim sistemlerinde güvenlik

40

3.3.5. MALİYET DUYARLI API'LER

Maliyet duyarlı bir API'nin herhangi bir işlevi, kullanıcı veya ağ için bir maliyet

oluşturabilir. Android platformu, işletim sistemi tarafından kontrol edilen korumalı

API'lerin listesindeki maliyet duyarlı API'leri yerleştirmiştir. Kullanıcı, maliyet

duyarlı API'leri kullanmak isteyen 3. parti uygulamalara açık izin vermelidir.

Android 4.2. SMS kullanımı üzerinde daha fazla denetim sağlar. Eğer, bir uygulama

ek ücrete neden olacak kaliteli hizmeti kullanarak kısa koda SMS göndermeye

çalışırsa Android bir bildirim sağlar. Kullanıcı, mesaj göndermek ve engellemek için

uygulamaya izin vermeyi seçebilir.

Bu API'ler şunları içerir:

* Telefon * Ağ / Veri * In-App Billing

* SMS/MMS * NFC Access

3.3.6. SIM KART ERİŞİM

Sim karta düşük seviye erişim, 3.parti uygulamalar için geçerli değildir. İşletim

sistemi, tüm iletişimi Sim kart hafızasındaki kişisel bilgilere erişim de dahil olmak

üzere Sim kart ile yönetir. Uygulamalar, RIL tarafından özel olarak yönetildiği için

ayrıca AT komutlarına erişemeyebilir. RIL, bu komutlar için yüksek seviyeli API 'ler

sağlar.

3.3.7. KİŞİSEL BİLGİLER

Android, korumalı API'lerin dizisinin içindeki kullanıcı verilerine erişim sağlayan

API yerleştirmiştir. Normal kullanımlar ile Android cihazlar aynı zamanda

kullanıcılar tarafından yüklenen 3.parti uygulamalar içindeki verileri de

biriktirecektir. 3.parti uygulamalardan gelen verileri korumak için Android izin

kontrollerini kullanabilir, bu bilgileri paylaşmak için uygulamalar seçilebilir.

Sistem içerik sağlayıcıların, açıkça tanımlanmış izinler ile oluşturulmuş rehber ve

takvim gibi kişisel olarak tanımlanabilir kişisel bilgileri içermesi muhtemeldir. Bu

parçalı yapı, uygulamaya sağlanabilir bilgi türlerinin açık göstergesi ile kullanım

sağlar. Yükleme sırasında bir 3.cü taraf uygulama bu kaynaklara erişim için izin

isteyebilir. Eğer izin verilirse, uygulama yüklenebilir ve yüklü olduğu herhangi bir

zamanda istenen verilere erişebilecektir.

Page 54: Mobil i̇şletim sistemlerinde güvenlik

41

Şekil 3: Hassas kullanıcı verilerine erişim yalnızca korumalı API'ler aracılığıyla

kullanılabilir.

Herhangi bir uygulama kişisel bilgileri toplayacak, varsayılan olarak bu bilgiler

sadece özel uygulama için sınırlı olacak. Eğer bir uygulama, IPC'ye rağmen diğer

uygulamalar için verileri kullanılabilir duruma getirmeyi seçerse IPC mekanizması

için uygulama erişim verme izinleri uygulayabilirsiniz.

3.3.8. HASSAS VERİ GİRİŞ CİHAZLARI

Android cihazlar sıklıkla, uygulamaların çevre ile etkileşimine izin vermek için

kamera, mikrofon veya GPS gibi hassas veri giriş cihazları sağlamaktadır. Bir 3.parti

uygulamanın bu cihazlara erişmesi için, Android İşletim Sistemi izinleri aracılığıyla

kullanıcı tarafından ilk olarak açıkça erişim sağlanmalıdır. Yükleme sonrasında

yükleyici, algılayıcı ( sensör ) için kullanıcı adı isteyen izni isteyecektir.

Bir uygulama kullanıcının konumunu bilmek isterse, uygulama kullanıcının

konumuna erişmek için bir izin gerekir. Yükleme sonrasında yükleyici, uygulama

kullanıcının konumuna erişirse kullanıcıya soracaktır. Herhangi bir zamanda,

kullanıcı herhangi bir uygulamanın kendi konumuna erişmesini istemiyorsa, o zaman

"ayarlar" uygulamasını çalıştırabilir, "konum ve güvenlik"'e gider, "kablosuz ağları

kullan" seçeneğinin işaretini kaldırır ve "GPS uydularını etkinleştir"'ir. Bu,

kullanıcının cihaz üzerindeki tüm uygulamalar için konum bazlı servisleri devre dışı

bırakacaktır.

Page 55: Mobil i̇şletim sistemlerinde güvenlik

42

3.3.9. UYGULAMA İMZALAMA

Kod imzalama, geliştiricilere izinler ve karmaşık arabirimler oluşturmaksızın kendi

uygulamasını güncellemek ve uygulamanın yazarını tanımlamak için izin verir.

Android platformu üzerinde çalıştırılan her uygulama geliştirici tarafından

imzalanmış olmalıdır. Uygulamalar, imzalanmış olmadan yüklenmeye çalışıldığında

Android cihaz üzerindeki paket yükleyicisi veya Google Play tarafından

reddedilecektir [7].

Android'te; Uygulama İmzalama, Application Sandbox' a bir uygulama

yerleştirmek için ilk adımdır. İmzalanmış uygulama sertifikası, hangi uygulamanın

hangi kullanıcı kimliği ile ilişkili olduğunu tanımlar; farklı uygulamalar farklı

kullanıcı kimlikleri altında çalışır. Uygulama İmzalama, iyi tanımlanmış IPC

üzerinden herhangi bir başka uygulama dışında bir uygulamaya erişememeyi sağlar.

Bir uygulama ( APK dosyası ) bir Android cihaza yüklendiğinde, Paket Yöneticisi

APK'nın içerdiği sertifika ile doğru şekilde imzalandığını doğrular. Eğer sertifikadaki

ortak anahtar cihazdaki bir diğer APK'yı imzalamak için kullanılan anahtar ile

eşleşirse, yeni APK'nın diğer benzer şekilde imzalanan APK'lar ile bir UID ile

paylaşacağını bildirimde belirtme seçeneği vardır.

Uygulamalar, kendi tarafından veya OEM, operatör veya alternatif pazar gibi 3.parti

bir taraftan imzalanmış olmalıdır. Android, geliştiricilerin izin veya dış yardım

olmaksızın kendinden imzalı sertifikalar kullanarak kod imzalamayı üretebilmelerini

sağlar. Uygulamaların merkezi bir otorite tarafından imzalanmış olması gerekmez.

Anroid halihazırda, uygulama sertifikaları için CA doğrulaması gerçekleştirmez.

Uygulamalar; ayrıca imza koruma düzeyinde güvenlik izinlerini beyan edebilir,

Application Sandbox'ları ve farklı UID'leri korurken benzer anahtar ile imzalanmış

uygulamalar için sadece erişimi kısıtlar. Aynı geliştirici anahtarı ile imzalanan iki

veya daha fazla uygulama, kendi bildiriminde bildirilebilir paylaşılan UID özelliği

yoluyla izin verilen paylaşılan Application Sandbox ile daha yakın bir ilişkidir.

3.3.10. UYGULAMA DOĞRULAMASI

Android 4.2. ve sonraki sürümleri uygulama doğrulamasını destekler. Kullanıcılar,

kurulumdan önce bir uygulama doğrulayıcı tarafından değerlendirilir ve uygulama

doğrulamayı etkinleştirmeyi seçebilir. Zararlı olabilecek bir uygulama yüklemeye

Page 56: Mobil i̇şletim sistemlerinde güvenlik

43

çalışıldığında uygulama doğrulama kullanıcıyı uyarabilir; eğer bir uygulama kötü

özellikliyse yüklemeyi engelleyebilir.

3.3.11. DİJİTAL HAKLAR YÖNETİMİ

Android platformu, içerik ile ilişkili lisans kısıtlamaları için hakları korunan içeriğe

uygun olarak uygulamaları yönetmeyi sağlayan genişletilebilir bir DRM çerçeve

sağlar. Android DRM çerçeve, 2 mimari katman halinde uygulanır. ( Şekil: 4 )

* Bir DRM çerçeve API'si, Android uygulama çerçevesi aracılığıyla uygulamalara

maruz kalır ve standart uygulamalar için Dalvik Sanal Makinesi aracılığıyla çalışır.

* DRM çerçevesi uygulayan bir yerli kod DRM yöneticisi, DRM eklentileri dijital

haklar yönetimine işlemek için bir arayüz sunar ve çeşitli DRM düzenleri için şifre

çözer.

Şekil 4: Android Platformu Üzerinde Dijital Haklar Yönetiminin Mimarisi

3.4. ANDROID GÜNCELLEMELERİ

Android cihazların çoğunda kodu güncelleştirmek için 2 yol vardır: OTA

güncellemeleri veya yan yüklü güncelleştirmeler OTA güncellemeleri tanımlanmış

bir zaman üzerinden dışarı yuvarlanabilir veya bir kerede tüm cihazlar için zorlanır,

OEM veya taşıyıcıya bağlı olarak güncelleştirmeler zorlanmak istenir.

Yan yüklü güncelleştirmeler, kullanıcıların yerel masaüstü bir makineye veya

doğrudan telefona bir zip dosyası indirmek için yerel bir merkezden temin edilebilir.

Page 57: Mobil i̇şletim sistemlerinde güvenlik

44

Güncelleme bir kez kopyalanır ve cihazdaki SD karta indirilir, Android güncellemeyi

tanıyacak, doğruluğunu ve gerçekliğini onaylayarak cihazı otomatik olarak

güncelleyecektir.

Eğer, sorumlu veya dahili bir tehlikeli güvenlik açığı tespit edilirse Google veya

Android Açık Kaynak Projesi'ne bildirilirse Android güvenlik ekibi aşağıdaki

işlemlere başlar.

* Android ekibi, imzalanmış NDA'larla ilgili sorunları şirketlere bildirir ve çözümü

tartışmaya başlar.

* Sahipleri kodu düzeltmeye başlayacak.

* Android ekibi, Android'le ilgili güvenlik sorunlarını çözecektir.

* Bir yama hazır olduğunda, NDA şirketlere düzeltme verilir.

* Android ekibi, Android Açık Kaynak Projesi'nde yama yayınlayacak.

* OEM / taşıyıcı, müşterileri için bir güncelleştirme sağlayacaktır.

NDA, bir düzeltmenin kullanılabilirliğinden önce güvenlik sorununun yaygın hale

dönüşmemesini ve kullanıcıları riske atmamayı sağlamak için gereklidir. Birçok

OHA üyesi Android cihazlarda önyükleme yükleyicisi, wi-fi sürücüleri ve radyo gibi

kendi kodunu çalıştırır. Android Güvenlik Ekibi, bu ortak koddaki güvenlik

sorununu bildirir bildirmez NDA'lar eldeki sorun ve benzeri sorunlar için hızlı bir

düzeltme bulmak için OHA ortakları ile istişare edecektir. Ancak, hatalı kod yazan

OHA üyesi sorunu düzeltmek için nihai sorumludur.

Eğer tehlikeli bir güvenlik açığı sorumlulukla ifşa edilmediyse, daha sonra Google

veya Android Açık Kaynak Projesi bir yama oluşturmak için mümkün olduğunca

hızlı çalışacaktır. Yama test edilmiş ve kullanıma hazır olduğunda kamuya veya

ortaklara açıklanmış olacaktır [2].

3.5. GÜVENLİK İPUÇLARI

Android, işletim sistemi içinde güvenlik sorunlarının sıklık ve etkisini azaltan

yerleşik güvenlik özelliklerine sahip olduğu için güvenlik hakkındaki zor kararları

önlemek, dosya izinleri ve varsayılan sistem ile uygulamaları oluşturmak üzere

tasarlanmıştır [1].

Page 58: Mobil i̇şletim sistemlerinde güvenlik

45

Güvenli uygulamalar oluşturmaya yardımcı bazı temel ve yerleşik güvenlik

özellikleri şunlardır:

* Android Sandbox Uygulama, uygulama verilerini ve diğer uygulamalardan kod

yürütülmesini izole eder.

* Güvenli IPC, izinler ve şifreleme gibi ortak güvenlik işlevselliğinin sağlam

uygulamaları ile bir uygulama çerçevesi

* Ortak hafıza yönetim hataları ile ilgili riskleri azaltmak için ASLR, NX, ProPolice,

safe_iop, OpenBSD dlmalloc, OpenBSD calloc ve Linux mmap_min_addr gibi

teknolojiler

* Kayıp veya çalıntı cihazlarda verileri korumak için etkin bir şifrelenmiş bir dosya

sistemi

* Sistem özellikleri ve kullanıcı verilerine erişimi engellemek için kullanıcıya verilen

izinler

* Her bir uygulama bazında, uygulamaya özgü olarak uygulama verilerini kontrol

etmek için uygulama tanımlı izinler

3.5.1. VERİ DEPOLAMA

3.5.1.1. DAHİLİ DEPOLAMAYI KULLANMAK

Oluşturulan dahili depolama dosyaları sadece uygulamalarınız için erişilebilirdir.

Bu koruma Android tarafından uygulanır ve çoğu uygulama için yeterlidir. IPC

dosyalar için genellikle "MODE_WORLD_READABLE" veya

"MODE_WOLRD_WRITEABLE" kullanmaktan kaçınılmalıdır. Çünkü, bu modlar

ne özel uygulamalara veri erişimini sınırlamak için yeterlidir ne de veri biçimi

üzerinde herhangi bir kontrol sağlarlar. Diğer uygulama süreçleriyle verinizi

paylaşmak istiyorsanız, bunun yerine diğer uygulamalar için okuma ve yazma

izinleri sunan bir içerik sağlayıcı kullanmayı düşünebilir ve bir harf ile ayrı ayrı

dinamik izin yardımı yapabilirsiniz.

Hassas veriler için ek koruma sağlamak istiyorsanız uygulamaya doğrudan

erişilemeyen bir anahtar kullanarak yerel dosyaları şifreleyebilirsiniz. Örneğin,

anahtar deposuna bir anahtar yerleştirilebilir ve cihaz üzerinde depolanmayan bir

kullanıcı parolası ile korunur. Bir kök uzlaşma, verileri korumuyorken kullanıcının

parola girişini izleyebilirsiniz. Bu dosya sistemi şifrelemesi olmaksızın kayıp bir

cihaz için koruma sağlayabilir.

Page 59: Mobil i̇şletim sistemlerinde güvenlik

46

3.5.1.2. HARİCİ DEPOLAMAYI KULLANMAK

SD kartlar gibi harici depolamada oluşturulan dosyalar küresel çapta okunabilir ve

yazılabilir. Çünkü, harici depolama kullanıcı tarafından kaldırılabilir veya herhangi

bir uygulama tarafından değiştirilmiş olabilir. Hassas bilgiler, harici depolama

kullanılarak saklanılmamalıdır.

Harici depolama veri işlerken, güvenilir olmayan herhangi bir kaynaktan gelen

veriler gibi giriş doğrulaması yapılmalıdır. Dinamik yükleme öncesinde harici

depolama üzerindeki sınıf dosyalarının ve yürütülebilir dosyaların depolanmaması

tavsiye edilir. Eğer uygulama, harici depolamadan yürütülebilir dosyaları geri

alamıyorsa dosyalar dinamik yükleme öncesinde şifrelenmiş olarak doğrulanmış ve

imzalanmış olmalıdır.

3.5.1.3. İÇERİK SAĞLAYICILARI KULLANMAK

İçerik sağlayıcılar, kullanıcının kendi uygulaması için sınırlı bir yapılandırılmış

depolama mekanizması sunabilir veya diğer uygulamalar tarafından erişime izin

vermek için dışa aktarılır.

İçerik sağlayıcınızın diğer uygulamalara erişim sağlamasını istemiyorsanız

uygulama bildiriminde "android:exported=false" olarak işaretlenmelidir aksi taktirde

diğer uygulamaların depolanmış veriye erişimine izin vermek için

"android:exported=true" olarak ayarlanmalıdır.

Diğer uygulamalar tarafından kullanılmak için bir içerik sağlayıcı oluştururken,

okuma ve yazma için tek bir izin veya bildirim kapsamında okuma ve yazma için

ayrı izinler belirleyebilirsiniz. Eldeki görevi gerçekleştirmek için gerekli olan izinler

için kendi izinlerinizi sınırlamanız tavsiye edilir. Unutulmasın ki; yeni bir işlev

ortaya çıkarmak için daha sonra izinleri eklemek, onları almak ve mevcut

kullanıcıları bozmaktan genellikle daha kolaydır.

Sadece kendi uygulamalarınız arasında veri paylaşımı için içerik sağlayıcı

kullanıyorsanız "android:protectionlevel" özniteliğini "signature" koruması için

ayarlanarak kullanmak tercih edilir. İmza izinleri kullanıcı onayı gerektirmez, bu

yüzden daha iyi bir kullanıcı deneyimi sağlar ve aynı anahtar ile imzalanmış

uygulamalar verilere eriştiğinde içerik sağlayıcı verilere daha kontrollü erişim sağlar.

Page 60: Mobil i̇şletim sistemlerinde güvenlik

47

İçerik sağlayıcılar aynı zamanda "android:grantUriPermissions" özniteliğini

bildirerek daha ayrıntılı erişim sağlayabilir ve

FLAG_GRANT_READ_URI_PERMISSION ile FLAG_GRANT_WRITE_URI_PE

RMISSION bayraklarını kullanarak "Intent" nesnesindeki bileşeni aktifleştirir. Bu

izinlerin kapsamı <grant-uri-permission element> tarafından daha da sınırlı olabilir.

Bir içerik sağlayıcı erişirken query ( ), update ( ) gibi parametrelendirilmiş sorgu

yöntemleri kullanır ve güvenilir olmayan kaynaklardan gelen potansiyel SQL

sokulmasını önlemek için delete ( ) kullanır. Eğer "selection" bağımsız değişken,

yönteme göndermeden önce kullanıcı verileri birleştirilerek oluşturulursa parametreli

yöntemleri kullanmak yeterli olmaz.

Yazma izni hakkında yanlış bir güvenlik algılaması yoktur. Yazma izninin,

oluşturucu WHERE hükümlerini kullanarak bazı verilerin onaylanabilmesi için

mümkün olan SQL deyimlerine izin verdiğini ve ve sonuçları ayrıştırdığını düşünün.

Bir saldırgan, sadece bir sıra değiştirerek bir arama günlüğünde belirli bir telefon

numarasının varlığını derinlemesine araştırabilir.

Eğer içerik sağlayıcı veri öngörülebilir bir yapıya sahipse, yazma izni hem yazma

hem okuma için eşdeğer olabilir.

3.5.2. İZİNLERİ KULLANMA

3.5.2.1. İZİNLERİ İSTEMEK

Uygulama isteklerinin izin sayısının minimize edilmesi tavsiye edilir. Hassas

izinlere erişim olmaması bu izinlerin istemeden kötüye kullanma riskini azaltır,

kullanıcı benimsemesini arttırabilir ve uygulamayı saldırganlar için daha az

savunmasız yapar. Uygulamanın işlevi için, eğer bir izin gerekli değilse o

istenilmemelidir. Herhangi bir izin gerektirmeyen bir şekilde uygulama tasarımı

mümkünse bu tercih edilir.

Örneğin; cihaz bilgilerine erişim isteyen oldukça benzersiz bir tanımlayıcı

oluşturmak yerine uygulama için bir GUID oluşturmak , harici depolama kullanmak

veya dahili depolama da veri depolamak daha doğrudur.

İstenen izinlere ek olarak, uygulama güvenlik duyarlı IPC korumak için

"<permissions>" kullanabilir ve bir içerik sağlayıcı gibi diğer uygulamalara maruz

kalacak.

Page 61: Mobil i̇şletim sistemlerinde güvenlik

48

Kullanıcının onayladığı mümkün olan izinler dışındaki diğer erişim kontrollerinin

kullanılması tavsiye edilir. Çünkü, izinler kullanıcılar için kafa karıştırıcı olabilir.

Örneğin; tek bir geliştirici tarafından sağlanan uygulamalar arasında IPC iletişim için

"imza koruma düzeyi" izinlerini kullanmayı düşünün.

İzin korumalı veri sızıntısı yok. Bu durum, uygulama verileri yalnızca kullanışlı IPC

üzerinden ortaya çıktığında oluşur. Çünkü, belirli bir izin vardır ancak IPC

arabiriminin herhangi bir istemcisinin iznini gerektirmez.

3.5.2.2. İZİNLERİ OLUŞTURMAK

Güvenlik gereksinimlerinin karşılanması sırasında mümkün olduğu kadar az izin

tanımlamalıdır. Çoğu uygulama için yeni bir izin oluşturmak nispeten nadirdir.

Çünkü, "sistem tanımlı izinler" birçok durumu kapsamaktadır. Uygun olan

durumlarda mevcut izinleri kullanarak erişim kontrollerini gerçekleştirin.

Eğer yeni bir izin oluşturmalıysanız, bir "imza koruma düzeyi" ile görevinizi

başarıp başaramayacağınızı düşünün. İmza izinleri kullanıcı için şeffaftır ve sadece

uygulama olarak izin kontrolü yapmadan aynı geliştirici tarafından imzalanmış

uygulamalar ile erişime izin verir.

Eğer, "tehlikeli" koruma seviyesi ile bir izin oluşturursanız dikkate almanız

gereken karmaşık bir dizi vardır:

* İzin, kısaca bir kullanıcıya güvenlik kararını ifade etmek için gerekli olacak bir dizi

olmalıdır.

* İzin dizisi, pek çok farklı dil için yerelleştirilmiş olmalıdır.

* Kullanıcılar, bir uygulama yüklemeyi seçmeyebilir. Çünkü, bir izin kafa karıştırıcı

veya riskli olarak algılanabilir.

* Uygulamalar, izin yaratıcısı yüklü değilken izin isteyebilir.

Kullanıcıların "tehlikeli" izin düzeyinin kullanımından vazgeçirmenin neden olduğu

kafa karışıklığı varken bunların her biri sizin için geliştirici olarak teknik olmayan

önemli bir meydan okuma teşkil eder.

Page 62: Mobil i̇şletim sistemlerinde güvenlik

49

3.5.3. AĞ KULLANMA

3.5.3.1. IP AĞI KULLANMA

Android ağı, diğer Linux ortamlarından önemli ölçüde farklı değildir. Anahtar,

güvenli web trafiği için HttpsURLConnection gibi hassas veriler için uygun

protokoller kullanıldığına emin olur. Android, her yerde HTTP üzerinden sunucu

üzerinde desteklenen HTTPS kullanımını tavsiye etmektedir. Çünkü, mobil cihazlar

ortak Wi-Fi noktaları gibi sık sık güvenli olmayan ağlara bağlanıyor.

Kimliği doğrulanmış, şifreli soket düzeyinde iletişim SSLSocket sınıfı kullanılarak

kolayca uygulanabilir. Android cihazların verilen frekans ile Wi-Fi kullanarak

güvenli olmayan kablosuz ağlara sıklıkla bağlandığı dikkate alınırsa ağ üzerindeki

tüm uygulamaların iletişimi için güvenli ağ kullanımı kuvvetle teşvik ve tavsiye

edilmektedir.

Hassas IPC kullanımı için, bazı uygulamaların "localhost" ağ bağlantı noktalarını

kullandığı tesbit edilmiştir. Bu arabirimler cihazın diğer uygulamaları tarafından

erişilebilir olduğundan bu yaklaşımdan vazgeçilmiş ve bunun yerine kimlik

doğrulama gibi bir "hizmet" ile mümkün Android IPC mekanizması kullanılmıştır.

Ayrıca, ortak ve yaygın bir sorun olan diğer güvensiz protokoller veya http'den

indirilen verilere güvenilmemelidir. Bu, "WebView" giriş doğrulaması ve HTTP'ye

karşı verilen herhangi bir yanıtı içerir.

3.5.3.2. TELEFON AĞI KULLANMA

Sms protokolü öncelikle kullanıcıdan kullanıcıya iletişim için tasarlanmıştır ve veri

aktarmak istediğiniz uygulamalar için uygun değildir. SMS sınırlamaları nedeniyle

kullanıcının cihaz üzerinde bir web sunucusundan uygulamaya veri mesajı

göndermesi için Google Cloud Messaging ve IP ağ kullanımı kuvvetle teşvik ve

tavsiye edilmektedir.

SMS, cihaz veya ağ üzerinde ne şifrelenir ne de şiddetle kimlik doğrulaması yapılır.

Özellikle, herhangi bir SMS alıcısı kötü niyetli bir kullanıcının uygulamaya sms

göndermesini beklemelidir. Hassas komutları gerçekleştirmek için kimliği

doğrulanmamış sms verilere güvenilmemelidir. Ayrıca, SMS'in bilgi sızdırma veya

ağda durdurmaya maruz kalabileceğinin farkında olunmalıdır. Android destekli cihaz

Page 63: Mobil i̇şletim sistemlerinde güvenlik

50

kendisi üzerinde SMS mesajları yayın niyetleri gibi iletilir , bu yüzden onlar

okunabilir veya READ_SMS iznine diğer uygulamalar tarafından ele geçirilebilir.

3.5.4. GİRİŞ DOĞRULAMASI GERÇEKLEŞTİRME

Yetersiz giriş doğrulama, hangi platformda çalışırsa çalışsın uygulamaları etkileyen

en yaygın güvenlik sorunlarından biridir. Android, platform düzeyinde giriş

doğrulama sorunları için uygulamaların maruziyetini azaltan karşı önlemlere sahiptir

ve mümkünse bu özellikler kullanılmalıdır. Ayrıca unutulmamalıdır ki, güvenli dil

türünün seçimi giriş doğrulama sorunlarının olasılığını azaltma eğilimindedir.

Eğer yerel kod kullanıyorsanız, o zaman bir güvenlik sorununu tanıtma

potansiyeline sahip bir IPC'den alınan veya ağ üzerinden alınan dosyalardan herhangi

bir veri okunur. En yaygın sorunlar; buffer overflows, use after free ve off-by-one

errors. Android, bu hatalardan yararlanılmasını daha doğrusu sömürülmesini

azaltmak için DEP ve ASLR gibi bir dizi teknolojiler sağlar ancak bu altta yatan

sorunu çözmez. Arabellek yönetimi ve işaretçiler tarafından dikkatli işleme ile bu

güvenlik açıklarını önleyebilirsiniz [1].

SQL ve JavaScript gibi dinamik string tabanlı diller aynı zamanda komut dosyası

ekleme ve giriş doğrulama sorunları nedeniyle kaçış karakterlerine konudurlar.

Eğer, bir SQL veritabanı veya içerik sağlayıcısına gönderilen sorguların içindeki

verileri kullanıyorsanız SQL enjeksiyon bir sorun olabilir. Yukarıdaki bölümde

tartışıldığı gibi içerik sağlayıcılar hakkında en iyi savunma parametreli sorgular

kullanmaktır. İzinleri sınırlandırma, salt okuma veya salt yazma içindir ve aynı

zamanda SQL enjeksiyon ile ilgili zarar görme ihtimalini azaltabilir.

Yukarıdaki güvenlik özelliklerini kullanamıyorsanız, iyi yapılandırılmış veri

biçimleri ve beklenen biçime uygun veri doğrulama kullanılması tavsiye

edilmektedir. Karakterlerin veya karakter değiştirmelerinin kara listeye alınması

etkili bir strateji olabilirken, bu teknikler pratikte hataya eğilimlidir ve mümkün

olduğunca kaçınılmalıdır.

3.5.5. KULLANICI VERİLERİNİ İŞLEME

Kullanıcı veri güvenliği için en iyi yaklaşım, hassas veya kişisel kullanıcı verilerine

erişen API kullanımının minimize edilmesidir. Eğer kullanıcı verilerine erişiminiz

varsa depolama ve bilgi aktarımını önleyebilirsiniz. Depolama ve bilgi aktarımı

Page 64: Mobil i̇şletim sistemlerinde güvenlik

51

yapılmamalıdır. Son olarak uygulama mantığını bir hash veya geri dönüşü olmayan

form verileri kullanarak uygulanabilir bir şekilde olup olmadığını düşünülmelidir [1].

Örneğin; Uygulamanız, e-mail adresini depolamak veya iletimini engellemek için

birincil anahtar olarak bir e-mail adresinin hash'ini kullanabilir. Bu, verilerin

yanlışlıkla ifşa edilme ihtimalini azaltır ve ayrıca uygulamadan yararlanmaya çalışan

saldırganın şansını azaltır.

Uygulamanız kullanıcı adları veya şifreler gibi kişisel bilgilere erişirse, bazı yargı

kararlarının verilerin saklanması ve kullanımını açıklayan bir gizlilik politikası

sağlamasını gerektirdiğini unutmayın. Kullanıcı verilerine erişimi en aza indirmek

en iyi güvenlik yöntemi aşağıda verilmiştir, bu aynı zamanda kullanıcı verilerinin

uyumunu basitleştirebilir.

Ayrıca, uygulamanızın kendisi tarafından kullanılan 3.cü parti hizmetler ve reklam

için 3.cü parti bileşenler gibi diğer taraflara kişisel bilgileri yanlışlıkla ifşa edip

etmediğini düşünmelisiniz. Bir bileşen veya hizmetin neden kişisel bilgi

gerektirdiğini bilmiyorsanız, bunu vermeyin. Uygulamanız tarafından kişisel

bilgilere erişimin azaltılması, bu alandaki problemler için potansiyeli azaltacaktır.

Eğer hassas verilere erişim gerekliyse, bu bilgilerin sunucuya iletilir olup olmadığını

değerlendirmek veya istemci üzerinde gerçekleştirilebilecek olup olmadığı

gereklidir. Kullanıcı veri iletimini engellemek için istemci üzerindeki hassas verileri

kullanarak herhangi bir kod çalıştırmayı düşünün.

Ayrıca, cihaz üzerinde başka bir uygulama için kullanıcı verilerini cihazdaki aşırı

müsamahakar IPC, herkes tarafından yazılabilir dosyalar ve ağ yuvaları aracılığıyla

yanlışlıkla açığa çıkarmadığınızdan emin olun. Bu, "izinler istemek" bölümünde

tartışılan izin korumalı veri sızıntısının özel bir durumudur.

Eğer bir GUID gerekliyse, büyük ve benzersiz bir sayı oluşturun ve onu saklayın.

Telefon numarası ve kişisel bilgiler ile ilişkisi olabilen IMEI gibi telefon

tanımlayıcıları kullanmayın. Cihazdaki günlükleri yazarken dikkatli olun.

Android'te, günlükler paylaşılan bir kaynaktır ve READ_LOGS izni ile bir

uygulama için kullanılabilir. Telefon günlük verileri geçici ve yeniden başlatma da

Page 65: Mobil i̇şletim sistemlerinde güvenlik

52

silinir olsa da kullanıcı bilgilerinin uygunsuz günlük kayıtları, diğer uygulamalara

yanlışlıkla veri sızıntısına neden olabilir.

3.5.5.1. WEBVIEW KULLANARAK

Çünkü; WebView, HTML ve JavaScript dahil web içerik tüketir. Yanlış kullanım

sitelerarası komut dosyası gibi ortak web güvenlik sorunlarına neden olur. Android,

uygulamanın gerektirdiği minimum işlevselliği WebView'in kapasitesini sınırlayarak

bu potansiyel sorunların kapsamını azaltmak için bir dizi mekanizma içerir.

Eğer uygulamanız doğrudan WebView içinde JavaScript kullanmıyorsa

JavaScriptEnabled () çağırmayın. Bazı örnek kodlar, üretim uygulamalarında

işlevselliğin olabileceği bu yöntemi kullanır. Eğer gerekli değilse bu yöntem

çağrısını kaldırın. Varsayılan olarak WebView, siteler arası komut dosyası mümkün

olmadığından JavaScript yürütmüyor.

JavaScript, özel bir dikkatle addJavaScriptInterface() kullanarak normalde Android

uygulamaları için ayrılmış olan işlemleri çağırmaya izin verir. Eğer onu

kullanıyorsanız, addJavaScriptInterface () sadece web sayfaları için tüm girişlerin

güvenilir olduğunu ortaya çıkarır. Güvenilmeyen giriş izni verilirse, güvenilmeyen

JavaScript'in uygulama içindeki Android yöntemlerini çağırması mümkün olabilir.

Android, sadece APK uygulaması içinde yer alan JavaScript için

addJavaScriptInterface() ortaya çıkarmayı tavsiye etmektedir. Eğer uygulamanız

WebView ile hassas verilere erişirse, yerel olarak depolanan tüm dosyaları silmek

için clearCache () yöntemini kullanmayı isteyebilirsiniz. Sunucu tarafı başlıkları no-

cache gibi aynı zamanda belirli bir önbellek içeriği olmayan bir uygulamayı

belirtmek içinde kullanılabilir.

3.5.5.1.1. KİMLİK BİLGİLERİNİ KULLANARAK

Kullanıcı kimlik bilgilerinin sorulma sıklığını, kimlik avı ve pishing saldırılarına

daha dikkat çekici hale getirmek ve bu saldırıların başarı ihtimalini düşürmek için en

aza indirerek kullanmak tavsiye edilmektedir. Bunun yerine bir yetkilendirme

kullanılmalı veya yenilenmelidir.

Mümkün olduğunca kullanıcı adı ve şifre cihazlarda depolanmamalıdır. Bunun

yerine kullanıcı tarafından sağlanan kullanıcı adı ve parola kullanarak ilk kimlik

Page 66: Mobil i̇şletim sistemlerinde güvenlik

53

doğrulaması yapmak lazımdır, sonra kısa ömürlü kullanım ve hizmete özel yetki

belirteci kullanılabilir.

Servisler, "AccountManager" kullanarak birden fazla uygulama için erişilebilir

olmalıdır. Mümkünse, bulut tabanlı bir hizmeti çağırmak için "AccountManager"

hesap sınıfını kullanın. Cihaz üzerindeki şifreleri saklamayın.

Bir hesap almak için "AccountManager" kullandıktan sonra, "CREATOR" herhangi

bir kimlik bilgisinden geçirmez, böylece siz farkında olmasanızda kimlik bilgileriniz

yanlış uygulamaya geçemiyor.

Eğer kimlik bilgileri sadece oluşturduğumuz uygulamalar tarafından kullanılacağı

zaman "AccountManager", "checkSignature ()" kullanarak erişimi

doğrulayabilirsiniz. Alternatif olarak, eğer sadece bir uygulama kimlik bilgilerini

kullanacaksa depolama için bir "KeyStore" kullanabilirsiniz.

3.5.5.2. ŞİFRELEME KULLANARAK

Veri yalıtımı sağlayan, tam dosya sistemi şifreleme destekleyen ve güvenli iletişim

kanalları sağlamanın yanısıra, Android veri korumak için şifreleme kullanarak bir

dizi kapsamlı algoritma sağlar.

Genel olarak kullanım durumunu destekleyebilir çerçeve uygulamanın önceden

varolanın en üst düzeyini kullanmayı deneyin. Bilinen bir konumdan güvenli bir

şekilde dosya almak gerekiyorsa, basit bir HTTP URL bilgisi yeterli olabilir ve

şifreleme bilgisi gerektirmez. Eğer güvenli bir yol gerekiyorsa, HttpsURLConnection

veya SSLSocket kullanmak yerine kendi protokolünüzü yazmanız düşünülmelidir.

Kendi protokolünüzü uygulamaya ihtiyaç duyuyorsanız kendi şifreleme

algoritmalarınızı uygulamamanızı önemle tavsiye edilmektedir. "cipher" sınıfında

sağlanan RSA veya AES uygulaması içindeki gibi olan mevcut şifreleme

algoritmaları kullanılmalıdır.

Güvenli bir rastgele sayı üreteci için " SecureRandom", herhangi bir şifreleme

anahtarını başlatmak için "KeyGenerator" kullanın. Güvenli bir rastgele sayı üreteci

ile oluşturulmayan bir anahtarın kullanımı, algoritmanın gücünü önemli ölçüde

azaltır ve çevrimdışı saldırılarına izin verebilir.

Page 67: Mobil i̇şletim sistemlerinde güvenlik

54

Tekrar eden kullanımlar için bir anahtar saklamaya ihtiyacınız varsa, şifreleme

anahtarlarının alımı ve uzun vadeli depolama için "KeyStore" gibi mekanizma

kullanın.

3.5.5.3. İŞLEMLERARASI İLETİŞİM KULLANARAK

Bazı uygulamalar, paylaşılan dosyalar ve ağ yuvaları gibi geleneksel Linux

teknikleri kullanarak IPC uygulamaya teşebbüs eder. Bunun yerine IPC için Intent,

Binder veya bir Service ile Messenger ve BroadcastReceiver gibi Android sistemi

fonksiyonlarını kullanmanızı öneririz. Android IPC mekanizmaları, her IPC

mekanizması için ayarlanmış güvenlik ilkesini ve uygulamanın kimliğini doğrulamak

için kullanıcı IPC'sine bağlanmaya izin verir.

Güvenlik öğelerinin çoğu IPC mekanizmaları tarafından paylaşılır. Eğer sizin IPC

mekanizmanız diğer uygulamalar tarafından kullanılmak üzere tasarlanmadıysa,

android:exported niteliğini bileşenin bildirim elemanında "false" için "service" öğesi

gibi ayarlayın.

Bu aynı UID içinde çok sayıda işlemden oluşan uygulamalar için yararlıdır veya

eğer, aslında işlevselliğini ortaya çıkarmak istemediğiniz geliştirmede geç karar

verilirse, IPC olarak yeniden kod yazmak istemezsiniz.

Eğer sizin IPC' nizin diğer uygulamalara erişilebilir olması amaçlandıysa,

<permission> öğesini kullanarak bir güvenlik ilkesi uygulayabilirsiniz. Eğer IPC,

aynı anahtar ile imzalanmış kendi ayrı uygulamaları arasındaysa

android:protectionLevel izin düzeyinde "signature" tercih edilir.

3.5.5.3.1. NİYETLERİ KULLANARAK

Niyetler, Anroid'teki asenkron IPC için tercih edilen mekanizmadır. Uygulama

gereksinimlerinize bağlı olarak, belirli bir uygulama bileşeni için açık bir niyet veya

"sendBroadcast()", "sendOrderedBroadcast()" kullanabilirsiniz.

Unutulmamalıdır ki, sipariş edilmiş yayınlar bir alıcı tarafından "tüketilen" olabilir.

Bu yüzden onlar tüm uygulamalar için teslim edilebilir değildir. Belirli bir alıcıya

teslim edilmesi gereken bir niyet gönderiyorsanız, adı niyet tarafından beyan edilen

bir niyet kullanmalısınız.

Page 68: Mobil i̇şletim sistemlerinde güvenlik

55

Bir niyet gönderenler, alıcının çağrı yöntemi ile Null ( geçersiz ) olmayan bir izni

belirten izine sahip olduğunu doğrulayabilir. Sadece uygulamalar, bu izin ile niyet

alacak. Kötü niyetli uygulamaların, uygun izinler olmadan bu mesajları almak için

kayıt olamayacağından emin olmak için bir izin uygulamayı düşünmelisiniz.

Bu şartlar altında, yayın yükseltmek yerine aynı zamanda doğrudan alıcı çağırarak

düşünebilirsiniz.

Not: Niyet filtreleri, bir güvenlik özelliği olarak kabul edilmemelidir. Bileşenler,

açık niyetler ile çağrılabilir ve niyet filtrelerine uyumlaşabilecek verilere sahip

olamayabilir. Kullanıcı; hizmet, etkinlik veya çağrılan alıcı için düzgün

biçimlendirilmiş niyet alıcısı içinde giriş doğrulamasını onaylamayı yapmalıdır.

3.5.5.3.2. SERVİSLERİ KULLANARAK

Bir "service", diğer uygulamaların işlevselliğini sağlamak için sık sık kullanılır. Her

hizmet sınıfı, kendi bildirim dosyasında karşılık gelen bir bildirime sahip olmalıdır.

Varsayılan olarak, hizmetler başka bir uygulama tarafından çağrılamaz ve ihrac

edilemez. Ancak, eğer hizmet bildirim amaçlı herhangi bir filtre eklerseniz o zaman

varsayılan olarak ihrac edilir. İstediğiniz gibi davranmasından emin olmak için, eğer

açıkça beyan etmek isterseniz android:exported özniteliklisi en iyisidir. Hizmetler;

ayrıca android:permission özniteliği kullanılarak korunabilir.

Bu şekilde, diğer uygulamalar kendi manifestosunu başlatmak, durdurmak veya

servise bağlamak için karşılık gelen bir "uses-permission" öğesine ihtiyaç

duyacaktır.

Bir hizmet, içindeki izinler ile çağrı uygulamasını çalıştırmadan önce

"checkCallingPermission ()" arayarak bireysel IPC çağrıları koruyabilir. Bu gözetim

için daha az eğilimli olduğundan bildirim izinlerini kullanılması tavsiye edilir.

3.5.5.3.3. BINDER VE MESSENGER ARABİRİMLERİ KULLANARAK

Binder ve Messenger kullanmak, Android' teki RPC tarzı IPC için tercih edilen

mekanizmadır. Gerekiyorsa, onlar uç noktaları karşılıklı kimlik doğrulama sağlayan

iyi tanımlanmış bir arabirim sağlar. Android, özel izin kontrolü gerektirmeyen bir

şekilde arabirim tasarımı teşvik etmektedir. Binder ve messenger nesneleri uygulama

Page 69: Mobil i̇şletim sistemlerinde güvenlik

56

bildirimi içinde bildirilmez ve bu nedenle onlara doğrudan bildirim izinleri

uygulayamazsınız.

Onlar genellikle uygulanmış "service" veya "activity" için uygulama bildiriminde

bildirilmiş izinleri devralır. Kimlik doğrulama ve/veya erişim kontrolleri gerektiren

bir arabirim oluşturuyorsanız bu kontrollere "Binder" ve "Messenger" arabiriminde

açıkça kod eklenmiş olmalıdır.

Eğer bir arabirim erişim kontrolleri sağlarsa arayanın gerekli izne sahip olup

olmadığını doğrulamak için "checkCallingPermission ()" kullanın. Bu, uygulamanın

diğer arabirimlere geçtiğinin belirlenmesi gibi arayanın adına bir hizmete erişmeden

önce özellikle önemlidir. Bir "service" tarafından sağlanan arabirim çağırırsa, eğer

verilen hizmete erişim için izniniz yoksa "bindService" çağrısı başarısız olabilir.

Kendi uygulaması tarafından yerel olarak sağlanan bir arabirim çağırırsa, iç güvenlik

kontrollerini sağlamak için "clearCallingIdentiy" kullanmak yararlı olabilir.

3.5.5.3.4. YAYIN ALICILARI KULLANARAK

Bir yayın alıcı, bir "Intent" tarafından başlatılan asenkron istekleri işler. Varsayılan

olarak, alıcılar dışa aktarılır ve başka bir uygulama tarafından çağrılabilir. Eğer sizin

BroadcastReceiver diğer uygulamalar tarafından kullanılmak üzere tasarlandıysa,

uygulama bildirimi içindeki "receiver" öğesini kullanarak alıcılara güvenlik izinleri

uygulamayı isteyebilirsiniz. Bu, uygulamaların BroadcastReceiver için uygun izinler

olmadan niyet göndermesini önleyecektir.

3.5.6. DİNAMİK YÜKLEME KODU

APK uygulamanız dışından yükleme kodu kuvvetle önerilmemektedir. Böylece, kod

tahrifatı veya kod enjeksiyonu nedeniyle uygulama uzlaşma olasılığı önemli ölçüde

artar. Ayrıca, uygulama testleri ve sürüm yönetimi etrafında karmaşıklık ekler. Son

olarak bazı ortamlarda yasaklanmış olabilen bir uygulamanın davranışını doğrulamak

için imkansız yapılabilir.

Eğer uygulamanız dinamik kod yüklerse, yüklenen dinamik kod hakkında akılda

tutulması gereken en önemli şey APK uygulamasının aynı güvenlik izinleri ile

çalışmasıdır. Kullanıcı kimliğinize dayalı uygulama yüklemek için yüklü dinamik

kod dahil olmak üzere uygulama içinde herhangi bir kod çalıştırmayı sağlanmalıdır.

Kullanıcı, kimliğinize dayalı uygulama yüklemek için bir karar verir ve dinamik

Page 70: Mobil i̇şletim sistemlerinde güvenlik

57

olarak yüklenen kod dahil olmak üzere uygulama içinde herhangi bir kodun

çalışmasını sağlamayı bekler.

En büyük güvenlik riski, doğrulanabilir bir kaynaktan gelmesi gereken dinamik

yükleme kodu ile ilişkilidir. Eğer modüller doğrudan APK içindeyse, o zaman onlar

diğer uygulamalar tarafından değiştirilemez. Bu, kodun yerel bir kütüphane veya

DexClassLoader kullanarak yüklenen bir sınıf olup olmadığını doğrular [1].

Uygulamaların, harici depolama gibi herkes tarafından yazılabilir lokasyonlardan

veya şifrelenmemiş protokoller üzerindeki ağdan indirilen gibi güvenilmez

lokasyonlardan kod yüklemeye çalışması sıklıkla görülen bir tehdittir. Bu

lokasyonlar, ağdaki birisine sırasıyla transit içeriği değiştirmek veya bir kullanıcının

cihazındaki başka bir uygulamayı değiştirmek için izin verebilir.

3.5.7. SANAL MAKİNEDE GÜVENLİK

Dalvik, Android'in çalışma zamanı sanal makinedir. Dalvik, Android için özel inşa

edildi ama diğer birçok sanal makinelerin güvenlik kodu ile ilgili endişeleri Android

içinde geçerlidir. Sanal makineye ilişkin güvenlik sorunları ile endişeniz

olmamalıdır. Uygulamanız güvenli bir Sandbox ortamında çalışır. Bu nedenle

sistemdeki diğer işlemler özel veri veya kodunuza erişemez [1].

Bu proje, Android'e özgü ve diğer sanal makine ortamlarından farklı alanlar üzerine

odaklanmıştır. Diğer ortamlarda sanal makine programlama ile deneyimli

geliştiriciler için Android uygulamalar yazma hakkında farklı olabilecek 2 yaygın

konu vardır:

* JVM veya .Net çalışma zamanı gibi bazı sanal makineler, temel işletim sistemleri

özelliklerinden kod izole ederek bir güvenlik sınırı gibi hareket ederler. Dalvik Sanal

Makinesi, Android'te bir güvenlik sınırı değildir. Application Sandbox, işletim

sistemi düzeyinde uygulanır. Dalvik, herhangi bir güvenlik kısıtlaması olmadan aynı

uygulamada yerel kod ile çalışabilir.

* Mobil cihazlarda sınırlı depolama göz önüne alındığında, geliştiriciler için modüler

uygulamalar oluşturmak ve dinamik sınıf yüklemeyi kullanmak yaygındır. Bunu

yaparken, hem uygulama mantığını almayı hem de onu yerel olarak nerede saklamak

gerektiği düşünülmelidir. Harici depolama veya güvenli olmayan ağ kaynakları gibi

Page 71: Mobil i̇şletim sistemlerinde güvenlik

58

doğrulanmamış kaynaklardan gelen dinamik yükleme sınıfı kullanılmamalıdır.

Çünkü, bu kod kötü niyetli davranışları içerecek şekilde değiştirilmiş olabilir.

3.5.8. YEREL KOD GÜVENLİĞİ

Android, genel olarak uygulama geliştirme için yerel kod ile Android NDK

kullanmak yerine Android SDK kullanmayı teşvik etmektedir. Yerel kod ile

oluşturulmuş uygulamalar, arabellek taşmaları gibi yaygın bellek bozulması hataları

dahil daha karmaşık, daha az taşınabilir ve daha fazla hata içerir.

Android ve Linux ortamlarının çoğu arasındaki en önemli fark Application

Sandbox'tır. Android'te, tüm uygulamalar yerel kod ile yazılmış olanlar dahil olmak

üzere Application Sandbox'ta çalışır.

4. SÖZLÜK

Adres Alanı Düzeni Rastgele Seçimi (ASLR)

Bir yazılım hatasının sömürüsünün başarısını çok daha zor hale getirmek için IOS

tarafından kullanılan bir tekniktir. Öngörülemeyen uzaklıkları ve bellek adreslerini

sağlayan yararlanma kodu, bu değerleri istismar eden sert kod değildir. IOS 5 ve

sonrası, tüm sistem uygulamalarının pozisyonları ve kütüphaneler konumdan

bağımsız yürütülebilir olarak derlenmiş 3. parti uygulamalar ile birlikte rastgele

seçilmiştir.

Önyükleme ROM

Bir cihazın işlemcisi tarafından ilk önyükleme başladığı zaman yürütülen ilk koddur.

İşlemcinin ayrılmaz bir parçası olarak, Apple veya bir saldırgan tarafından

değiştirilemez.

DFU

Bu mod, bir cihazın önyükleme ROM kodunun USB üzerinden elde edilebilir

olmasını bekler. DFU modundayken, ekran kararır ama iTunes çalıştıran bir

bilgisayara bağlanırken aşağıdaki istem sunulmuştur: "iTunes, kurtarma modunda bir

iPad algıladı. iTunes ile kullanılmadan önce iPad'i geri yüklemelisiniz"

ECID

Her IOS cihazdaki işlemci için eşsiz bir 64-bit tanımlayıcıdır. Kişiselleştirme

işleminin bir parçası olarak kullanılması bir sır değildir.

Page 72: Mobil i̇şletim sistemlerinde güvenlik

59

Silinebilir Depolama

Şifreleme anahtarlarını saklamak için kullanılan, doğrudan ele alabilinen ve güvenli

silebilen NAND depolamanın özel bir alanıdır. Koruma sağlamıyorken, eğer bir

saldırgan bir cihaza fiziksel olarak saldırırsa, Silinebilir depolama'da düzenlenen

anahtarlar hızlı silmeyi kolaylaştırmak ve ileri güvenlik için anahtar hiyerarşisinin bir

parçası olarak kullanılabilir.

GID

UID gibidir ama bir sınıftaki her işlemci için ortaktır.

iBoot

LLB tarafından yüklenmiş koddur ve buna karşılık güvenli önyükleme zincirinin bir

parçası olarak yükler.

Anahtarlık

Diğer hassas kimlik bilgileri, anahtarları, parolaları geri getirme ve saklamak için

3.parti uygulamalar ve IOS tarafından kullanılan altyapı ve API'ler dizisidir.

API

Herhangi bir uygulamanın kodlarını görmeden ve platform farketmeksizin o

uygulamayı veya fonksiyonları başka uygulamalarda kullanmaya olanak sağlayan

teknolojidir.

Key Wrapping

Başka bir anahtar ile şifrelemedir.

Düşük Düzeyli Önyükleyici

Boot Rom tarafından çağrılan koddur ve buna karşılık güvenli önyükleme zincirinin

bir parçası olarak yükler.

Profil Hazırlama

Uygulamaları sağlayan yetkileri yükleyen ve IOS cihaz üzerinde test eden Apple

tarafından imzalanmış bir dizi varlıkları içeren bir plisttir.

Karışıklık

Bir kullanıcının geçiş kodunun şifreli bir anahtar haline getirilmiş ve cihazın UID ile

güçlendirildiği süreçtir. Bu, bir brute force saldırısının belirli bir cihaz üzerinde

yapılmasını sağlar, böylece oranı sınırlanır ve paralel olarak gerçekleştirilemez.

Page 73: Mobil i̇şletim sistemlerinde güvenlik

60

Karışıklık algoritması UID türetilen bir anahtar ile sözde rastgele fonksiyonu olarak

AES kullanan PBKDF2'dir.

UID

A 256-bit AES anahtarı üretim sırasında her işlemcinin içine yanar. Bu, firmware

veya yazılım tarafından okunamaz ve yalnızca işlemcinin AES donanım motoru

tarafından kullanılır. Gerçek anahtarı elde etmek için, bir saldırganın işlemcinin

silikonuna karşı son derece karmaşık ve pahalı bir fiziksel saldırı monte etmesi

gerekir. Kullanıcı kimliği üzerinde cihaz da dahil olmak üzere başka bir tanımlayıcı

ilişkili değildir. Ancak, UID bunlarla sınırlı değildir.

XNU

Çekirdek, IOS'un ve OS X işletim sistemlerinin kalbindedir. Güvenilir olduğu kabul

edilir ve ASLR, hak denetimi, sandboxing ve kod imzalama gibi güvenlik

önlemlerini zorlar.

Yarrow

Bir şifreli olarak sözde güvenli rastgele sayı üreteci algoritmasıdır. IOS'taki

Civanperçemi uygulaması çeşitli sistem olayları tarafından oluşturulan entropi alır ve

kullanılabilir öngörülemeyen rastgele sayılar üretir. Örneğin; şifreleme anahtarları

gibi.

Page 74: Mobil i̇şletim sistemlerinde güvenlik

61

SONUÇ VE ÖNERİLER

Mobil İşletim Sistemleri, her ne kadar kullanıcılar için gerekli güvenlik önlemlerini

sağlıyorsa da bu tek başına yeterli değildir. Önemli olan kullanıcının bu bilince sahip

olmasıdır. Bu sebeple alınması gereken bazı tedbirler şöyledir:

* Lisanslı mobil antivirüs kullanmak

* Konum belirlememek

* Jailbreak yapmamak

* Güvenilirliği kesin olmayan linklere tıklamamak

* Güvenilirliği kesin olmayan kaynaklardan gelen maillerde yer alan fotoğraf,metin

vs. şeyleri açmamak

* Parmak izi tarayıcı programları kullanmak

* Bluetooth'u anlık kullanımlar dışında kapalı tutmak

* Güvenilirliği kesin olmayan program ve / veya uygulamaları yüklememek

* Otel , restaurant , cafeterya gibi ortak kullanıma ve istismara açık yerlerde Wi-Fi

kullanmamak

* Güvenli şifreleme sistemi olmayan sitelerden alışveriş yapmamak

* Cihazın yabancı ve güvenilir olmayan kişilerin eline geçmesini önlemek

* Internet tarayıcı güvenliği

* Dos saldırıları, Spam, Keylogger, Mobil hack, Mobispy ve Smishing gibi zararlı

yöntemlere karşı güvenlik oluşturmak

* Telefona Jailbreak yapmamak

Page 75: Mobil i̇şletim sistemlerinde güvenlik

62

KAYNAKLAR

[ 1 ] SECURITY TIPS, ANDROID WEB SITE,

http://developer.android.com/training/articles/security-tips.html ( 13.12.2013 )

[ 2 ] ANDROID SECURITY FREQUENTLY ASKED QUESTIONS, ANDROID

WEB SITE, http://developer.android.com/resources/faq/security.html ( 07.07.2012 )

[ 3 ] SECURITY ENHANCED LINUX IN ANDROID, ANDROID WEB SITE,

http://source.android.com/devices/tech/security/se-linux.html ( 31.5.2014 )

[ 4 ] INFORMATION ASSURANCE DIRECTORATE, THE NATIONAL

INFORMATION ASSURANCE PARTNERSHIP ( NIAP ), WEB SITE,

http://www.niap-ccevs.org/pp/pp_mobility_os_v0.6.pdf ( 16.04.2013 )

[ 5 ] IOS SECURITY, APPLE INCORPORATED, WEB SITE,

https://www.apple.com/br/ipad/business/docs/iOS_Security_Oct12.pdf ( 10.09.2012

)

[ 6 ] SECURITY ENHANCEMENTS IN ANDROID 4.2., ANDROID WEB SITE,

http://source.android.com/devices/tech/security/enhancements42.html ( 27.03.2013 )

[ 7 ] ANDROID SECURITY OVERVİEW, ANDROID WEB SITE,

http://source.android.com/devices/tech/security ( 01.10.2013 )

[ 8 ] SECURITY ENHANCEMENTS IN ANDROID 4.1., ANDROID WEB SITE,

http://source.android.com/devices/tech/security/enhancements41.html ( 11.02.2012 )

[ 9 ] SECURITY ENHANCEMENTS IN ANDROID 4.3., ANDROID WEB SITE,

http://source.android.com/devices/tech/security/enhancements43.html ( 11.08.2014 )

Page 76: Mobil i̇şletim sistemlerinde güvenlik

ÖZGEÇMİŞ

01.11.1981 Erzincan doğumluyum. İlkokul öğrenimimi Avcılar İstanbul, Ortaokul ve

Lise öğrenimimi Bakırköy İstanbul’da tamamladıktan sonra Anadolu Üniversitesi

İktisat Fakültesi Kamu Yönetimi Bölümü ve yine aynı üniversitenin Dış Ticaret

bölümünü bitirdim.

Çalışma hayatımda farklı sektör ve birimlerde görev aldım.

Özel ilgi alanlarımı ise şöyle sıralayabilirim; kitap okumak, belgesel izlemek,

kültürel faaliyetlerde bulunmak, futbol ve bilgi güvenliği konusunda araştırmalar

yapmak.

Fuat SAVAŞ