Tải bản đầy đủ (.docx) (52 trang)

nghiên cứu ứng dụng các phương pháp mã hóa bảo mật cho giao thức modbus tcp

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.08 MB, 52 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

<small>1.1.1 Cấu trúc cơ bản một hệ thống SCADA...4</small>

<small>1.1.2 Các vòng lặp điều khiển phản hồi trong hệ thống SCADA...5</small>

<small>1.2 Giao thức Modbus...7</small>

<small>1.2.1 Cơ chế giao tiếp...7</small>

<small>1.2.2 Cấu trúc một thông điệp Modbus...8</small>

<small>1.3 Modbus TCP/IP...9</small>

<small>1.4 Ứng dụng Modbus trong mạng công nghiệp...10</small>

<small>1.5 Các lỗ hổng trong giao thức Modbus...10</small>

<small>1.6 Một số giải pháp khắc phục...11</small>

<small>Chương 2...13</small>

<small>Tiêu chuẩn mã hóa tiên tiến AES và mã hóa RSA...13</small>

<small>2.1 Tiêu chuẩn mã hóa tiên tiến AES...13</small>

<small>2.2 Mã hóa khóa cơng khai RSA...16</small>

<small>Ứng dụng mã hóa AES và RSA khắc phục các lỗ hỏng bảo mật...29</small>

<small>cho giao thức Modbus - TCP...29</small>

<small>4.1 Ứng dụng mã hóa AES bảo mật cho giao thức Modbus TCP...29</small>

<small>4.2 Cài đặt và thử nghiệm giao thức bảo mật Modbus TCP trên cơ sở mã AES...32</small>

<small>4.2.1 Chương trình trên máy tính...32</small>

<small>4.2.2 Chương trình trên Board Tiny 6410...34</small>

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

<small>4.2.3 Một số kết quả thử nghiệm...35</small>

<small>4.2.4 Nhận xét...36</small>

<small>4.3 Tạo chữ ký số xác thực cho giao thức Modbus TCP trên cơ sở mã RSA...37</small>

<small>4.4. Cài đặt và thử nghiệm giao thức Modbus TCP có chứ ký số...40</small>

<small>4.4.1 Mơ hình thử nghiệm...40</small>

<small>4.4.2 Chương trình giám sát trên máy tính PC1...41</small>

<small>4.4.3 Chương trình trên Board Mini2440...42</small>

<small>4.4.4 Kết quả thử nghiệm...43</small>

<small>4.4.5 Nhận xét...44</small>

<small>Kết Luận...45</small>

<small>Tài liệu tham khảo...46</small>

<small>THÔNG TIN CHUNG VỀ ĐỀ TÀI...4753</small>

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

<b>Mở đầu</b>

Hệ thống điều khiển giám sát và thu thập dữ liệu (SCADA) được sử dụngrộng rãi trong các hệ thống cơng nghiệp tự động hóa, trong các cơ sở hạ tầng rấtquan trọng như các nhà máy hóa chất, trạm phát điện, mạng lưới truyền tải và phânphối điện, mạng lưới phân phối nước và xử lý chất thải, hệ thống thủy lợi, các lòphản ứng tổng hợp hạt nhân… Các hệ thống SCADA như vậy có ý nghĩa chiếnlược bất kỳ một lỗi hoặc trục trặc gây ra thì hậu quả thiệt hại là rất lớn. Một hệthống SCADA cho phép kết nối liên thông giữa nhiều mạng thông qua nhiều loạigiao thức, bao gồm cả giao thức Internet. Phạm vi kết nối rộng này làm cho hệthống SCADA có thêm nhiều lỗ hổng, cùng với những lỗ hổng sẵn có của hệ thốngSCADA làm chúng rất dễ bị tấn cơng bởi những kể có ý đồ xấu.

Trong thiết kế truyền thống các hệ thống SCADA mối quan tâm chính làhiệu suất, hiệu quả của của hệ thống. An ninh trong các hệ thống SCADA ít đượcquan tâm cho đến khi xuất hiện nhiều sự cố an ninh. Cụ thể tháng 3/2000, các trạmbơm trong nhà máy dịch vụ nước Maroochy ở Úc không hoạt động được, các nhânviên phát hiện ra một người nào đó đã tấn công vào hệ thống, gây ra sự cố này. Vàotháng 8/2003, một sâu máy tính đã vượt qua tường lửa và xâm nhập vào hệ thốngđiều khiển SCADA tại các nhà máy điện hạt nhân DavisBesse ở Ohio. Xu hướngnày lên đến đỉnh điểm với Stuxnet, một phần mềm độc hại tấn công vào hệ thốngSCADA phát hiện vào tháng 7/2010. Stuxnet là một phần mềm độc hại tấn cơngtinh vi vào các loại PLC, kiểm sốt chúng gây ra những bất thường trong hệ thống.

Hệ thống SCADA ban đầu được xây dựng trên giả thiết là tất cả các thànhphần hoạt động trong mạng là hợp pháp. Các hệ thống như vậy hầu như khơng cócác biện pháp bảo vệ chống lại các cuộc tấn cơng có chủ ý. Các thành phần trongmạng khơng có xác thực danh tính, xác thực truy nhập, cũng khơng thể xác minhđược nội dung của thơng điệp có hợp lệ hay khơng và tất cả các dữ liệu đượctruyền qua mạng đều là bản rõ, khơng có bất kỳ mã hóa nào. Giao thức Modbus,Modbus TCP cũng nằm trong số đó, hơn nữa theo xu hướng cơng nghệ hiện nay thìModbus TCP đang được sử dụng rộng rãi trong các hệ thống SCADA. Từ những lýdo đó chúng tơi nghiên cứu ứng dụng các phương pháp mã hóa bảo mật cho giaothức Modbus TCP, nhằm ngăn chặn các cuộc tấn công của những kể có ý đồ xấuvào hệ thống mạng SCADA.

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

<i>Hình 1.1 Một hệ thống SCADA đơn giản</i>

Hệ thống điều khiển giám sát và thu thập dữ liệu (SCADA) là hệ thống thờigian thực thường gồm có các máy tính giám sát và các thiết bị chuyên dụng trongcông nghiệp cùng phối hợp hoạt động để theo dõi, giám sát và điều khiển các quátrình vật lý từ xa liên quan đến việc quản lý các máy móc, thiết bị và cơ sở vật chấthình 1.1 là một hệ thống SCADA cơ bản.

<b>1.1.1 Cấu trúc cơ bản một hệ thống SCADA </b>

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

Cấu trúc cơ bản một hệ thống SCADA thường gồm 4 thành phần [5].

 Thành phần đầu tiên bao gồm cảm biến (sensor) và cơ cấu chấp hành(actuator). Các cảm biến thu thập dữ liệu cho hệ thống như cảm biến áp suất, đồnghồ đo mức nước, các cảm biến nhiệt độ... Cơ cấu chấp hành (như máy bơm, độngcơ, van từ...) thực hiện các truyền động của hệ thống.

 Thành phần thứ hai là các bộ điều khiển logic khả trình (PLC) hay còn gọi làthiết bị đầu cuối từ xa (Remote Terminal Unit - RTU). Các RTU thực hiện một sốchức năng điều khiển hạn chế hoặc trực tiếp đo dữ liệu từ cảm biến cho hệ thống.

 Thành thứ ba là bộ điều khiển giám sát. Bộ điều khiển giám sát thường đượcxử lý bởi các thiết bị trạm chủ (Master Terminal Units - MTU). MTU là thiết bịgiao tiếp với các RTU, trái ngược với các RTU một MTU thực hiện các chức năngđiều khiển chiến lược lớn hơn cấp hệ thống. Ví dụ, trong một hệ thống SCADAđiều khiển giám sát nhiệt độ lị nung; RTU có thể được cài đặt các luật điều khiểnon/off hay PID, để điều khiển ổn định nhiệt độ trong lò nung. MTU có thể gửi lệnhchọn một trong hai luật điều khiển này cho RTU, hay gửi các lệnh đặt nhiệt độ ởcác thời điểm khác nhau để thực hiện sơ đồ cơng nghệ của q trình gia nhiệt tronglị nung, hay gửi các lệnh đọc nhiệt độ từ RTU đo được. Có nhiều giao thức chophép giao tiếp giữa hai thiết bị này như Modbus, Profibus, Fieldbus, DistributedNetwork Protocol Version 3 (DNP3)...

 Thành phần thứ tư là giao diện người máy (Human Machine Interface HMI), được dùng để giao tiếp với các nhà điều hành. HMI hiển thị các dữ liệu cảmbiến thu thập bởi các MTU hoặc hiển thị các thơng tin cảnh báo. HMI thường cóchứa một giao diện chính của hệ thống và các giao diện con điều khiển hoạt độngcủa hệ thống. HMI cũng được sử dụng để thay đổi các thông số và các trạng tháitrong hệ thống SCADA. Một hệ thống SCADA đơn giản điển hình thể hiện tronghình 1.1.

<b>-1.1.2 Các vịng lặp điều khiển phản hồi trong hệ thống SCADA [6] </b>

Hệ thống ICS nói chung và SCADA nói riêng cài đặt các vòng lặp điều khiểnphản hồi để thực giám sát và điều khiển tồn bộ hệ thống, hình 1.2 cho thấy mộtcấu hình hệ thống điều khiển cơng nghiệp điển hình với ba vịng lặp điều khiểnphản hồi.

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

<i>Hình 1.2 Các vịng lặp điều khiển phản hồi trong hệ thống điều khiển cơng nghiệp</i>

 Vịng lặp điều khiển phản hồi đầu tiên kết nối trực tiếp một bộ điều khiểnlogic khả trình (PLC/RTU) với các cảm biến và cơ cấu chấp hành để thu đo và tácđộng trực tiếp vào các q trình vật lý. Vịng lặp điều khiển phản hồi này không sửdụng các giao thức mạng. Các kết nối được thực hiện bằng cách sử dụng các đầuvào/ra số, tương tự trên PLC/RTU. Bộ điều khiển PLC/RTU thực hiện một chươngtrình để điều khiển một số chức năng con của hệ thống.

 Vòng lặp điều khiển phản hồi thứ hai kết nối các PLC/RTU với HMI hoặcMTU.

HMI/MTU thường được kết nối mạng với các PLC/RTU thông qua nhiềuchuẩn truyền vật lý khác nhau (Ethernet, Serial, không dây, v.v.) và nhiều phươngtiện vận chuyển và các giao thức lớp ứng dụng khác nhau (TCP/IP, Modbus,DNP3, Zigbee,...). HMI/MTU liên tục truy vấn các PLC/RTU cho phép đo giá trịtừ cảm biến để HMI/MTU có thể thực hiện một thuật tốn điều khiển tổng thể cấphệ thống. HMI/MTU không kết nối trực tiếp với các RTU bằng các tín hiệu màbằng các giao thức SCADA (như Modbus, DNP3, Profibus...) và các RTU luônchịu sự giám sát của MTU nên vòng điều khiển này còn gọi là vòng điều khiểnphản hồi giám sát.

 Vòng lặp điều khiển phản hồi thứ ba kết nối giữa nhà điều hành và các thiếtbị HMI/MTU. Vòng lặp điều khiển này đưa thơng tin q trình đến người điềuhành, người điều hành thực hiện điều khiển giám sát như giới hạn quá trình, trạngthái hệ thống, chọn các cơ chế điều khiển hệ thống...

<b>1.2 Giao thức Modbus</b>

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

<i>Hình 1.3 Giao thức Modbus đối chiếu với mơ hình OSI</i>

Modbus [7] được thiết kế vào năm 1979 bởi hãng Modicon (sau này thuộcSchneilder Automation). Hiện nay, Modbus là một trong những giao thức phổ biếnnhất được sử dụng trong hệ thống điều khiển công nghiệp. Theo khảo sát năm 2013bởi “American Control Engineering magazine”, 40% số hệ thống điều công nghiệpquan trọng được triển khai bằng giao thức Modbus. Thành công của Modbus bắtnguồn từ việc tương đối dễ sử dụng. Nó cũng là một tiêu chuẩn mở, được phânphối miễn phí và được hỗ trợ rộng rãi bởi các thành viên của tổ chức Modbus, vẫncòn hoạt động đến ngày nay.

Theo mơ hình OSI thì Modbus thực chất là một chuẩn giao thức và dịch vụthuộc lớp ứng dụng, có thể được thực hiện vận chuyển qua TCP/IP hay qua đườngtruyền RS232/RS485 (hình 1.3).

<b>1.2.1 Cơ chế giao tiếp</b>

Giao thức Modbus giao tiếp theo cơ chế yêu cầu/đáp ứng, trong đó chỉ cómột thiết bị chủ (Master) có thể gửi yêu cầu, còn các thiết bị tớ (Slave) đáp ứngbằng dữ liệu trả lời hoặc thực hiện một hành động nhất định theo yêu cầu (hình1.4). Kết hợp mã hàm (function code) và dữ liệu, Modbus thực hiện được một loạtcác lệnh như:

 Đọc giá trị một thanh ghi Ghi giá trị cho một thanh ghi

 Đọc giá trị một nhóm các thanh ghi liên tiếp

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

 Ghi giá trị cho một nhóm thanh ghi liên tiếp Đọc các trị đầu vào

 Ghi các giá trị đầu ra

<i>Hình 1.4 Cơ chế giao tiếp của giao thức Modbus</i>

Địa chỉ của các trạm trong mạng Modbus từ 0-247, trong đó địa chỉ 0 là địachỉ gửi quảng bá.

<b>MỘT SỐ MÃ HÀM CHỨC NĂNG CỦA MODBUS</b>

01 (0x01) Đọc trạng thái thanh ghi vào/ra số02 (0x02) Đọc trạng thái thanh ghi đầu vào số

04 (0x04) Đọc giá trị thanh ghi đầu vào

<b>1.2.2 Cấu trúc một thơng điệp Modbus</b>

Modbus có hai chế độ truyền là RTU và ASCII. Trong chế độ truyền RTU(Modbus RTU, hình 1.5) mỗi byte trong thơng điệp được truyền đi là 8 bit nhịphân, khởi đầu và kết thúc bức điện là khoảng nghỉ ít nhất 4 chu kỳ ký tự. Chế độtruyền ASCII (Modbus ASCII, hình 1.6) mỗi byte trong thơng điệp được truyền đibởi hai ký tự ASCII là hai ký tự số số hexa biểu diễn byte đó, ký tự khởi đầu là ’:’,hai ký tự kết thức là CR và LF.

Mỗi thông điệp đều được định dạng đơn giản gồm phần khởi đầu, kết thúc,địa chỉ, mã hàm, dữ liệu, mã kiểm lỗi để kiểm tra thơng điệp có bị lỗi truyền khơng.

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

<i>Hình 1.5 Cấu trúc bức điện Modbus RTU</i>

Khởi đầu Địa chỉ Mã hàm Dữ liệu Mã LRC Kết thúc

<i>Hình 1.7 Tạo một thơng điệp Modbus TCP</i>

Phần kiểm lỗi (checksum) của Modbus không được sử dụng thay vào đó sửdụng kiểm lỗi của TCP/IP để bảo toàn dữ liệu. Mã hàm và dữ liệu của Modbusđược chuyển thành phần dữ liệu của TCP, khơng có bất kỳ thay đổi nào và bổ sungthêm 7 byte ở phía trước chia thành bốn trường như sau:

 <b>Transaction Identifier (2bytes): Được sử dụng để phân biệt các thông điệp</b>

khi có nhiều thơng điệp khác nhau truyền đi từ một kết nối TCP.

 <b>Protocol Identifier (2bytes): Trường này luôn đặt bằng 0 với Modbus, các</b>

giá trị khác mở rộng cho tương lai.

 <b> Length (2 bytes): Cho biết độ dài của các trường còn lại gồm Unit ID,</b>

Function code, Data.

 <b>Unit ID (1byte): Có giá trị từ 0-255 sử dụng để nhận dạng các thiết bị trong</b>

mạng Modbus TCP có ý nghĩa như trường địa chỉ (address) trong Modbus chuẩn.

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

Dữ liệu của Modbus TCP sau khi được tạo ra như hình 7 được giao thức TCP gửi vànhận qua cổng 502 dành riêng cho Modbus.

<b>1.4 Ứng dụng Modbus trong mạng công nghiệp</b>

 Modbus thường được triển khai giao tiếp giữa PLC và HMI, hoặc giữa PLCchủ và các thiết bị tớ như PLCs, HMIs, Drivers, Sensors, I/O devices, … hỗ trợ tốiđa 247 thiết bị trong một bus (xem hình 1.8).

 Một triển khai phổ biến khác sử dụng Modbus TCP/IP là trong vùng DMZSCADA (vùng cho truy cập từ bên ngoài), hoặc trong mạng LAN giám sát có HMIchủ có khả năng quản lý tập trung một số PLC chủ, mỗi PLC chủ trong số đó có thểkết nối trên bus của nó các thiết bị khác, để thực hiện một vịng quét xem hình 8.

<i>Hình 1.8 Modbus sử dụng trong mạng công nghiệp</i>

<b>1.5 Các lỗ hổng trong giao thức Modbus</b>

Giao thức Modbus/Modbus TCP đã là chủ đề của nhiều công trình nghiênnghiên cứu về các lỗ hổng như (Mallouhi, Al-Nashif, Cox, Chadaga, & Hariri,2011 [9]; Sridhar, Manimaran, 2010 [10]; Huitsing, Chandia, Papa, & Shenoi, 2008[11]...). Các cơng trình này đều chỉ ra cả Modbus Serial và Modbus TCP đều khôngcung cấp một phương pháp để xác thực người gửi, xác thực tồn vẹn gói tin củangười gửi nên người nhận khơng xác nhận được gói tin có đúng là của người gửi,hay có bị thay đổi khi truyền đi khơng.

Do cơ chế giao tiếp và cấu trúc gói tin đơn giản nên dễ sử dụng thì cũng giúpkẻ tấn cơng dễ dàng tạo ra các cuộc tấn công hơn. Giao thức Modbus TCP cịn

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

khơng có cơ chế kiểm lỗi ở phần ứng dụng nên càng dễ dàng tạo ra tấn cơng hơnnữa.

Khơng có cơ chế ngăn chặn gửi thông điệp quảng bá lỗi, một thông điệpquảng bá từ Master thì tất cả các thiết bị Slave đều phải nhận do đó kẻ tấn cơng cóthể lợi dụng điểm yếu này để tấn công từ chối dịch vụ (DoS).

Từ những lỗ hổng đó chúng tơi chỉ ra một số dạng tấn vào vòng lặp điềukhiển giám sát (xem vịng lặp thứ hai trong hình 2) như sau:

 Tấn công lặp lại (replay attacks), từ Master hoặc Slave gửi lại gói tin cho bênnhận mà bên gửi đã gửi nó đi trước đó nhưng bên nhận khơng phát hiện ra.

 <b>Tấn công giả mạo chèn lệnh từ Master (Command Injection) hoặc chèn đáp</b>

ứng lại từ Slave (Response Injection).

 Tấn công kẻ trung gian (Man-in-the-middle attacks), thiếu sự kiểm tra tínhtồn vẹn cho phép một kẻ tấn cơng có thể truy cập vào mạng để sửa đổi gói tin hợppháp hoặc chế tạo lại các gói tin và gửi chúng đến các thiết bị Slave hoặc Master.

 Tấn công trinh sát (Reconnaissance attacks) kẻ tấn công gửi các lệnh đếnMaster hoặc Slave rồi lắng nghe phải hồi hoặc thông báo lỗi để tìm các thơng tin vềđịa chỉ, mã hàm, cấu trúc mạng hoặc thông tin cụ thể về thiết bị trong mạng...

 Tấn công từ chối dịch vụ (DoS), tấn công làm cản trở giao tiếp giữa Mastervà Slave làm cho vòng lặp điều khiển phản hồi giữa Master và các Slave rối loạnkhông thực hiện được.

<b>1.6 Một số giải pháp khắc phục</b>

An ninh, an toàn cho hệ thống SCADA ln gắn liền với an ninh, an tồn củahệ thơng mạng máy tính truyền thống vì vậy để đảm bảo an ninh cho hệ thốngSCADA cần phải kết hợp chặt chẽ các thiết bị an ninh bảo vệ vịng ngồi như sửdụng Firewall, và các gải pháp bảo vệ vòng trong sau đây là một số giải pháp nhưvậy:

1. Sử dụng thiết bị an ninh tường lửa (Firewall) để ngăn cách gữa mạnginternet và mạng LAN của công ty và Firewall khác cho vùng Air Gap ngăn chặntruy nhập trái phép xuống tầng điều khiển giám sát của hệ thống SCADA phíadưới. Ưu điểm của giải pháp này dễ triển khai khi thiết kế nhưng không khắc phụctriệt để các lỗ hổng, chỉ tạo ra bảo vệ được vịng ngồi, khơng ngăn chặn được cáctấn cơng từ bên trong hệ thống và các cuộc tấn công tinh vi vượt qua tường lửa.

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

2. Sử dụng kết Firewall bảo vệ vịng ngồi và các thiết bị an ninh chống xâmnhập IDS-SCADA (Intrusion Detection System), hoặc IPS-SCADA (IntrusionPrevention System) để bảo vệ vòng trong. Giải pháp này sẽ được chúng tơi nghiêncứu và trình bày trong các nghiên cứu khác khác.

3. Sử dụng kết hợp Firewall bảo vệ vịng ngồi và ứng dụng các kỹ thuật mãhóa khắc phục trực tiếp các lỗ hổng của giao thức sử dụng trong hệ thống SCADA,để bảo vệ vịng trong. Đây là giải pháp được chúng tơi tập trung nghiên cứu trongđề tài này các phương pháp mã hóa AES và RSA được trình bày ở chương 2 .

4. Sử dụng kỹ thuật sinh trắc học để xác nhận người dùng phụ trợ cho anninh của hệ thống SCADA như nhận dạng vân tay, mặt người...

Ngoài những giải pháp trên cũng cần phải xây dựng các điều luật, chế tài vềmặt pháp luật để hạn chế những kẻ tấn công gây thiệt hại cho các hệ thống SCADAnói riêng, hệ thống thơng tin nói chung.

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

Nền tảng cơ bản của các thuật toán mã hóa khóa đối xứng hiện đại nóichung, mã hóa DES, AES nói riêng sử dụng phép biến đổi thay thế S-Box và phéphoán vị P, hai phép toán này được lặp đi lặp lại nhiều lần. DES lặp lại trong 16vịng, AES 128, 192, 256 bít lần lượt lặp lại trong 10, 12, 14 vòng. Kết hợp haiphép biến đổi thay thế S-Box và phép hoán vị P tạo ra hai tính chất quan trọng củamã hóa là tính khuếch tán (diffusion) và tính gây lẫn (confusion).

 Tính khuếch tán: Một bít của bản rõ tác động đến tất cả các bít của bản mã,hay nói cách khác một bít của bản mã chịu tác động của tất cả các bít trong bản rõ.Tính chất này làm giảm tối đa mối liên quan giữa bản rõ và bản mã, ngăn chặn việcsuy ra khóa.

 Tính gây lẫn: Làm phức tạp hóa mối liên quan giữa bản rõ, bản mã và khóa.Do đó cũng ngăn chặn việc suy ra khóa khi có bản mã.

Mã hóa AES (chi tiết xem [12]) sử dụng 4 phép biến đổi chính để mã hóa một khốidữ liệu 128 bit là: Add row key, Substitute bytes, Shift rows, Mix columns. Mỗiphép biến đổi đều nhận tham số đầu vào có kích thước 128 bít và cho ra kết quảcũng có kích thước 128 bít. AES thực hiện 4 phép biến đổi trên trong 10 vòng lặpnhư bên trái (hình 2.1) là giai đoạn mã hóa, bên phải thực hiện ngược lại là giaiđoạn giải mã.

Các phép biến đổi Substitute bytes, Shift rows, Mix columns có phép biếnđổi ngược tương ứng là Inverse sub bytes, Inverse shift rows, Inverse mix cols.

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

Riêng phép biến đổi Add row key đơn giản chỉ là phép XOR nên phép biến đổingược cũng là Add row key. Các phép biến đổi ngược bên phải hình 9 giải mã AEScũng gồm 10 vòng thực hiện theo chiều ngược lại.

Kích thước khóa ban đầu là 128 bít (16 byte). AES dùng hàm mở rộng khóa(Expand key) để mở rộng kích thước khóa thành 44 word 32 bít. 44 word này đượcchia thành 11 cụm khóa con, mỗi khóa con (128 bít) hay 4 word làm tham số vàocho 11 thao tác Add row key. 128 bit bản rõ và 128 bit khóa con đều được tổ chứcthành khối ma trận 4x4 mỗi phần tử là 1 byte được sắp xếp lần lượt theo cột.

<i>Hình 2.1 Q trình mã hóa/giải mã AES.</i>

 Phép biến đổi Add row key: Khóa con được kết hợp với các khối dữ liệuvào, mỗi khóa con có độ dài giống như dữ liệu vào. Quá trình kết hợp được thựchiện bằng cách XOR từng bít của khóa con với từng bít khối dữ liệu vào.

 Substitute bytes: Các byte của khối đầu vào được thay thế bằng tra trongbảng S-Box có kích thước (16x16) byte. Đây chính là q trình phi tuyến của thuậttoán. Hộp S-box được tạo ra từ một phép biến đổi khả nghịch trong trường hữu hạnGF (2<small>8</small>) có tính chất phi tuyến. Tương tự phép biến đổi nghịch Inverse sub bytes

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">

thực hiện tra trong bảng IS-BOX. Chi tiết các bảng S-BOX, IS-BOX, trường hữuhạn GF(2<small>8</small>) xem tài liệu [12].

 Shift rows: Các hàng của khối dữ liệu vào được dịch vòng một số bước nhấtđịnh. Hàng đầu được giữ nguyên, mỗi byte của hàng thứ 2 được dịch vịng trái mộtvị trí. Tương tự các hàng thứ 3 và 4 được dịch vòng 2 và 3 vị trí. Do vậy, mỗi cộtcủa khối đầu ra của bước này sẽ bao gồm các byte ở đủ 4 cột khối đầu vào. Phépbiến đổi ngược Inverse shift rows thực hiện ngược lại, dòng 1 giữ nguyên, các dòng2, 3 và 4 được dịch vòng phải tương ứng 1 byte, 2 byte và 3 byte.

<i>Hình 2.2 Thuật tốn tạo khóa con w0 đến w44</i>

 Mix columns: Mỗi cột của khối dữ liệu vào (ma trận 4x4) tương ứng là hệ sốcủa một đa thức f(x) bậc bằng 3 (với hệ số tự do ứng byte đầu tiên của cột). Đathức này được nhân với đa thức a(x)=3x<small>3</small>+x<small>2</small>+x+2, sau đó thực hiện phép chiamodulo cho đa thức n(x)=x<small>4</small>+1, kết quả phép modulo là đa thức bậc 3 c(x)=f(x).a(x)mod n(x), bốn byte hệ số của đa thức c(x) được thay thế tương ứng cho 4 byte trongcột tạo đa thức f(x) của khối dữ liệu. Các phép cộng và nhân trong đa thức đượcthực hiện trong trường GF(2<small>8</small>). Phép biến đổi ngược Inverse mix cols, thực hiệntương tự mỗi cột của khối dữ liệu vào được nhân với đa thức b(x) =11x<small>3</small>+13x<small>2</small>+9x+14, sau đó cũng thực hiện phép chia modulo cho đa thức n(x)=x<small>4</small>+1,cuối cùng thu được bốn hệ số của đa thức kết quả, các hệ số này thay thế cho cộttương ứng. Chi tiết chứng minh phép biến đổi Inverse mix cols là phép biến đổingược của Mix columns xem tài liệu [12].

</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">

 Hàm mở rộng khóa (Expand key). 16 byte khóa ký hiệu là: k0, k1,k2…k15và được sắp xếp lại thành ma trận 4x4 sau đó phép mở rộng khóa (tạo khóa con)được thực như trong hình 2.2.

Từ bốn từ (word) đầu vào w0w1w2w3, w0 = (k0,k1,k2,k3)…w3=(k12,k13,k14,k15) trong lần lặp đầu tiên thao tác sinh ra bốn wordw4w5w6w7, lần lặp thứ 2, từ w4w5w6w7 sinh ra w8w9w10w11, cứ như thế chođến lần lặp thứ 10 sinh ra bốn word cuối cùng w40w41w42w43 như hình 2.2.

Trong mỗi lần lặp để sinh ra 4 word, thì word đầu tiên sinh ra theo quy tắc w<small>i</small>= w<small>i-4 </small>⊕ g, với g =SubWord(RotWord(w<small>i-4</small>,w<small>i-3</small>,w<small>i-2</small>,w<small>i-1</small>)) ⊕ Rcon[i/4], i=4,8,12..40.Ba word tiếp theo sinh ra theo quy tắc w<small>j</small> = w<small>j-1</small> ⊕ w<small>j-4</small>, j=i+1,i+2,i+3.

+ RotWord: Dịch vòng trái một byte. Giả sử word đầu vào có 4 byte là [b0, b1,b2, b3] thì kết quả của RotWord là [b1, b2, b3, b0].

+ SubWord: Thay thế mỗi byte trong word đầu vào bằng cách tra cứu bảngS-Box trong thao tác Substitute Bytes.

+ Rcon: Là một mảng hằng số. Mảng này gồm 10 word ứng với 10 vòngAES. Bốn byte của một phần tử Rcon[ j] là (RC[ j], 0, 0, 0) với RC[ j] là mảng 10byte hexa như sau:

<b>2.2 Mã hóa khóa cơng khai RSA</b>

RSA [13] là ba chữ cái đầu của ba tác giả Ron Rivest, Adi Shamir và LenAdleman xây dựng ra nó năm 1977. RSA là một phương pháp mã hóa khóa cơngkhai, mã hóa và giải mã sử dụng hai khóa khác nhau, một khóa bí mật gọi là khóariêng, khóa kia có thể cơng bố gọi là khóa cơng khai. RSA là phương pháp mã hóatheo khối. Trong đó bản rõ M và bản mã C là các số nguyên từ 0 đến 2<small>i</small>, với i số bítcủa khối. Kích thước thường dùng của i là 1024 bít hoặc dài hơn với các ứng dụngbảo mật rất cao.

RSA hiện nay đang được sử dụng rộng rãi. Ưu điểm của mã hóa RSA làkhơng phải chọn kênh an tồn để phân phối khóa, khi trao đổi thơng tin cần bảomật thì mỗi bên sử dụng một cặp khóa cho riêng mình, khóa riêng giữ bí mật, khóacơng khai cơng bố cho các người gửi. Người gửi mã hóa bằng khóa cơng khai của

</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">

người nhận rồi gửi bản mã cho người nhận, người nhận giải mã bằng khóa riêngcủa mình. Quá trình xác thực người gửi thì tiến hành ngược lại, người gửi mã hóabằng khóa riêng của mình, bên nhận giải mã bằng khóa cơng khai của bên gửi đểxác thực.

 Các bước sinh khóa của RSA như sau:

1. Chọn hai số nguyên tố lớn p và q và tính N = pq. Cần chọn p và q sao cho: M < 2<small>i-1</small> < N < 2<small>i</small>. Với i = 1024 thì N là một số nguyên dài khoảng 309 chữsố.

2. Tính n = (p - 1)(q - 1)

3. Tìm một số e sao cho e nguyên tố cùng nhau với n

4. Tìm một số d sao cho e.d mod n =1, (d là nghịch đảo của e với phépmodulo n).

5. Hủy bỏ n, p, q. Chọn khóa cơng khai P<small>U</small> là cặp (e,N), khóa riêng P<small>R</small> là cặp(d,N).

 Mã hóa/giải mã để bảo mật theo cơng thức:

+ Mã hóa để bảo mật: C = E(M,P<small>U</small>) = M<small>e</small> mod N+ Giải mã bảo mật: M = D(C,P<small>R</small>) = C<small>d</small> mod N Mã hóa/giải mã để xác thực:

+ Mã hóa để xác thực: C = E(M,P<small>R</small>) = M<small>d</small> mod N + Giải mã để xác thực: M = D(C,P<small>U</small>) = C<small>e</small> mod NBản rõ M có kích thước i-1 bít, bản mã C có kích thuớc i bít.

</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">

<b>Chương 3</b>

<b>Hệ nhúng, hệ điều hành nhúng Linux</b>

<b>3.1 Hệ thống nhúng và ứng dụng</b>

Hệ thống nhúng (Embedded system) là một thuật ngữ để chỉ hệ thống xử lýthơng tin, hệ tính tốn có khả năng hoạt động độc lập được nhúng vào trong mộtmôi trường hay một hệ thống mẹ. Đó là các hệ thống tích hợp cả phần cứng vàphần mềm phục vụ các bài tốn chun dụng trong nhiều lĩnh vực cơng nghiệp, tựđộng hóa điều khiển, quan trắc và truyền tin. Đặc điểm của các hệ thống nhúng làhoạt động ổn định và có tính năng tự động hóa cao.

Hệ thống nhúng thường được thiết kế để thực hiện một chức năng chunbiệt nào đó. Khác với các máy tính đa chức năng, chẳng hạn như máy tính cá nhân,một hệ thống nhúng chỉ thực hiện một hoặc một vài chức năng nhất định, thường đikèm với những yêu cầu cụ thể và bao gồm một số thiết bị máy móc và phần cứngchun dụng mà ta khơng tìm thấy trong một máy tính đa năng nói chung. Vì hệthống chỉ được xây dựng cho một số nhiệm vụ nhất định nên các nhà thiết kế có thểtối ưu hóa nó nhằm giảm thiểu kích thước và chi phí sản xuất. Các hệ thống nhúngthường được sản xuất hàng loạt với số lượng lớn. Hệ thống nhúng rất đa dạng,phong phú về chủng loại. Có thể là những thiết bị cầm tay nhỏ gọn như đồng hồ kĩthuật số và máy chơi nhạc MP3, hoặc những sản phẩm lớn như đèn giao thơng, bộkiểm sốt trong nhà máy hoặc hệ thống kiểm soát các máy năng lượng hạt nhân.Xét về độ phức tạp, hệ thống nhúng có thể rất đơn giản với một vi điều khiển hoặcrất phức tạp với nhiều đơn vị, các thiết bị ngoại vi và mạng lưới được nằm gọntrong một lớp vỏ máy lớn.

<i><b>Hệ thống nhúng được ứng dụng rộng rãi trên nhiều lĩnh vực như:</b></i>

 Các hệ thống dẫn đường trong không lưu, hệ thống định vị toàn cầu, vệtinh.

 Điện tử gia dụng: Tủ lạnh, máy giặt, tivi, lị vi sóng, máy quay phim, chụphình số…

 Điện tử ơ tơ: Hệ điều khiển động cơ, hệ điều khiển phanh điện từ, định vị,dẫn đường GPS…

 Trên tàu hỏa: Hệ thống lái tự động, hệ thống hãm…

</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19">

 Các thiết bị y tế: Máy thẩm thấu, máy điều hòa nhịp tim, đo nhiệt độ, ECG,chẩn đốn từ xa…

 Viễn thơng và thiết bị mạng: Router, hub, gateway, hệ thống tổng đài, điệnthoại di động, thiết bị GPS, điều khiển anten…

 Nhà thông minh: Hệ thống tiết kiệm năng lượng, điều chỉnh nhiệt độ, thiếtbị chiếu sáng tự động…

 Thiết bị văn phòng: máy photocopy, máy fax, máy in, máy scan, … Dây chuyền sản xuất tự động trong công nghiệp, robots.

<i><b>Khả năng độc lập và thông minh hoá: Điều này được chỉ rõ hơn thông</b></i>

qua một số các thuộc tính yêu cầu, cụ thể như: Độ tin cậy

 Khả năng bảo trì và nâng cấp Sự phổ cập và tiện sử dụng Độ an toàn

</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20">

 Kích thước về phần cứng và phần mềm Hiệu quả về thời gian thực hiện

 Kích thước và khối lượng Giá thành

<i><b>Phân hoạch tác vụ và chức năng hoá: Các bộ vi xử lý trong các hệ nhúng</b></i>

thường được sử dụng để đảm nhiệm và thực hiện một hoặc một nhóm chức năngrất độc lập và cũng đặc thù cho từng phần chức năng của hệ thống lớn mà nóđược nhúng vào. Ví dụ như một vi xử lý thực hiện một phần điều khiển cho mộtchức năng thu thập, xử lý và hiển thị của ôtô hay hệ thống điều khiển quá trính.Khả năng này làm tăng thêm sự chuyên biệt hoá về chức năng của một hệ thốnglớn và dễ dàng hơn cho q trính xây dựng, vận hành và bảo trì.

<i><b>Khả năng thời gian thực: Các hệ thống đều gắn liền với việc đảm nhiệm</b></i>

một chức năng chính và phải được thực hiện đúng theo một khung thời gian quiđịnh. Thông thường một chức năng của hệ thống phải được thực hiện và hoànthành theo một yêu cầu thời gian định trước để đảm bảo thông tin cập nhật kịpthời cho phần xử lý của các chức năng khác và có thể ảnh hưởng trực tiếp tới sựhoạt động đúng và chính xác của tồn hệ thống. Tuỳ thuộc vào từng bài toán vàyêu cầu của hệ thống mà yêu cầu về khả năng thời gian thực cũng rất khác nhau.Tuy nhiên, trong thực tế không phải hệ nhúng nào cũng đều có thể thoả mãntất cả những yêu cầu nêu trên, vì chúng là kết quả của sự thoả hiệp của nhiều yêucầu và điều kiện nhằm ưu tiên cho chức năng cụ thể mà chúng được thiết kế.Chính điều này lại càng làm tăng thêm tính chuyên biệt hoá của các hệ/thiết bịnhúng mà các thiết bị đa năng không thể cạnh tranh được.

<b>3.2.2 Xu thế phát triển và sự tăng trưởng của hệ nhúng</b>

Vì sự phát triển hệ nhúng là sự kết hợp nhuần nhuyễn giữa phần cứng vàphần mềm nên công nghệ gắn liền với nó cũng chính là cơng nghệ kết hợp giữacác giải pháp cho phần cứng và mềm. Vì tính chuyên biệt của các thiết bị/hệnhúng như đã giới thiệu nên các nền phần cứng cũng được chế tạo để ưu tiên đápứng cho chức năng hay nhiệm vụ cụ thể của yêu cầu thiết kế đặt ra.

Lớp hệ nhúng ưu tiên phát triển theo tiêu chí về kích thước nhỏ gọn, tiêuthụ năng lượng ít, giá thành thấp. Các chíp xử lý nhúng cho lớp hệ thống ứngdụng đó thường yêu cầu về khả năng tính tốn ít hoặc vừa phải nên hầu hết

</div><span class="text_page_counter">Trang 21</span><div class="page_container" data-page="21">

được xây dựng trên cở sở bộ đồng xử lý 8 bít ‐16 bit hoặc cùng lắm là 32 bit vàkhông hỗ trợ dấu phảy động do sự hạn chế về dung lượng và khả năng tính tốn.

Lớp hệ nhúng ưu tiên thực thi khả năng xử lý tính tốn với tốc độ thực hiệnnhanh. Các chíp xử lý nhúng cho các hệ thống đó cũng sẽ là các Chip áp dụngcác công nghệ cao cấp với kiến trúc xử lý song song để đáp ứng được cường độtính tốn lớn và tốc độ mà các Chip xử lý đa chức năng thông thường không đạttới được.

Lớp hệ thống ưu tiên cả hai tiêu chí phát triển của hai lớp trên, tức là kíchthước nhỏ gọn, mức tiêu thụ năng lượng thấp, tốc độ tính tốn nhanh. Tuỳ theosự thoả hiệp giữa các yêu cầu và xu thế phát triển chính vì vậy cũng khơng có gìngạc nhiên khi chúng ta thấy sự tồn tại song song của rất nhiều các Chip vi xử lýnhúng, vi điều khiển nhúng 8 bit, 16 bit hay 32 bit cùng với các Chíp siêu xử lýkhác vẫn đang được ứng dụng rộng rãi cho hệ nhúng. Đó cũng là sự kết hợp đadạng và sự ra đời của các hệ nhúng nói chung nhằm thoả mãn các ứng dụng pháttriển không ngừng.

Với mỗi một nền phần cứng nhúng thường có những đặc thù riêng vàkèm theo một giải pháp phát triển phần mềm tối ưu tương ứng. Khơng có mộtgiải pháp nào chung và chuẩn tắc cho tất cả các hệ nhúng. Chính vì vậy thơngthường các nhà phát triển và cung cấp phần cứng cũng lại chính là nhà cung cấpgiải pháp phần mềm hoặc công cụ phát triển phần mềm kèm theo. Rất phổ biến

<i>hiện nay các Chip vi xử lý hay vi điều khiển đều có các hệ phát triển (StarterKit hay Emulator) để hỗ trợ cho các nhà ứng dụng và xây dựng hệ nhúng với</i>

hiểu biết hạn chế về phần cứng. Ngơn ngữ mã hố phần mềm cũng thường là C

<i>hoặc gần giống như C (Likely C) thay vì phải viết hoàn toàn bằng hợp ngữAssembly. Điều này cho phép các nhà thiết kế tối ưu và đơn giản hoá rất nhiều cho</i>

bước phát triển và xây dựng hệ nhúng.

Trong xu thế phát triển không ngừng và nhằm thoả mãn được nhucầu phát triển nhanh và hiệu quả có rất nhiều các công nghệ cho phép thựcthi các giải pháp hệ nhúng. Đứng sau sự phổ cập rộng rãi của các Chip vi xử lývi điều khiển nhúng, DSP phải kể đến các công nghệ cũng đang rất được quantâm hiện nay như ASIC, CPLD FPGA, PSOC, AVR, dsPIC, ARM…và sự tổhợp của chúng...Kèm theo đó là các kỹ thuật phát triển phần mềm cho phép

</div><span class="text_page_counter">Trang 22</span><div class="page_container" data-page="22">

đảm nhiệm được các bài toán yêu cầu khắt khe trên cơ sở một nền phần cứng hữuhạn về khả năng xử lý và không gian bộ nhớ. Giải quyết các bài toán thời gianthực như phân chia tác vụ và giải quyết cạnh tranh chia sẻ tài nguyên chung.Hiện nay cũng đã có nhiều nhà phát triển công nghệ phần mềm lớn đang

<i>hướng vào thị trường hệ nhúng bao gồm cả Microsoft. Ngoài một số các hệđiều hành Windows quen thuộc dùng cho PC, Microsoft cũng đã tung ra cácphiên bản mini như WindowsCE, WindowsXP Embedded và các công cụ phát</i>

triển ứng dụng kèm theo để phục vụ cho các thiết bị nhúng, điển hình như cácthiết bị PDA, một số thiết bị điều khiển công nghiệp như các máy tính nhúng,IPC của Siemens...

Có thể nói hệ nhúng đã trở thành một giải pháp công nghệ và phát triểnmột cách nhanh chóng, hứa hẹn nhiều thiết bị nhúng sẽ chiếm lĩnh được thịtrường rộng lớn trong tương lai nhằm đáp ứng nhu cầu ứng dụng không ngừngtrong cuộc sống của chúng ta. Đối với lĩnh vực công nghiệp về điều khiển và tựđộng hoá, hệ nhúng cũng là một giải pháp đầy tiềm năng đã và đang được ứngdụng rộng rãi. Nó rất phù hợp để thực thi các chức năng thơng minh hố, chunbiệt trong các hệ thống và thiết bị công nghiệp, từ các hệ thống tập trung đến cáchệ thống phân tán. Giải pháp hệ nhúng có thể thực thi từ cấp thấp nhất của hệthống công nghiệp như cơ cấu chấp hành cho đến các cấp cao hơn như giám sátđiều khiển quá trình.

<b>3.3 Hệ điều hành nhúng Linux</b>

Hệ thống nhúng được chia thành 2 loại chính:

 Hệ nhúng khơng có hệ điều hành: Thường sử dụng các vi điều khiển hiệunăng tương đối thấp như: 8051, ATMega, PIC, ARM7…Ngôn ngữ lập trình thườngbằng ngơn ngữ C, Assembly... Mơi trường cơng cụ lập trình tùy theo từng dịng viđiều khiển như: Code Vision, CCS, HT PIC, Keil C… Phù hợp với các ứng dụngđiều khiển vào/ra cơ bản, các giao tiếp ngoại vi cơ bản.

 Hệ nhúng có hệ điều hành (Open System): Dựa trên các vi điều khiển, vixử lý có hiệu năng cao như: dsPIC, AVR32, ARM9, ARM11… Nền tảng hệ điềuhành nhúng: UCLinux, Embedded Linux, Ubuntu Embedded, Windows CE,Android… Môi trường, cơng cụ lập trình tùy thuộc nền tảng hệ điều hành: C/C++,QT SDK, .Net Compact FrameWork, Java … Ứng dụng cho nhiều bài toán phức

</div><span class="text_page_counter">Trang 23</span><div class="page_container" data-page="23">

tạp: GPS Tracking/Navigator, Xử lý ảnh, ứng dụng Client/Server, điều khiểnRobot…

 Như mục 3.1 nêu khái niệm hệ thống nhúng là hệ thống có khả năng tínhtốn độc lập được nhúng vào trong một môi trường hay một hệ thống mẹ. Đó là cáchệ thống tích hợp cả phần cứng và phần mềm phục vụ các bài toán chuyên dụngtrong nhiều lĩnh vực cơng nghiệp, tự động hóa điều khiển, quan trắc và truyền tin…Một hệ điều hành được sử dụng trong các hệ thống nhúng được gọi là hệ điều hànhnhúng. Hệ thống điều hành nhúng thường rất nhỏ gọn và thường được thiết kế chocác hoạt động thời gian thực. Một số hệ điều hành nhúng thông dụng như:Embedded Linux, VxWorks, Win CE, Lynyos, BSD, Green Hills, QNX, DOS....

Hệ điều hành đảm nhiệm vai trò trung gian để tương tác trực tiếp với phầncứng của máy tính hoặc hệ nhúng, phục vụ cho nhiều ứng dụng đa dạng. Các hệđiều hành cung cấp một tập các chức năng cần thiết để cho phép các phần ứng dụngkhông cần can thiệp trực tiếp, sâu vào phần cứng. Hệ điều hành có thể bao gồm cácdrivers cho các ngoại vi tích hợp như COM, I2C, GPIO, màn hình, âm thanh …,các cơng cụ quản lý tài nguyên như bộ nhớ RAM, ROM. Điều này tạo ra một giaodiện thuận lợi cho các ứng dụng và người sử dụng phát triển phần mềm trên cácnền phần cứng đã có. Đồng thời tránh được yêu cầu phải tìm hiểu sâu về phần cứngvà có thể phát triển dựa trên các ngôn ngữ bậc cao.

Hệ điều hành thực chất cũng là một loại phần mềm nhưng nó khác với cácloại phần mềm thông thường. Sự khác biệt điển hình là hệ điều hành được nạp vàthực thi đầu tiên khi hệ thống bắt đầu khởi động và được thực hiện trực tiếp bởi bộxử lý của hệ thống. Hệ điều hành được viết để phục vụ điều khiển bộ xử lý cũngnhư quản lý các tài nguyên khác trong hệ thống bởi vì nó đảm nhiệm chức năngquản lý và lập lịch các quá trình sử dụng CPU và chia sẻ tài nguyên của hệ thống.

<b>3.3.1 Kiến trúc nhân hệ điều hành nhúng Linux</b>

Nhân được ví như trái tim của hệ điều hành. Về bản chất nhân cũng là mộtchương trình phần mềm nhưng ở cấp độ hệ thống có vai trị điều khiển các thànhphần của hệ thống, quản lý tài nguyên của hệ thống, cung cấp một số dịch vụ vàphần mềm cơ bản cho lớp cao hơn, cung cấp môi trường thực thi có các ứng dụngkhác nhau chạy trên hệ thống. Nhân chính là cầu nối giữa phần cứng vật lý của máytính với và chương trình ứng dụng.

</div><span class="text_page_counter">Trang 24</span><div class="page_container" data-page="24">

Các dịch vụ của nhân được chạy trong chế độ đặc quyền của bộ xử lý. Tráilại, các chương trình ứng dụng được chạy trong chế độ người dùng hoàn toàn cáchly với hệ điều hành. Khi ứng dụng chạy trong chế độ người dùng gọi tới một dịchvụ hệ thống thông qua một giao diện, bộ xử lý chặn lại lời gọi và thi hành dịch vụmức nhân hệ điều hành. Thông thường việc thực thi ở mức nhân đơn giản và nhanhhơn bởi vì nó khơng bị chuyển giữa chế độ đặc quyền và khơng đặc quyền.

<i>Hình 3.2 Kiến trúc hệ điều hành Linux</i>

<b>Nhân của Linux gồm năm bộ phận:</b>

 <b>Bộ phân thời gian cho tiến trình (Process Schedule):</b>

Hoạt động của máy tính, tại một thời điểm chỉ có một lệnh được thực thi.Tuy nhiên các hệ điều hành đa nhiệm như Windows, Linux … đều cho phép nhiềuchương trình chạy cùng một lúc. Các hệ điều hành đa nhiệm có thể làm được nhưvậy bằng cách chuyển quyền thực thi qua lại giữa các chương trình thật nhanh làmcho người dùng có cảm giác các chương trình chạy cùng lúc với nhau. Ví dụ ngườidùng có thể vừa soạn thảo văn bản vừa có thể nghe nhạc. Trong hệ điều hành đanhiệm thì bộ phân thời gian tiến trình đảm nhiệm nhiệm vụ này. Process Scheduleđược chia thành bốn khối:

Khối luật định thời (scheduling policy): Chịu trách nhiệm phân bố xem tiến

</div><span class="text_page_counter">Trang 25</span><div class="page_container" data-page="25">

hay không nhờ vào bộ luật này, tránh trường hợp một tiến trình lợi dụng sơ hở củađiều luật mà chiếm thời gian hệ thống quá nhiều làm các tiến trình khác bị đóngbăng (freeze).

Khối phụ thuộc kiến trúc (architeture-specific): Khối này gồm các mãassembly phụ thuộc vào mỗi loại CPU dùng để tạm ngưng hoạt động của tiến trình.

Khối độc lập kiến trúc (architeture-independent): Khối gọi các hàm từ khốiphụ thuộc kiến trúc và khối luật để chuyển giữa các tiến trình đồng thời nó cịn gọi

<b>các hàm của khối quản lý bộ nhớ (Memory Manager) để thiết lập bộ nhớ ảo cho các</b>

tiến trình được hồi phục lại. Khối phụ thuộc kiến trúc sẽ khác nhau ở mỗi loại CPUnhưng khối độc lập kiến trúc thì khơng đổi.

Khối hàm gọi hệ thống (system call). Gồm các hàm mà người dùng có thểdùng để tương tác với Schedule. Khi lập trình Linux và Unix sẽ quen với các hàmgọi hệ thống này.

 <b>Bộ quản lý bộ nhớ (Memory Manager - MM)</b>

Bộ nhớ qui ước của các máy tính chỉ có 640KB. Do BIOS chỉ quản lý đượctới FFFFF, vùng nhớ cao từ A0000 trở lên dùng để ánh xạ BIOS, video cardmemory và các thiết bị ngoại vi khác, vùng nhớ còn lại tử 9FFFF trở xuống tươngđương với 640KB. Trong chế độ bảo vệ (protect mode) của CPU 32 bit đưa ra kháiniệm bộ nhở ảo (Virtual Memory). Lúc này mỗi tiến trình được cấp tới 4GB bộ nhớảo. Nhưng nhân hệ điều hành sẽ tạo ra một bảng mô tả từng trang của bộ nhớ ảovới bộ nhớ vật lý. Bộ nhớ vật lý bây giờ bao gồm cả bộ nhớ RAM và vùng nhớhoán vị trên đĩa cứng.

 <b>Hệ thống file ảo</b>

Hệ thống này không chỉ cung cấp truy suất đến hệ thống file trên đĩa cứngmà còn tất cả các ngoại vi . Trong Linux tất cả các tập tin , thư mục và các thiết bịđều được coi như là file . Ví dụ như máy in , cổng nối tiếp , các ổ đĩa … đều đượctruy cập như là file . Linux cũng cung cấp các thuộc tính truy cập cho file và thưmục , các thuộc tính có thể được thiết lập như cho phép đọc , cho phép ghi , chophép thực thi . Linux thiết lập chế độ bảo vệ đối với các file hệ thống và hạn chếquyền truy cập đối với các thiết bị .

 <b>Giao diện mạng (Network Interface - NET)</b>

Trong nhân Linux dựng sẵn giao thức TCP/UDP, IP và Ethernet.

</div><span class="text_page_counter">Trang 26</span><div class="page_container" data-page="26">

 <b>Bộ truyền thong nội bộ (Inter-process communication IPC) </b>

Một tiến trình trong Linux giao tiếp với các tiến trình khác và với nhân hệđiều hành thơng qua một cơ chế được gọi là bộ truyền thông nội bộ - IPC. Nó chophép các tiến trình gửi hoặc nhận các thơng điệp từ một tiến trình khác, sử dụngchung vùng nhớ chia sẻ và đồng bộ với các tiến trình khác.

<b>3.3.2 Bootloader</b>

Trong một hệ thống nhúng, khơng tồn tại firmware giống như CMOS của PC.Vì vậy để khởi động một hệ thống nhúng, chúng ta phải xây dựng bootloader.Bootloader là một phần rất quan trọng trong hệ thống nhúng. Chức năng củabootloader như sau:

Sao chép kernel từ flash memory đến RAM và thực thi kernel. Khởi tạo phần cứng.

Bootloader cũng bao gồm chức năng ghi dữ liệu đến flash memory (tảikernel hoặc RAM disk image xuống flash memory bằng cổng giao tiếp nối tiếphoặc các thiết bị nối mạng).

Cung cấp giao tiếp để gửi lệnh đến hoặc nhận về các trạng thái của bo mạchcần chạy.

<b>3.3.3 Device driver</b>

Device driver là phần mềm giao tiếp giữa phần cứng và kernel củaEmbedded Linux. Linux device driver có thể được tích hợp vào trong kernel theo 2phương pháp: Biên dịch trực tiếp vào kernel hoặc biên dịch thành một định dạngđối tượng (object format có tập tin là device_driver.o) để kernel có thể tải lên khicó nhu cầu (sử dụng lệnh install module “insmod device_driver.o”). Để biên dịchcác tập tin của device driver cần phải xây dựng một Makefile. Kết quả thu được sẽlà tập tin có phần mở rộng *.o.

</div>

×