3.3.1. Phương pháp tấn công “baby - step giant - step”
Đây là phương pháp tấn công đầu tiên lên hệ mật mã ECC do Shanks đưa ra,
và thực hiện với thời gian là hàm mũ. Nó giải bài toán DLP trong trường nguyên tố
Zp được mở rộng cho bài toán EDLP.
Bài toán: Tìm k sao cho kG = Q trên E(Fq) với #E(Fq) = N, giả sửk tồn tại thực sự.
Thuật toán
1. Chọn số nguyên m > N
2. Tính mG
3. Với i = 0 đến i = m-1 tính (và lưu lại) iG
4. Với j = 0 đến j = m-1 tính (và lưu lại) Q – jmG
5. Sắp xếp danh sách trong bước 3 và 4 theo một thứ tự nhất định
6. So sánh các danh sách ở các bước 3 và 4 cho đến khi tìm được cặp i, j thỏa mãn iG = Q – jmG 7. Kết quả trả lại là k i + jm (mod N) Chứng minh Vì chúng ta chọn m thỏa mãn m2 > N nên sẽ có k < m2. Đặt k0 k (mod m), 0k0 m. Đặt k1 = (k – k0) / m. Ta sẽ có: k = k0 + mk1, với m k 1
0 Trong thuật toán trên ta thử tìm tất cả i thuộc khoảng của k0 và tất cả j
trong khoảng của k1cho đến khi tìm được i, j thoả mãn iG = Q – jmG (i + jm)G =Qhay k = i + jm. Vì k tồn tại nên k0, k1 tồn tại.
Độ phức tạp thời gian
Bước 1 cần O(log N). Bước 2 và bước 3 cần O(m+1) = O( N ). Bước 4 cần
O( N ). Thuật toán sắp xếp trong bước 5 được thực hiện trong O(log( N ) N ) thời gian. Bước 6 được thực hiện trong O( N ) thời gian. Bước 7 cũng được thực hiện trong O( N ) thời gian. Bỏ qua các yếu tố logarith rời rạc ( N đủ lớn để bài toán DLP là khó giải), thì thời gian thực hiện của thuật toán là hàm mũ của N . Thuật toán này quá chậm vì thời gian là hàm mũ của độ dài dữ liệu vào N.
50
3.3.2. Phương pháp tấn công MOV
Phương pháp tấn công MOV (tên của 3 nhà khoa học Menezes, Okamoto, và Vanstone) làm yếu bài toán logarit rời rạc trên đường cong elliptic E(Fq) thành bài toán logarith rời rạc trên trường m
q
F với m nào đó. Khi đó có thể tấn công bằng tấn công chỉ số, nhất là khi m nhỏ.
Chúng ta bắt đầu bằng định nghĩa cặp Weil cho các đường cong elliptic E(F).
Xét đường cong elliptic E(F) và N là một số nguyên không là ước của đặc số của F.
Đặt E[N] là tập hợp các điểm trên đường cong E.
| 1
N
N x F x
. Như vậy, N là nhóm các nghiệm thứ N trong F. Vì đặc số của F không chia hết cho N, xN = 1 không có nghiệm kép, nghĩa là có N
nghiệm phân biệt trong F.
Định nghĩa
Một cặp Weil là một ánh xạ: eN :E[N]xE[N] n thỏa mãn: 1. eN là song tuyến tính với mọi biến
2. eN là không suy biến với mọi biến. Nghĩa là, nếu eN(S, T) = 1 với mọi S, thì
T = O, và nếu eN(S, T) = 1 với mọi T thì S = O. 3. eN (T, T) = 1 T 4. eN(T, S) = eN(S, T)-1 S, T 5. Nếu à một phần tử đặc biệt của F đóng vai trò là các hệ số của E, thì eN( S, T) = (eN(S, T)) S, T 6. Nếu là một separable endomorphism của E thì eN( (S), (T)) = eN(S, T)deg S, T Bài toán Tìm k thỏa mãn kG = Q trên E(Fq) với #E(Fq) = N và giả sử k tồn tại. Sử dụng phép làm yếu bài toán logarith rời rạc trên đường cong E(Fq) thành bài
toán logarith rời rạc trên m
q F
51
Thuật toán
Khi (d1, d2, …,dk) = N, thực hiện các bước sau, sau mỗi bước tăng i lên 1 1. Chọn một điểm ngẫu nhiên ( m) q i E F S . 2. Tính bậc Mi của Si 3. Đặt di = gcd(Mi, N) và Ti = (Mi/di)Si. 4. Đặt 1i = eN(G, Ti), 2i=eN(Q, Ti).
5. Giải bài toán logarith rời rạc ki
i 1 = 2itrong trường m q F và tìm được ki (mod di)
Sử dụng các giá trị ki (mod di) để tìm k (mod N) với k ki (mod di) i. Giá trịk chính là kết quả cần tìm.
Chứng minh
Ở bước 1 và 2, chúng ta chọn một điểm và tính bậc của nó. Bước 3 tìm Ti .
Đặt eN(R,Ti)với R là một điểm tùy ý trên E( m
q F ) Khi đó: 1 ) , ( ) , ( ) , ( ) , ( e R T d eN R dTi eN R MiSi eN R O i N d , và vì 1,2 m q d F rồi giải ki i i 1 2 trong m q F Đặt kG = Q, và định nghĩa li thỏa mãn k li (mod di). Ta có: eN(kG, Ti) = eN(Q, Ti) eN(G, Ti)k = eN(Q, Ti) k i i 2 1 Vì 1di 1 nên ki i i 1 2
(mod di) li ki (mod di) và k phải bằng ki (mod di).
Như vậy, việc tìm ki sẽ phục vụ việc tìm k.
Độ phức tạp thời gian
Khi có các ki việc tìm k là dễ dàng, vì vậy thời gian chạy của thuật toán phụ
thuộc vào việc tìm ki.
Thời gian tìm ki phụ thuộc vào độ lớn của trường m
q
F . Nếu m càng lớn thì tính toán càng phức tạp. Không có một tiêu chuẩn chung để chọn m phù hợp cho tất cả các đường cong elliptic.
52
Quay trở lại bài toán tính độ phức tạp, dựa trên đặc điểm E(F m
q ) 2 1 n n Z Z với n1, n2 thỏa mãn n1|n2. B1, B2 là các điểm trên E(F m q ) với các bậc n1
và n2. Bất kỳ điểm Si nào tìm được cũng có thể biểu diễn dưới dạng a1B1 + a2B2 với
a1, a2 nào đó. Giả sử p là một số nguyên tố pe||N. Khi đó, pe|n2. Nếu p không nguyên tố cùng nhau với a2 thì pe|n2 pe|Mivới Mi là bậc của Si. Suy ra pe|di = gcd(Mi, N). Vì Si được chọn ngẫu nhiên nên a2 cho Si cũng ngẫu nhiên, do đó xác
suất để p không nguyên tố cùng nhau với a2 là 1 – 1/p. Suy ra, xác suất để :
pe|di1–1/p với mọi i và với mọi pe||N.
Xác suất này đủ thấp để chỉ có một vài di cần cho pe|lcm (d1, d2,…, dk) đúng
với mọi p. Vì vậy chúng ta không cần lặp các bước của thuật toán quá nhiều lần. MOV là thuật toán hàm mũ nhỏ đầu tiên để giải bài toán EDLP với k nhỏ. Nó dựa vào tính đẳng cấu giữa đường cong elliptic và trường hữu hạn khi
gcd(#E(Fq), q) = 1. Vì vậy, tính hiệu quả của nó giới hạn trong một lớp các
đường cong elliptic là lớp các đường cong supersingular vì tồn tại k 6 cho các
đường cong này. Với các đường cong elliptic khác (các đường cong nonsupersingular), k quá lớn để áp dụng tấn công MOV.
Miyaji chứng minh rằng phép làm yếu trên hiệu quả cho các đường cong
elliptic trên trường F2r . Còn các đường cong elliptic trên trường Fp (với p là số
nguyên tố lớn) tránh được cách tấn công này. Hơn nữa, Miyaji đề xuất một cách xây dựng một đường cong elliptic để việc làm yếu EDLP về DLP là không thể. Bởi vậy, không phải mọi hệ mật mã trên đường cong elliptic đều có thể bị tấn công bởi
53
Chương 4 . ỨNG DỤNG CHỮ KÝ SỐ TRÊN ĐƯỜNG CONG ELLIPTIC
Các hệ mật trên đường cong elliptic (ECC) có thể được sử dụng hiệu quả
trong các thiết bị không dây như là Cell phone , PDA , Smart card... Vì ECC có thể hoạt động trên các thiết bị nhỏ (bộ nhớ nhỏ, bộ tính toán bé, số “cổng” ít, ít năng
lượng). Mà vẫn đảm bảo độ mật cao. Với ECC chỉ cần sử dụng các khóa có độ dài
nhỏ, nhưng vẫn hiệu quả như các hệ mật khác có độ dài gấp nhiều lần. Ví dụ hệ mật RSA dùng khóa có độ dài 1024 bit , nhưng ECC chỉ cần khóa 160 bit đã mang lại
độ mật tương tự. Mặt khác, ECC còn tính nhanh hơn gấp 4 lần.
Khóa RSA 1024bit có thể thỏa đáng giao dịch ngày nay, nhưng đến cuối thập
kỷ này, để bảo đảm độ mật cần thiết, phải sử dụng khóa RSA 2048 bit. Trong khi
đó, để có được độ mật tương tự , ECC chỉ cần khóa 203 bit. Hơn thế nữa thời gian tính toán chỉ bằng 1/10 , chưa kể đến việc ECC sinh khóa nhanh hơn RSA.
Các hoạt động kinh tế xã hội (thanh toán, rút tiền, bỏ phiếu, đấu thầu , góp ý kiến) diễn ra mọi nơi mọi lúc. Các thiết bị cầm tay có kết nối an toàn từ xa (Smart card , E-token..). Chắc chắn sẽ được sử dụng nhiều để tiết kiệm thời gian và sức lực.
Khi đó không thể quên công nghệ ECC.
Hai ứng dụng là phổ biến trên thế giới có thể áp dụng ECC, đó là Bỏ phiếu điện tử và Hệ thống tiền điện tử.
54
4.1.ỨNG DỤNG TRONG BỎ PHIẾU ĐIỆN TỬ
Theo phương thức bỏ phiếu điện tử , mỗi lá phiếu phải có Thông tin định danh. Nó có thể là một con số x nào đó và phải khác nhau. Trên mỗi lá phiếu phải có chữ ký trên số định danh x , thì lá phiếu mới mới có giá trị để bầu cử. Nếu cử tri
chuyển ngay Số định danh x cho ban kiểm phiếu ký thì lập tức họ xác định mối liên hệ giữa cử tri và x (ví dụ qua địa chỉ Internet nơi người gửi ).
Đó là điều cử tri không mong muốn gây rắc rồi sau này. Để tránh tình huống này, cử tri đổi x thành y trước khi đưa cho ban kiểm phiếu ký xác nhận. Ban kiểm phiếu ký vào y, mà không biết đó là số định danh x đã che dấu (làm mù). Họ trao chữ ký trên y là z cho cử tri. Cử tri xóa mù trên z sẽ được chữ ký ban kiểm phiếu trên số định danh x, như vậy cử tri có quyền bầu cử.
Để phòng tránh sự gian lận thông đồng giữa một người nào đó trong ban kiểm phiếu với cử tri. Hệ thống dùng “Đa chữ ký mù” để bảo đảm sự nhất trí cao khi cấp quyền bỏ phiếu cho cử tri.
4.1.1. Quy trình bỏ phiếu điện tử
Giai đoạn chuẩn bị
Các thành phần kỹ thuật của hệ thống bỏ phiếu cũng như chuẩn bị cơ cấu tổ
chức. Người kiểm phiếu và nhân viên bầu cử được chỉ định. Các nhân viên bầu cử
thực hiện tất cả các bước trong quá trình bỏ phiếu như điều hành hệ thống máy tính, cung cấp dữ liệu cần thiết cho hệ thống. Người kiểm tra cuộc bầu cử sẽ điều khiển toàn bộ quá trình bầu cử bằng cách chỉ đạo các nhân viên bầu cử nhờ việc kiểm tra sự hoạt động của hệ thống máy tính. Hơn nữa, BKP cũng được chỉ định. Đây là người chịu trách nhiệm về kết quả bầu cử. Cuối cùng, danh sách các cử tri cũng được thiết lập. Trong bước này, quan trọng nhất là cơ chế định danh người gửi dùng
để sử dụng trong quá trình bỏ phiếu của cử tri.
Giai đoạn bỏ phiếu
Giai đoạn các cử tri thực hiện bỏ phiếu. Các cử tri phải có một hình thức định danh tính hợp lệ của lá phiếu. Thêm vào đó, một vài kỹ thuật (mã hoá) cần được áp dụng để bảo đảm tính toàn vẹn của lá phiếu.
Giai đoạn Kiểm phiếu và thông báo kết quả
55
4.1.2. Sử dụng ECC trong bỏ phiếu điện tử
1 .Cấp quyền bầu cử
Khi đã được kiểm traCử tri cần BĐK ký trên bí danh của mình. BĐK sẽ sử
dụng sơ đồ chữ ký mù Harn để ký như sau:
Sơ đồ 4.4.1. Sơ đồ ký mù của BĐK khi cấp quyền bầu cử cho cử tri
1. Cử tri gửi ID m của mình đến BĐK để xin cấp chữ ký.
2. BĐK có cặp khóa công khai/ bí mật trên đường cong elliptic là (d, Q). Khi có yêu cầu ký, BĐK chọn ngẫu nhiên k [2,q1]và tính R kG (xk,yk). Tính 1 0 ) ( n i i k i k c p x c r , trong đó 1 0 n i i k i k c x , 0cik p. Gửi r và Rcho cử tri.
3. Cử tri chọn các tham số làm mù a,b[1,q1], tính R trên E sao cho R = aR+bG = (xk, yk) và tính r = c(xk) và m mr a1r
)
( .
Sau đó gửi mcho BĐK (m là m sau khi đã bị làm mù). 4. BĐK ký mù (ký trên văn bản đã bị làm mù): ) (mod ) (m r k q d s , rồi gửi scho cử tri.Jerry nhận
được s, xóa mù để có được chữ ký s trên m bằng cách tính
b s a
s Cặp (r, s) là một chữ ký ECC trên định danh m của cử
tri.
Để tăng tính an toàn và công bằng của cuộc bầu cử nhằm tránh gian lận tại
giai đoạn đăng ký (cấp quyền bầu cử cho những cử tri không hợp lệ), nên thiết lập
BĐK gồm t thành viên (ít nhất là 2). Khi đó, để ký lên định danh của cử tri, t thành viên này có thể dùng giao thức đa chữ ký mù 3.2.4 của Harn để thực hiện việc ký.
2. Bỏ phiếu
Sau khi đã đăng ký và được cấp quyền bầu cử, cử tri sẽ tiến hành bỏ phiếu và giả sử lá phiếu của cử tri thứi là vi. Cử tri tiến hành các bước như sau:
56
1. Nhúng nội dung của lá phiếu lên E, khi đó vi được thể hiện thành một điểm (Pm)iE. Cử tri phải mã hóa Pmbằng khóa công khai của BKP.
2. Giả sử khóa bí mật của BKP là aT thì khóa công khai sẽ là aTG. Cử tri chọn ngẫu nhiên ri và Pm được mã hóa thành một cặp điểm trên E:
Vi = (C1, C2) = (riG,( Pm)i + ri(aTG) 3. Cử tri gửi điểm Vi đến BKP.
3. Kiểm phiếu
Khi các lá phiếu được chuyển về BKP, nó sẽ được trộn bằng một máy trộn ngẫu nhiên, nhằm ngăn chặn các tiêu cực trong quá trình bỏ phiếu. BKP nhận được các Vi = (C1, C2). Do tính chất đồng cấu của hệ mã ECC được sử dụng, BKP không cần giải mã từng lá phiếu mà có thể tính tổng các lá phiếu đã mã hóa rồi từ đó tính
được kết quả cuối cùng của cuộc bỏ phiếu.
Để giải mã từng lá phiếu, BKP tính:
C2 – aT(C1) = Pm + k(aTG) – aT(kG) = Pm
Tuy nhiên, không giải mã từng lá phiếu, BKP vẫn tính được kết quả cuộc bầu cử theo công thức: N i i T N i N i i m C a C P 1 1 1 1 2
57
4.2. ỨNG DỤNG TRONG HỆ THỐNG TIỀN ĐIỆN TỬ
Một đồng tiền điện tử C có 2 thông tin quan trọng nhất : Số Seri và giá trị của
đồng tiền. Cũng như đồng tiền thông thường(bằng giấy). Hệ thống phải bảo đảm các yêu cầu sau: Ngần hàng phát hành đồng tiền C “khó” nhận biết đồng tiền này(ví
dụ : Số seri) của người mua hàng đã rút ra từ tài khoản của họ. Ngân hàng thu nạp
đồng tiền C cũng khó thể biết đồng tiền C đã được nhận từ người bán. Mặt khác
người bán hàng khó thể biết C được rút từ tài khoản nào. Để thực hiện yêu cầu trên, hiện nay người ta dùng “Chữ ký mù” để ký lên đồng tiền C.
Như vậy tiền điện tử C không lưu lại dấu vết của những ai đã “tiêu” (Spending) nó. Trên thực tế đồng tiền C không chỉ do một ngân hàng phát hành, nó có thể là đồng tiền chung của nhiều ngân hàng. Vì vậy nó phải mang dấu ấn của các ngân hàng liên quan. Trong trường hợp này Tổ chức liên ngân hàng sẽ thống nhất một “Đa chữ ký mù” để ký lên đồng tiền C.
Quá trình giao dịch sẽ chia thành bốn giai đoạn:
4.2.1. Tạo tiền ecash
1. Sau khi biết được số tiền cần phải thanh toán, phần mềm tại máy khách hàng sẽ sinh ra dãy số ngẫu nhiên, dãy số này được xem như là dãy số tiền tương trưng cho số tiền cần phải rút từ ngân hàng. Một thừa số mù sẽ được đưa vào
dãy số, thừa số mù này sẽ khiến cho ngân hàng không thể lưu giữ danh sách dãy số tiền và không biết được nó được tiêu xài ở đâu.
2. Dãy số đã được làm mù này sẽ được gửi đến ngân hàng mà khách hàng đã có tài khỏan trước đấy.
3. Ngân hàng sẽ kiểm tra thông tin được gửi đến. Sau đó ngân hàng sẽ ký lên
thông điệp(dãy số), vì dãy số đã được làm mù nên ngân hàng sẽ không biết nó là của ai, tại thời điểm đấy tài khoản của khách hàng sẽ bị trừ một khoảng
tương ứng.
4. Ngân hàng gửi dãy số sau khi được ký đến khách hàng.
5. Khách hàng sẽ giải mù những dãy số này, như vậy dãy số cộng với chữ ký