it-swarm-id.com

kunci sesi enkripsi simetris di SSL / TLS

Pertanyaan ini berkaitan dengan sesi mengirim dan menerima kunci yang digunakan dalam protokol SSL/TLS. Pemahaman saya adalah bahwa kunci ini menggunakan enkripsi simetris (DES, AES, BlowFish, dll.) kunci juga?

ini merupakan perpanjangan dari pertanyaan yang ada: keamanan PKI, Sertifikat, otoritas sertifikat, kerahasiaan ke depan

66
lurscher

3 alasan (sekarang):

  1. Enkripsi asimetris lebih lambat, lebih lambat, daripada enkripsi simetris. Pesanan besarnya lebih lambat.
  2. Mengingat keylength yang sama, asimetris jauh lebih lemah daripada simetris, bit-for-bit. Karena itu, Anda memerlukan kunci yang jauh lebih besar untuk memberikan perlindungan yang setara. Ini juga berkontribusi terhadap kelambatan yang disebutkan dalam 1.
  3. (Sesuai komentar @ ThomasPornin :) Enkripsi asimetris disertai dengan peningkatan ukuran output. Misalnya, jika Anda menggunakan RSA, data terenkripsi setidaknya 10% lebih besar dari teks-jelas. Enkripsi simetris, di sisi lain, memiliki overhead ukuran tetap bahkan ketika mengenkripsi gigabyte data.
77
AviD

Algoritma enkripsi asimetris jauh lebih efisien daripada algoritma simetris. Jadi pada dasarnya semua penggunaan enkripsi melalui kunci asimetris melibatkan enkripsi kunci sesi simetris, yang dengannya pesan yang sebenarnya dienkripsi.

Selain catatan membantu AviD tentang panjang kunci, perhatikan bahwa jika serangan komputasi kuantum menjadi layak, mereka akan membuat semua algoritma kunci publik utama (dan karenanya SSL/TLS) tidak efektif. Tetapi AES-256 yang lurus akan tetap kuat meskipun diberikan serangan komputer kuantum. Lihat kuran kunci - Pengaruh Serangan Komputasi Quantum - Wikipedia . Pertanyaannya kemudian akan kembali ke bagaimana bertukar kunci-kunci itu dan membangun kepercayaan di dalamnya.

33
nealmcb

Ini adalah pendekatan standar, yang disebut hybrid cryptosystem. Kriptografi simetris dan kriptografi asimetris masing-masing memiliki poin kuat dan lemah. Khususnya:

  • Kriptografi asimetris memungkinkan siapa saja untuk mengenkripsi pesan yang hanya dapat didekripsi satu peserta, dan memungkinkan siapa pun untuk memverifikasi pesan yang hanya dapat ditandatangani oleh satu peserta.
  • Kriptografi simetris jauh lebih cepat daripada kriptografi asimetris. Sungguh, banyak.

Keamanan sebenarnya bukan masalah pilihan antara kriptografi simetris dan asimetris. Kriptografi asimetris memecahkan masalah yang tidak bisa dilakukan kriptografi simetris; untuk yang lainnya, kriptografi simetris digunakan, karena jauh lebih cepat.

(Sebagai konsekuensi menjadi lebih cepat, kriptografi simetris cenderung memiliki margin keamanan yang lebih tinggi: ukuran kunci umum - AES 128-bit - cukup besar sehingga menghalangi terobosan matematika yang benar-benar baru, semua komputer yang ada di bumi saat ini berfungsi selama karena alam semesta telah ada hanya akan memiliki peluang kecil untuk memecahkan enkripsi. Kriptografi asimetris berjalan pada margin yang lebih kecil karena kinerjanya yang buruk dan kadang-kadang ada perbaikan matematis dalam metode cracking yang membuat ukuran kunci yang umum digunakan ok untuk beberapa tahun tetapi belum tentu selama beberapa dekade. Tapi ini adalah masalah sekunder dibandingkan dengan kemampuan/alternatif kinerja.)

Cryptosystems hybrid menyelesaikan dilema dengan menggunakan kriptografi asimetris hanya jika diperlukan:

  • Untuk memverifikasi tanda tangan pesan, pesannya adalah hashed , dan kriptografi asimetris hanya digunakan pada hash, tidak secara langsung pada pesan panjang variabel.
  • Untuk mengenkripsi beberapa data, dihasilkan simetris kunci sesi . Asymmetric cryptography digunakan untuk membagikan kunci simetris ini antara para peserta (klien dan server). Data "asli" dienkripsi dan dikonfirmasi menggunakan kunci simetris ini.

Dalam HTTPS seperti yang biasa digunakan di web, server memiliki kunci publik, tetapi klien tidak - browser apa pun dapat menghubungi server, server tidak peduli siapa kliennya. ( Sertifikat sisi klien digunakan jika masuk akal .) Pandangan yang sangat tinggi dan tidak lengkap tentang pembentukan sesi HTTPS adalah:

  1. Server mengirimkan sertifikat ke klien. Sertifikat tersebut berisi kunci publik server, dan tanda tangan kunci publik tersebut oleh otoritas sertifikat . Klien memverifikasi bahwa otoritas sertifikat adalah yang dikenal (browser mengirim daftar kunci publik otoritas sertifikat).
  2. Klien dan server mengatur untuk memilih kunci simetris, sedemikian rupa sehingga penyerang tidak akan dapat merekonstruksi kunci hanya dengan memeriksa lalu lintas atau bahkan dengan mengubahnya (atau setidaknya aktif penyerang akan terdeteksi dan klien atau server kemudian akan membatalkan sesi). A pertukaran kunci Diffie-Hellman ditambah tanda tangan oleh server (untuk membiarkan klien memverifikasi bahwa pertukaran dilakukan dengan server, dan bukan dengan penyerang man-in-the-middle) adalah salah satu kemungkinan untuk menghasilkan kunci simetris. Juga dimungkinkan untuk hanya mengandalkan kunci pribadi server (dengan mengorbankan tidak memastikan meneruskan kerahasiaan ).
  3. Semua komunikasi selanjutnya menggunakan kunci simetris itu.

Perhatikan bahwa saya membuat banyak penyederhanaan di atas. Untuk lebih jelasnya, baca: