Có thực sự không thể nói CPU đang làm gì không? [đóng cửa]


24

Các lập trình viên máy tính thường đọc câu thần chú rằng các hướng dẫn x86 hoàn toàn mờ nhạt: Intel nói với chúng tôi rằng họ đang làm gì đó, nhưng không ai có thể xác minh điều gì đang xảy ra, vì vậy nếu NSA bảo họ sao lưu RNG của họ, thì chúng tôi thực sự không thể làm bất cứ điều gì về nó

Chà, tôi tin rằng các lập trình viên máy tính không thể làm gì về vấn đề này. Nhưng làm thế nào một kỹ sư điện sẽ tấn công nó? Có kỹ thuật nào mà một kỹ sư điện có thể sử dụng để xác minh rằng một mạch thực sự thực hiện các hoạt động được mô tả trong thông số kỹ thuật của nó và không có hoạt động nào khác không?


5
Bạn sẽ phải làm một cái gì đó như xray the die và phân tích mọi thứ để xem nó thực sự đang làm gì. Về cơ bản đảo ngược kỹ sư chip và tài khoản cho chức năng trhe của mỗi mạch. Hoàn toàn không thực tế.
DKNguyen

7
Không có mạch điện nào thực hiện đến một thông số chính xác vì tiếng ồn và khả năng nhỏ là một ngày nào đó sẽ có một trục trặc "đủ lớn".
Andy aka

5
Thông tin thú vị: Điều này có liên quan mơ hồ đến con quỷ của Laplace .
Harry Svensson

6
Việc đánh cắp các tài liệu nội bộ từ cơ sở dữ liệu nội dung của Intel sẽ dễ dàng hơn so với kỹ thuật đảo ngược ngay cả một CPU Intel hiện đại, phức tạp.
rừng

14
@Harper thái độ của bạn là không có kết cấu, và khẳng định của bạn rằng một cửa hậu không thể được che giấu trong phần cứng là không đúng sự thật.
pjc50

Câu trả lời:


14

Bài viết hay nhất mà tôi đã đọc về chủ đề này là "Trojans phần cứng cấp độ tàng hình" (Becker et al) từ năm 2014.

Do mạch sửa đổi có vẻ hợp pháp trên tất cả các lớp dây (bao gồm cả kim loại và polysilicon,) nên các Trojans của chúng tôi chống lại hầu hết các kỹ thuật phát hiện, bao gồm kiểm tra quang học hạt mịn và kiểm tra đối với chip vàng. "Chúng tôi chứng minh tính hiệu quả của phương pháp của chúng tôi bằng cách chèn Trojans vào hai thiết kế - xử lý hậu kỹ thuật số có nguồn gốc từ thiết kế RNG bảo mật bằng mật mã của Intel được sử dụng trong bộ xử lý Ivy Bridge và triển khai SBox kháng kênh phụ - và bằng cách khám phá khả năng phát hiện và ảnh hưởng của chúng đối với bảo mật.

Bài viết mô tả cách thay đổi được thực hiện, cực kỳ khó phát hiện khi kiểm tra silicon, các kỹ thuật để giấu nó khỏi thử nghiệm sản xuất và cách thực hiện để giảm tính bảo mật của RNG tiền điện tử phần cứng hoặc rò rỉ thông tin chính thông qua kênh bên đường sắt điện của việc triển khai AES.

Kênh phụ là một lĩnh vực mới nổi quan tâm. Intel đã gặp khó khăn bởi các vấn đề liên quan đến thông tin rò rỉ thực thi đầu cơ từ bộ nhớ thậm chí không được chương trình sử dụng. Đó có thể là một lỗ hổng thiết kế có chủ ý? Nó gần như không thể nói.


Không phải một kênh bên sẽ yêu cầu một số loại máy phát để gửi thông tin đến NSA? Nếu không, tôi chắc chắn sẽ nhận thấy ai đó đo dòng điện trên máy tính xách tay của tôi trong khi tôi đang làm việc với nó.
Dmitry Grigoryev

24

Có kỹ thuật nào mà một kỹ sư điện có thể sử dụng để xác minh rằng một mạch thực sự thực hiện các hoạt động được mô tả trong thông số kỹ thuật của nó và không có hoạt động nào khác không?

Về lý thuyết, vâng, tôi nghĩ điều này là có thể. Tuy nhiên, đối với một CPU phức tạp thì sẽ tốn rất nhiều thời gian và tiền bạc. Ngoài ra, nếu bạn không biết đầy đủ và hiểu thiết kế, bạn sẽ không thể đánh giá liệu có hoạt động nào là "hợp pháp" hay không.

CPU là "chỉ" một mạch kỹ thuật số phức tạp bao gồm nhiều ô logic.

Có thể đảo ngược kỹ thuật chip và tái cấu trúc thiết kế bằng cách quan sát các kết nối kim loại. Có thể có nhiều lớp kết nối như tối đa 8 lớp trở lên.

Bạn sẽ cần các chuyên gia trong lĩnh vực này để nhận ra các ô logic và sau đó có thể một số phần mềm có thể tìm ra cách tất cả chúng được kết nối để bạn có thể xây dựng lại danh sách mạng.

Một khi bạn có netlist bạn "biết" thiết kế. Điều đó không có nghĩa là bây giờ bạn cũng biết nó hoạt động như thế nào!

Có thể là một chức năng nhất định kích hoạt 2 phần của thiết kế trong khi bạn nghĩ rằng một phần là đủ để bạn nghi ngờ một số hoạt động đáng ngờ đang diễn ra. Tuy nhiên, thiết kế thực hiện một số mẹo thông minh mà bạn không biết để tăng tốc hoạt động.

Không biết và hiểu thiết kế, bất kỳ kết luận nào bạn rút ra vẫn có thể sai. Chỉ các kỹ sư thiết kế CPU mới có tất cả thông tin thiết kế và có cơ hội tốt nhất để có thể tìm ra hoặc đoán những gì thực sự xảy ra hoặc nên tiếp tục trong CPU.


77
Chỉ có các kỹ sư thiết kế CPU mới biết mọi thứ đang diễn ra - Tôi tình cờ là một kỹ sư làm việc trong ngành này và để tôi đánh giá tuyên bố này là một điều rất lạc quan :)
Eugene Sh.

18
Không, các nhà thiết kế CPU sẽ không biết mọi thứ đang diễn ra - thiết kế ở mức đó phụ thuộc vào các công cụ tổng hợp và những người có thể thực hiện hành vi vượt ra ngoài thiết kế HDL. Để lấy một ví dụ không chính đáng, rất nhiều công cụ FPGA sẽ cho phép bạn biên dịch trong một bộ phân tích logic.
Chris Stratton

9
Kỹ thuật đảo ngược một con chip với "hàng tỷ bóng bán dẫn" sẽ đưa ra một thách thức. Spectre.ieee.org / bán dẫn / bộ vi xử lý
điện áp

4
@Wilson Bởi vì các mạch phức tạp (bao gồm CPU) sẽ chứa nhiều thiết kế độc quyền (và bí mật, được đăng ký nhãn hiệu / bằng sáng chế) không được cung cấp cho công chúng vì các công ty sở hữu những thiết kế đó muốn hưởng lợi (kiếm tiền) từ chúng. 6502 là một thiết kế cũ , nó không có bất kỳ thông tin thiết kế có giá trị nào nữa nên vâng, nó hoàn toàn mở và có sẵn cho tất cả mọi người.
Bimpelrekkie

3
@Bimpelrekkie: Nếu họ được cấp bằng sáng chế, họ theo định nghĩa không bí mật. Đó là điểm của một bằng sáng chế. Bạn đánh đổi một bí mật cho sự độc quyền tạm thời.
MSalters

9

Chà, tôi tin rằng các lập trình viên máy tính không thể làm gì về vấn đề này. Nhưng làm thế nào một kỹ sư điện sẽ tấn công nó?

Không có cách nào tốt để tìm cửa sau, một cách để tìm cửa sau phần cứng sẽ là kiểm tra kết hợp hoặc hướng dẫn không có giấy tờ. Đây là một bài nói hay về một người thực sự làm điều này và thực hiện kiểm toán trên phần cứng x86 . Điều này có thể được thực hiện mà không cần bẻ khóa chip. Một vấn đề với intel (tôi không chắc về các chip khác) là nó thực sự có bộ xử lý với linux chạy trên nó nên cũng có phần mềm chạy trên một số bộ xử lý và bạn không có quyền truy cập vào đó.

Có kỹ thuật nào mà một kỹ sư điện có thể sử dụng để xác minh rằng một mạch thực sự thực hiện các hoạt động được mô tả trong thông số kỹ thuật của nó và không có hoạt động nào khác không?

Có nhiều cách để kiểm tra để sử dụng chính phần cứng để kiểm tra chức năng. Vì x86 có một phần không có giấy tờ trong tập lệnh của nó, nên việc giới thiệu backtime trong các hướng dẫn thông thường là không bình thường vì nó sẽ giới thiệu khả năng xảy ra lỗi (như nếu bạn có cửa sau trong lệnh thêm hoặc đa hướng), vì vậy, nơi đầu tiên cần xem sẽ được trong các hướng dẫn không có giấy tờ.

Nếu bạn cần kiểm tra chức năng của các hướng dẫn thông thường, bạn có thể xem thời gian cần thiết để thực hiện hướng dẫn, hãy xem mức năng lượng cần thiết để chạy hướng dẫn để xem liệu có sự khác biệt so với những gì bạn mong đợi không.


3
Tôi sẽ không đồng ý, không phải là không ai có thể làm điều này, nhưng không thể. giả sử bạn đã backback một lệnh thông thường như một lệnh add và nếu bạn thực hiện một lệnh bổ sung, hãy nói rằng nó đã mở một backlink. Sau đó, một khách hàng phát triển một chương trình có sự kết hợp chính xác, họ nhìn vào đó, tìm cửa sau và mọi người đều nổi điên và bạn bị kiện. An toàn hơn nhiều khi đặt một cửa hậu trong các hướng dẫn không có giấy tờ (hoặc máy tính linux được tích hợp trong CPU)
Điện áp tăng vọt

4
IME chạy Minix không phải là Linux và nhỏ hơn và đơn giản hơn nhiều. Linux được lấy cảm hứng từ sự tồn tại của Minix và ban đầu sử dụng hệ thống tập tin của nó và được công bố trên nhóm tin tức của nó, nhưng lúc đó chúng khá khác nhau và bây giờ cực kỳ như vậy.
Chris Stratton

5
@ user14717 - khả năng khó chịu sẽ là một chuỗi kích hoạt trong một tệp thực thi gốc bị bỏ tù, giống như máy khách gốc. Nhưng không có lý do gì nó phải là và không phải dữ liệu .
Chris Stratton

5
@ Bugs laptop2d nơi CPU không làm những gì tài liệu lý thuyết của các tập lệnh nói xảy ra tất cả các thời gian ; không ai bị kiện, thường là: Đọc phần errata trong bản cập nhật tài liệu gia đình Core i7 thế hệ thứ 7 chẳng hạn. Sử dụng một hướng dẫn không có giấy tờ sẽ ngay lập tức phát ra âm thanh báo động của bất kỳ nhà nghiên cứu phần mềm độc hại nào. Sử dụng một sự kết hợp bất thường của các ADD nhịp nhàng với các MOV đăng ký liên bên phải sẽ ít có khả năng kích hoạt bất kỳ báo động nào.
Marcus Müller

6
@ laptop2d Tôi đã bị choáng bởi câu lệnh "nhúng linux trong CPU". Vì vậy, tôi đã thực hiện một chút nghiên cứu, tôi đoán bạn nói về động cơ Intel ME. Chà, nó không chạy trên CPU, mà là trên chipset cầu bắc. Có vẻ như đã có rất nhiều thông tin sai lệch về điều đó, xem itfoss.com/fact-intel-minix-case
mờ

6

Cách duy nhất là lột lớp chip xuống từng lớp và ghi lại mọi bóng bán dẫn bằng kính hiển vi điện tử, sau đó nhập nó vào một loại chương trình mô phỏng nào đó và sau đó xem nó chạy.

Đây thực chất là vấn đề Hộp đen trong đó bạn cố gắng và xây dựng lại các phần bên trong từ việc đo lường đầu vào và đầu ra. Một khi sự phức tạp của các phần bên trong, hoặc số lượng I / O, vượt ra khỏi tầm thường, có một vụ nổ tổ hợp trong đó số lượng các trạng thái bên trong có thể trở thành thiên văn. Trường hợp những con số như Googol bị ném về.


2
... và việc đánh cắp thiết kế bằng kỹ thuật xã hội sẽ dễ dàng hơn :)
Eugene Sh.

8
Không. Sai lầm rõ ràng ở đây là mô phỏng sẽ không đủ. Ngay cả khi bạn đã được cung cấp một mô hình mô phỏng chính xác , bạn vẫn sẽ không thể tìm thấy hành vi được giấu cẩn thận, bởi vì bạn không biết làm thế nào để kích hoạt nó.
Chris Stratton

4
@ChrisStratton tôi sẽ không gọi sai lầm mà nhìn chằm chằm . Đó là một giả định hợp lý rằng thiết kế dựa trên việc đơn giản hóa thông thường về mặt vật lý, ví dụ như bạn không đặt hai dấu vết kim loại gần nhau đến mức chúng kết hợp với nhau một cách tự nhiên để thay đổi trạng thái của cổng MOSFET. Đó chỉ là một sai lầm nếu a) đơn giản hóa của bạn không phù hợp với mô hình vật lý của những gì nhà thiết kế đã sử dụng hoặc b) nhà thiết kế đang cố tình che giấu điều gì đó bằng cách cố tình phá vỡ các yêu cầu cho những đơn giản hóa này theo những cách không rõ ràng.
Marcus Müller

7
@ChrisStratton ah, xin lỗi, ok, tôi nghĩ bây giờ tôi đang nhận được điểm của bạn. Bạn nói rằng ngay cả các mô hình đồng hồ kỹ thuật số / hành vi của CPU cũng đủ phức tạp để che giấu các trường hợp mà sự hiểu biết / giả định của lập trình viên đơn giản là không áp dụng. Đung. Người ta có thể ghi lại các hiệu ứng dẫn đến SPECTER một cách chi tiết, và hầu hết mọi người sẽ không bao giờ nghĩ đến việc lưu vào bộ đệm để có các hiệu ứng phụ liên quan đến luồng dữ liệu hoặc chương trình. Thật!
Marcus Müller

3
Cảm ơn :) Đối số của bạn đưa toàn bộ chủ đề xác minh chính thức về tính chính xác của ISA trở lại ("ISA này có thực sự đảm bảo rằng CPU tuân thủ không cấp đặc quyền RING 0 cho mã không có đặc quyền không?") Và xác minh chính thức HDL / RTL chống lại các thông số kỹ thuật của ISA như vậy (tôi đặc biệt thích dự án xác minh CPU RISC-V này .)
Marcus Müller

5

Chứng tỏ rằng CPU không làm điều gì đó lén lút là cực kỳ khó khăn. Ví dụ cổ điển là một máy bỏ phiếu. Nếu nó có một bit trong đó lấy một bản sao phiếu bầu của bạn và sau đó lén đưa nó ra cho một nhà độc tài, thì đó có thể là sự sống hay cái chết cho bạn ở một số nơi. Và việc chứng minh không có một chút nào như thế trong số hàng tỷ là khá khó.

Bạn có thể nghĩ về việc cách ly chip vật lý, vì vậy thực tế khi thấy rằng không có kết nối dây không phù hợp với nó. Và đặt một chip khác, hoặc nhiều hơn một chip nối tiếp (từ các nguồn khác nhau) vào kết nối mạng của nó để đảm bảo nó chỉ kết nối đến đúng nơi. Sau đó, sức mạnh đi xe đạp nó sau khi nó đã gửi phiếu bầu của bạn. Và hy vọng rằng không có bit không biến đổi trong đó. Hoặc kết nối không dây lén lút. Nhưng bạn sẽ tin tưởng cuộc sống của bạn với nó?


5

Việc truyền bất kỳ dữ liệu nào đến NSA sẽ yêu cầu truy cập mạng, do đó, sẽ rất dễ dàng phát hiện ra một cửa hậu như vậy bằng cách chạy HĐH với các dịch vụ mạng bị vô hiệu hóa và kiểm tra giao diện mạng. Đối với một hệ điều hành nguồn mở, thậm chí có thể chạy với sự hỗ trợ mạng đầy đủ và kết nối giả mạo bằng IP đích của chúng không khớp với bất kỳ địa chỉ nào mà HĐH có thể truy cập một cách hợp pháp.

Một cửa hậu dựa trên RNG không truyền dữ liệu sẽ có tính hữu dụng rất hạn chế. Trừ khi CPU RNG là nguồn entropy duy nhất , khả năng backlink như vậy sẽ cung cấp bất kỳ lợi thế nào cho kẻ tấn công trong khi không rõ ràng đồng thời là thực tế . Trừ khi bạn khăng khăng rằng ấm trà của Russel ở ngoài đó mặc dù không có lý do chính đáng để tồn tại, bạn sẽ có thể áp dụng lập luận tương tự cho các backtime RNG phần cứng.


5
Vì vậy, bạn cho rằng đối thủ có thời gian, tiền bạc và kỹ năng để tạo và ẩn một con ngựa trojan phần cứng, nhưng điều đầu tiên họ làm là telnet www.nsa.gov? Điều này có vẻ như một quan điểm rất ngây thơ.
Elliot Alderson

1
Nếu NSA đã che giấu một lỗ hổng, thì có, họ sẽ hy vọng rằng mọi người đã sử dụng rdrandhoặc rdseednhư Intel đề xuất: là nguồn entropy duy nhất cho hạt giống PRNG. Linux (kernel) quyết định không làm điều đó cho /dev/random, nhưng glibc / libstdc ++ 's hiện tại std::random_device không sử dụng chỉ rdrandnếu nó có sẵn trong thời gian chạy thay vì mở /dev/random. Bước vào cuộc gọi thư viện tiêu chuẩn với godbolt
Peter Cordes

@ElliotAlderson Quan điểm của bạn là gì? Làm thế nào ai đó có thể đánh cắp dữ liệu có giá trị mà không bao giờ truyền nó ở đâu đó?
Dmitry Grigoryev

@PeterCordes std::random_devicekhông phải là một RNG mạnh về mật mã. Tiêu chuẩn C ++ cho phép bạn thực hiện nó với PRNG, trả lại hiệu quả cùng một trình tự mỗi lần , vì vậy rõ ràng không ai nên sử dụng nó để mã hóa.
Dmitry Grigoryev

Ồ đúng rồi, tôi quên rằng không có gì đảm bảo rằng nó tốt cả, xD. Nó tốt về việc triển khai nhiều, nhưng MinGW là ngoại lệ nổi bật đến mục đích thiết kế mà nó mang lại cho bạn như số ngẫu nhiên chất lượng tốt như nền tảng này có khả năng, đánh bại mục đích chính của thư viện. (Như bạn nói không phải là tiền điện tử , mà là gieo các PRNG cho các mục đích khác). ( Tại sao tôi nhận được cùng một chuỗi cho mỗi lần chạy với std :: Random_device với mingw gcc4.8.1? ). Điều đó có thể được chấp nhận trên một nền tảng mà không cần bất kỳ entropy nào (thiết bị nhúng tối thiểu), nhưng không phải trên Windows x86!
Peter Cordes
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.