Điểm:1

Tại sao việc triển khai lại liên quan đến các cuộc tấn công theo thời gian?

lá cờ in

Các cuộc thảo luận từ các nguồn có uy tín cao (chi tiết bên dưới) nhấn mạnh tầm quan trọng của thực hiện của phần mềm mật mã để bảo mật hiệu quả được cung cấp, với một trường hợp cụ thể là độ nhạy cảm với thời gian tấn công.


Làm rõ - Ngữ cảnh là chữ ký mật mã của các thông điệp không bí mật

Câu trả lời ban đầu của @ poncho lưu ý rằng những kẻ tấn công không phải lúc nào cũng có quyền xác định việc triển khai "của người dùng".

Trên thực tế, tôi quan tâm đến câu hỏi này chính xác trong tình huống rất thực tế khi kẻ tấn công là người dùng và có khả năng chọn cách thực hiện của riêng họ - trong việc ký mật mã các thông điệp không bí mật. Trích dẫn của tôi dưới đây là về NaCl, bao gồm việc triển khai ed25519. Trong các trường hợp sử dụng mà tôi đang xử lý, bạn có thể cho rằng "kẻ tấn công"/người dùng có thông báo văn bản gốc, chữ ký và khóa chung. Cả ba đều cần thiết để chữ ký trở nên hữu ích. Điều duy nhất họ thiếu là khóa riêng.


Đây không phải là không liên quan? Về mặt logic, thuật toán mã hóa vốn dễ bị tấn công theo thời gian nếu bản thân thuật toán đó có khả năng xác định lỗi xác thực trong số lượng thao tác ít hơn số lượng thao tác cần thiết để xác nhận thành công xác thực. Càng nhiều điểm khác biệt mà tại đó lỗi xác thực có thể được xác định bằng toán học, thì thuật toán càng nhạy cảm.

Ví dụ.

  • Nếu một thuật toán không thể xác định về mặt toán học tính hợp lệ của một tập hợp đầu vào cho đến bước cuối cùng, thì nó vốn đã miễn nhiễm với các cuộc tấn công theo thời gian. Tôi hiểu rằng tất cả các thuật toán SHA được NIST chấp thuận kể từ Trin-180-4 nằm trong nhóm này.
  • Nếu một thuật toán có thể xác định bằng toán học đầu vào không hợp lệ ở mỗi byte/từ/khối gia tăng của một số luồng được xử lý, thì thuật toán đó cực kỳ nhạy cảm với các cuộc tấn công theo thời gian.
  • Trong trường hợp xấu nhất, số lượng thao tác tối thiểu cần thiết để xác định thành công hay thất bại phụ thuộc vào từng bit gia tăng trong khóa bí mật.

Khả năng của bất kỳ triển khai cụ thể nào để tránh hoặc bỏ qua tính nhạy cảm cơ bản của thuật toán đối với một cuộc tấn công theo thời gian là không liên quan về mặt logic, bởi vì kẻ tấn công hợp lý sẽ chỉ chọn sử dụng một triển khai có chủ ý nhạy cảm với các cuộc tấn công theo thời gian. Ngay cả khi hầu hết những kẻ tấn công thiếu kỹ năng hoặc động lực để viết triển khai của riêng họ, thì chỉ cần một người tạo và sau đó phân phối triển khai làm nổi bật các cuộc tấn công theo thời gian.

Tương tự như vậy, nếu một thuật toán vốn đã miễn nhiễm với các cuộc tấn công theo thời gian (ví dụ: nó không thể xác định tính hợp lệ hoặc không hợp lệ cho đến bước cuối cùng), thì theo định nghĩa, không thể tạo ra một triển khai dễ bị tấn công theo thời gian, dù là cố ý hay vô tình.

Một tác giả có thể tự hào về bất kỳ phẩm chất nào trong việc triển khai thuật toán của họ, nhưng có vẻ như "khả năng chống lại các cuộc tấn công theo thời gian" là một phẩm chất có ý nghĩa logic.

Am i thiếu cái gì ở đây?

Tham khảo: Daniel Bernstein / NaCl

Các phần tính năng trong số các tài liệu cho bản gốc của Daniel Bernstein thư viện NaCl, đó là việc triển khai tham chiếu của ed25519 thuật toán chữ ký mà ông và các đồng tác giả đã phát minh ra, đưa ra nhiều tuyên bố về tính ưu việt của thuật toán chữ ký của họ. thực hiện giúp nó chống lại các cuộc tấn công theo thời gian (nhấn mạnh của tôi):

Không có chi nhánh phụ thuộc vào dữ liệu

... Văn học có nhiều tấm gương thành đạt thời gian tấn công đã trích xuất các khóa bí mật từ các bộ phận này của CPU. NaCl tránh một cách có hệ thống tất cả luồng dữ liệu từ thông tin bí mật đến con trỏ lệnh và bộ dự báo rẽ nhánh

Không có chỉ số mảng phụ thuộc vào dữ liệu

... Văn học có một số ví dụ về thành công các cuộc tấn công thời gian bộ nhớ cache đã sử dụng thông tin bí mật bị rò rỉ thông qua các địa chỉ. NaCl tránh một cách có hệ thống tất cả luồng dữ liệu từ thông tin bí mật đến các địa chỉ được sử dụng trong hướng dẫn tải và hướng dẫn lưu trữ

fgrieu avatar
lá cờ ng
Một mô hình tấn công mà kẻ tấn công có thể chọn cách thực hiện là không thực tế. Nó để lại quá nhiều con đường để kẻ tấn công lấy được chìa khóa.
Điểm:3
lá cờ ng

Đây phải là một bình luận (dài), nhưng tôi không có chỗ trống. Nó nhằm giải thích lý do tại sao ý tưởng cho phép kẻ tấn công chọn triển khai cơ bản lại quá mạnh --- nó "tầm thường" phá vỡ bất kỳ nguyên thủy nào.


Đối với bất kỳ mật mã gốc nào, nếu kẻ tấn công muốn trích xuất một khóa $k\in \{0,1\}^n$ cho một số $n$, và có thể:

  1. Chọn tin nhắn tùy ý (ít nhất tin nhắn có trong $\{0,\dots,n-1\}$) vào bất kỳ nguyên thủy nào đang được xem xét,

  2. Tự ý sửa đổi thực hiện của thuật toán (chứ không phải hành vi đầu vào-đầu ra của hàm toán học mà thuật toán thực hiện)

  3. Có quyền truy cập vào bất kỳ phương pháp chất lượng nào để đo thời gian

khá đơn giản để sửa đổi việc triển khai thuật toán để rò rỉ hoàn toàn khóa bí mật trong $n$ truy vấn. Nếu $\mathcal{O}(k, m)$ là nguyên thủy "cũ", xác định nguyên thủy "mới" thông qua:

O'(k, m)
    nếu m trong {0,...,n-1} và k[m] == 1:
        đợi đã(T)
    trả lại O(k, m)

Ở đây, T là một hằng số không xác định "đủ lớn" để kẻ tấn công có thể đo lường một cách đáng tin cậy sự khác biệt giữa thuật toán sử dụng $\ll T$ thời gian, hoặc $\xấp xỉ T$ thời gian để thực hiện. $\mathcal{O}'$ rõ ràng có hành vi đầu vào-đầu ra chính xác giống như $\mathcal{O}$.


Ví dụ trên sẽ chỉ ra rằng việc để kẻ tấn công chọn cách thực hiện là một to lớn vấn đề bảo mật, ngay cả khi người ta hạn chế việc triển khai để có chính xác hành vi đầu vào/đầu ra giống như chức năng mong muốn. Kết quả là, "nhạy cảm về mặt toán học đối với các cuộc tấn công thời gian" không được xác định rõ, như không tí nào thuật toán dựa trên dữ liệu "bí mật" dễ bị tấn công ở trên.

Tuy nhiên, đây không thực sự là một vấn đề, vì việc để kẻ tấn công chọn thuật toán được sử dụng không được coi là một vấn đề lớn trong thực tế (lần duy nhất nó có thể thực sự xảy ra là trong các cuộc tấn công kiểu "ủy ban tiêu chuẩn cửa hậu", chẳng hạn như điều gì đã xảy ra với DUEL_EC_DRBG , nhưng cửa hậu định thời gian có vẻ tồi tệ hơn cửa hậu "Tôi biết khóa bí mật", vì người khác có thể dễ dàng quan sát cửa hậu định thời gian hơn).

Mặc dù "dễ bị tấn công theo thời gian" không được xác định rõ, nhưng có những nguyên tắc khó thực hiện hơn theo cách liên tục. Điều này thường có nghĩa là một trong hai điều sau:

  1. Chi phí chuyển đổi từ thời gian không cố định sang thời gian không đổi là lớn
  2. Dễ mắc sai lầm khi chuyển đổi từ thời gian không đổi sang thời gian không đổi.

Tuy nhiên, đây không phải là những thuộc tính hình thức của các vấn đề, mà thay vào đó là những quan sát thực nghiệm của những người thực hành. Vấn đề đầu tiên có thể được chính thức hóa (cụ thể là trong khoảng cách lớn giữa mạch có kích thước tối thiểu tính toán thứ gì đó và TM có kích thước tối thiểu trong mô hình RAM tính toán thứ gì đó), nhưng tôi thường không thấy mọi người cố gắng làm điều này (có vẻ như nó không thú vị đối với những người thực hiện).

Điểm:1
lá cờ my

Đây không phải là không liên quan? Về mặt logic, thuật toán mã hóa vốn dễ bị tấn công theo thời gian nếu bản thân thuật toán đó có khả năng xác định lỗi xác thực trong số lượng thao tác ít hơn so với yêu cầu để xác nhận thành công xác thực.

Việc thực hiện khá phù hợp; bất kỳ thuật toán nào hoàn thành trong thời gian giới hạn đều có thể được triển khai theo cách truy cập bộ nhớ/thời gian không đổi; do đó, bất kỳ thuật toán nào như vậy đều có thể được triển khai một cách an toàn trước các cuộc tấn công kênh bên này. Tất nhiên, một số thuật toán làm cho việc triển khai như vậy trở nên dễ dàng và những thuật toán khác làm cho nó khá tốn kém.

Nếu một thuật toán không thể xác định về mặt toán học tính hợp lệ của một tập hợp đầu vào cho đến bước cuối cùng, thì nó vốn đã miễn nhiễm với các cuộc tấn công theo thời gian.

Trên thực tế, việc triển khai có thể mất thời gian tùy thuộc vào khóa bí mật hoặc giá trị trung gian bí mật.

Nếu một thuật toán có thể xác định bằng toán học đầu vào không hợp lệ ở mỗi byte/từ/khối gia tăng của một số luồng được xử lý, thì thuật toán đó cực kỳ nhạy cảm với các cuộc tấn công theo thời gian.

Không; quá trình triển khai có thể quyết định hủy bỏ sớm hoặc có thể đặt cờ 'thất bại' nội bộ và tiếp tục (và cuối cùng, lưu ý rằng cờ không thành công được đặt và xử lý lỗi tại thời điểm đó) và vâng, cài đặt của cờ thất bại có thể được thực hiện trong thời gian không đổi. Việc sử dụng cờ không thành công được kiểm tra ở cuối là khá phổ biến đối với việc triển khai thời gian không đổi.

kẻ tấn công hợp lý sẽ chỉ chọn sử dụng một triển khai có chủ ý nhạy cảm với các cuộc tấn công theo thời gian.

Nếu kẻ tấn công đang tấn công hệ thống của người dùng (có quyền truy cập vào giá trị bí mật), anh ta không thể yêu cầu người dùng thay đổi cách triển khai (cho kẻ tấn công) thuận tiện hơn; anh ta phải sử dụng những gì người dùng có.

nếu một thuật toán vốn đã miễn nhiễm với các cuộc tấn công theo thời gian (ví dụ: nó không thể xác định tính hợp lệ hoặc không hợp lệ cho đến bước cuối cùng), thì theo định nghĩa, không thể tạo ra một triển khai dễ bị tấn công theo thời gian, dù là cố ý hay vô tình.

Không, đây không phải là sự thật; bạn có thể dễ dàng đưa ra các biến thể thời gian không liên quan gì đến tính hợp lệ hoặc không hợp lệ.

Nếu kẻ tấn công có thể chỉ định cách triển khai mà người dùng có, thì anh ta có thể (giả sử) chỉ định cách triển khai mất thêm một giây nếu bit 0 của giá trị bí mật là 1 - có thể dễ dàng phát hiện được. Và, bằng cách chỉ định $n$ triển khai khác nhau, anh ta có thể đọc tất cả $n$ bit của giá trị bí mật - do đó, trong mô hình tấn công này, không có khả năng bảo mật nào (có nghĩa là người dùng có thể không muốn tin tưởng một cách mù quáng vào các triển khai do kẻ tấn công cung cấp).

Tất nhiên, nếu kẻ tấn công đang làm việc trên hệ thống của chính hắn, hắn có thể chạy bất cứ thứ gì hắn muốn; tất nhiên, vì hệ thống của anh ấy không có giá trị bí mật nên bất kỳ kênh phụ nào trong quá trình triển khai đó đều không cho anh ấy biết bất cứ điều gì mà anh ấy chưa biết.

lá cờ in
Đây là những điểm tốt cho các tình huống mà tính toán được thực hiện trên một máy nằm ngoài tầm kiểm soát của kẻ tấn công. Tôi đã làm rõ thêm câu hỏi của mình rằng tôi quan tâm nhất đến việc ký mã hóa các thông điệp không bí mật. Trong trường hợp đó, "kẻ tấn công" là người dùng, họ có toàn quyền kiểm soát việc triển khai và thứ duy nhất họ thiếu là khóa riêng. Điều tương tự cũng đúng với bất kỳ hệ thống PKI nào, chẳng hạn như chứng chỉ SSL được triển khai trên internet công cộng.
poncho avatar
lá cờ my
@JoshuaHonig: nếu kẻ tấn công có thể chạy một triển khai tùy ý có quyền truy cập vào khóa riêng, tại sao chúng không thể chạy một 'triển khai' đọc khóa riêng và xuất ra dưới dạng 'chữ ký'? Điều đó cho phép họ truy cập ngay vào khóa riêng tư mà không phải bận tâm đến việc đo bất kỳ thời gian kênh bên nào...
poncho avatar
lá cờ my
@JoshuaHonig: đối với các chứng chỉ TLS trên internet, chỉ người ký (thường là máy chủ) mới có quyền truy cập vào khóa riêng tư; người xác minh (máy khách) chỉ có quyền truy cập vào khóa chung (và do đó không có giá trị bí mật nào bị rò rỉ)
lá cờ in
Như với bất kỳ chứng chỉ SSL nào, kẻ tấn công không có khóa riêng. Họ muốn lấy khóa bằng cách sử dụng một cuộc tấn công theo thời gian: Hãy thử nhiều ứng cử viên khóa riêng khác nhau và xem liệu chúng có tạo ra chữ ký chính xác hay không. Nếu thuật toán ký nhạy cảm với các cuộc tấn công theo thời gian, thì kẻ tấn công có thể sử dụng triển khai để khám phá khóa riêng, do đó phá vỡ cơ bản PKI, vì giờ đây chúng có thể tạo chứng chỉ giả của riêng mình. Nếu các thuật toán ký không dễ bị tấn công theo thời gian, thì việc triển khai là không liên quan, phải không? (đây là câu hỏi ban đầu của tôi)
poncho avatar
lá cờ my
"Nếu thuật toán ký nhạy cảm với các cuộc tấn công thời gian"; một lần nữa, tất cả các thuật toán (có giá trị bí mật) đều có các triển khai nhạy cảm với các cuộc tấn công theo thời gian. Vì vậy, nếu bạn tấn công là 'hack vào máy chủ TLS và thay thế việc triển khai chữ ký bằng chữ ký của riêng bạn', vâng, bạn đã phá vỡ bảo mật (thực ra, có thể có nhiều cách dễ dàng hơn nếu bạn có thể xâm nhập); đó là quan điểm của bạn?
lá cờ in
Cụ thể, nếu `secp256k1` dễ bị tấn công theo thời gian về mặt toán học, thì tôi có thể dành thời gian ngọt ngào của mình để tính khóa riêng của ví BTC có giá trị cao và đánh cắp số dư của nó. Nếu `rsaEncryption` hoặc `secp384r1` về mặt toán học dễ bị tấn công theo thời gian, thì tôi có thể tính toán khóa riêng của CA gốc được tin cậy rộng rãi và thực hiện các cuộc tấn công trung gian. Tất cả đều có thể mà không cần hack bất cứ thứ gì, đó là điểm chính. Hơn nữa, các khóa riêng tư trong những trường hợp này tồn tại rất lâu.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.