hóa đối xứng không chứng thƣ (CL-PKC)
Nhƣ đã đề cập trong các phần trƣớc môi trƣờng truyền thông M2M là môi trƣờng vô tuyến không đảm bảo an ninh và dữ liệu rất dễ bị nghe lén. Chính vì vậy đối với các hệ thống CPS yêu cầu có một hệ thống mã hóa tin cậy là yêu cầu tiên quyết. Trong các hệ thống truyền thông M2M, số lƣợng các thiết bị M2M có thể rất lớn. Nếu chúng ta sử dụng hệ thống mã hóa đối xứng trong các hệ thống M2M thì mỗi một kết nối giữa 2 thiết bị sẽ cần một khóa đối xứng riêng. Do đó số lƣợng khóa bí mật yêu
cầu cho toàn bộ hệ thống sẽ rất lớn dẫn đến không thể quản lý khóa một cách hiệu quả. Ngƣợc lại nếu sử dụng hệ mã hóa bất đối xứng, mỗi thiết bị truyền thông chỉ cần duy nhất một khóa công khai và một khóa bí mật để có thể giao tiếp với một thiết bị khác và số lƣợng khóa của toàn hệ thống sẽ ít hơn rất nhiều. Do vậy phƣơng pháp mã hóa bất đối xứng là sự lựa chọn tốt hơn cho hệ thống truyền thông M2M nhờ cách quản lý khóa đơn giản. Tuy nhiên, mã hóa bất đối xứng thì thƣờng yêu cầu năng lực tính toán cao và phải có các chứng thƣ CA để xác thực các khóa công khai của mỗi thực thể. Trong hệ thống nhiều thiết bị cần giao tiếp trao đổi thông tin với nhau nhƣ hệ thống M2M rõ ràng việc xác thực các khóa công khai qua các chứng thƣ là không khả thi, vì nếu dựa trên chứng thƣ thì mỗi thiết bị bị hạn chế về mặt tài nguyên trong mạng truyền thông M2M sẽ phải cần lƣu trữ CA của tất cả các thiết bị khác trong mạng. Ban đầu để giải quyết nhƣợc điểm này các hệ thống mã hóa dựa trên thông tin định danh IBC đã đƣợc ra đời.
Về cơ bản trong một hệ thống mã hóa dựa trên định danh IBC sẽ có một thiết bị trung tâm PKC tạo ra các khóa cho hệ thống. PKC chứa một khóa công khai chính và khóa bí mật chính đƣợc gọi là các điểm tin tƣởng ban đầu và các thuật toán tạo khóa. Bất kỳ một thiết bị nào trong mạng chỉ cần sử dụng thông tin định danh và khóa công khai chính của PKC để tạo ra khóa công khai cho nó. Trong mô hình IBC này, các khóa bí mật của các thiết bị đƣợc PKC trực tiếp tạo ra dựa trên thông tin nhận dạng và khóa bí mật chính của PKC. Đây cũng chính là nhƣợc điểm chính của phƣơng pháp này vì PKC sẽ biết hết khóa bí mật của toàn bộ các thiết bị trong mạng qua đó nó có thể giải mã bất cứ bản tin nào mà nó muốn.
Để giải quyết vấn đề sở hữu khóa của mô hình IBC, trong phần này học viên xin trình bày một phƣơng pháp mã hóa không dùng đến chứng thƣ gọi là mô hình mã hóa ElGamal dựa trên thuật toán đƣờng cong Elliptic. Mặc dù mô hình này không dùng đến các chứng thƣ nhƣng nó vẫn cung cấp đƣợc một phƣơng pháp nhận thực khóa công khai của các thiết bị trong mạng một cách hiệu quả. Chính vì vậy mô hình này là hoàn toàn phù hợp với yêu cầu về mặt an ninh cũng nhƣ về mặt năng lực tính toán của các thiết bị trong mạng truyền thông M2M.
3.2.1Các thông số và chức năng
a) Độ khó của thuật toán.
Định nghĩa 1: (độ khó của phƣơng pháp tính Diffie-Hellman dựa trên ECC). Ta cho trƣớc các tham số P aP bP, , với bất kỳ a, b thuộc
*
q
Z , nếu biết trƣớc a, b thì việc tính abP đơn giản, còn nếu cho abP
việc tìm ra a, b là cực kỳ khó khăn.
Định nghĩa 2 (Thuật toán quyết định Diffie-Hellman). Cho trƣớc các thông số <P, aP, bP, cP> với bất kỳ a, b, c thuộc Zq* biểu thức
b) Chuyển đổi bản tin ra điểm thuộc đường cong ECC:
Trong tài liệu thứ [15] có giới thiệu một kỹ thuật dùng để chuyển một bản tin thành một điểm trên đƣờng cong Elliptic và ngƣợc lại. Cụ thể nhƣ sau: chúng ta ký hiệu m là bản tin cần chuyển và k là một số nguyên lớn thỏa mã điều kiện 0 m Mvà q Mk. Với mỗi một giá trị j 1, 2,...k chúng ta sẽ thu đƣợc một điểm x thuộc đƣờng cong Fq, tƣơng ứng với giái trị mk j. Giá trị x này sau đó đƣợc mang đi tính dựa trên biểu thức xác định đƣờng cong: 3
( )
f x x ax b và tính giá trị căn bậc 2 của Fq. Nếu chúng ta tìm đƣợc một giá trị y sao cho
2
( )
y f x , chúng ta sẽ thu đƣợc điểm m trên đƣờng cong là Pm ( , )x y . Nếu không, chúng ta sẽ tiếp tục tăng số hạng j lên 1 đơn vị và tính lại các giá trị x tƣơng ứng cho đế khi nào tìm đƣợc giá trị căn bậc 2 của ( )f x của một y nào đó. Chúng ta cũng có thể biến đổi 1 điểm thuộc đƣờng cong bằng cách tính :m [ -1]/kx . Trong đó x
gạch đầu là số nguyên tƣơng đƣơng với x. c) Nguyên lý thuật toán
Pha khởi tạo: Với mỗi một thông số an ninh k thuộc Z+ , Bộ tạo khóa mã hóa PKC sẽ thực hiện thuật toán tạo khóa với k để tạo ra các tham số cơ bản dùng cho việc tạo khóa của các thiết bị trên toàn mạng, các tham số này sẽ đƣợc quảng bá theo cách sau:
+ Chọn một số nguyên k bit mod q và chọn các tham số xác định lên các điểm thuộc đƣờng cong nhƣ ( F , /q E F Pq, ).
+ Chọn khóa bí mật x thuộc Zq* và tính toán khóa công khai Ppub xP. + Chọn ra một hàm Hash 1 chiều: *
:{0,1} {0,1}k
H .
+ Quảng bá các thông số này (Fq, E F P P/ q, , pub,H ) cho các thiết bị trong hệ thống.
Thiết lập các khóa bí mật ở từng thiết bị: Ngƣời dùng IDi sẽ chọn một số bất kỳ xi thuộc R làm khóa bí mật và tính khóa công khai của nó dựa trên các thông số của MSP gửi: Pi x Pi .
Tính khóa bí mật từng phần: Để tính khóa bí mật từng phần, ngƣời dùng IDi sẽ gửi <ID Pi, i> đến MSP và để MSP tính toán nhƣ sau: + Đầu tiên MSP sẽ chọn một số ri thuộc Zq* bất kỳ và tính toán
i i
R r P.
+ Tính di ri xH ID R Pi( i, i, ) modq.
Sau đó MSP sẽ gửi < ,d Ri i > đã đƣợc mã hóa cẩn thận đến thiết bị có thông tin nhận dạng là IDi. Thông tin nhận dạng dựa trên khóa công
khai tƣơng ứng với IDi là Qi R ID R P Pi( i, i, )i pub và một cặp khóa bí mật/công khai tƣơng ứng với IDi có thể đƣợc kiểm tra bằng cách biểu thức Qi Ri H ID R P P( i, i, )i pub d Pi không? ( , , ) ( , , ) ( ( , , ) ) ( ) i i i i pub i i i i i i i i i i i i R H ID R P P r P H ID R P xP r H ID R P x P r h x P d P Q
Thiết lập khóa bí mật: Ngƣời dùng có IDi sẽ lấy cặp khóa ,
i i i
sk d x làm cặp khóa bí mật đầy đủ.
Thiết lập khóa công khai: Ngƣời dùng IDi sẽ lấy pki P Ri, i làm cặp khóa đối xứng đầy đủ.
Mã hóa và giải mã bằng thuật toán Ellgama dựa trên ECC: để có thể mã hóa bản tin m, ngƣời dùng IDa phải có cặp khóa công khai đầy đủ của ngƣời dùng B: pkB R Pb, b và thực hiện các bƣớc tính sau đây:
+ Chuyển bản tin m sang 1 điểm thuộc đƣờng cong Pm thuộc Gq. + Chọn một số t thuộc *
q
Z bất kỳ rồi tính 1C t P. + Tính C2 Pm t P( b R H ID P R Ppubb, ( b, b, b) )
+ Bản tin mã hóa của m chính là <C1, C2>.
Để giải mã <C1, C2>.Ngƣời nhận IDBphải sử dụng cặp khóa bí mật của nó skB dB,xB và thực hiện các bƣớc tính sau:
+ Tính Pm C2 (xB d CB) 1
+ Chuyển điểm Pmvề thành bản tin m ban đầu.
2 ( ) 1 ( ( , , ) ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) B B m B B B B B pub B B m B B B B B m B B B B B m B B B B m C x d C P t P R H ID R P P x d tP P t x P r P h xP x d tP P t x r h x P x d tP P t x d P t x d P P
Khối xử lý mã hóa: cung cấp các sơ đồ mã hóa bất đối xứng
HMAC: để tạo ra mã chứng thực bản tin đảm bảo toàn vẹn dữ liệu SHA-1: đƣợc sử dụng để tạo ra các giá trị hash cho các phép đo toàn vẹn hệ thống
Bộ nhớ không biến đổi: đƣợc dùng để lƣu các thanh ghi PCR và khóa các khóa bí mật đƣợc tạo ra bởi bộ tạo khóa
Bộ tạo khóa: tạo ra các khóa dùng để mã hóa
Bộ tạo số ngẫu nhiên: tạo ra một số ngẫu nhiên làm giá trị đầu vào cho một sự khởi tạo một chuỗi hash
Khối thực thi: thực hiện các hoạt động đóng dấu, gỡ dấu
Khối bộ nhớ ngẫu nhiên: để lƣu các giá trị đang trong quá trình xử lý.