IBE lần đầu tiên được Adi Shamir nói tới vào năm 1984, khi ông mô tả một cách khái lược về các tính chất và cách thức sử dụng một hệ thống như vậy. Mặc dù ông chưa thực hiện được một công nghệ an toàn và khả thi hoạt động như đã mô tả, song các ưu thế về khả năng sử dụng của IBE so với các công nghệ khác đã được ông mô tả như sau: (hình 2.3)
Hình 2.3. Mã hoá bằng hệ thống IBE
Một hệ thống IBE có các điểm tương tự với các hệ thống khoá công khai truyền thống, nhưng cũng có nhiều điểm khác biệt. Trong khi các khoá công khai truyền thống chứa tất cả các tham số cần thiết để sử dụng khoá, thì để sử dụng một hệ thống IBE, người sử dụng thông thường cần nhận được một tập các tham số công khai từ một bên thứ ba tin cậy. Cùng với những tham số này, người sử dụng có thể tính khoá công khai IBE của người sử dụng bất kỳ khác và dùng nó để mã hóa thông tin gửi tới người đó
Người nhận thông tin đã được mã hoá bởi IBE sau đó xác thực theo một cách nào đó với bộ tạo khoá bí mật (PKG- private key generator). Một bên thứ ba tin cậy tính được khoá bí mật IBE tương ứng với một khoá công khai IBE cụ thể. Bộ tạo khoá bí mật thường sử dụng thông tin bí mật, được gọi là bí mật chủ (master secret) cộng với định danh của người sử dụng để tính ra khoá bí mật. Sau khi khoá bí mật đó được tính ra, nó được phân phối một cách an toàn tới người sử dụng có thẩm quyền (Hình 2.4).
Hình 2.4 . Giải mã bằng hệ thống IBE 2.4. Cài đặt (THE IMPLEMENTATION)
2.4.1. Các thuật toán sử dụng trong IBE
Trong một lược đồ khoá công khai truyền thống, chúng ta có thể tổng hợp các thuật toán tham gia vào việc sinh và sử dụng của một cặp khoá bí mật – khóa công khai gồm thuật toán sinh khoá, thuật toán mã hoá và thuật toán giải mã. Hai thuật toán phụ thêm, chứng thực khoá và kiểm tra tính hợp lệ của khoá, thường được sử dụng trong một số trường hợp áp dụng các lược đồ này.
Để định ra một cách đầy đủ hoạt động của một lược đồ như vậy, chúng ta cần xác định hoạt động của mỗi thuật toán trong số các thuật toán này. Trong bước sinh khoá, một khoá của cặp khoá bí mật – khóa công khai được sinh ra một cách ngẫu nhiên và khoá kia trong cặp được tính ra từ nó. Sau đó, khoá công khai và định danh của người chủ sở hữu nó được ký số bởi Cơ quan chứng thực để tạo ra một chứng thư số. Phép mã hoá được thực hiện nhờ khoá công khai được chứa trong chứng thư này. Phép giải mã được thực hiện nhờ khoá bí mật tương ứng với khoá công khai.
Thuật toán Tóm tắt
Thiết lập Khởi tạo tất cả các tham số hệ thống
Trích Tính khóa bí mật IBE từ bí mật chủ của bộ tạo khóa bí mật và định danh nhờ sử dụng các tham số hệ thống
Mã hóa Mã hóa thông tin nhờ sử dụng khóa công khai IBE đã tính được từ các tham số hệ thống và định danh
Giải mã Giải mã thông tin nhờ sử dụng khóa bí mật IBE đã tính được từ bí mật chủ của bộ tạo khóa bí mật PKG và định danh
Bảng 2.1: Bốn thuật toán tạo nên lược đồ IBE
Trong một lược đồ IBE cũng có 4 thuật toán được dùng để tạo và sử dụng cặp khoá bí mật – khóa công khai (Bảng 2.1). Theo truyền thống, chúng được gọi là thuật toán thiết lập (setup), thuật toán trích (extraction), thuật toán mã hoá (encryption) và thuật toán giải mã (decryption). “Thiết lập” là thuật toán để khởi tạo các tham số được cần tới cho các tính toán IBE, bao gồm bí mật chủ mà bộ tạo khoá bí mật PKG sử dụng để tính ra các khoá bí mật IBE.
“Trích” là thuật toán để tính một khoá bí mật IBE từ các tham số đã được tạo ra trong bước thiết lập, cùng với định danh của người sử dụng và sử dụng bí mật chủ của bộ tạo khoá bí mật PKG để làm việc này. “Mã hoá” được thực hiện bằng khoá công khai IBE đã được tính ra từ các tham số ở bước thiết lập và định danh của người sử dụng. “Giải mã” được thực hiện bằng khoá bí mật IBE đã được tính ra từ định danh của người sử dụng và khoá bí mật của bộ tạo khoá bí mật PKG.
2.4.2. Cài đặt
Để thực hiện ý tưởng mô tả trong phần trước, chúng ta cần một chương trình mã khóa công khai với hai thuộc tính bổ sung:
(A) Khi seed k được biết đến, các khóa bí mật có thể dễ dàng được tính toán cho một phần nhỏ của khóa công khai.
(B) Các vấn đề của việc tính toán seed k từ các cặp khóa công khai – bí
mật được tạo ra với k là không dễ dàng.
Lược đồ RSA sử dụng không thỏa mãn những điều kiện cùng lúc:
(a) Nếu n là một hàm giả ngẫu nhiên dựa trên danh tính của người sử dụng thì ngay cả trung tâm khởi tạo mã cũng không thể phân tích số n này ra thừa số nguyên tố, đồng thời không thể tính được số mũ giải mã d từ số mũ mã hóa e.
(b) Nếu n là phổ biến và seed của nó là 1 thừa số bí mật, thì bất kì ai biết đọc số mũ mã hóa e và số mũ giải mã d tương ứng đều có thể tính toán ra giá trị của seed.
Ở giai đoạn này, chúng tôi đã đề xuất thực hiện cụ thể chỉ cho các chương trình chữ ký dựa trên cơ sở nhận dạng, tuy nhiên chúng tôi cũng ước đoán rằng có sự tồn tại của các hệ bảo mật dựa trên nhận dạng tồn tại và chúng tôi khuyến khích người đọc để tìm kiếm những hệ thống như vậy. Tình huống này gợi lại thời kỳ năm 1976, khi các hệ mật khóa công khai đã xác định thì các ứng dụng tiềm năng của chúng phải trải qua 50 cuộc điều tra cho dù việc triển khai cụ thể lần đầu tiên được công bố ngay trong năm 1978.
Đề án chữ ký dựa trên điều kiện xác minh:
se = i.t f(tfm) (mod n) trong đó
- m là thông điệp - s,t là chữ ký
- i danh tính người sử dụng
- n sản phẩm của 2 số nguyên tố lớn - e là số nguyên tố cùng nhau với ϕ(n) - f là hàm 1 chiều.
Các thông số n, e và hàm f được lựa chọn bởi các trung tâm tạo khóa, và tất cả những người sử dụng có cùng n,e và f thì đều được lưu trữ trong thẻ thông minh của họ. Những giá trị này có thể được thực hiện công khai, nhưng
thừa số của n chỉ được biết đến trung tâm tạo khóa. Sự khác biệt duy nhất giữa người sử dụng là giá trị của i, và khóa bí mật tương ứng với i là g sao cho:
ge = i (mod n).
G có thể dễ dàng được tính ra bởi trung tâm tạo mã, nhưng nếu chương trình RSA an toàn thì không ai có thể trích xuất nguồn gốc điện tử thứ mod n Mỗi thông điệp m chứa rất nhiều cặp chữ ký (s, t), tuy nhiên mật độ phân bổ của chúng thấp đến nỗi mà phương thức tìm kiếm ngẫu nhiên hầu như không thể phát hiện ra bất kỳ chữ ký nào. Việc tính toán những biến khác dựa trên (s,t) cũng là bất khả thi, vì để làm được điều đó cần phải tính được góc mô-đun, bài toán đó đươc xem là vô cùng khó. Song, nếu phát hiện được g, có thể rất dễ dàng tạo ra chữ ký cho bất kì tin nào, kể cả khi không biết phân tích nguyên tố của n. Để ký 1 tin m, người dùng chọn 1 số ngẫu nhiên r và tính:
t = re (mod n).
Hoặc có thể viết lại như sau:
Se = ge.ref(t,m) mod n
Vì e là số nguyên tố cùng nhau với ϕ(n), chúng ta có thể loại bỏ các yếu tố điện tử phổ biến từ các số mũ và do đó s có thể được tính mà không cần bất kỳ khai thác gốc nào.
s = g-r f(trm) (mod n)
Để ngăn chặn các cuộc tấn công dựa trên mối quan hệ tỉ lệ giữa các danh tính (giá trị g) của những người dùng khác nhau, chúng ta nên mở rộng chuỗi miêu tả danh tính của người dùng trở thành 1 chuỗi ngẫu nhiên giả thông qua 1 hàm 1 chiều chung, và sử dụng dạng mở rộng cho giá trị của _i_ trong điều kiện xác thực. Bởi vì mọi người trong mạng lưới đều biết cách áp dụng hàm này, phương thức mã hóa vẫn giữ được đặc tính dựa trên danh tính của nó ngay cả khi khóa chữ ký xác minh chu kỳ không đúng bằng với danh tính
người dùng.
Tính bảo mật của phương thức này phụ thuộc vào việc người giải mã không thể nào tìm ra g qua việc phân tích 1 lượng lớn những chu kì hợp lệ của tin nhắn của anh ta. Nếu ước số chung của f và e là c, chúng ta có thể tìm ra căn bâc c của i dựa trên việc dựng lên điều kiện xác thực, vì vậy một việc tối quan trọng là e phải là một số nguyên tố đủ lớn, và phải là một hàm một chiều đủ mạnh sao cho việc tìm ra c là không thể khi thực hành. Giá trị của r không bao giờ được sử dụng lại hay được tiết lộ, bởi vì g được bảo vệ trong mỗi chu kì dựa vào sự ngẫu nhiên và bí mật của nó.
Những biến thể của điều kiện xác thực mà một trong 2 sự xuất hiện của t bị xóa mất (như là bị thay thế bởi một hằng số) thì không bảo mật. Do đó, việc có tập giá trị lớn và sử dụng một hàm một chiều có thể trộn lẫn hoàn toàn t và m (cách tốt nhất là thông qua những phép toán không thể đảo nghịch hoặc không có quy luật) là điều vô cùng quan trọng. Chúng tôi tin rằng với cách chọ thông số hợp lý, phương thức này có thể trở nên vô cùng bảo mật, dù vậy, cũng chưa thể chứng minh việc bẻ khóa hàm này giống như giải 1 bài toán khó. Mục tiêu chính của hàm này là để dẫn giải bước đầu, như minh chứng đầu tiên cho những phương thức dựa trên danh tính. Phương thức OSS signature cũng có thể sử dụng như 1 phương thức dựa trên danh tính, nhưng sự bảo của nó vẫn còn là 1 vấn đề mở, khi mà những phiên bản trước đã bị bẻ khóa thành công bởi Pollard. Do vậy, chúng tôi không khuyến khích dùng phương thức này ngay trực tiếp trước khi cộng đồng bảo mật chứng minh được tính bảo mật của nó.
2.5. So sánh ibe và hệ thống khóa công khai truyền thống 2.5.1. Thuật toán trao đổi khóa Diffie - Hellman
Năm 1976, Whitfield Diffie và Martin Hellman công bố một hệ thống mật mã hóa khóa bất đối xứng trong đó nêu ra phương pháp trao đổi khóa công khai. Công trình này chịu sự ảnh hưởng từ xuất bản trước đó của Ralp
Merkle về phân phối khóa công khai. Trao đổi khóa Diffie-Hellman là phương pháp có thể áp dụng trên thực tế đầu tiên để phân phối khóa bí mật thông qua một kênh thông tin không an toàn. Kỹ thuật thỏa thuận khóa của Merkle có tên là hệ thống câu đố Merkle.
Giả sử A và B muốn liên lạc sử dụng hệ mật khoá bí mật. Để thoả thuận mật khoá K chung cho cả hai bên qua một kênh không an toàn mà không ai khác có thể biết được, A và B có thể dùng thủ tục thoả thuận khoá Diffie -Hellman sau:
- Chọn trước một số nguyên tố p thích hợp và một phần tử sinh α của - Z*p (2 ≤ α ≤ p-2 ) Các giá trị p và α được công khai.
- A gửi cho B giá trị α^x mod p (2.1) - B gửi cho A giá trị α^y mod p. (2.2)
- Thực hiện các bước sau mỗi khi cần có khoá chung:
- A chọn một số nguyên bí mật x: 1≤x≤p-2 và gửi cho B thông báo (2.1) - B chọn một số nguyên bí mật y: 1≤y≤p-2 và gửi cho A thông báo (2.2).
- B thu được αx và tính khoá chung k:k = (α^x)^y mod p - A thu được αy và tính khoá chung k: k = (α^y)^x mod p Ví dụ: Giả sử A và B chọn p = 11 và α = 2
Nhóm nhân xyclic sinh bởi α:
{ αi , i=0,..,9}={1,2,4,8,5,10,9,7,3,6}
(Các phần tử sinh của nhóm này bao gồm các phần tử sau: α =2, α^3 = 8, α^7 =7, α^9 = 6)
Giả sử A chọn giá trị ngẫu nhiên x = 4 và gửi cho B giá trị 2^4mod 11 = 5.
Giả sử B chọn giá trị ngẫu nhiên y = 7 và gửi cho A giá trị 2^7mod 11 = 7 B nhận được 5 và tính khoá chung k = 5^7 mod 11 =3
A nhận được 7 và tính khoá chung k = 7^4 mod 11 =3 L8xPro 2.5.2. Hệ mật mã ElGamal
Hệ mã hóa với khoá công khai ElGamal được đề xuất năm 1985, dựa vào độ phức tạp của bài toán lôgarit rời rạc.
Nhóm con Gq (cấp q) của Zp; p, q là các số nguyên tố lớn thoả mãn q|
(p-1). Cách xây dựng nhóm Zp, với p là một số nguyên tố lớn.
Chọn số nguyên tố lớn p sao cho bài toán logarit rời rạc trong Zp là
“khó”. Chọn g là phần tử sinh trong Z*p .
Lấy ngẫu nhiên một số nguyên a, a thoả mãn 1£a, a£p-2 và tính toán β=
aa mod p. Khoá công khai chính là (p, a, β), và khoá bí mật là a.
Mã hoá: Khoá công khai là (p, a, β) muốn mã hoá thư tín x (0£x < p)
Lấy ngẫu nhiên một số nguyên k, 0£k £p-2.
Tính toán y1 = ak mod p , y2 = x * βk mod p.
Giải Mã: Giải mã bản mã nhận được bằng hàm Dk’’, x=Dk’’(C) = (y1a).y2 mod pvà nhận được bản rõ.
Tính an toàn của hệ mật mã ElGamal: Giả sử C có được bản mã, để giải mã được thì C phải đối mặt với bài toán sau :
C phải tìm số a sao cho h ºga (mod p) để có thể dùng phương pháp giải mã như B đã làm; Hoặc C phải tìm số b sao cho y1 = gb (mod p) để có thể tính trực tiếp hb và từ đó tìm được r . Cả hai cách tiếp cận nói trên đều đòi hỏi C phải giải bài toán logarithm rời rạc, là một bài toán khó, do đó ElGamal là hệ mã khóa tương đối an toàn.
2.5.3. Hệ mật bất đối xứng trên cơ sỡ đường cong Elliptic
Giả sử Alice và Bob muốn trao đổi thông tin mật cho nhau trên cơ sở đường cong Elliptíc, thì Alice và Bob chọn đường cong Elliptic E với các hệ số a, b, modulo p và điểm khởi tạo G, G∈E, G có bậc là n (nG=0).
Alice hình thành khóa mật và khóa công cộng qua các bước sau:
Chọn d là số ngẫu nhiên làm khóa mật thỏa mãn 1≤d≤n−1.
Công bố khóa công cộng PA=d•G.
Quá trình mã hóa: Bob gửi thông tin mật m cho Alice, Bob thực hiện:
1. Chọn số ngẫu nhiên k <n. Và tính điểm Gk(x1,y1)=k•G.
2. Tính giá trị PAk(x,y)=k•PA.
3. Để mã hóa, Bob chọn tọa độ của điểm PAk để mã hóa. Ví dụ như chọn tọa độ x, và mã hóa thông điệp m: c=m.x (mod p).
4. Gởi cặp (Gk(x1,y1), c) cho Alice.
Quá trình giải mã: Nhận được cặp (Gk(x1,y1), c) từ Bob. Alice tiến hành giải mã qua các bước sau:
1. Tính PBk(x’,y’)=d•Gk
2. Chọn tọa độ x của điểm PBk và tìm phần tử nghịch đảo của x’ là
) (mod
' 1 p
x− và tính giá trị m bằng biểu thức: m=x'−1.c
Kiểm tra tính đúng đắn: Từ bước 1 của quá trình giải mã chúng ta thấy d•Gk=k.d•G= k•PA= PAk(x,y), nên x’=x. Và quá trình giải mã là đúng.
2.5.4. Đánh giá kỹ thuật mật mã khóa công khai
Ưu điểm của hệ mật mã công khai : ưu điểm nổi bật của hệ mật mã công khai so với hệ mật khoá bí mật là khoá có thể công bố công khai, không cần phải có một kênh liên lạc bí mật để truyền khoá. Hệ mật mã khoá công khai ngoài việc mã hoá bản tin, còn dùng làm chữ ký số điện tử, độ phức tạp để có thể tính toán là hàng ngàn tỉ năm,
- Khi mã hoá dữ liệu dùng thuật toán RSA, dữ liệu sẽ được gởi đi dưới dạng những con số, bằng cách dùng Public Key để mã hoá. Trên đường truyền, nếu Hacker bắt được thì đó cũng chỉ là những con số, không thể đoán được gì. Khi nhận được dữ liệu bị mã hoá, người nhận sẽ dùng Private Key phù hợp để giải mã ngược trở lại.
- RSA đơn giản , dễ hiểu, dễ cài đặt . Hiệu suất hoạt động: RSA chạy
châm do việc phát sinh khoá công khai- khoá bí mật hay quá trình mã hoá- giải mã tốn nhiều thời gian vì phải tính toán trên các số nguyên dương cực lớn, có chiều dài vượt quá khả năng chứa của thanh ghi nên phải giả lập, thực hiện lại nhiều lần và sử dụng nhiều đến bộ sử lý. Do đó, RSA không được sử dụng vào mục đích mã hoá các khối lượng dữ liệu lớn mà chỉ ứng dụng trong chữ ký điện tử để mã hoá thông điệp ngắn đã qua hàm băm (hash), giải thuật trao đổi khoá bí mật( khoá dùng cho các hệ thống mã hoá đối xứng- hay khoá riêng) hay là chỉ mã hoá dữ liệu với số lượng nhỏ.
- Tính bảo mật: độ an toàn của RSA dựa trên bài toán phân tích ra thừa số nguyên tố. Do đó, chiều dài của số càng lớn thì càng khó phân tích ra thừa số nguyên tố.
- Việc sinh khóa trong thế giới thực cho các hệ mật “dùng nhiều số bí mật” như RSA là nguy hiểm hơn đáng kể so với cho các hệ mật “dùng số bí mật duy nhất” như ElGamal hoặc (EC)DSA dựa trên Diffie- Hellman.
- Như vậy, mật mã khóa công khai có nhiều tiện lợi, nhưng dùng thế nào cho đúng là vấn đề còn rất phức tạp
2.5.5. Sự khác nhau giữa IBE và hệ thống khóa công khai truyền thống
IBE Hệ thống kháo công khai truyền thống
Các tham số công khai được phân phát bởi bên thứ ba tin cậy
Tất cả các tham số được yêu cầu là một phần của khóa công khai
Bí mật chủ của bộ tạo khóa bí mật (PKG) được sử dụng để tính ra các khóa bí mật
Khóa bí mật của cơ quan chứng thực(CA) được sử dụng để tạp ra các chứng thư số
Các khóa bí mật được sinh ra bởi bộ tạo khóa bí mật PKG
Các khóa bí mật được sinh ra một cách ngẫu nhiên
Các khóa công khai có thể được tính ra bởi người sử dụng bất kỳ
Các khóa công khai được tính ra từ các khóa bí mật và được vận chuển trong một chứng thư số
Các khóa thông thường có thwoif gian sống ngắn
Các khóa thường hợp lệ trong thời gian dài
Chỉ để mã hóa Để mã hóa và ký số
Bảng 2.2. So sánh hệ thống IBE và hệ thống khoá công khai truyền thống