it-swarm-id.com

Memahami enkripsi 2048 bit SSL dan 256 bit

Pada halaman DigiCert, mereka mengiklankan 2048 bit SSL dengan enkripsi 256 bit: http://www.digicert.com/256-bit-ssl-certificates.htm

Apa sebenarnya perbedaan di sini dan mengapa dua bit enkripsi dirujuk?

Berikut screenshot iklan:

Pada iklan SSL Premium Geotrust, mereka mengiklankannya sebagai:

Security: domain control validation, strong 256-bit encryption, 2048-bit root

Jadi apa perbedaan antara enkripsi 256 bit dan root 2048 bit?

Harapan yang menjelaskan pertanyaan itu.

63
JohnJ

2048-bit adalah tentang pasangan kunci RSA: Kunci RSA adalah objek matematika yang menyertakan bilangan bulat besar, dan "kunci 2048-bit" adalah kunci sedemikian sehingga bilangan bulat besar lebih besar dari 22047 tetapi lebih kecil dari 22048.

256-bit adalah tentang SSL. Dalam SSL, kunci server hanya digunakan untuk mengirimkan kunci 256-bit acak ( yang tidak memiliki struktur matematika, hanya sekelompok bit); secara kasar, klien membuat kunci 256-bit acak, mengenkripsinya dengan kunci publik RSA server (yang ada dalam sertifikat server dan merupakan "kunci 2048-bit"), dan mengirimkan hasilnya ke server. Server menggunakan kunci RSA pribadinya untuk membalikkan operasi, dan dengan demikian memperoleh kunci 256-bit yang dipilih oleh klien. Setelah itu, klien dan server menggunakan 256-bit untuk melakukan simetris enkripsi dan pemeriksaan integritas, dan RSA tidak digunakan lebih jauh untuk koneksi itu.

Lihat jawaban ini untuk lebih jelasnya. Pengaturan ini sering disebut "enkripsi hybrid". Ini dilakukan karena RSA tidak sesuai untuk enkripsi massal, tetapi enkripsi simetris tidak dapat melakukan bisnis publik/swasta awal yang diperlukan untuk memulai sesuatu.

(SSL dapat melakukan pertukaran kunci dengan algoritma lain selain RSA jadi saya telah menyederhanakan uraian sedikit dalam teks di atas, tetapi itulah inti dari gagasan itu.)

69
Thomas Pornin

Untuk menambahkan sedikit lebih detail, kunci RSA 2048 bit adalah sesuatu yang disebut kriptografi asimetris. Ini digunakan untuk memvalidasi identitas (penandatanganan) dan memastikan bahwa hanya penerima yang dituju dapat mengakses informasi yang dikirim (enkripsi). Ini terdiri dari dua bagian, kunci publik dan kunci pribadi. Kunci-kunci itu sebenarnya terkait satu sama lain, tetapi karena mereka dihubungkan oleh dua bilangan prima semu yang sangat besar (prima dalam kaitannya dengan satu sama lain) mereka sangat sulit untuk mengetahui kunci privat dari publik.

Yang mengatakan, karena algoritma didasarkan pada sesuatu yang benar-benar sulit untuk dipecahkan (tetapi dapat dipecahkan), itu kurang aman daripada algoritma simetris berdasarkan rahasia bersama, yang tidak dapat dipecahkan secara matematis dan tidak bergantung pada kompleksitas masalah matematika untuk keamanan (lebih lanjut tentang itu nanti). Inilah sebabnya mengapa kuncinya jauh lebih besar daripada pasangan simetris (yang hanya 256 bit). Untuk membuat persamaan sulit untuk dipecahkan membutuhkan kunci yang lebih besar dan juga, semakin banyak informasi yang ditransmisikan dengan kunci asimetris, semakin besar kemungkinan akan dipecah (juga, enkripsi/dekripsi lebih banyak prosesor yang intens).

Karena alasan ini, SSL hanya menggunakan RSA untuk fase validasi dan pertukaran kunci. Sebagai gantinya, kunci simetris (dalam hal ini 256 bit jika didukung oleh browser pada klien) dihasilkan dan dikirim kembali ke server melalui enkripsi RSA dan kemudian sisa data dipertukarkan melalui kunci bersama dan algoritma simetris.

Hal ini terjadi oleh klien yang pertama kali mendekode respons terhadap tantangan yang dienkripsi oleh server dengan kunci privatnya, klien kemudian dapat melihat kunci publik dari server (yang ditandatangani oleh kunci root yang diketahui bahwa CA (dalam hal ini DigiCert ) telah disertakan dengan sebagian besar browser). Ketika respons yang diterjemahkan sesuai dengan tantangan, klien tahu bahwa server merespons permintaan (meskipun mungkin ada perantara yang menyampaikannya). Klien kemudian menghasilkan kunci simetris 256 bit dan mengenkripsi dengan kunci publik server dan mengirimkannya ke server. Karena kunci dienkripsi dengan kunci publik server, hanya server (yang mengetahui kunci privat) yang dapat mendekripsi. Ini berarti setiap perantara di langkah sebelumnya tidak dapat mengetahui kunci bersama yang baru. Klien sekarang dapat mempercayai bahwa informasi yang dikirim melalui kunci bersama hanya berasal dari server yang dimaksud.

15
AJ Henderson

Hanya dengan menambahkan beberapa detail ke jawaban yang ada ...

pertanyaan saya adalah bagaimana klien tahu untuk menghasilkan kunci 256 bit acak? (Kenapa tidak 128?).

Ini tergantung pada paket sandi yang dinegosiasikan. Daftar yang didefinisikan sebagai bagian dari TLS 1.1 ada di RFC 4346 Lampiran A.5 . Sebagai contoh TLS_RSA_WITH_AES_128_CBC_SHA akan menggunakan kunci 128-bit, sedangkan TLS_DHE_RSA_WITH_AES_256_CBC_SHA akan menggunakan kunci 256-bit.

Suite sandi mana yang dinegosiasikan akan bergantung pada konfigurasi klien dan server, bukan pada sertifikat yang dipasang di server. Ketika klien memulai koneksi dengan Client Hello pesan, ia mengirimkan daftar suite sandi yang didukungnya. Server kemudian memilih yang diinginkan dan mengatakannya dalam Server Hello pesan.

Suite sandi ini kemudian menentukan bagaimana kunci-kunci simetrik ini pada akhirnya dibagikan. Tujuan langsung dari jabat tangan SSL/TLS adalah untuk membuat bagian rahasia pra-master antara klien dan server. Ini lebih luas disebut sebagai pertukaran kunci (lihat RFC 4346 Lampiran F.1.1) .

Ini termasuk dalam dua kategori (tidak termasuk pertukaran kunci anonim):

  • Pertukaran kunci RSA (mis. TLS_RSA_WITH_AES_128_CBC_SHA): klien mengenkripsi rahasia pra-master menggunakan kunci publik server (ditemukan dalam sertifikat).
  • Pertukaran kunci DH (E) (mis. TLS_DHE_RSA_WITH_AES_256_CBC_SHA): pertukaran kunci Diffie-Hellman terjadi. Server menandatangani parameter DH-nya dan klien memverifikasi tanda tangan terhadap kunci publik dalam sertifikat server. (Memiliki sertifikat berbasis RSA tidak menyiratkan pertukaran kunci RSA.)

Pada akhir jabat tangan, mana dari kedua langkah ini yang digunakan, klien dan server memiliki rahasia umum pra-master , dari yang mereka peroleh rahasia utama (lihat RFC 4346 Bagian 8.1 ).

Dari itu rahasia utama , kedua belah pihak dapat memperoleh kunci enkripsi (dan rahasia MAC), seperti yang dijelaskan dalam RFC 4346 Bagian 6. .

Selain jenis kunci (RSA atau DSS), tidak ada dalam hal ini yang membuat ukuran kunci enkripsi tergantung pada sertifikat. Selain itu, kedua jenis memiliki suite sandi yang menggunakan kunci 256-bit: misalnya TLS_DHE_DSS_WITH_AES_256_CBC_SHA dan TLS_DHE_RSA_WITH_AES_256_CBC_SHA. (DSS adalah algoritme khusus tanda tangan, sehingga Anda tidak akan mendapatkan pertukaran kunci mirip RSA untuk mengenkripsi rahasia pra-master.)

Ukuran kunci dalam sertifikat hanya penting untuk mencegah pemalsuan pertukaran kunci (atau untuk dapat menguraikan kembali lalu lintas yang direkam): jika seseorang dapat menemukan kunci pribadi dari kunci publik dalam sertifikat, mereka dapat bertindak sebagai MITM untuk menyamar sebagai server nyata atau mereka akan dapat menguraikan rahasia pra-master yang dienkripsi (dan dengan demikian lalu lintas yang direkam) ketika menggunakan pertukaran kunci RSA (suite cipher DHE dirancang khusus untuk mencegah mendapatkan akses ke rahasia pra-master , bahkan jika penyerang memegang kunci pribadi dan lalu lintas yang direkam, lihat pertanyaan ini ). Inilah sebabnya mengapa masalah kunci asimetris yang cukup besar.

Otoritas Sertifikasi cenderung menempatkan "256 bit" di situs web mereka karena terlihat bagus dari sudut pandang pemasaran.

Ini tidak salah, tetapi bisa menyesatkan bagi orang-orang yang tidak mengerti bahwa itu adalah cara server Anda diatur dan apa yang didukung oleh klien Anda.

9
Bruno