An toàn phần cứng: Những vấn đề cơ bản
Internet và xu thế kết nối vạn vật (IoT) khiến các thiết bị điện tử được kết nối vào chung một cơ thể, chung một trí tuệ và trở thành các phần của siêu hệ thống. Đến lượt mình, xu thế này lại càng thúc đẩy phần cứng điện tử phát triển. Kết nối vạn vật ở đây không chỉ theo nghĩa hẹp là kết nối các thiết bị điện tử với nhau, mà còn là kết nối giữa các tổ chức, các nhà máy, các quốc gia, là sự phân công lao động và là đòi hỏi của mô hình kinh doanh trải rộng trên khắp thế giới. Đó là sự hợp tác, liên minh toàn cầu về thiết kế chế tạo phần cứng điện tử.
Hiếm có một tổ chức nào đủ tiềm lực hay lựa chọn phương pháp tự mình chế tạo một phần cứng điện tử từ A đến Z. Hợp tác, liên minh là xu thế tất yếu cho sự phát triển, nhưng nó kéo theo vô số nguy cơ mất an toàn bởi thay vì việc người chủ sở hữu kiểm soát mọi thứ, thì thiết bị của họ từ khi được thiết kế, chế tạo, cho đến quá trình triển khai sử dụng… đều có sự tham gia trực tiếp hay gián tiếp của rất nhiều thành phần không tin cậy, chúng trải khắp địa cầu mà hầu như không thể xác định được chính xác nguồn gốc hay xuất xứ của các thành phần ấy.
Trước đây, phần cứng điện tử vẫn được mặc định là an toàn, là nền tảng tin cậy cho mọi hoạt động và phần mềm chạy trên nó. Nhưng trong khoảng vài chục năm gần đây, ngày càng có nhiều công bố về các tổn thương an toàn và các tấn công nhắm vào phần cứng cùng những tác hại to lớn mà chúng gây ra. Tội phạm trong lĩnh vực phần cứng không chỉ là các hacker cặm cụi gõ lệnh trên bàn phím máy tính, như hình ảnh chúng ta quen thuộc mà mọi thực thể dính líu đến vòng đời của phần cứng đều có thể trở thành mối đe dọa cho an toàn phần cứng: Từ lúc khởi đầu một thiết kế, các giai đoạn thiết kế, chế tạo vi mạch, mạch in, trong các IP core và trong các công cụ thiết kế CAD, trong giai đoạn kiểm thử, trong chuỗi cung ứng linh kiện, quá trình sử dụng, cho đến cả việc kết thúc, thải loại và tái chế.
Phần cứng điện tử
Phần cứng là thứ con người có thể nhìn thấy, sờ thấy, khác với phần mềm là thứ chỉ cảm thấy mà không tiếp xúc trực quan được. Có thể lấy ví dụ, phần mềm trong bộ nhớ, ta không nhìn thấy mà chỉ biết về nó thông qua mức tín hiệu tại các trigger bán dẫn. Trong ngữ cảnh này, phần cứng điện tử là phần cứng cấu tạo từ các linh kiện điện tử. Theo đó, có thể xem phần cứng của một hệ thống điện tử gồm 3 lớp, như Hình 1.
Hình 1. Các lớp của phần cứng điện tử
Lớp trên cùng là mức hệ thống, ở đó tích hợp mọi thành phần vật lý, như trong Hình 1 là máy điều nhiệt và điện thoại thông minh. Mức tiếp theo là bảng mạch, ở đó các linh kiện điện tử được kết nối theo cách nào đó để tạo thành chức năng hệ thống. Lớp thứ ba là mạch tích hợp chứa các vi mạch, các linh kiện chủ động và thụ động khác nhau.
An toàn phần cứng
Nếu như an toàn phần mềm và an toàn thông tin nghiên cứu về các mối đe dọa, các tấn công lên phần mềm và thông tin cùng các biện pháp đối phó thì an toàn phần cứng cũng tương tự, nhưng đối tượng ở đây là phần cứng và phức tạp hơn. Do phần cứng được chế tạo với sự liên quan của quá nhiều thành phần không tin cậy và không thể kiểm soát nên có quá nhiều câu hỏi đặt ra về sự tin cậy như: Có tin tưởng vi mạch sử dụng trong thiết kế không? Các IP core mua về có “sạch” không? Nơi nào tích hợp cấu trúc phục vụ kiểm thử/gỡ lỗi? Có tin được nơi thuê thiết kế và gia công mạch in không? Nơi nào lắp ráp bảng mạch và thiết bị, nơi nào thực hiện kiểm thử từng thành phần phần cứng và sản phẩm cuối, họ có sửa đổi ác ý vào thiết kế ban đầu không? Có cấy Trojan vào không? Công cụ thiết kế CAD có tin cậy không? Linh kiện được mua có tin cậy không, nhà cung cấp có tin cậy không, chuỗi cung ứng linh kiện có tin cậy không, liệu linh kiện có bị đánh tráo không? Làm sao kiểm định đảm bảo mọi linh kiện và mạch in đều “sạch”, không bị cài Trojan?
Trong quá trình sử dụng có bị rò rỉ thông tin dưới các dạng side-channel không? Các khả năng bị tổn thương trong thực tế triển khai là gì? Những mối đe dọa nào có thể xảy ra đối với từng thành phần phần cứng, những nguy cơ bị tấn công nào và kèm theo là những biện pháp chống lại ra sao?
Những chính sách an toàn nào phải được thỏa mãn và khi phần cứng đi hết vòng đời của chúng, thì việc hủy bỏ hay tái chế thế nào để linh kiện hay thiết bị đã thải loại không quay lại chuỗi cung ứng. Làm sao để cân đối giữa an toàn với tốc độ, hiệu năng với năng lượng tiêu thụ vì đó là hai mảng đối lập nhau. Đặc biệt là làm sao để người thiết kế điện tử nhận thức được tầm quan trọng của an toàn phần cứng để tích hợp các biện pháp an toàn ngay từ khâu thiết kế hệ thống chứ không phải bổ sung chắp vá về sau,...
Sau khi đã nhận thức đầy đủ những điểm yếu về độ tin cậy ở trên, người thiết kế phải xác định các bề mặt tấn công, các mối đe dọa, từ đó xây dựng các biện pháp đối phó hữu hiệu tích hợp vào quá trình thiết kế phần cứng.
Một nhiệm vụ quan trọng nữa của an toàn phần cứng là không chỉ giữ an toàn cho chính mình, mà phải tạo được môi trường an toàn cho phần mềm hoạt động trên chúng. Trong mỗi thiết bị thường được phân tách một cách trừu tượng thành hai khu vực: Khu vực công khai để liên lạc với thế giới bên ngoài và khu vực an toàn để lưu trữ “tài sản quý giá” và là môi trường cho phần mềm an toàn hoạt động. TrustZone của ARM, SGX của Intel và Knox của Samsung là các ví dụ về cấu trúc này. Hai khu vực này vừa phải liên lạc với nhau nhưng lại phải cách ly nhau. Các yêu cầu về bảo mật, toàn vẹn và khả dụng tạo thành ba trụ cột quan trọng để thực hiện an toàn phần mềm trên nền tảng phần cứng. Để thỏa mãn các yêu cầu này cần cơ chế hoạt động chung phần cứng – phần mềm, trong đó phần cứng có nhiệm vụ cách ly và tạo thuận tiện cho việc sử dụng có hiệu quả các hàm mật mã trong các thiết bị bảo mật thông tin.
Như vậy, có quá nhiều vấn đề được đặt ra và khó để định nghĩa một cách cô đọng, hoàn hảo về an toàn phần cứng. Những trình bày ở trên đã phần nào mường tượng được an toàn phần cứng là gì và tin cậy có ý nghĩa thế nào đối với an toàn phần cứng.
Tóm lược lịch sử phát triển an toàn phần cứng
An toàn phần cứng bắt đầu xuất hiện vào khoảng đầu những năm 1990 và phát triển nhanh chóng sau đó ở cả các hình thức tấn công lẫn các giải pháp đối phó (Hình 2). Các nghiên cứu liên quan đến an toàn phần cứng không chỉ được quan tâm trong giới tội phạm, mà còn là lĩnh vực sôi động trong giới học thuật và các ngành công nghiệp điện tử.
Hình 2. Các mốc liên quan an toàn phần cứng qua các thập kỷ gần đây
Trước 1996, chỉ có một số tấn công theo kiểu đánh cắp IP core, chủ yếu phục vụ làm nhái vi mạch. Nhưng vào năm 1996 đã có một tấn công phần cứng dưới dạng tấn công timing trích xuất thông tin từ phần cứng mật mã làm chấn động thế giới điện tử. Năm 1997, tấn công gây lỗi theo kiểu ép môi trường khắc nghiệt lên hệ thống khiến nó rò rỉ dữ liệu. Năm 1998, tấn công phân tích điện năng tiêu thụ, một loại tấn công kênh kề, tìm ra khóa bí mật trong chip mật mã. Năm 2005, xuất hiện các vi mạch làm nhái và chip dùng rồi được tái chế, tiềm ẩn nguy cơ mất an toàn và không thể tin cậy. Đến năm 2007 đã xuất hiện Trojan phần cứng, một dạng bom hẹn giờ, được kích hoạt ở những điều kiện đặc biệt và hiếm nên rất khó phát hiện và gần đây là những tổn thương Meltdown và Spectre trên các bộ vi xử lý hiện đại.
Song cùng, các tấn công lên phần cứng là các biện pháp chống lại, điển hình như: Từ năm 1998 đã xuất hiện ý tưởng gắn thẻ phần cứng, tức mỗi IC được gán một ID duy nhất. Đầu những năm 2000, xuất hiện các giải pháp bảo vệ phần cứng dựa trên các nguyên thủy an toàn PUF và TRNG. Đặc biệt, từ năm 2008, bộ Quốc phòng Mỹ đã khởi động Chương trình toàn vẹn và tin cậy cho mạch tích hợp để bảo vệ phần cứng. Đến năm 2012, Thượng viện Mỹ công bố một điều tra cho thấy hơn một triệu thiết bị giả mạo đang được sử dụng trong Không lực Hoa Kỳ và năm 2014, Bộ Quốc phòng Mỹ thành lập Chương trình toàn vẹn phần cứng chuỗi cung ứng cho phòng thủ điện tử, để phát triển công nghệ theo dõi và giám sát các vi mạch, linh kiện điện tử và bảng mạch khi chúng di chuyển qua chuỗi cung ứng.
Có thể thấy các nỗ lực rất lớn cả từ chính phủ đến ngành công nghiệp điện tử và đến giới học thuật đang nhằm tạo nền tảng phần cứng an toàn và tin cậy.
Một số ví dụ về tấn công phần cứng
Năm 2007, vụ việc đài radar quân sự của Syrian không cảnh báo được các cuộc không kích của Israel được giới nghiên cứu suy đoán là có cửa hậu cài trong các vi xử lý thương mại dùng trong điều khiển radar, gây hỏng chức năng và khóa tạm thời radar. Năm 2011, xảy ra tai nạn máy bay Poseidon P-8A của quân đội Mỹ, loại máy bay chuyên dùng để vận chuyển tên lửa chống tàu ngầm và chống tàu nổi. Điều tra sau đó cho thấy các FPGA điều khiển module phát hiện đóng băng trên bề mặt máy bay là thứ FPGA đã qua sử dụng, nhưng được tái chế và in mác giả do hãng Xilinx sản xuất. Phân tích thêm về chuỗi cung ứng thì thấy hóa ra chúng xuất phát từ một nhà máy ở Thâm Quyến.
Tháng 01/2014, tờ Thời báo New York tiết lộ chương trình Quantum của Cơ quan an ninh quốc gia Mỹ (NSA) cấy Trojan phần cứng vào giao thức liên lạc USB hoặc vào cổng USB, nhờ đó họ thu được nhiều dữ liệu mật từ các mạng quân sự của Nga, Trung Quốc và từ nhiều hệ thống máy tính của cảnh sát và cả của các cơ quan thương mại của EU ở khắp nơi trên thế giới.
Năm 2015, FBI thu giữ một iPhone 5C của kẻ khủng bố nhưng họ không thể truy cập vì Apple đã thiết lập chế độ nếu nhập sai mật khẩu quá một số lần thì thiết bị iPhone sẽ tự động bị khoá. Apple đã từ chối giúp FBI và cưỡng lại lệnh của tòa án với lý do là chính sách bảo vệ người dùng của họ không cho phép. Nhưng sau chưa hết một ngày, các nhà nghiên cứu đã ra tay giúp FBI tìm được mật khẩu, họ tấn công vào iPhone đó và đảo ngược thủ tục an toàn của Apple, tạo ra nhiều bản sao bộ nhớ NAND rồi bằng cách thử trên từng bản sao cho đến khi tìm được mật khẩu.
Ngược dòng lịch sử, trong thế chiến thứ II. Sau khi bắt được máy bay ném bom B-29 của Mỹ, Liên Xô đã đảo ngược và làm nhái thành máy bay ném bom Tupolev Tu-4 như Hình 3. Cấu hình của hai máy bay này giống nhau gần hết trừ động cơ và pháo.
Hình 3. Một ví dụ tấn công đảo ngược trong thế chiến II: (A) máy bay ném bom B-29 của Không lực Hoa Kỳ, và (B) máy bay ném bom Tu-4 của Liên Xô
Năm 1998, Paul Kocher công bố tấn công phân tích điện năng tiêu thụ PDA, một tấn công dạng kênh kề, cho phép tìm ra khóa của mã khối trong thời gian tính bằng giờ, mà nếu tấn công theo phương pháp vét cạn thì phải mất nhiều tỉ năm. Tấn công này đã làm đảo lộn cả ngành công nghiệp sản xuất smartcard.
Tấn công phần cứng kiểu Trojan có thể phức tạp nhưng cũng có thể ở dạng rất đơn giản. Hình 4 là ví dụ minh họa một Trojan dạng đơn giản. Nhà máy được thuê chế tạo mạch in đã cố tình thay đổi, chỉ một chút mạch của khách hàng, bằng cách tăng độ rộng đường mạch và tăng khoảng cách giữa các đường lên gấp 2 lần so với nguyên bản và uốn cong một đường mạch thêm chút ít. Những thay đổi này làm suy giảm điện áp ra, tăng trễ đường mạch, tăng điện áp ghép, dẫn đến mạch điện hoạt động sai khi môi trường thay đổi. Trojan kiểu này hầu như không thể bị phát hiện bằng kiểm thử chức năng và kiểm thử tham số và sự khác biệt đường mạch so với bản gốc quá nhỏ nên cũng hầu như bị bỏ qua khi kiểm định bằng thị giác. Đây mới chỉ là ví dụ mạch in 2 lớp, còn với mạch in phức tạp nhiều lớp thì việc phát hiện những sửa đổi tinh vi kiểu này là hầu như không thể.
Hình 4. So sánh mạch in nguyên bản và mạch in đã bị điều chỉnh
Phân biệt an toàn và tin cậy phần cứng
An toàn phần cứng liên quan đến mức độ kháng được của phần cứng trước các tấn công, cũng như khả năng hỗ trợ của phần cứng cho an toàn phần mềm và an toàn cả hệ thống. Còn tin cậy phần cứng lại liên quan đến các thực thể không tin cậy dính líu trong cả vòng đời của phần cứng. Phần cứng kém tin cậy dẫn đến sai lệch chức năng, giảm hiệu năng và độ ổn định làm ảnh hưởng đến an toàn phần cứng. Ví dụ, một nhà máy không tin cậy được thuê gia công vi mạch hay mạch in PCB có thể bí mật cấy thêm Trojan vào thiết kế gốc, dẫn đến rò rỉ thông tin khi thiết bị làm việc thực tế và tạo điều kiện thuận lợi cho kẻ địch tấn công side-channel làm mất an toàn phần cứng.
Những thực thể trong vòng đời IC có liên quan đến sự tin cậy
Hình 5. Các giai đoạn thiết kế phần cứng và sự không tin cậy ở mỗi giai đoạn
Hình 5 mô tả sơ lược các giai đoạn chính trong vòng đời của IC, vòng đời PCB và phần cứng điện tử khác cũng tương tự. Đầu tiên, người thiết kế cần xác định các yêu cầu chức năng của vi mạch và xác định các tham số cần có. Tiếp đến là giai đoạn thiết kế, ở đó các mô tả chức năng được chuyển thành các cổng logic, rồi thành mức transistor và chuyển thành bố trí vật lý layout. Trong cả quá trình này, thiết kế đó sẽ được đánh giá xem có đúng theo các tham số đã xác định không. Giai đoạn tiếp, layout được chuyển đến bộ phận sản xuất. Tại đây, nhiều quá trình công nghệ như che mặt nạ, quang khắc, ăn mòn được áp dụng để biến layout thành thực thể vật lý gọi là die. Trên một tấm silicon gọi là wafer có nhiều die. Các die được kiểm thử trước khi được cắt ra thành các mảnh riêng rẽ rồi chuyển qua bộ phận lắp vào vỏ, tạo thành vi mạch. Các vi mạch tiếp tục được kiểm thử để đảm bảo tính đúng đắn về chức năng và tham số đã định. Với những vi mạch phức tạp thì phải tích hợp vào chúng các cấu trúc chuyên dụng cho kiểm thử và gỡ lỗi, gọi là các cấu trúc DFT và DFD. Các cấu trúc này rất hữu ích, cho phép bộ phận kiểm thử quan sát và điều khiển nhiều node trong vi mạch, phục vụ nhiệm vụ kiểm thử và gỡ lỗi. Tuy nhiên, đây lại cũng là điểm yếu an toàn vì thông qua cửa ngõ này, người tấn công có thể xâm nhập vào trong vi mạch. Những vi mạch nào đã vượt qua các bài kiểm tra chất lượng sẽ được đưa vào chuỗi cung ứng để phân phối đến người dùng. Người dùng có thể là các nhà máy sản xuất thiết bị gốc OEM, họ mua chip rồi tích hợp vào bảng mạch, nạp firmware (trong trường hợp chip là vi-xử-lý/vi-điều-khiển) hay bitstream (trong trường hợp FPGA) và lắp ráp thành hệ thống hoàn chỉnh trước khi đến người dùng cuối.
Trên Hình 5, các giai đoạn có kèm hình ảnh hai hacker là giai đoạn không tin cậy, có sự mất an toàn cho phần cứng, những giai đoạn kèm một hình hacker thì có thể không tin cậy. Vậy các giai đoạn không tin cậy gây ra vấn đề gì cho an toàn phần cứng? Đã không tin cậy thì phải giả thiết là có kẻ tấn công ở đó, họ nắm được thiết kế nên có thể phát động các tấn công lên thiết kế đó. Hình 6 mô tả các giai đoạn không tin cậy và các hướng tấn công chính có thể trong từng giai đoạn.
Những khả năng bị tổn thương của phần cứng và đối phó tấn công
Khả năng bị tổn thương phần cứng xuất phát từ các điểm yếu của hệ thống. Điểm yếu có thể nằm trong cấu trúc, trong hạ tầng kiểm thử/gỡ lỗi của phần cứng, các vấn đề side-channel trong hoạt động hay các vấn đề điều khiển truy cập và điều khiển luồng thông tin.
Hình 6. Các giai đoạn không tin cậy gây ra sự mất an toàn phần cứng
Nếu người tấn công cần tìm những điểm yếu để khai thác thì người thiết kế phải hình dung ra các hướng tấn công để thiết kế các giải pháp đối phó tương ứng. Các giải pháp này cần được: (1) hợp nhất ngay ở giai đoạn thiết kế và kiểm thử gọi là thiết kế an toàn và (2) phải được đánh giá khả năng kháng lại được các tấn công đã biết gọi là phê duyệt an toàn. Hình 7 mô tả các giai đoạn thiết kế an toàn và phê duyệt an toàn trước khi đưa sản phẩm vào sản xuất.
Hình 7. Hoạt động thiết kế an toàn và phê duyệt an toàn
Kết luận
Phần cứng là gốc, nền tảng cho mọi hoạt động xử lý thông tin. Bởi vậy, an toàn phần cứng sẽ ảnh hưởng đến an toàn cả hệ thống. Quan điểm đã là phần cứng thì an toàn và không thể bị nhiễm virus hay mã độc đã bị thay đổi theo những nghiên cứu và báo cáo về tấn công lên phần cứng trong khoảng ba thập niên gần đây. Thêm nữa, ở những thiết bị và hệ thống càng phức tạp, càng thông minh thì phần cứng và phần mềm lại càng hợp nhất chặt chẽ và ở một mức độ nào đó, người ta có thể tấn công phần cứng thông qua phần mềm hoặc ngược lại, điều này làm vấn đề an toàn phần cứng vốn đã phức tạp lại càng phức tạp.
Như một triết lý phổ biến, muốn giải quyết triệt để vấn đề thì phải làm từ gốc. Muốn an toàn tổng thể thì phần cứng phải là mỏ neo an toàn cho mọi thứ. Tuy nhiên, an toàn phần cứng lại liên quan đến những khả năng bị tổn thương của thiết kế và độ tin cậy của rất nhiều thành phần liên quan mà một bài báo không thể diễn dải hết. Bài báo này chỉ khái lược những vấn đề cơ bản nhất, từng nội dung liên quan sẽ được đề cập cụ thể hơn ở những bài tiếp theo.
PGS TS Nguyễn Hồng Quang