it-swarm-id.com

Apakah ada cara untuk mengurangi BEAST tanpa menonaktifkan AES sepenuhnya?

Tampaknya cara termudah untuk melindungi pengguna terhadap serangan BEAST di TLS <= 1.0 adalah lebih memilih RC4 atau bahkan menonaktifkan semua suite sandi (CBC) lainnya, mis. dengan menentukan sesuatu seperti

SSLCipherSuite RC4-SHA:HIGH:!ADH

dalam konfigurasi mod_ssl Apache.

Namun, masalah dengan CBC tampaknya telah diperbaiki di TLS> = 1.1; apakah ada cara untuk (kembali) mengaktifkan sandi ini untuk klien yang mengklaim mendukung TLS 1.1 atau 1.2? Tampaknya ada solusi:

SSLCipherSuite ECDHE-RSA-AES128-SHA256:AES128-GCM-SHA256:RC4:HIGH:!MD5:!aNULL:!EDH

yang melakukan trik dengan menentukan suite sandi yang hanya tersedia di TLS> = 1.1. Itu tampaknya memiliki efek samping mencegah TLS> = 1.1 klien untuk menggunakan salah satu suite sandi "lama".

Apakah benar-benar tidak ada cara untuk secara eksplisit memberitahu mod_ssl untuk menggunakan sandi mode CBC untuk TLS> = 1.1, tetapi hanya RC4 untuk SSL/TLS <= 1.0? Tampaknya itu merupakan kombinasi optimal antara keamanan dan kompatibilitas.

24
lxgr

Salah satu cara untuk mengurangi BEAST adalah dengan tidak melakukan apa-apa . Kebetulan bahwa meskipun kerentanan yang digunakan dalam BEAST masih ada, mengeksploitasinya agak sulit. Ini membutuhkan kemampuan untuk melakukan permintaan lintas-domain, dengan tingkat kontrol yang tinggi pada data yang dikirim dalam permintaan; khususnya, ia membutuhkan data "biner". Duong dan Rizzo tidak menemukan cara untuk memetakan serangan di dataran <img> tag (Javascript yang tidak bersahabat yang menghasilkan tag seperti itu, dengan jalur yang dipilih penyerang: jalur tersebut mendapatkan permintaan, tetapi hanya teks). Dalam demonstrasi mereka, mereka dapat menggunakan dua lubang lintas domain, satu dalam versi konsep WebSockets, yang lain dalam implementasi Java dari Oracle. Kedua lubang sejak itu telah diperbaiki, oleh karena itu, benar sekarang, BEAST tidak berlaku lagi (kecuali Anda tidak memperbarui browser selama lebih dari satu tahun, dalam hal ini Anda mungkin memiliki masalah yang lebih besar).

Karena mengandalkan tidak adanya kerentanan lintas-domain, paling tidak, vendor browser juga menyertakan beberapa penanggulangan ekstra, dengan pemecahan catatan . Saat browser ingin mengirim blok n byte data, alih-alih memasukkannya ke dalam satu catatan SSL, ia membaginya menjadi dua catatan, yang pertama menjadi sangat kecil. Batas rekaman tidak memiliki makna semantik dalam SSL/TLS, sehingga Anda dapat melakukan pemisahan seperti itu tanpa mengubah artinya. Namun, setiap catatan berakhir dengan MAC dihitung atas data rekaman dan nomor urut, dan menggunakan satu kunci yang berasal dari pertukaran kunci awal. Ini entah bagaimana bertindak sebagai generator angka pseudo-acak. Oleh karena itu, catatan kecil "mengemulasi" generasi IV acak yang membuat TLS 1.1+ kebal dari BEAST.

Idealnya, pembagiannya adalah 0/n: catatan tanpa data (tetapi masih dengan MAC), diikuti oleh catatan dengan data aktual. Catatan panjang nol diizinkan (sesuai standar ) tetapi implementasi klien dan server buggy tidak menoleransi mereka (khususnya IE 6.0); sebaliknya, browser menggunakan 1/n-1 split, yang sama baiknya untuk mengalahkan BEAST, tetapi juga bekerja dengan hampir semua klien dan server SSL/TLS yang ada. Setidaknya Chrome dan Firefox telah mendorongnya tahun lal .

Solusi yang baik adalah TLS 1.1 + tetapi bahkan pada SSL 3.0 dan TLS 1.0, masalah BEAST dapat dianggap sebagai diperbaiki, setidaknya dalam konteks Web. Karena itu, gunakan AES, dan berbahagialah.

15
Thomas Pornin

OpenSSL memiliki mitigasi untuk BEAST yang telah diaktifkan secara default sejak 0.9.6d, jadi selama versi OpenSSL Anda adalah versi ini atau yang lebih baru dan Anda belum menetapkan SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS tidak perlu membatasi sandi atau menonaktifkan TLS 1.0.

10
mgorven

Pemahaman saya adalah bahwa TLS <1.1 dengan blok cipher dalam mode CBC rentan terhadap BEAST. Sekali lagi, menurut pemahaman saya, satu-satunya pilihan Anda adalah menggunakan TLS 1.1 atau lebih besar, atau menggunakan stream cipher.

Atau, tentu saja, Anda bisa menggunakan protokol berbeda yang tidak terpengaruh oleh BEAST, Seperti SSH :)

0
atk