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

**Tấn công kênh bên** hay còn gọi là **Tấn công kênh kề** là loại tấn công dễ thực hiện trong các loại tấn công mạnh chống lại quá trình triển khai mã hóa, và mục tiêu của loại tấn công này là phân tích các nguyên tố, các giao thức, modul, và các thiết bị trong mỗi hệ thống. Các cuộc tấn công này gây ra mối đe dọa nghiêm trọng  tới các modul mật mã. Việc triển khai thực hiện mã hóa được đánh giá thông qua khả năng chống lại các cuộc tấn công và khả năng kết hợp các biện pháp khác nhau. Bài báo này khảo sát các phương pháp và các kỹ thuật được sử dụng trong tấn công kênh kề (Side-channel attack), những ảnh hưởng tiêu cực của loại tấn công này, các biện pháp chống lại những cuộc tấn công này và đánh giá tính khả thi và khả năng ứng dụng của chúng. Cuối cùng, sự cần thiết và tính khả thi trong việc áp dụng vào kiểm tra an ninh vật lý và đánh giá sự phát triển của tiêu chuẩn FIPS 140-3 đã được nghiên cứu.

## 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.

## Phân loại tấn công kênh kề
Tấn công kênh kề thường được phân loại thành ba loại như sau:

# Phân loại dựa vào sự kiểm soát trong quá trình tính toán.
# Phân loại dựa trên cách truy cập vào module.
# Phân loại dựa vào phương pháp được sử dụng trong quá trình phân tích.

### 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

## Tham khảo

## Đọc thêm
* 
* http://www.cryptography.com/public/pdf/DPA.pdf, Differential Power Analysis, P. Kocher, J. Jaffe, B. Jun, appeared in CRYPTO'99.
* http://www.cryptography.com/public/pdf/TimingAttacks.pdf, Timing Attacks on Implementations of Diffie-Hellman, RSA, DSS, and Other Systems, P. Kocher.