2011-08-10 28 views
8

Tôi cần đảm bảo lưu lượng truy cập UDP của mình. Theo như tôi hiểu giao thức DTLS là cách tốt nhất để làm điều đó. Có một cái khác - IPsec - nhưng có vẻ như không áp dụng được cho tôi vì nó không dễ sử dụng và có những vấn đề phần cứng có thể xảy ra.Bảo mật UDP - OpenSSL hoặc GnuTls hoặc ...?

Tôi nhận thấy rằng có một số thư viện đã triển khai DTLS. Vì vậy, bây giờ tôi đang cố gắng để chọn - OpenSSL hoặc GnuTls? Bạn có thể vui lòng cho tôi biết những gì tốt hơn để sử dụng? Hạn chế hoặc lợi thế là gì? Hoặc có thể có thư viện khác có hỗ trợ DTLS được triển khai?

Cảm ơn.

+0

Bạn đang nhắm mục tiêu công cụ phát triển nền tảng/ngôn ngữ nào? –

+0

@Eugene Mayevski Tôi đang sử dụng C/GCC/Linux ngay bây giờ, có thể là Windows sau. – Rom098

+1

nhiều người ở openldap có vấn đề với gnutls, và họ đề nghị sử dụng openssl. Bạn có thể kiểm tra liên kết này http://www.openldap.org/lists/openldap-technical/201202/msg00379.html để biết thêm – HVNSweeting

Trả lời

11

tôi đã tìm thấy các sự kiện sau đây về các thư viện và DTLS.

  1. Có một lib khác có hỗ trợ DTLS - CyaSSL, nhưng nó chỉ hỗ trợ DTLS ở chế độ kiểm tra ngay bây giờ.

  2. Mặc dù RFC 4347 có từ tháng 4 năm 2006, OpenSSL hỗ trợ DTLS từ năm 2005 (v0.9.8). Nhiều bản phân phối Linux bao gồm phiên bản này. OpenSSL API trông xấu xí một chút, nhưng có vẻ như việc thực hiện DTLS là ổn định.

  3. GnuTls hỗ trợ DTLS kể từ năm 2011 (v3.0.0). Có vẻ như không có Linux bao gồm phiên bản này. (Ví dụ, Ubuntu 11.04 sử dụng v2.8.6, Ubuntu 11.10 sẽ sử dụng v2.10.5, không v3.0.0.) Không có thông tin về thời điểm v3.0 sẽ được sử dụng. Nó có thể được xây dựng bằng tay, tuy nhiên nó phụ thuộc vào quá nhiều thư viện bổ sung mà có thể không có hỗ trợ bản địa trong một số distribs.

  4. Dường như tất cả các thư viện này có thể được sử dụng trên các nền tảng khác (ví dụ: Windows).

  5. Vấn đề OpenSSL đã biết: OpenSSL có tính năng nén được bật theo mặc định cho DTLS, nhưng không được bật. API OpenSSL v0.9.8 không cung cấp bất kỳ phương thức nào để tắt tính năng nén. Phương pháp nên được thực hiện thủ công.

TÓM TẮT:

Nói về khả năng sử dụng, cá nhân tôi muốn gnutls API, nhưng vào thời điểm đó OpenSSL trông thích hợp hơn để sử dụng.

+1

Đừng quên kiểm tra giấy phép và đảm bảo rằng bạn đang sử dụng giấy phép có giấy phép phù hợp với bạn. – jtchitty

5

IPsec là phiên bản cũ nhất và do đó tương thích nhất và ổn định, nhưng yêu cầu tác vụ từ sysadmin và có thể khá khó khăn đối với người mới. DTLS đang giải quyết vấn đề từ phía ứng dụng mà lập trình viên có thể đơn giản hóa đáng kể và tích hợp với các môi trường hiện tại với ít thay đổi hơn.

Lựa chọn giữa OpenSSL và GnuTLS hầu như luôn do giấy phép.

giấy phép OpenSSL bao gồm một điều khoản quảng cáo:

3. Tất cả các tài liệu quảng cáo đề cập đến các tính năng hoặc sử dụng này * phần mềm phải hiển thị các ghi nhận như sau: * "sản phẩm này bao gồm phần mềm được phát triển bởi Dự án OpenSSL * cho sử dụng trong OpenSSL Toolkit (http://www.openssl.org/)"

GnuTLS từ Wikipedia:.

GnuTLS ban đầu được tạo để cho phép các ứng dụng của dự án GNU sử dụng các giao thức bảo mật như TLS. Mặc dù OpenSSL đã tồn tại, Giấy phép OpenSSL không tương thích với GPL; [4] do đó phần mềm theo GPL, chẳng hạn như phần mềm GNU, không thể sử dụng OpenSSL mà không có tạo ngoại lệ liên kết GPL.

http://en.wikipedia.org/wiki/GnuTLS

+0

Cảm ơn câu trả lời. Bạn có biết bất kỳ vấn đề nào về tuân thủ RFC 4347, khả năng tương thích nền tảng hoặc lỗi cụ thể không? – Rom098

Các vấn đề liên quan