Banyak protokol jaringan dasar yang membentuk infrastruktur Internet dibangun untuk sebagian besar Sistem Operasi utama. Sebagai contoh, TCP, UDP, dan DNS semuanya dibangun ke Linux, UNIX dan Windows, dan disediakan untuk programmer melalui API sistem tingkat rendah.
Tetapi ketika datang ke SSL atau TLS, kita harus beralih ke perpustakaan pihak ketiga seperti OpenSSL atau Mozilla NSS.
SSL adalah protokol yang relatif lama, dan pada dasarnya standar industri di mana-mana seperti TCP / IP, jadi mengapa tidak dibangun ke sebagian besar Sistem Operasi?
security
operating-systems
protocol
ssl
Channel72
sumber
sumber
Jawaban:
Saya pikir itu terutama tergantung pada apa yang Anda lihat sebagai "OS". Jika itu kernel, jawaban saya adalah: mengapa harus begitu? Saya mungkin salah, tetapi apakah DNS bukan bagian dari glibc pada sistem Linux, yang merupakan perpustakaan pihak ketiga?
Jika ini bukan tentang kernel atau ruang pengguna, hampir setiap OS / platform memiliki tumpukan SSL / TLS, beberapa mungkin memiliki lebih dari satu.
Bahkan bisa dilihat sebagai keuntungan. Jika tidak ada OpenSSL, Anda harus beradaptasi dengan API Windows, Mac dan Linux (dan ...). TLS tidak menjadi bagian dari OS memungkinkan untuk menulis aplikasi TLS lintas platform. Pilih saja perpustakaan TLS, yang mendukung platform target Anda.
Bagi saya, masalah sebenarnya dengan TLS adalah, Anda tidak bisa begitu saja "menyalakannya". Sebagai gantinya, Anda harus mengelola sekumpulan sertifikat tepercaya, daftar pencabutan sertifikat, sertifikat yang ditandatangani sendiri dan sebagainya. Semua ini membutuhkan banyak interaksi pengguna.
Sayangnya, keamanan tidak pernah datang secara gratis. Ini adalah upaya untuk pemrogram dan ketidaknyamanan bagi pengguna.
sumber
Ada masalah hukum. Beberapa negara menempatkan kriptografi dalam kelompok yang sama dengan senjata. Menempatkan kode kriptografi di kernel kemudian membuat mengekspor salah satu kode kernel lebih sulit.
sumber
Ada manfaat nyata untuk membangun TCP ke dalam sistem operasi. TCP membutuhkan pengaturan waktu yang presisi dan respons yang cepat terhadap paket jaringan bahkan ketika tidak ada data aplikasi yang terlibat. Jika Anda mencoba menerapkan TCP di ruang pengguna di atas API IP generik, itu akan jauh lebih buruk. Tidak ada keuntungan serupa untuk mengintegrasikan SSL di kernel.
Di sisi lain, ada beberapa kelemahan. Sebagai contoh, SSL membutuhkan memanipulasi cincin kunci dan daftar sertifikat dan sejenisnya. Melakukan hal itu melalui kernel atau OS API akan tidak memenuhi syarat. Jadi, bahkan jika itu datang dengan sistem operasi, itu hanya akan menjadi perpustakaan (sama seperti di Windows). Pustaka-pustaka itu sudah tersedia, jadi pada akhirnya hanya perubahan dalam kemasan.
sumber
Ada beberapa alasan, tetapi mungkin yang paling menarik adalah kriptografi sangat, sangat sulit untuk benar-benar diperbaiki . Adalah tidak bijaksana untuk mengimplementasikannya sendiri kecuali Anda dapat mencurahkan sumber daya utama untuk memverifikasi bahwa itu benar dan kuat. Kebanyakan orang yang bekerja dengan perangkat lunak kriptografi tidak memiliki waktu, keahlian, atau keinginan untuk meredamnya; mereka mempercayai perpustakaan pihak ketiga sehingga pengembang mereka dapat menangani bagian pekerjaan itu, sementara pengembang aplikasi dapat kembali membuat apa yang mereka inginkan.
Pengembang OS tidak begitu berbeda. Kadang-kadang ada minat utama - misalnya, model bisnis Anda atau pengacara mengharuskan Anda untuk menjaga kode tertutup - dan sehingga Anda tidak punya banyak pilihan dalam masalah ini: jika Anda tidak dapat menemukan seseorang yang akan membiarkan Anda melakukannya apa yang harus Anda lakukan, maka Anda harus roll sendiri. Yang lain telah menyebutkan bagaimana Microsoft melakukan ini. Tetapi secara umum, pengembang OS yang dapat menggunakan perpustakaan pihak ketiga lebih suka melakukannya dengan cara yang sama, karena alasan yang sama seperti pengembang aplikasi.
sumber
Saya seorang pengembang windows jadi saya tidak dapat berbicara untuk OS lain, tetapi pada Windows mereka memiliki SSL bawaan untuk waktu yang sangat lama. Mereka menyebutnya SChannel dan meskipun didukung, itu adalah salah satu API yang lebih samar yang harus dipecahkan .
sumber
SSL adalah lapisan di atas protokol tingkat yang lebih rendah. Misalnya SSL berjalan di atas TCP (yang di atas IP).
Di mana OS berhenti?
Sangat mudah untuk berdebat bahwa OS menyediakan layanan dasar seperti jaringan sampai pada titik di mana klien OS "melakukan hal-hal". Dan hal-hal itu dapat menjadi apa pun yang Anda inginkan.
Sangat tidak mungkin bahwa SSL di kernel akan mengarah pada peningkatan kinerja yang besar, jadi mengapa repot-repot?
Kernel OS modern berjalan ke jutaan baris kode, menambahkan lebih banyak hanya menambah kompleksitas dan lebih banyak waktu debugging. Membiarkan hal-hal seperti hal-hal protokol lapisan yang lebih tinggi dari OS membuat pengembangan OS lebih mudah dan pada akhirnya membuat sedikit perbedaan pada fungsi atau kinerja aplikasi akhir. (Mungkin membuat pekerjaan pengembang untuk aplikasi akhir sedikit lebih menyakitkan.)
sumber
Ada beberapa dukungan Kernel untuk Crypto dan SSL. Ini masuk akal karena Kernel dapat lebih efisien berinteraksi dengan perangkat keras dan juga meyakinkan untuk melindungi kredensial dari aplikasi apa pun. Contoh yang bagus adalah kssl, proxy Kernel level-reverse-SSL di Solaris atau berbagai pustaka crypto di kernel (digunakan misalnya untuk VPN). Mesin crypto akselerasi perangkat keras yang khas juga memiliki modul kernel (dan dapat diakses melalui PKCS # 11 atau antarmuka crypto spesifik OS).
Beberapa alasan mengapa Anda tidak melihatnya lebih sering adalah karena beberapa protokol aplikasi tidak berlapis dengan benar (pikirkan STARTLS) atau memerlukan keputusan aplikasi saat berjabat tangan (pikirkan sertifikat klien dan pemeriksaan CRL) atau hanya dalam evolusi biasa.
sumber