Tấn công kênh bên

Giới thiệu

Bảo mật từ lâu đã là một mối quan tâm lớn trong hệ thống máy tính và truyền thông, và đã có nhiều nghiên cứu quan trọng trong lĩnh vực này. Các thuật toán mã hóa, bao gồm cả mã hóa đối xứng, mật mã khóa công khai, và các hàm băm, tạo thành một tập các yếu tố được sử dụng để xây dựng cơ chế bảo mật đối với các đối tượng cụ thể. Ví dụ như các giao thức bảo mật mạng, như SSH và TLS, kết hợp với những yếu tố này để cung cấp chứng thực giữa các đơn vị truyền thông, và đảm bảo được tính bí mật, tính toàn vẹn khi truyền dữ liệu. Trong thực tế, các cơ chế bảo mật chỉ xác định những chức năng nào được thực hiện chứ không nêu các chức năng này được thực hiện như thế nào. Ví dụ, đặc điểm kỹ thuật của một giao thức bảo mật thường độc lập cho dù thuật toán mã hóa được thực hiện trong phần mềm đang chạy trên 1 bộ xử lý hay đangsử dụng các đơn vị phần cứng tùy chỉnh, và bộ nhớ được sử dụng để lưu trữ dữ liệu trung gian của các phép tính trên cùng chip giống như đơn vị tính toán hoặc trên một  chip riêng biệt. 
Tuy nhiên, trong thực tế, chỉ có các cơ chế bảo mật này thì chưa thể hoàn thành được các giải pháp bảo mật. Điều đó không thực tế khi giả thiết rằng người tấn công sẽ phải trực tiếp thực hiện các tính toán phức tạp khi cố gắng phá vỡ các nguyên tố mã hóa (cryptographic primitives) được nhúng trong các cơ chế bảo mật. Một sự tương đồng thú vị mà ta có thể thấy đó là giữa các thuật toán mã hóa mạnh với một khóa bảo mật cao trên cửa trước của một ngôi nhà. Kẻ trộm cố gắng đột nhập vào một ngôi nhà sẽ không cố gắng để thử tất cả các trường hợp cần thiết để chọn lấy một khóa, chúng có thể phá cửa sổ, phá cửa bản lề hoặc cướp chìa khóa của chủ nhà khi họ đang cố gắng vào nhà. Tương tự, hầu hết tất cả các cuộc tấn công bảo mật vào các hệ thống mật mã thường nhằm vào các điểm yếu trong quá trình thực hiện, triển khai các cơ chế và các thuật toán bảo mật của cơ chế. Những điểm yếu này cho phép người tấn công hoàn thành bằng cách vượt qua, hoặc làm suy yếu đáng kể sức mạnh lý thuyết của các giải pháp bảo mật.
Đối với một hệ thống mật mã, để duy trì an toàn bắt buộc phải có khóa bí mật, khóa bí mật được sử dụng để thực hiện các dịch vụ yêu cầu bảo mật, không được tiết lộ. Từ các thuật toán mã hóa, chúng được nghiên cứu trong một thời gian dài bởi rất nhiều chuyên gia, hacker thường có xu hướng tấn công vào phần cứng và hệ thống có chứa các đơn vị bảo mật. Một dạng tấn công mới được phát triển trong vài năm qua bởi Kocher. Các cuộc tấn này dựa vào mối tương quan giữa các số đo vật lý được thực hiện giữa các điểm khác nhau trong suốt quá trình tính toán và trạng thái bên trong (internal) của thiết bị xử lý, mà có liên quan tới khóa bí mật.
Trên thực tế, các thuật toán mã hóa luôn được thực hiện trong phần mềm hoặc phần cứng của các thiết bị vật lý có tiếp xúc và bị ảnh hưởng bởi chúng. Những tương tác vật lý này có thể bị tác động và bị giám sát bởi các đối thủ, như Eve, và có thể có các thông tin có ích trong giải mã. Loại thông tin này được gọi là thông tin kênh kề (side-channel information), và các cuộc tấn công khai thác thông tin kênh kề được gọi là tấn công kênh kề (side-channel attacks). Ý tưởng cơ bản của các cuộc tấn công SCA cho thấy cách mà các thuật toán mã hóa được thực hiện.
Các thông tin chính thức có liên quan tới ngày tấn công SCA xuất hiện vào năm 1965. P.Wright (một nhà khoa học với GCHQ tại thời điểm đó) đã báo cáo rằng trong MI5, Cơ quan tình báo Anh (the British intelligence agency) đã cố gắng phá mật mã (cipher) được sử dụng bởi Đại sứ quan Ai Cập (the Egyptian Embassy) tại London, nhưng những cố gắng của họ đã bị cản trở bởi những giới hạn trong khả năng tính toán của họ. Wright đã đề nghị đặt một microphone gần cánh quạt (rotor) của thiết bị mật mã để do thám âm thanh phát ra từ thiết bị. Bằng cách lắng nghe các âm thanh của cánh quạt mà các chuyên viên mật mã thiết lập mỗi sáng, MI5 đã suy luận thành công vị trí cốt lõi của 2 hoặc 3 cánh quạt của máy. Thông tin thu được giúp cho việc tính toán để phá vỡ mật mã trở nên đơn giản hơn, và MI5 đã có thể do thám thông tin của đại sứ quán trong nhiều năm.
Các nguyên tắc chính của các cuộc tấn công SCA rất dễ nắm bắt. Các cuộc tấn công SCA làm việc dựa trên mối tương quan giữa các yếu tố vật lý trong suốt quá trình tính toán (ví dụ: tiêu thụ điện năng, thời gian tính toán, bức xạ EMF…) và trạng thái bên trong  của thiết bị xử lý, có liên quan tới khóa bí mật. Đó là mối tương quan giữa các thông tin kênh kề và các hoạt động có liên quan tới khóa bí mật mà các tấn công SCA đang cố gắng tìm.
Các cuộc tấn công SCA đã chứng minh rằng chúng hiệu quả hơn so với các cuộc tấn công dựa trên các phân tích toán học thông thường và gắn với thực tế hơn. Trong lĩnh vực thiết kế giao thức hoặc xây dựng phần mềm, hoặc xây dựng phần mềm, có thể áp dụng các kỹ thuật để chống tấn công.
Một trong những thuật ngữ phổ biến nhất của hệ thống an ninh ngày nay là Trusted Platform Module (TPM). TPM thường có dạng là một modul mã hóa an toàn và là cốt lõi của nền tảng tính toán tin cậy. Khóa là một thành phần quan trọng của module mã hóa, nó phải được giữ và sử dụng một cách bí mật, tránh khỏi những nỗ lực muốn truy cập bất hợp pháp của kẻ tấn công.
Các thiết bị đơn chip, đặc biệt là thẻ thông minh (smart card) luôn bị kẻ xấu tấn công, do sự phổ biến rộng rãi của thẻ thông minh trong các ứng dụng thương mại điện tử

Các mô hình tấn công kênh kề

Mật mã có thể được xét theo hai quan điểm: quan điểm thứ nhất, nó có thể được xem như một đối tượng toán học trừu tượng (có thể chuyển đổi, tham số hóa bằng khóa (key), chuyển một số đầu vào thành đầu ra); quan điểm thứ hai, có thể triển khai tốt trong một chương trình chạy trên một bộ xử lý nhất định, trong một môi trường nhất định, và có các đặc trưng riêng. Quan điểm thứ nhất là mật mã cơ bản (classical cryptanalysis), quan điểm thứ hai là mật mã kênh kề (Side-channel cryptanalysis). Mật mã kênh kề có ưu điểm là dựa vào những đặc điểm cài đặt nổi bật để khám phá ra các tham số bí mật ẩn chứa trong phép tính
Trong giải mã truyền thống, khi đánh giá mức độ an toàn của giao thức mã hóa, người ta thường giả định rằng kẻ tấn công có được mô tả đầy đủ của giao thức, và khóa công khai, chỉ chưa biết khóa bí mật. Ngoài ra, kẻ tấn công có thể chặn một số dữ liệu được trao đổi giữa những người truy cập hợp pháp, và có thể có một số quyền kiểm soát dữ liệu (ví dụ như có thể lựa chọn đoạn thông báo để tấn công trong toàn bộ sơ đồ ký, hoặc có thể lựa chọn bản mã trong quá trình tấn công bản mã với một sơ đồ khóa công khai). Sau đó kẻ tấn công cố gắng phá vỡ các giao thức bằng cách khai thác các lỗ hổng khi thiết kế giao thức.
Lúc đó, ta sử dụng toán học trừu tượng để phân tích, nghiên cứu mật mã. Các thuật toán mã hóa thường được đánh giá độ an toàn bằng cách xem chúng như một hàm toán học được sử dụng trong các trường hợp tương tự như mô tả trong hình 1.
Các thuật toán mã hóa cung cấp khả năng bảo mật, an toàn chống lại kẻ tấn công, là kẻ có hộp đen (black-box) truy cập tới các thông tin mật của hai bên truy cập hợp pháp. Tuy nhiên, khả năng bảo mật của thuật toán hoàn toàn có thể chống lại các cuộc tấn công, cố gắng tìm ra khóa bí mật. 
Các cuộc tấn công được xem xét trong mô hình bảo mật truyền thống này khai thác các thông số toán học của giao thức. trong những năm gần đây, các nhà nghiên cứu ngày càng nhận ra sức ảnh hưởng của các cuộc tấn công bằng cách khai thác các thuộc tính cụ thể của quá trình triển khai và môi trường hoạt động.
Các cuộc tấn công SCA sử dụng thông tin bị rò rỉ thu được trong quá trình thực hiện giao thức và không được xem xét trong mô hình này. Ví dụ, kẻ tấn công có thể giám sát năng lượng tiêu thụ hoặc bức xạ điện từ phát ra từ một thẻ thông minh trong khi nó thực hiện các hoạt động bí mật như giải mã và tạo chữ ký. Kẻ tấn công cũng có thể đo thời gian cần để thực hiện quá trình mã hóa, hoặc phân tích một thiết bị mật mã khi xuất hiện lỗi. Thông tin kênh kề có thể dễ dàng được thu thập trong thực tế, và là điều thiết yếu để xác định được mối đe dọa từ các cuộc tấn công SCA khi đánh giá độ an toàn tổng thể của một hệ thống, minh họa tại hình 2:
Side Channels (Kênh kề) được định nghĩa là các kênh đầu ra không mong muốn từ một hệ thống. Paul Kocher đã xuất bản bài báo "Tấn công thời gian trong triển khai Diffie-Hellman, RSA, DSS, và các hệ thống khác" năm 1996 cho thấy thời gian hoạt động không liên tục trong quá trình mã hóa có thể làm rò rỉ thông tin khóa.

Kiểm soát quá trình tính toán

Tùy thuộc vào khả năng kiểm soát quá trình tính toán của tấn công, các cuộc tấn công SCA có thể được phân thành hai loại chính: tấn công thụ động (passive attacks) và tấn công chủ động (active attacks).  Các cuộc tấn công thụ động không làm ảnh hưởng tới hoạt động của hệ thống đích, kẻ tấn công thu được một số thông tin từ các hoạt động của hệ thống đích, nhưng hệ thống đích vẫn hoạt động chính xác như không có cuộc tấn công xảy ra. Trong khi đó, tấn công chủ động, kẻ tấn công có thể gây ra một số ảnh hưởng tới hệ thống đích. Khi hệ thống bị tấn công chưa chắc đã phát hiện ra sự khác biệt, thì quan sát từ bên ngoài có thể nhận thấy sự khác biệt trong hoạt động của hệ thống.

Các cách truy cập vào module

Khi phân tích khả năng bảo mật của một modul phần cứng mã hóa, Anderson và các cộng sự đã phân loại các cuộc tấn công thành các loại sau đây: các cuộc tấn công xâm lấn (invasive attacks), các cuộc tấn công bán xâm lấn (semi- invasive attacks) và các cuộc tấn công không xâm lấn (non-non-invasive attacks).

Tấn công xâm lấn

Tấn công xâm lấn truy cập trực tiếp đến các thành phần bên trong của module hoặc các thiết bị mã hóa. Phá vỡ tính năng cảnh báo, cơ chế phản ứng khi phát hiện xâm lấn thường được thực hiện trong phần cứng để các cuộc tấn công xâm lấn có hiệu quả.

Tấn công bán xâm lấn

Loại tấn công này liên quan đến việc truy cập vào thiết bị, nhưng không làm ảnh hưởng đến lớp thụ động hóa hoặc sinh ra các mối quan hệ điện tử khác với các quy định cho phép.

Tấn công không xâm lấn

Tấn công không xâm lấn là sự quan sát kĩ lưỡng các thao tác hoạt động của thiết bị. Loại tấn công này chỉ khai thác các thông tin có sẵn từ bên ngoài do bị rò rỉ. Một ví dụ điển hình là tấn công phân tích thời gian.
Một đặc điểm quan trọng của loại tấn công này là không thể bị phát hiện. Mặt khác, so với vác cuộc tấn công xâm lấn có yêu cầu xử lý cá nhân cho mỗi thiết bị tấn công nên chi phí lớn, tấn công không xâm lấn thường có chi phí thấp để triển khai trên quy mô lớn.

Phương pháp xử lý phân tích

Tùy vào phương pháp được sử dụng trong quá trình phân tích mẫu dữ liệu mà tấn công kênh kề SCA có thể được chia thành tấn công kênh kề đơn giản (simple side channel attack - SSCA) hoặc tấn công kênh kề vi sai (differential side channel attack DSCA).
Trong SSCA, việc khai thác đầu ra kênh kề chủ yếu phụ thuộc và các hoạt động được thực hiện. Thông thường, một trace duy nhất được sử dụng trong phân tích SSCA và do đó khóa bí mật có thể được đọc trực tiếp từ các trace kênh kề. SSCA khai thác mối quan hệ giữa quá trình thực hiện và đầu ra kênh kề.
SSCA không khả thi do có quá nhiều tiếng ồn trong các phép đo, DSCA sử dụng phương pháp thống kê, khai thác mối tương quan giữa dữ liệu được xử lý với đầu ra kênh kề. Phương pháp thống kê được sử dụng để suy luận ra khóa bí mật. Tấn công DSCA mạnh hơn SSCA.
Tấn công kênh kề vi sai khai thác mối tương quan giữa dữ liệu và các thông tin rò rỉ của thiết bị mã hóa. Mối tương quan này thường rất nhỏ, phải sử dụng phương pháp thống kê để khai thác một cách hiệu quả. Trong DSCA, người tấn công sử dụng mô hình giả định thiết bị tấn công, chất lượng của mô hình này phụ thuộc vào khả năng của người tấn công. Mô hình giả định được sử dụng để dự đoán đầu ra kênh kề của thiết bị.

Các phương pháp tấn công kênh kề

Phần này sẽ xem xét các phương pháp và kỹ thuật được sử dụng trong tấn công SCA, ảnh hưởng của các cuộc tấn công này, các biện pháp đối phó được đề xuất để chống lại các cuộc tấn công và đánh giá tính khả thi và ứng dụng của chúng.
Các cuộc tấn công SCA chống lại các module mã hóa bằng cách khai thác thông tin đặc trưng thu được từ quá trình thực hiện các giao thức và các hàm mã hóa. Thông tin đặc trưng có thể thu được như thời gian, điện năng tiêu thụ hoặc bức xạ điện từ. Các thông tin kênh kề có thể là kết quả của phần mềm hoặc phần cứng lỗi.

Tấn công thời gian

Quá trình triển khai các thuật toán mã hóa thường thực hiện tính toán trong khoảng thời gian không đổi, để tối ưu hóa hiệu suất. Nếu hoạt động đó liên quan đến các thông số bí mật, từ các biến thời gian có thể rò rỉ một số thông tin và cung cấp thông tin về quá trình triển khai, một phân tích thống kê cụ thể có thể thu được các thông số bí mật.
Về cơ bản, tấn công thời gian là một hình thức lấy thông tin cá nhân của người dùng bằng cách đo thời gian khi người đó thực hiện mã hóa. Nguyên tắc của tấn công này rất đơn giản: phải khai thác đúng thời điểm đang thực hiện.

Tấn công dựa vào lỗi

Hầu hết các thiết bị thực hiện các quá trình mã hóa khác nhau thường đáng tin cậy hơn. Lỗi phần cứng và các lỗi xảy ra trong quá trình triển khai của modul mã hóa trên thực tế đã chứng minh những ảnh hưởng nghiêm trọng của nó đến bảo mật. Những hành vi hoặc đầu ra bị lỗi có thể trở thành các kênh kề quan trọng, đôi khi sẽ là nguyên nhân làm tăng các lỗ hổng bảo mật trong mã hóa.
Có hai loại tấn công kênh kề dựa vào lỗi. Loại thứ nhất là các kênh sinh ra từ các lỗi tính toán trong quá trình tính toán mã hóa trong một modul bị tấn công. Những lỗi này có thể là ngẫu nhiên hay cố ý, gây ra.
Loại thứ hai của tấn công kênh kề dựa trên lỗi, bằng cách  cố ý gửi các dữ liệu đầu vào bị lỗi đến modul bị tấn công. Modul sẽ gửi một thông báo lỗi đến người sử dụng, quá trình tính toán sẽ bị ngừng lại.
Tóm lại, các cuộc tấn công dựa vào lỗi thực hiện qua hai bước: chèn lỗi (fault injection) và khai thác lỗi. Hai bước này được minh họa trong Hình 4.
Bước đầu tiên bao gồm chèn một lỗi tại một thời điểm thích hợp trong quá trình xử lý. Việc chèn lỗi phụ thuộc vào phần cứng thiết bị. Lỗi có thể được phát sinh trong thẻ thông minh bằng các tác động vào môi trường của nó và đặt nó trong điều kiện bình thường. Một số lỗi là bất thường và điện áp cao hoặc thấp bất thường, đồng hồ, nhiệt độ, bức xạ, ánh sáng.
Bước thứ hai bao gồm khai thác các kết quả sai hoặc các hành vi bất thường. Việc khai thác lỗi phụ thuộc vào quá trình triển khai và thiết kế phần mềm. Trong trường hợp là một thuật toán thì nó sẽ phụ thuộc vào đặc điểm kỹ thuật của thuật toán đó.
Tùy thuộc vào loại phân tích được áp dụng, việc chèn lỗi phải được thực hiện ngay lập tức hoặc trong một khoảng thời gian nhất định.

Tấn công phân tích năng lượng

Ngoài thời gian hoạt động và lỗi, năng lượng tiêu thụ của một thiết bị mật mã có thể cung cấp nhiều thông tin về các hoạt động và các thông số của hệ thống. Tấn công phân tích năng lượng chỉ có thể áp dụng vào triển khai phần cứng của hệ thống mật mã. Loại tấn công này thực sự hiệu quả và đã được chứng minh khi tấn công thành công thẻ thông minh hoặc các hệ thống chuyên dụng lưu trữ khóa bí mật.
Về cơ bản, tấn công phân tích năng lượng có thể chia thành Tấn công phân tích năng lượng đơn giản (Simple Power Analysis SPA) và Tấn công phân tích năng lượng vi sai (Differential Power Analysis DPA). Trong tấn công SPA, dựa vào các dấu vết về năng lượng tiêu thụ để đoán thời gian thực thi dữ liệu, giá trị của đầu vào, đầu ra. Tấn công DPA sử dụng phương pháp thống kê trong quá trình xử lý.

Tấn công phân tích điện từ

Như các thiết bị điện, các thành phần của 1 máy tính thường tạo ra các bức xạ điện từ, kẻ tấn công sẽ quan sát những bức xạ điện từ phát ra và có thể hiểu được mối quan hệ giữa quá trình tính toán và dữ liệu, từ đó có thể suy ra thông tin về tính toán và dữ liệu.
Tấn công phân tích điện từ (ElectroMagnetic Analysis EMA) được phân thành hai loại chính: Phân tích điện từ đơn giản (Simple ElectroMagnetic Analysis SEMA) và Phân tích điện từ vi sai (Differential ElectroMagnetic Analysis DEMA).
Có 2 phương pháp chống lại các cuộc tấn công phân tích điện từ (EM attack): giảm cường độ tín hiệu và giảm thông tin tín hiệu. Kỹ thuật giảm cường độ tín hiệu bao gồm thiết kế lại mạch để giảm những phát sinh ngoài ý muốn và  thiết lập vùng bảo mật để giảm