Ý nghĩa sức mạnh của việc mã hóa lưu lượng cảm biến của tôi là gì?


13

Xem xét một loại ứng dụng thông thường, một cảm biến chạy bằng pin lấy số đọc (giá trị 32 bit) cứ sau 10 phút, tác động có thể có đến tuổi thọ pin là gì nếu tôi chọn một giao thức không mã hóa đơn giản, so với truyền dẫn được mã hóa?

Giả sử rằng dữ liệu của tôi không đặc biệt bí mật, nhưng theo câu hỏi này có lẽ tôi cần xem xét mã hóa nó, miễn là thực sự không có chi phí thiết kế đáng kể.

Để đơn giản, giả sử tôi đang sử dụng SoC nRF51822 hỗ trợ ngăn xếp BLE và giao thức 2,4 GHz đơn giản hơn.

Vì tôi đang nghĩ về một ứng dụng sản phẩm thương mại thay vì cài đặt một lần, mã hóa cần phải được tính toán chuyên sâu để phá vỡ (ít nhất là $ 500 của năm 2016 tính toán trên đám mây), chứ không phải là một cách đơn giản. Một cái gì đó vẫn an toàn ngay cả với quyền truy cập vào phần sụn thiết bị.


2
"Một cái gì đó vẫn an toàn ngay cả với quyền truy cập vào phần sụn thiết bị." có nghĩa là bạn cần phải sử dụng mật mã bất đối xứng đắt tiền về mặt tính toán để đảo ngược hoặc bạn cần lưu trữ khóa đối xứng trong đó không thể truy xuất hoặc thực hiện để khôi phục (tấn công bằng văn bản đã biết, v.v.). Thông thường trong trường hợp sau, mỗi bản sao của sản phẩm có một khóa duy nhất để việc khôi phục từ một mẫu không phá vỡ toàn bộ hệ thống; nhưng điều này có nghĩa là người nhận của bạn cần lưu trữ tất cả các khóa đó.
Chris Stratton

Câu trả lời:


8

Phần lớn năng lượng của bạn có thể sẽ được sử dụng cho truyền RF, chứ không phải các chu kỳ CPU được sử dụng trong các thói quen mã hóa. Mỗi bit được truyền thêm sẽ tiêu tốn của bạn nhiều năng lượng hơn so với mã hóa mà bạn đề xuất. Điều đó có nghĩa là nếu bạn thực hiện một cách tiếp cận ngây thơ, như sử dụng AES trong chế độ CBC, bạn có nguy cơ tăng kích thước thư để mang các bit thừa trong mỗi khối.

Nếu bạn xác định doanh nghiệp của mình cần dữ liệu được mã hóa, hãy xem xét sử dụng AES trong chế độ CTR để tạo các bit cypher luồng. Chế độ truy cập là thực tế để xử lý các trường hợp trong đó việc tiếp nhận có thể không đáng tin cậy và các gói có thể bị mất. Bạn sẽ phải giữ cho các bộ đếm được đồng bộ hóa, vì vậy hãy lưu ý rằng việc định kỳ truyền giá trị của bộ đếm sẽ thêm vào chi phí. Và bạn sẽ phải dự trữ một vài byte trạng thái để giữ bộ đếm, bởi vì việc sử dụng lại luồng bit được mã hóa có thể dẫn trực tiếp đến việc khôi phục dữ liệu.


Nghe có vẻ thuyết phục, và đặt ra một vấn đề hoàn toàn khác về vấn đề này, điều mà tôi không nghĩ quá nhiều về thời gian này.
Sean Houlihane

2
Coi chừng rằng CTR không cung cấp tính xác thực dữ liệu. Bạn nên sử dụng chế độ mã hóa được xác thực trừ khi bạn hiểu tại sao tính xác thực không phải là mối quan tâm trong ứng dụng của bạn.
Gilles 'SO- ngừng trở nên xấu xa'

10

Có nhiều phương pháp mã hóa bạn có thể sử dụng để bảo mật lưu lượng của mình và mỗi phương pháp có cách sử dụng năng lượng hơi khác nhau, vì vậy tôi sẽ chọn một vài lựa chọn phổ biến. Phương pháp tôi sử dụng để đánh giá từng phương pháp nên được áp dụng cho bất kỳ mật mã nào khác mà bạn tìm thấy và muốn so sánh.

AES

AES là một trong những thuật toán mã hóa khóa đối xứng phổ biến nhất (có nghĩa là bạn sử dụng cùng một khóa để mã hóa và giải mã). Về mặt bảo mật, AES là một đặt cược an toàn:

Giải mã công khai tốt nhất

Các cuộc tấn công đã được công bố là tính toán nhanh hơn so với một cuộc tấn công vũ phu hoàn toàn, mặc dù không có gì vào năm 2013 là khả thi về mặt tính toán.

- Wikipedia

Bản mã hóa biclique của AES đầy đủ mô tả rằng AES-128 yêu cầu 2 hoạt động 126.1 , AES-192 yêu cầu 2 189.7 hoạt động và AES-256 yêu cầu 2 hoạt động 254.4 để phá vỡ. Trên bộ xử lý 2.9 GHz, giả sử mỗi 'hoạt động' là 1 chu kỳ CPU (có thể không đúng), việc phá AES-128 sẽ mất nhiều thời gian . Với 10 000 trong số họ đang chạy, nó sẽ vẫn mất gần như mãi mãi . Vì vậy, an ninh không phải là một mối quan tâm ở đây; Hãy xem xét khía cạnh sức mạnh.

Bài viết này cho thấy (trên trang 15) rằng mã hóa một khối bằng AES được sử dụng 351 pJ. Tôi sẽ so sánh điều này một lát sau khi nói về một số thuật toán phổ biến khác.

SIMON

Tôi đã hỏi một câu hỏi về SIMON và SPECK trước đây, rất đáng để đọc. Trường hợp SIMON vượt trội là trong tình huống bạn cần mã hóa một chút dữ liệu, thường xuyên . Bài báo tôi đã liên kết trước đó nói rằng SIMON 64/96 sử dụng 213 pJ cho 64 bit, điều này rất thiết thực khi bạn chỉ cần gửi 32 bit tải trọng.

SIMON 64/96 dễ dàng phá vỡ hơn AES; bài báo tôi liên kết đề xuất 2 hoạt động 63.9 , vì vậy thiết lập CPU 10 000 của chúng tôi có thể phá vỡ mã hóa chỉ trong vài năm , trái ngược với hàng triệu thiên niên kỷ.

Thật sự nó có ảnh hưởng sao?

Với tốc độ bạn dự định truyền, câu trả lời gần như chắc chắn là không ; việc sử dụng năng lượng từ mật mã sẽ hoàn toàn không đáng kể. Đối với AES, bạn sẽ sử dụng 50 544 pJ mỗi ngày , do đó, pin AA carbon-kẽm giá rẻ với năng lượng 2340 J sẽ vượt xa tuổi thọ của thiết bị . Nếu bạn đánh giá lại các tính toán với SIMON, bạn sẽ thấy rằng nó cũng có tuổi thọ rất dài

Nói tóm lại, trừ khi bạn truyền phát rất thường xuyên, đài phát thanh quan tâm nhiều hơn đến quyền lực . Wikipedia trích dẫn mức sử dụng năng lượng trong khoảng từ 0,01 đến 0,5 W. Nếu bạn truyền trong 1 giây ở 0,01 W , bạn đã sử dụng nhiều năng lượng hơn AES trong cả ngày .

Tuy nhiên, đối với BLE, có lẽ bạn chỉ cần dựa vào bảo mật mặc định; BLE sử dụng AES-CCM theo mặc định để bảo mật lớp liên kết :

Mã hóa trong Bluetooth với năng lượng thấp sử dụng mật mã AES-CCM. Giống như BR / EDR, Bộ điều khiển LE sẽ thực hiện chức năng mã hóa. Hàm này tạo ra mã hóa 128 bit từ khóa 128 bit và plaintextData 128 bit bằng cách sử dụng bộ mã hóa khối AES-128 bit như được định nghĩa trong Trin-1971.

một số lo ngại rằng có những lỗi bảo mật với việc triển khai bảo mật lớp liên kết của BLE; đây không phải là một lỗ hổng trong AES; thay vì Bluetooth SIG quyết định tung ra cơ chế trao đổi khóa của riêng họ trong 4.0 và 4.1 . Vấn đề hiện được giải quyết trong 4.2 vì Hellman-Diffie đường cong Elliptical hiện được hỗ trợ.


1
"Trên bộ xử lý 2.9 GHz, giả sử mỗi 'hoạt động' là 1 chu kỳ CPU (có thể không đúng)" - có thể được bù bởi các bộ xử lý song song (như GPU) chạy ở tốc độ thấp hơn nhưng tạo ra nhiều kết quả trên mỗi chu kỳ [và thậm chí trên CPU IIRC, bạn có thể đạt được gần 1 thao tác / đồng hồ trên lõi đơn]. Nó không thay đổi thứ tự cường độ quá nhiều.
Maciej Piechotka

@MaciejPiechotka Đó là một điểm tốt. Như bạn đề xuất, thứ tự cường độ không nên bị ảnh hưởng quá nhiều và ở quy mô mà chúng tôi đang làm việc, hệ số 10 vẫn không đáng kể (10 ^ 33 ngày so với 10 ^ 32 ngày sẽ không thành vấn đề cực kỳ nhiều!).
Aurora0001

1
Một hệ thống đối xứng như AES có vấn đề trừ khi mỗi thiết bị có một khóa duy nhất - nếu không, việc lấy nó ra khỏi chỉ một mẫu được phân tích sẽ phá vỡ toàn bộ hệ thống.
Chris Stratton

4

Trừ khi bạn đang thực hiện tiền điện tử tăng tốc phần cứng, chi phí điện năng có thể sẽ cao khi bạn có bộ xử lý về cơ bản bị áp đảo cho các nhu cầu cơ bản (không phải tiền điện tử). Tuy nhiên, trong hầu hết các trường hợp, đó là việc sử dụng radio tiêu thụ nhiều năng lượng nhất.

Vì bạn đặc biệt đang xem xét một bluetooth bluetooth, hãy xem xét BGM-111 , có tiền điện tử được tăng tốc phần cứng trên chip. Tôi đã chơi với con chip này và nó có vẻ tốt, mặc dù tôi chưa xem xét cụ thể các chức năng của tiền điện tử.

Một tuyến đường khác và có thể là tuyến đường 'tốt nhất' nếu bạn muốn đảm bảo rằng không ai có thể lấy chìa khóa của bạn ngay cả khi họ tháo rời thiết bị. Nó bao gồm một chip TPM, như TPIG của OPTIGA , có các chip TPM I2C và SPI được hỗ trợ bởi các nhân Linux.

Nói tóm lại, bạn sẽ đốt cháy pin mà không cần tiền điện tử phần cứng cụ thể. Hoặc xây dựng một bảng với chip TPM hoặc chọn một SoC hiện đại hơn có tiền điện tử phần cứng đã được tích hợp sẵn.


2
Câu hỏi gợi ý SoC 2,5 GHz và gửi giá trị 32 bit cứ sau 10 phút. Số lượng tính toán cần thiết cho tiền điện tử là không đáng kể. Cấp, rằng SoC dường như áp đảo cho nhiệm vụ. Nhưng cứ sau 32 phút, cứ sau 10 phút, bộ xử lý cơ bản rẻ nhất bạn có thể tìm thấy sẽ là quá đủ.
Gilles 'SO- ngừng trở nên xấu xa'

3
Với khoảng thời gian 10 phút, việc mã hóa mất bao nhiêu thời gian , nó chỉ quan trọng bao nhiêu năng lượng . Bạn phải xem xét các chi tiết thực hiện như tải ký sinh để tìm hiểu xem một con chip nhanh làm điều đó trong 1 ms hoặc chậm trong 500ms sẽ giành được mức tiêu thụ năng lượng, giả sử cả hai ngủ hiệu quả khi không bận rộn. Một công cụ phần cứng có thể tốt hơn phần mềm, nhưng về hiệu quả năng lượng - rằng nó hoàn thành công việc nhanh hơn là không liên quan.
Chris Stratton
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.