2014-07-05 12 views
5

Theo hiểu biết của tôi, SSL Ghim cho là để so sánh các khóa công khai hoặc chứng nhận của một máy chủ với các bản sao kèm trong các khách hàng trước đó.chế độ Would iOS AFNetwork SSL Ghim cho cung cấp tiền thưởng an ninh bổ sung nếu chứng chỉ hợp lệ triển khai

tôi thấy trong Stackoverflow rằng nhiều nhà phát triển sử dụng SSL Ghim cho thư viện AFNetwork, nhưng hầu hết trong số họ sử dụng nó cùng với một chứng chỉ tự ký.

Tôi đã mua một chứng chỉ hợp lệ từ một CA và vượt qua bài kiểm tra để xác minh nó làm việc tốt. Ý tôi là, tôi đặt sau đây và nó làm việc

... 
    _sharedHttpsInstance.securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone]; 
    _sharedHttpsInstance.securityPolicy.allowInvalidCertificates = NO; 
    ... 

Những gì tôi đang tự hỏi là nếu đặt chế độ Ghim cho đến AFSSLPinningModePulicKey, ứng dụng của tôi sẽ được an toàn hơn trong giao tiếp với máy chủ, thêm vào những gì các chứng chỉ hợp lệ có được cung cấp?

cảm ơn rất nhiều.

+2

Có, ghim là an toàn hơn không ghim. Hãy xem xét: khi Diginotar bị vi phạm, kẻ tấn công đã cấp giấy chứng nhận giả mạo cho Google, Hotmail, Yahoo, v.v. Khách hàng Naive chấp nhận chúng là hợp pháp vì Diginotar là CA trong cửa hàng đáng tin cậy. Nếu bạn muốn xem ví dụ iOS, hãy xem cách mua hàng trong ứng dụng bị phá vỡ bởi cùng một cuộc tấn công. Xem [dịch vụ "mua hàng trong ứng dụng" của Apple dành cho iOS bị hacker Nga bỏ qua] (http://arstechnica.com/security/2012/07/ios-in-app-purchase-service-hacked/). Apple nên được ghim trong khung Store Kit của họ, nhưng họ quá kiêu ngạo hoặc ngu ngốc. – jww

Trả lời

6

Tôi không biết việc thực hiện chính xác của SSL ghim trong iOS, nhưng trong ghim nguyên tắc cung cấp bảo mật chắc chắn hơn việc xác minh mặc định chống lại một tập hợp các cơ quan chứng nhận dựng sẵn. Theo mặc định, các hệ thống tin cậy hơn 100 CA khác nhau từ khắp nơi trên thế giới và mỗi CA có khả năng cấp bất kỳ chứng chỉ nào mà nó muốn, ngay cả khi CA khác đã phát hành cùng một chứng chỉ tương tự. Vì vậy, nếu bất kỳ trong số hơn 100 CA bị xâm phạm, họ có thể cấp chứng chỉ cho miền của bạn, chứng chỉ này sẽ vượt qua các kiểm tra trong ứng dụng của bạn trừ khi bạn sử dụng khóa chứng chỉ. Sự thỏa hiệp như vậy xảy ra vào năm 2011 với DigiNotar (không còn tồn tại vì điều đó) và Comodo (quá lớn để thất bại).

Có lẽ người dùng nổi bật nhất về ghim chứng chỉ là Google Chrome, nơi được sử dụng cho miền google và điều này giúp phát hiện sự thỏa hiệp của DigiNotar và Comodo.

Một nhược điểm của giấy chứng nhận ghim có thể, rằng ứng dụng sẽ ngừng làm việc mạng bên trong mà làm SSL chặn vì lý do an ninh. Google Chrome dường như đối phó với tình huống này bằng cách chấp nhận chứng chỉ nếu nó được ký bởi một CA được người dùng thêm vào một cách rõ ràng (ví dụ: không có nội trang) thay thế cho kiểm tra ghim.

Một câu hỏi khác có thể thú vị là nếu khóa SSL an toàn 'ENOUTH' cho 'Hầu hết' của ứng dụng, ngay cả khi làm việc cùng với chứng nhận tự ký?

Kiểm tra chứng chỉ hoặc khóa công khai cố định (ví dụ: ghim chứng chỉ có hoặc không tự ký) an toàn hơn chỉ kiểm tra xem chứng chỉ có được ký bởi bất kỳ CA nào đáng tin cậy không. Và miễn là nhà phát triển có toàn quyền kiểm soát về cả hai mặt (ví dụ: ứng dụng và máy chủ), nó cũng có quy mô tốt. Ưu điểm duy nhất của việc sử dụng thêm cơ sở hạ tầng thông thường là sử dụng cơ chế thu hồi chứng chỉ. Nhưng vì nhà phát triển có quyền kiểm soát (các) ứng dụng nên anh ta chỉ có thể thay thế ứng dụng trong trường hợp chứng chỉ bị xâm phạm. Vì vậy, vâng, trong hầu hết các trường hợp, nó đủ an toàn để thực hiện SSL gắn với chứng chỉ tự ký và nó an toàn hơn so với việc sử dụng chứng nhận chứng chỉ tiêu chuẩn mà không cần ghim.

+0

Một câu hỏi khác có thể thú vị là nếu khóa SSL an toàn 'ENOUTH' cho 'Hầu hết' của ứng dụng, ngay cả khi làm việc cùng với chứng nhận tự ký? – firebear

+0

@firebear: Câu hỏi hay. Tôi đã thêm và trả lời nó trong câu trả lời của tôi. –

+0

Hiểu bằng cách so sánh câu trả lời của @Steffen & Bruno, có vẻ như với tôi rằng sử dụng chứng chỉ hợp lệ/không hợp lệ, SSL Pinning hay không, bằng cách nào đó là sự cân bằng rủi ro, chi phí và hiệu quả. Tôi sẽ chọn SSL Pinning với chứng chỉ tự ký cho kết nối HTTPS bình thường, chọn chứng chỉ hợp lệ cho web và hệ thống AAA của chúng tôi, tôi dự định kết hợp SSL Pinning và chứng chỉ hợp lệ và bảo vệ khóa riêng của mình một cách cẩn thận. cảm ơn rất nhiều – firebear

3

Rất khó để nói categorically liệu pinning là tốt hơn hay tệ hơn, vì nó thay đổi rủi ro cho một bên khác.

Ghim cho cơ bản sẽ bảo vệ bạn tốt hơn chống lại sự vi phạm tiềm năng trong bất kỳ của CA mà bạn tin tưởng. Nếu một CA bị xâm phạm và tạo ra chứng chỉ cho máy chủ mà bạn đang cố gắng liên lạc, việc ghim sẽ bảo vệ bạn khỏi điều đó vì bạn sẽ so sánh với tham chiếu cụ thể mà bạn đã ghim, thay vì đi qua CA.

Nhược điểm là nó sẽ ngăn không cho bạn sử dụng các cơ chế tại CA để đối phó với máy chủ bị xâm phạm: thu hồi chứng chỉ. Nếu khóa riêng của máy chủ bị xâm phạm, việc thực hiện cơ chế xác minh PKI sẽ cho phép bạn kiểm tra việc thu hồi và được cảnh báo rằng sự cố như vậy xảy ra. Ngược lại, bạn sẽ không thể biết rằng với việc ghim, vì bạn không đi qua CA để kiểm tra chứng chỉ. Tất nhiên, bạn có thể kết hợp cả hai cách tiếp cận, nhưng điều này có thể gây ra các vấn đề khác (bạn cần một chiến lược để đối phó với kết quả xung đột trong cả hai đánh giá, nếu không thì CA bị thu hồi sẽ thu hồi chứng chỉ hợp lệ có thể gây ra DoS).

Tôi không biết dù sao cơ chế ghim của AFNetworking sẽ thay thế việc xác thực PKI hoặc bổ sung nó.

Nói chung, việc lựa chọn giữa việc sử dụng tính năng xác thực hoặc xác thực PKI tùy thuộc vào việc bạn cho rằng khóa riêng của máy chủ cụ thể có nhiều khả năng bị xâm phạm hơn các CA mà bạn tin cậy hay không.

Một nhược điểm khác của việc ghim là bạn cần cập nhật ứng dụng (hoặc cho phép người dùng "ghim lại") mỗi lần chứng chỉ máy chủ (hoặc ít nhất là cặp khóa, tùy thuộc vào thứ bạn đã ghim) là đã thay đổi một cách hợp pháp. Nó có thể không phải là một ý tưởng tồi để tái quan trọng một lần trong một thời gian.

(Để rõ ràng, tôi không nói rằng CA là tốt hơn, chỉ cần ghim thay đổi tập hợp các vấn đề.)

+0

xem sự hiểu biết và lựa chọn của tôi trong nhận xét cho @Steffen. Cảm ơn – firebear

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