Qua hình 2.1 và 2.2 ta có thể thấy thông điệp được gửi đi sẽ kèm theo chữ ký điện tử. Chữ ký này đại diện cho một người khi họ tham gia hoạt động nào đó như kí nhận, gửi tin … Thông thường, thông điệp gửi theo chữ ký cũng được mã hóa để đảm bảo tính bí mật.
2.3 Thách thức của hàm băm nhẹ
Thách thức lớn nhất đối với hàm băm nhẹ nói riêng và mật mã nhẹ nói chung là việc làm sao để đảm bảo chương trình nhẹ nhàng để cài đặt trên các thiết bị bị giới hạn bởi năng lượng tiêu thụ và khả năng lưu trữ, đồng thời phải đảm bảo yếu tố bảo mật và yếu tố hiệu suất.
Bởi xuất phát từ thực tế, các thiết bị cài đặt theo chuẩn của IoT phải rẻ để có thể cài đặt ở mọi nơi, mọi vật. Nếu chi phí cài đặt cao so với chi phí thiết bị thì sẽ không thiết bị nào dùng. Yếu tố hiệu suất cũng là một yếu tố được quan tâm không kém so với chi phí, vì một thiết bị IoT mà khả năng chạy chương trình chậm thì việc triển khai là bất khả thi. Vì phần lớn các thiết bị này không cần quá nhiều bảo mật, và việc đưa bảo mật vào để giảm quá nhiều hiệu suất thì không thiết bị nào dùng đến nữa. Và yếu tố cuối cùng là bảo mật. Mật mã nhẹ hay hàm băm nhẹ phải triển khai được tính bảo mật thỏa mãn yêu cầu của thiết bị.
Như vậy, thách thức đối với mật mã nhẹ nói chung và hàm băm nhẹ nói riêng là rất lớn, làm sao để tối đa bảo mật, tối đa hiệu suất nhưng lại giảm chi phí. Thách thức lớn đồng thời cũng là một mỏ vàng để các nhà mật mã học khai thác. 2.4 Một số hàm băm nhẹ Hàm băm Kích thƣớc khối Preimage Second preimage Collisions Công nghệ sử dụng Bề mặt (GE) Thông lƣợng (Kb/s @ 100kHz) Năng lƣợng tiêu thụ (µW) ARMADILLO 80 280 280 240 0.18 µm 4030/2923 109/27 128 2128 2128 264 6025/4353 1000/250 PHOTON 80 264 240 240 0.18 µm 85/1168 2.82/15.15 QUARK 136 2128 264 264 0.18 µm 1379/2392 1.47/11.76 2.44/4.07 SPONGENT 80 280 240 240 0.13 µm 738/1127 0.81/17.78 1.57/2.31
Bảng 2.1: Một số hàm băm nhẹ
Thông qua bảng 2.1 (các thông sô tham khảo từ tài liệu [10]) ta có thể thấy được một số hàm băm nhẹ và các thông số đi kèm của nó. Dễ thấy, những hàm băm này có độ bảo mật rất khá thể hiện qua các thông số “cryptographic properties”. Ví dụ với hệ mật Armadillo, khối băm là 80 bit thì thông số preimage và second preimage là 280 và collission là 240. Kế đến, ta có thể tham khảo thông số bề mặt và thông lượng của hàm này tương ứng là 4030/2923 GE và 109/27 Kb/s tại 100 kHz để biết được yêu cầu cài đặt không lớn do đó việc áp dụng vào các thiết bị IoT là rất khả thi.
2.5 Hàm băm của hệ mật PRESENT
2.5.1 Hệ mật PRESENT
Trong phần này, tác giả sẽ trình bày hiểu biết của mình về hệ mật PRESENT [1] đã được công bố trong bài báo “Present: An Ultra-Lightweight Block Cipher” của A. Bogdanov và các cộng sự.
Tác giả sẽ trình bày từ kế hoạch thiết kế cho tới việc thiết kế chi tiết hệ mật này. Đây cũng là cách tiếp cận thứ 3 đã được đề cập ở mục 1.3 (chiến lược thiết kế cho mật mã nhẹ) là thiết kế một hệ mật mới phù hợp với yêu cầu bảo mật của các thiết bị bị giới hạn.
2.5.1.1 Ý tƣởng thiết kế
Mục tiêu khi Bogdanov và các cộng sự thiết kế PRESENT là muốn xây dựng một hệ mật thật đơn giản nhưng hiệu quả. Trong phần này, tác giả sẽ trình bày quyết định thiết kế của những nhà mật mã học ấy.
Những ý tưởng ban đầu là thiết kế một mã khối phù hợp với các môi trường cực kỳ hạn hẹp. Cân nhắc tới đặc điểm này, các tác giả của bài báo thấy rằng AES đã đảm nhiệm rất tốt, do đó việc tạo ra một mã tương tự là điều không cần thiết. Cuối cùng, nhóm Bogdanov đã đi đến quyết định, thiết kế mã mới và nhắm vào những đặc điểm mà AES chưa đáp ứng được. Những đặc điểm này là:
- Mã hóa sẽ được thực hiện trong phần cứng.
- Các ứng dụng sẽ chỉ yêu cầu mức bảo mật vừa phải. Do đó, khóa 80 bit là một khóa có độ dài phù hợp.
- Các ứng dụng sẽ không yêu cầu mã hóa một lượng lớn dữ liệu. Do đó, việc thực hiện cài đặt có thể đạt được tối ưu cho hiệu suất hoặc bề mặt mà không bị tác động bởi thực tế quá nhiều.
- Trong một số triển khai cài đặt cụ thể, có thể khóa sẽ được cố định vào thời điểm sản xuất thiết bị. Những trường hợp như vậy, ta sẽ không cần phải yêu cầu thiết lập khóa từ phía người dùng, điều này cũng loại trừ được vô số các cuộc tấn công không cần thiết.
- Sau khi đã xem xét yếu tố bảo mật thì yếu tố tiếp theo cần quan tâm là yếu tố phần cứng và mức tiêu thụ năng lượng. Ta có thể tham khảo thêm các hình 1. 3:
Đồ thị so sánh theo thông số bề mặt của một số hàm băm nhẹ, hình 1.4: Đồ thị so sánh theo thông số thông lượng của một số hàm băm nhẹ.
- Yếu tố thứ 3 được quan tâm sau bảo mật và năng lượng tiêu thụ là thời gian thực thi. Ta có thể tham khảo hình 1.5 Đồ thị so sánh năng lượng sử dụng ở mức cao của một số hàm băm nhẹ, hình 1.6: Đồ thị so sánh mức năng lượng sử dụng ở mức thấp của một số hàm băm. Một chương trình cài đặt mã nhẹ không thể chấp nhận một mã có độ trễ cao được.
Từ những phác thảo về quyết định thiết kế, Bogdanov và các cộng sự đã đề xuất hệ mật PRESENT. Đặc điểm của hệ mật này là kích thước khối 64 bit, kích thước khóa 80 bit. Tuy nhiên, tùy vào cài đặt cụ thể, các tác giả cũng đề xuất thêm một PRESENT với 64 bit khối và 128 bit khóa. Do đó, tùy theo điều kiện cụ thể, ta có thể lựa chọn cài đặt cho phù hợp với hệ thống của mình. Sao cho, cài đặt vừa đảm bảo yếu tố bảo mật, vừa đảm bảo yếu tố kinh tế và hiệu suất.
PRESENT chịu ảnh hưởng bởi hầu hết các cuộc tấn công vào hệ mật nói chung và các cuộc tấn công nhằm vào mã khối nói riêng. Điều này là không tránh khỏi và cũng không phải là yếu tố quan trọng đáng lưu tâm.
2.5.1.2 Quá trình mã hóa
PRESENT là một ví dụ điển hình về mạng SP bao gồm 31 vòng mã hóa. Chiều dài của khối là 64 bit và hai chiều dài khóa được đề xuất là 80 bit và 128 bit. Nhóm nghiên cứu của PRESENT khuyến nghị nên sử dụng khóa 80 bit, vì việc triển khai sẽ phù hợp với các thiết bị nhẹ, cân bằng yếu tố bảo mật và các yếu tố khác. PRESENT rất thuận lợi để triển khai trên các thiết bị nhẹ như thẻ từ, thẻ chip. Mỗi vòng trong số 31 vòng bao gồm một thao tác XOR để đưa ra một khóa tròn Ki
sao cho 1 ≤ i ≤ 32, trong đó K32 được sử dụng cho post-whitening, hoán vị bitwise tuyến tính và một lớp thay thế không tuyến tính. Lớp phi tuyến tính sử dụng S-Box 4 bit đơn, được áp dụng song song 16 lần trong mỗi vòng. Các vòng mã hóa được mô tả trong hình 2.3 bao gồm các pha sinh khóa, addRoundKey, S-Box layer, pLayer. Hoạt động của từng pha sẽ được trình bày ở các phần ngay bên dưới đây.