Back home

Enkripsi asimetris, https, prinsip tanda tangan iOSAPP

Enkripsi asimetris, https, pengumpulan data prinsip tanda tangan iOSAPP

Enkripsi asimetris, https, sertifikat iOS

Saya telah membaca beberapa hal tentang enkripsi, sertifikat, RSA, dan https sebelumnya, tetapi saya tidak pernah memahaminya dengan jelas. Saya tidak memahaminya dengan jelas. Saya akan memilahnya hari ini.

Enkripsi

Enkripsi saat ini dibagi menjadi: 对称加密算法(symmetric key algorithms) dan 非对称加密算法(asymmetric key algorithms)

Di 对称加密算法, kunci yang digunakan untuk enkripsi dan kunci yang digunakan untuk dekripsi adalah sama. Dengan kata lain, kunci yang sama digunakan untuk enkripsi dan dekripsi. Oleh karena itu, jika algoritma enkripsi simetris ingin menjamin keamanan, maka kuncinya harus dirahasiakan dan hanya dapat diketahui oleh orang yang menggunakannya dan tidak dapat diungkapkan kepada dunia luar.

密钥, umumnya berupa string atau angka, diteruskan ke algoritma enkripsi/dekripsi selama enkripsi atau dekripsi.

Di 非对称加密算法, kunci yang digunakan untuk enkripsi dan kunci yang digunakan untuk dekripsi berbeda.

Lalu apa perbedaan 对称加密算法 dan 非对称加密算法 saat digunakan? Misalnya, skenario ini: Xiao Ming dan Xiao Hong berkomunikasi satu sama lain, tetapi mereka tidak ingin orang lain mengetahui isi surat itu. Xiao Ming dapat menggunakan 对称加密算法 atau 非对称加密算法 untuk mengenkripsi konten. Jika 对称加密算法 digunakan, karena kunci yang digunakan untuk enkripsi dan kunci yang digunakan untuk dekripsi adalah sama, bagaimana cara Xiao Ming memberi tahu Xiao Hong kuncinya? Beberapa orang akan mengatakan bahwa jika Anda mengenkripsi ulang kata sandi, Anda masih harus mengirimkan kata sandinya, sehingga selalu ada masalah kebocoran kata sandi selama proses transmisi.

Jadi apa yang harus dilakukan dengan 非对称加密算法?

Pertama, Xiaohong menghasilkan kunci publik dan kunci pribadi, menyimpan kunci pribadi, dan menerbitkan kunci publik. Xiaoming menggunakan kunci publik untuk mengenkripsi isi surat tersebut, dan kemudian mengirimkan surat tersebut ke Xiaohong. Karena hanya Xiaohong yang memiliki kunci pribadi, meskipun orang lain menyadap isi surat itu, mereka tidak dapat memecahkannya.

Karena kunci privat tidak perlu disebarluaskan, maka tidak akan disadap oleh orang lain karena disebarluaskan.

Kunci publik dan kunci pribadi di 非对称加密算法 muncul berpasangan. Kunci publik dan kunci privat pada dasarnya sama, yaitu dua kunci rahasia a dan b dihasilkan melalui suatu algoritma. Saat Anda memublikasikan a, a menjadi kunci publik, dan saat b dipublikasikan, b menjadi kunci publik. Kunci publik dan kunci privat bersifat relatif, dan keduanya sendiri tidak menentukan mana yang harus menjadi kunci publik atau kunci privat.

  • Kunci publik dan kunci pribadi muncul berpasangan
  • Kunci publik disebut kunci publik, dan kunci yang hanya Anda yang mengetahuinya disebut kunci privat.
  • Data yang dienkripsi dengan kunci publik hanya dapat didekripsi dengan kunci pribadi yang sesuai.
  • Data yang dienkripsi dengan kunci pribadi hanya dapat didekripsi dengan kunci publik yang sesuai
  • Jika dapat didekripsi dengan kunci publik, maka harus dienkripsi dengan kunci pribadi yang sesuai.
  • Jika dapat didekripsi dengan kunci pribadi, maka harus dienkripsi dengan kunci publik yang sesuai.

Dua penggunaan 非对称加密算法

  1. Mencapai transmisi data yang aman Untuk mencapai transmisi data yang aman, tentu saja data tersebut harus dienkripsi. Jika Anda menggunakan algoritma enkripsi simetris dan menggunakan kunci yang sama untuk enkripsi dan dekripsi, selain menyimpannya sendiri, pihak lain juga harus mengetahui kunci ini untuk mendekripsi data. Jika Anda memberikan kunci tersebut, ada kemungkinan kebocoran kata sandi. Jika kita menggunakan algoritma asimetris, prosesnya adalah sebagai berikut:
1. Pertama, penerima menghasilkan sepasang kunci, yaitu kunci privat dan kunci publik;
2. Kemudian, penerima mengirimkan kunci publik kepada pengirim;
3. Pengirim menggunakan kunci publik yang diterima untuk mengenkripsi data dan kemudian mengirimkannya ke penerima;
4. Setelah menerima data, penerima menggunakan kunci pribadinya untuk mendekripsinya.
Karena dalam algoritma asimetris, data yang dienkripsi dengan kunci publik harus didekripsi dengan kunci privat yang sesuai, dan kunci privat hanya diketahui oleh penerimanya sendiri, sehingga menjamin keamanan transmisi data.
  1. Menandatangani informasi secara digital Selain memastikan transmisi data yang aman, kegunaan lain dari sistem kunci publik adalah untuk menandatangani data. Biasanya “tanda tangan digital” digunakan untuk memverifikasi identitas pengirim dan membantu melindungi integritas data.

    Misalnya: pengirim A ingin mengirimkan beberapa informasi kepada semua orang, dan menggunakan kunci pribadinya untuk mengenkripsi informasi tersebut, yaitu untuk menandatangani. Dengan cara ini, setiap orang yang menerima informasi dapat menggunakan kunci publik pengirim untuk memverifikasi dan mengonfirmasi bahwa informasi tersebut dikirim oleh A. (Karena hanya informasi yang diperoleh A dengan menggunakan tanda tangan kunci pribadi yang dapat didekripsi dengan kunci publik ini) Dengan menggunakan tanda tangan digital, ada dua hal yang dapat dikonfirmasi:

    1. Memastikan bahwa informasi tersebut ditandatangani dan dikirimkan oleh penandatangan sendiri, dan penandatangan tidak dapat menyangkal atau merasa sulit untuk menyangkalnya.
    2. Dijamin bahwa informasi tersebut tidak diubah dengan cara apa pun sejak saat diterbitkan hingga saat diterimanya. Alasan mengapa kedua poin ini dapat dikonfirmasi adalah bahwa apa yang dapat didekripsi dengan kunci publik harus dienkripsi dengan kunci privat yang sesuai, dan kunci privat hanya dipegang oleh penandatangan.

Catatan: Tanda tangan digital menggunakan kunci pribadi, dan informasi yang dienkripsi dengan kunci pribadi disebut tanda tangan digital, karena kunci pribadi hanya dipegang oleh Anda, yang setara dengan segel resmi. Kunci pribadi yang digunakan untuk tanda tangan digital sama seperti segel baja pada sertifikat kelulusan. Hanya sertifikat dengan segel baja yang akan diakui asli.

Jadi bisakah Anda menggunakan kunci publik untuk tanda tangan digital? Karena kunci publik bersifat publik dan tersedia untuk semua orang, tidak masuk akal menggunakan kunci publik untuk tanda tangan digital. Sebaliknya, dapatkah kunci privat digunakan untuk mengenkripsi data guna mencapai transmisi data yang aman? Jawabannya adalah tidak, karena kunci publik bersifat publik dan dapat diperoleh oleh semua orang, dan semua orang dapat mendekripsi informasi yang dienkripsi dengan kunci privat.

Mari kita atur lagi: Dua kunci rahasia dihasilkan melalui algoritma, satu dipublikasikan dan disebut kunci publik; yang lainnya disimpan sendiri dan disebut kunci privat; informasi tersebut dienkripsi sendiri dan dilepaskan, yang disebut tanda tangan digital, karena hanya kunci publik yang sesuai dengan kunci privat (setara dengan segel resmi) yang dapat didekripsi. Mereka yang dapat mendekripsi secara alami tahu bahwa hanya saya yang dapat mengirimkan informasi ini, yang menjamin penerbit informasi tersebut.

Yang lain menggunakan kunci publik untuk mengenkripsi informasi, dan hanya saya yang dapat mendekripsinya, karena saya mempunyai kunci pribadi, yang memungkinkan transmisi data yang aman.

Setelah banyak bicara, saya ingin tahu apakah Anda memahami hubungan dan penggunaan kunci publik dan kunci pribadi?

Konten berikut ini dikutip dari artikel lain dan mungkin juga membantu Anda memahami:

Jika Anda hanya menggunakan algoritma enkripsi asimetris secara sepihak, sebenarnya ada dua cara untuk tujuan berbeda:

Yang pertama adalah tanda tangan, yang menggunakan enkripsi kunci privat dan dekripsi kunci publik. Ini digunakan untuk memungkinkan semua pemilik kunci publik memverifikasi identitas pemilik kunci pribadi dan untuk mencegah konten yang diterbitkan oleh pemilik kunci pribadi dirusak. Namun, hal tersebut tidak digunakan untuk memastikan bahwa konten tersebut tidak diperoleh oleh orang lain.
Siapa pun yang memiliki kunci publik pengirim dapat memverifikasi kebenaran tanda tangan tersebut.
Tipe kedua adalah enkripsi, menggunakan kunci publik untuk mengenkripsi dan kunci privat untuk mendekripsi. Digunakan untuk mempublikasikan informasi kepada pemilik kunci publik. Informasi ini mungkin dapat dirusak oleh orang lain, namun tidak dapat diperoleh oleh orang lain. Jika A ingin mengirimkan data yang aman dan rahasia ke B, maka A dan B masing-masing harus memiliki kunci privat. A pertama-tama menggunakan [kunci publik] B untuk mengenkripsi data, dan kemudian menggunakan kunci pribadinya sendiri untuk mengenkripsi data yang dienkripsi. Terakhir, dikirim ke B, yang memastikan bahwa konten tidak akan dibaca atau dirusak.
Siapapun yang mengetahui kunci publik penerima dapat mengirimkan pesan kepada penerima.
Ringkasan: Kunci publik biasanya digunakan untuk mengenkripsi pesan dan memverifikasi tanda tangan digital (yaitu mendekripsi).

1. Tanda tangan digital
Teknologi tanda tangan digital adalah penerapan dua teknologi: "enkripsi dan dekripsi kunci asimetris" dan "intisari digital". Ini mengenkripsi informasi intisari dengan kunci pribadi pengirim dan mengirimkannya ke penerima bersama dengan teks aslinya. Penerima hanya dapat menggunakan kunci publik pengirim untuk mendekripsi informasi ringkasan terenkripsi, dan kemudian menggunakan fungsi HASH untuk menghasilkan informasi ringkasan untuk teks asli yang diterima, yang dibandingkan dengan informasi ringkasan yang didekripsi. Jika sama berarti informasi yang diterima sudah lengkap dan belum diubah selama proses transmisi. Jika tidak, berarti informasi tersebut telah diubah, sehingga tanda tangan digital dapat memverifikasi [integritas] informasi tersebut.
  Proses tanda tangan digital adalah sebagai berikut: teks biasa --> operasi hash --> ringkasan --> enkripsi kunci pribadi --> tanda tangan digital
Proses verifikasi tanda tangan digital adalah sebagai berikut: tanda tangan digital --> dekripsi kunci publik --> ringkasan --> hash teks asli --> ringkasan perbandingan

Tanda tangan digital memiliki dua fungsi:

Pastikan pesan tersebut memang ditandatangani dan dikirimkan oleh pengirimnya, karena orang lain tidak bisa memalsukan tanda tangan pengirimnya. (Sumber terpercaya)
Pastikan pesan lengkap dan tidak dirusak (integritas).
Catatan: Tanda tangan digital hanya dapat memverifikasi integritas data. Apakah data itu sendiri (yaitu teks asli) dienkripsi atau tidak, itu tidak berada dalam lingkup kendali tanda tangan digital.


tanda tangan digital
Sekarang kita tahu ada enkripsi asimetris, bagaimana dengan tanda tangan digital?

Fungsi tanda tangan digital adalah saya menandai suatu data tertentu untuk menandakan bahwa saya menyetujui data tersebut (menandatangani nama saya), kemudian saya mengirimkannya kepada orang lain. Orang lain dapat mengetahui bahwa data tersebut telah saya autentikasi dan data tersebut tidak diubah.

Artikel-artikel ini juga dapat membantu Anda memahami: Catatan Kriptozoologi: http://www.ruanyifeng.com/blog/2006/12/notes_on_cryptography.html Apa itu tanda tangan digital? : http://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.html Prinsip algoritma RSA (1): http://www.ruanyifeng.com/blog/2013/06/rsa_algorithm_part_one.html Memahami kunci publik dan pribadi: https://songlee24.github.io/2015/05/03/public-key-and-private-key/ Kunci publik, kunci pribadi, dan tanda tangan digital paling baik dipahami seperti ini: https://blog.csdn.net/21aspnet/article/details/7249401

https dan serangan man-in-the-middle

Protokol https adalah protokol http+ssl. Proses koneksi ditunjukkan pada gambar di bawah ini:

Lihatlah artikel ini secara khusus: Proses koneksi HTTPS dan pembajakan serangan man-in-the-middle: http://netsecurity.51cto.com/art/201712/559836.htm HTTPS Seri 2 mendalam (Enkripsi & Sertifikat): https://www.jianshu.com/p/b4c775a26068 HTTP, HTTP2.0, SPDY, HTTPS Beberapa hal yang harus Anda ketahui: http://web.jobbole.com/87695/

Prinsip sertifikat iOS dan penandatanganan Aplikasi

Setelah memahami poin-poin di atas, Anda dapat dengan mudah memahami prinsip-prinsip sertifikat iOS dan penandatanganan Aplikasi. Jika Anda tidak memahami apa yang di atas, Anda mungkin juga tidak memahami apa yang ada di bawah.

Kedua artikel ini telah memperjelasnya: Cara memahami mekanisme penandatanganan sertifikat iOS: https://blog.gocy.tech/2017/04/24/iOS-Signing/ Prinsip tanda tangan Aplikasi iOS: http://wereadteam.github.io/2017/03/13/Signature/