NGHIÊN CỨU MỘT SỐ TẤN CÔNG TÌM KHÓA RIÊNG LIÊN QUAN VIỆC THỰC THI GIÁ TRỊ NONCE TRONG CHUẨN KÝ SỐ ECDSA SECP256K1tìm hiểu về chữ ký sốmột số luộc đồ chữ kys số phor biến hiện naycác tán công chữ ký ssosolược đồ chữ ký số RSAlược đồ chữ ký số Elgamallược đồ chữ ký số ECDSAquá trình tạo và kiểm tra chữ ký số
Trang 2MỤC LỤC
Trang 3DANH MỤC HÌNH VẼ
Hình 1.1 sơ đồ tạo và kiểm tra chữ ký số………3Hình 2.1 lược đồ chữ ký số RSA ( R không có nghĩa và không bảo mật)… 7Hình 2.2 lược đồ chữ ký số RSA (R không có ý nghĩa và có bảo mật)…… 8Hình 2.3 Lược đồ chữ ký số RSA ( R có ý nghĩa và không bảo mật)……….9Hình 2.4 Lược đồ chữ ký số RSA ( R có ý nghĩa và có bảo mật )………… 10Hình 2.5 Lược đồ chữ ký số Elgamal ( không bảo mật )……….12Hình 3.1 Bảng 10 giá trị r thường gặp nhất và số lần xuất hiện của chúng….28Hình 3.2 Số lần xuất hiện của giá trị r trùng lặp nổi bật nhất theo thời gian…29Hình 3.3 Số Bitcoin có thể đánh cắp và số lượng địa chỉ Bitcoin dễ bị tấn công
do ECDSA không được sử dụng lại theo thời gian………31Hình 3.4 Số Bitcoin mà kẻ tấn công đã đánh cắp dựa trên ngưỡng số dư…….32Hình 3.5 So sánh mức tăng đột biến trong đó Bitcoin có thể đã bị đánh cắp do sụt giảm đột ngột số Bitcoin có thể ăn cắp (trái) và trường hợp chúng tôi thấy mức giảm nhẹ cho thấy rằng không có đồng xu nào có thể bị đánh cắp (phải).35
Trang 4DANH MỤC CHỮ VIẾT TẮT
ECDSA Elliptic Curve Digital Signature AlgorithmRSA Ron Rivest, Adi Shamir và Len Adleman
Trang 5CHƯƠNG 1 TỔNG QUAN VỀ CHỮ KÍ SỐ
Chữ kí số thông thường (chữ kí tay) là một phần vật lý của tài liệu, là phương tiện để xác thực nguồn gốc và nột dung của tài liệu đó Ngoài ra, chữ ký tay còn cókhả năng chống chối bỏ, tức là người gửi sau khi đã kí vào tài liệu khi không thể chối bỏ chữ ký thì không thể thay đổi được nội dung
Chữ ký tay là đại diện duy nhất cho người ký, không ai khác có thể giả mạo được và dễ dàng được nhận ra khi nhìn thấy
Việc kiểm tra tính xác thực của chữ kí tay cũng như thực hiện bằng những phương pháp đơn giản ( so sánh chữ kí tay trên tài liệu với các chữ ký đã đăng ký trước của người kí ) nhằm khẳng định chữ ký đúng là của người kí và nội dung củatài liệu không thể bi sửa đổi hoặc thêm bớt
Đối với tài liệu điện tử, chữ ký tay không còn đảm bảo được tính năng của nó
Dó đó cần phải có một phương tiện mới để thay thế chữ ký tay Chữ ký số đã ra đời
và được đưa vào sử dụng một cách hiệu quả
1.1 Lịch sử chữ kí số
Con người đã sử dụng các hợp đồng dưới dạng điện tử từ 100 năm nay với việc
sử dụng mã Morse và điện tín Vào năm 1889, tòa án tối cao bang New Hampshire ( Hoa Kỳ) đã phê chuẩn tính hiệu lực của chữ ký điện tử Tuy nhiên, chỉ với những phát triển của khoa học kỹ thuật gần đây thì chữ ký điện tử đi vào cuộc sống một cách rộng rãi
Vào thập kỷ 1980, các công ty và một số cá nhân bắt đầu sử dụng máy Fax để truyền đi các tài liệu quan trọng Mặc dù chữ ký trên các tài liệu này vẫn thể hiện trên giấy nhưng quá trình truyền và nhận chúng hoàn toàn dựa trên tín hiệu điện tử.Hiện nay, chữ ký điện tử có thể bao hàm các cam kết gửi bằng email, nhập các số định dạng cá nhân (PIN) vào các máy ATM, ký bằng bút điện tử với thiết bị màn hình cảm ứng tại các quầy tính tiền, chấp nhận các điều khoản người dùng khi cài đặt phần mềm máy tính, ký các hợp đồng điện tử online,…
1.2 Định nghĩa chữ ký số
Chữ ký số là một dãy số, là kết quả của phép biến đổi mật mã trên thông báo nhằm cung cấp một phương tiện để kiểm tra tính xác thực của nguồn gốc thông
Trang 6Thông thường các chữ ký số được biểu diễn dưới dạng một dãy số nhị phân Nóđược tạo ra trên cở sở sử dụng tập hợp các quy tắc và tập hợp các tham số để xác định danh tính người ký cũng như kiểm tra tính toàn vẹn của dữ liệu
Phương tiện cơ bản để thực hiện chữ ký số là kỹ thuật mật mã Mỗi chữ ký số được tạo và được kiểm tra tính xác thực thông báo qua các lược đồ chữ ký số mỗi lược đồ chữ ký số bao gồm thuật toán ký và thuật toán kiểm tra Mỗi người có một cặp khóa bao gồm khóa bí mật và khóa công khai , trong đó khóa công khai thường được công bố một cách công khai hoặc phân phối thông qua chứng thực khóa công khai, còn khóa bí mật được giữ bí mật tuyệt đối và không thể tìm ra khóa bí mật từ khóa công khai
Trong thực tế sử dụng, các thông báo thường có độ dài bất kì và nói chung là dài Trong khi đó một lược đồ chữ ký số chỉ ký được các thông báo ngắn
Để ký được các thông báo người ta phải chia các thông báo ra thành nhiều phầnngắn và ký vào tất cả các phần này rồi gửi đi Những hạn chế cơ bản của giải pháp này là:
- Có quá nhiều chữ ký số cho một thông báo làm giãn tin quá mức
- Do quá trình ký một số chữ ký số cần thực hiện các phép toán tốn thời gian
do đó thời gian để ký thông báo là không thể chấp nhận được
Ta mong muốn như trong trường hợp chữ ký viết tay, chữ ký có độ dài ngắn và hạn chế cho dù thông báo có độ dài bằng bao nhiêu Vì chữ ký số được ký cho từngbit của thông báo , nếu muốn chữ ký có độ dài hạn chế trên thông báo có độ dài tùy
ý thì ta phải tìm cách rút gọn độ dài thông báo Nhưng bản thân thông báo không thể rút ngắn được, nên chỉ còn cách tìm cho mỗi thông báo một thông báo thu gọn
có độ dài hạn chế và thay việc ký trên thông báo, ta ký trên thông báo thu gọn Để giải quyết vấn đề này ta sử dụng hàm băm mật mã
1.3 Quá trình tạo và kiểm tra chữ ký số
Trong lược đồ chữ ký số, với đầu vào là thông báo độ dài hữu hạn tùy ý, hàm băm sẽ biến đổi thông báo này thành một thông báo rút gọn và sau đó sẽ dùng thuật toán chữ ký để ký tên thông báo rút gọn đó Cụ thể khi người ký cần ký vào thông báo R anh ta ký bản tóm lược thông báo z = h(R) như sau: y = (z) và truyền cặp (R,y) lên kênh truyền thông Quá trình kiểm tra được thực hiện thông qua việc tính z = h(R) dùng hàm băm công khai h và kiểm tra xem hàm (z,y) có nhận giá trị
“đúng” không
Cụ thể quá trình tạo và kiểm tra chữ ký số được mô ta dưới hình sau
Trang 7Hình 1.1 sơ đồ tạo và kiểm tra chữ ký số.
Quá trình tạo chữ ký số : Khi A cần gửi một thông báo cho B, A sử dụng thuật toán hàm băm đẻ thu gọn thông báo ban đầu nhằm tạo ra bản tóm lược của thông báo Tiếp đến A sử dụng thuật toán ký với đầu vào là bản tóm lược của thông báo và khóa bí mật của A để tạo ra một chữ ký số Sau đó chữ ký số và chứng chỉ cung cấp khóa công khai của A được gắn vào thông báo đã được ký rồi gửi cho B
Quá trình kiểm tra chữ ký số: B cũng sử dụng thuật toán hàm băm tương tự như của A để tạo bản tóm lược của thông báo đã nhận, B sử dụng khóa công khai được cung cấp để giải mã chữ ký và thu được một dãy bit , so sánh kết quả này với bản tóm lược vừa tạo Nếu kết quả giống nhau thì thông báo trên chính là của A gửicho B
Trong trường hợp thông báo cần giữ bí mật cho A có thể mã hóa dữ liệu được ký trước khi gửi
1.4 Mô hình toán học của lược đồ chữ ký số
Một lược đồ chữ ký số là bộ 5 (R, A , K, S, V ) trong đó:
1. R là tập hữu hạn các thông báo cụ thể
Trang 83. K\ không gian khóa là tập hữu hạn các khóa có thể.
4. Với mỗi khóa K € K\ , tồn tại thuật toán ký € S và một thuật toán kiểm tra chữ ký € V Mỗi thuật toán ký : R A và thuật toán kiểm tra chữ ký R x A {đúng ,sai} là những hàm thỏa mãn điều kiện dưới đây :
Với mọi thông báo x € R và mọi chữ ký y €A
Với mỗi khóa K € K\ , các hàm và là các hàm thời gian đa thức , sẽ là hàm công khai còn là hàm bí mật Hàm là khó tính được nếu không biết khóa bí mật
K , điều này đảm bảo cho tính bí mật của chữ ký và chống việc giả mạo chữ ký Nghĩa là cho trước thông báo x, chỉ có người có khóa bí mật K mới có thể tính được chữ ký y để = đúng
1.5 Các tính chất của chữ ký số
1.5.1 Tính xác thực nguồn gốc
Các hệ thống mật mã khóa công khai cho phép văn bản được mã hóa bằng khóa riêng tư mà chỉ người sở hữu khóa mới biết Để sử dụng chữ ký điện tử, văn bản cần được mã hóa bằng hàm băm (văn bản được "băm" thành chuỗi, thường có
độ dài cố định và ngắn hơn văn bản) và sau đó sử dụng khóa riêng của người giữ khóa để mã hóa, sau đó chúng tôi nhận được chữ ký điện tử Khi cần kiểm tra, bộ nhận giải mã (bằng khóa công khai) để lấy lại chuỗi gốc (được tạo thông qua hàm băm ban đầu) và kiểm tra bằng mã băm của văn bản nhận được Nếu hai giá trị (chuỗi) này khớp nhau, thì người nhận có thể tin tưởng rằng văn bản đến từ chủ sở hữu của khóa cá nhân Tất nhiên, chúng tôi không thể đảm bảo 100% rằng văn bản chưa bị can thiệp vì hệ thống vẫn có thể bị hỏng
Đặc biệt quan trọng là vấn đề nhận dạng cho chính các giao dịch Hạn chế chi nhánh ngân hàng gửi một gói tin đến trung tâm ở dạng (a, b), trong đó a là số tài khoản và b là số tiền được chuyển đến tài khoản đó Kẻ lừa đảo có thể gửi một
số tiền đó để lấy một gói nội dung và truyền lại gói đó nhiều lần để kiếm lời
(truyền lại)
1.5.2 Tình toàn vẹn
Cả hai bên tham gia vào quá trình giao tiếp đều có thể là văn bản không bị thay đổi khi chuyển tiếp vì nếu văn bản bị thay đổi, trí tưởng tượng cũng sẽ bị thay đổi và bị phát hiện ngay lập tức Mã hóa sẽ ẩn nội dung của gói tin khỏi bên thứ 3 nhưng không ngăn nội dung của nó bị thay đổi Một ví dụ cho trường hợp này là cộng đồng (tấn công đồng nhất): tiếp tục ví dụ trên, kẻ lừa đảo gửi 1.000.000 đồng
Trang 9vào tài khoản của a, chặn gói tin (a, b) nhưng chi nhánh gửi về trung tâm và gửi góitin (a, b3) thay vào đó để ngay lập tức trở thành một triệu phú! Nhưng vấn đề bảo mật cho trung tâm ngân hàng không liên quan đến tất cả thông tin được gửi từ người gửi đến chi nhánh, vì thông tin đã được băm và mã hóa để gửi đến đích của nó.
1.5.3 Tính không thể chối bỏ
Trong giao dịch, một bên có thể từ chối nhận một tài liệu nào đó do mình gửi Để tránh điều này, người nhận có thể yêu cầu đưa một ký tự vào văn bản Khi chấp nhận, bên nhận sẽ sử dụng chữ ký này làm bằng chứng để bên thứ ba giải quyết Tuy nhiên, bí mật chính vẫn có thể bị lộ, và không thể hoàn toàn đạt được chức năng không thể phủ nhận
Trang 10CHƯƠNG 2 MỘT SỐ LƯỢC ĐỒ CHỮ KÝ SỐ PHỔ BIẾN
HIỆN NAY
2.1 Lược đồ chữ ký số RSA
Bài toán xác thực bằng chữ ký số có thể xem là bài toán “ đối ngẫu” với bài toán bảo mật bằng mật mã , do đó dùng ngược thuật toán lặp RSA ta có thể được một lược đồ chữ ký RSA Lược đồ chữ ký RSA được xây dựng như sau:
Tạo khóa : mỗi đầu mối trong mạng liên lạc cần tạo một cặp khóa là khóa
công khái và khóa riêng bí mật
1. Tạo 2 số nguyên tố lớn ngẫu nhiên và khác nhau :p,q trong đó p và q có
độ lớn xấp xỉ nhau
2. Tính n=p.q và (n) = (p-1)(q-1)
3. Chọn một số nguyên ngẫu nhiên e, ( 0 < e < (n) ) sao cho gcd (e, (n) )=1
4. Tính mod(n) bằng cách dùng thuật toán Eclide mở rộng
5. Đặt = A = , K = {(n,e,d):ed =1 mod(n)} ta có khóa công khai làkhóa riêng bí mật là = d
Tạo chữ ký số : giả sử A phải tạo một chữ ký số để xác thực cho thông báo
R gửi cho B, Khi đò A làm như sau :
1. Biểu diễn bản rõ R dưới dạng một số nguyên trong đoạn [0,n-1]
2. Sử dụng thuật toán kí với khóa riêng của mình để tạo chữ ký trên thông báo R:
S = (R) = modn
3. Gửi thông báo R kèm theo chữ ký S cho B
Kiểm tra chữ ký : với chữ ký S và thông báo R , B có thể kiểm tra chữ ký
số S để xác thực thông báo R theo các bước sau:
1. Nhận khóa công khai = (e.n) của người ký A
2. Sử dụng thuật toán kiểm tra công khai (R,S) của A để kiểm tra chữ ký S theo công thức sau :
(R,S) = đúng R = modn
Trang 11Sơ đồ hoạt động của lược đồ chữ ký số RSA được mô tả như sau:
1. Trường hợp thông báo R không có nghĩa hoặc không cần bí mật (hình 2.1)
Hình 2.1 lược đồ chữ ký số RSA ( R không có nghĩa và không bảo mật)Theo hình 2.1, giả sử A muốn gửi cho B thông báo R có xác thực bằng chữ
ký số của mình Trước tiên, A ký trên thông báo R để được chữ ký số
modSau đó A gửi bộ đôi bao gồm : thông báo và chữ ký số (R, ) cho B
Khi B nhận được (R, ) và kiểm tra điểu kiện R = mod có thỏa mãn không Nếu thỏa mãn , thì B khẳng định rằng Ver (R, ) nhận giá trị “đúng” và chấp nhận chữ ký của A trên R
2. Trường hợp thông báo R không có nghĩa và cần giữ bí mật ( hình 2.2)
Trang 12Hình 2.2 lược đồ chữ ký số RSA (R không có ý nghĩa và có bảo mật)
Theo hình 2.2, giả sử A muốn gửi cho B thông báo bảo mật R có xác thức bằng chữ ký số của mình Trước tiên, A ký trên thông báo R để được chữ ký số:
modSau đó A dùng khóa mã công khai của B để lập bản mã M = mod rồi gửi đếnB
Khi nhận được bản mã M, B dùng khóa bí mật của mình để giải mã M và
thu được R,
Tiếp theo B dùng thuật toán kiểm tra Ver (R, ) để xác nhận chữ ký của A
3. Trường hợp thông báo R có ý nghĩa và không cần giữ bí mật ( hình 2.3)
Trang 13Hình 2.3 Lược đồ chữ ký số RSA ( R có ý nghĩa và không bảo mật)Theo hình 2.3, giả sử thông báo R có ý nghĩa và A muốn gửi cho B thông báo R có xác thực bằng chữ ký số của mình Khi đó, A ký trên thông R để được chữ ký số :
Trang 14Hình 2.4 Lược đồ chữ ký số RSA ( R có ý nghĩa và có bảo mật )
Theo hình 2.4, sau khi tạo chữ ký số mod, A không kết hợp với R để tạo thành thông báo X mà A chĩ mã bằng khóa công khai của B
Khi nhận được bản mã M, trước tiên B giải mã bản mã M để nhận chữ ký , sau đó dùng khóa công khai của A để dịch chữ ký và tạo lại thông báo R Nếu R có nghĩa B khẳng định thông báo từ A và được bảo mật
Độ an toàn của lược đồ chữ ký số RSA : giả mạo chữ ký đối với lược đồ
chữ ký số RSA là khó như giải bài toán phân tích số nguyên n ra thừa số nguyên
tố , hoặc giải phương trình R = mod n Bài toán giả mạo chữ ký được hiểu là : cho trước n, R ,e hãy tạo ra chữ ký số S sao cho R = mod n
Vì S = (R)= mod n, nên muốn tạo ra được S thì đối phương phải tính được d
vì d = mod (n) nên để tính d đối phương phải tính được (n) Mà (n) = (p-1)(q-1) nên để tính (n) đối phương phải biết p và q Tức là đối phương giải bài toán phân
tích n thành tích của 2 thừa số nguyên tố q và q
Tuy nhiên đối phương cũng có thể tìm được S bằng cách giải phương trình đại số tuyến tính R = mod n Đây là loại bài toán không giải được trừ khi biết phân tích n =p.q để đưa bài toán giải phương trình đại số này về bài toán trên vành , và hoàn toàn giải được để tìm S nhờ định lý phần dư trung hoa
Tóm lại, để tính S thì đối phương phải tính được d bằng cách phân tích n = p.q giống như việc phá hệ mật RSA
Trang 15Từ lược đồ RSA nguyên thủy, các lược đồ mã hóa và ký số RSA an toàn đã được xây dựng và thành một chuẩn mật mã được sử dụng rộng rãi trên thế giới.
2.2 Lược đồ chữ ký số Elgamal
Lược đồ chữ ký số Elgamal được đề xuất năm 1985 Đây là một lược đồ chữ
ký số không tất định, có nghĩa là có nhiều chữ số hợp lệ trên thông báo R cho trướcbất kỳ, và thuật toán kiểm tra chữ ký phải có khả năng chấp nhận bất kỳ chữ ký hợp lệ khi xác thực
Lược đồ chữ ký số Elgamal có độ an toàn dựa trên độ khó của bài toán logarit rời rạc và được thiết kế với mục đích dành riêng cho chữ ký số Lược đồ chữ ký số Elgamal được xây dựng như sau:
Tạo khóa: mỗi đầu mối trong mạng liên lạc cần tạo ra một cặp khóa : khóa
công khai và khóa riêng bí mật
1. Tạo một số nguyên lớn p và một phần tử sinh g của nhóm nhân
Tạo chữ ký số: giả sử A phải tạo một chữ ký số để xác thực cho thông báo
R gửi cho B khi đó A làm như sau:
1. Biểu diễn thông báo R dưới dạng một số nguyên trong đoạn [1.p-1]
2. Chọn số nguyên ngẫu nhiên bí mật k, 2p-2
3. Sử dựng thuật toán ký vơi khóa riêng của mình để tạo chữ ký số trên thông báo R:
S= (R,k) = (u,v), trong đó
u = modp
v = (R- au)mod(p-1)
4. Gửi thông báo R kèm theo chữ ký số S cho B
Kiểm tra chữ ký: với chữ ký S = (u,v) và thông báo R, B có thể kiểm tra
chữ ký số S để xác thực thông báo R theo các bước sau:
1. Nhận khóa công khai = (p,g,y) của người ký A
2. Sử dụng thuật toán kiểm tra công khai (R,S) của A để kiểm tra chữ ký S theo công thức sau: (R,u,v)= “đúng”=mod p
Trang 16Chữ ký số S = (u,v) là một cặp hai số trên thông báo R Ta dễ thấy rằng lược đồ chữ ký số được xây dựng như trên là thỏa mãn các điều kiện trong định nghĩa của lược đồ chữ ký số Thật vậy, nếu (R)= (u,v) thì:
=mod p mod p
Vì kv + au = R mod (p-1) Do đó (R,u,v) nhận giá trị “đúng”
Sơ đồ hoạt động của lược đồ chữ ký số Elgamal được mô tả như hình vẽ 2.5
Hình 2.5 Lược đồ chữ ký số Elgamal ( không bảo mật )Theo hình 2.5, giả sử A muốn gửi cho B thông báo R có xác thực bằng chữ
ký số của mình Trước tiên A ký trên thông báo R để được chữ ký số :
u = mod
v = (g- u)mod ( -1 )
Sau đó A gửi bộ đôi bao gồm: thông báo và chữ ký số ( R, ) cho B
Khi B nhận được ( R, ) và kiểm tra điều kiện =mod có thỏa mãn không.Nếu
thỏa mãn, thì B khẳng định rằng (R,S) của A nhận giá trị “đúng” và chấp nhận ký của A trên R
Độ an toàn của lược đồ chữ ký só Elgamal : bài toán giả mạo chữ ký số
Elgamal được hiểu biết là thông báo R và các tham số công khai p,g,y Hãy tìm cặp(u,v) sao cho:
Trang 17Lược đồ chữ ký số Elgamal đòi hỏi phải gửi kèm theo cả thông báo R và chữ
ký số của nó ( u,v) đối phương không biết khóa bí mật = a mà muốn giả mạo chữ
ký số trên R là một việc khó tương đương với việc tính logarit rời rạc
Giả sử đối phương chọn được giá trị u và cố gắng tìm v, khi đó đối phương phải tính
Như vậy, ta có thể tin rằng khả năng giả mạo chữ ký trên một thông báo cho trước khi không biết khóa bí mật là rất khó Do đó lược đồ chữ ký số Elgmal là an toàn
Lược đồ chữ ký số Elgamal có nhược điểm là chữ ký số dài gồm 2 thành phần
là (u,v) và phải gửi đi kèm theo thông báo R Thật vậy, để lược đồ an toàn thì phải
sử dụng số modulo p lớn, nhiều người cho rằng độ dài tối thiểu của p là 1024 bit Khi đó , độ dài của chữ ký số sẽ là 2048 bit Tuy vật , do đó có nhiều tính chất an toàn tốt nên lược đồ này được sử dụng rộng rãi hơn lược đồ chữ ký số RSA và đặc biệt chuẩn chữ ký số được phát triển từ lược đồ chữ ký số Elgamal
2.3 Lược đồ chữ ký số ECDSA
Lược đồ chữ ký số ECDSA là phiên bản sử dụng đường cong elliptic của thuật toán chữ ký số quen thuộc DSA Nó là lược đồ chữ ký số dựa trên đường cong elliptic chuẩn phổ biến nhất, đã được công bố trong các chuẩn ANSI X9.62, FIPS 186-2, IEEE 13632000 và ISO/IEC 15946-2
Sinh khóa trên đường cong elliptic
Một đường cong elliptic E trên trường nguyên tố F p với p nguyên tố, điểm P
thuộc E(Fp) có cấp nguyên tố n, G= (p) là nhóm sinh bởi điểm P cũng có cấp nguyên tố Một cặp khóa trên đường cong elliptic tương ứng với một tập tham số
Trang 18Khóa công khai là một điểm được chọn ngẫu nhiên Q trong nhóm (p) được sinhbởi P khóa bí mật tương ứng sẽ là d = logP Q Thuật toán sinh cặp khóa trên đường
cong elliptic như sau
1. Chọn ngẫu nhiên một số nguyên d thuộc [1,n-1]
Kiểm tra chữ ký ECDSA
Để kiểm tra tính hợp lệ của chữ ký (r,s) của A trên thông báo m, thực thể B nhận một bản rõ có xác thực các tham số chung và khóa công khai Q của A Sau đó B thực hiện theo thuật toán dưới đây
1. Kiểm tra r,s là các số trong khoảng [1,2] Nếu lỗi thì “chữ ký không hợp lệ”
7. Chuyển thành một số nguyên ; tính v = mod n
8. Nếu v=r thì “ chữ ký hợp lệ”, ngược lại “ chữ ký không hợp lệ”
Việc kiểm tra chữ ký cho ta khẳng định chính xác về tính hợp lệ của chữ ký bởi vì nếu chữ ký thực sự là do A tạo ra thì khi đó s = (e+dr) mod n Điều này dẫn đến : k (e+xr) + d(modn)
Do đó X = kP nên v = r
Độ an toàn của lược đồ chữ ký số ECDSA: phụ thuộc vào xác định số
ngẫu nhiên bí mật k từ các giá trị kP và P Bài toán này được gọi là bài toán logarit rời rạc trên đường cong elliptic Hiện nay chưa có thuật toán nào được
Trang 19xem là hiệu quả để giải bài toán này, thuật toán nhanh nhất để giải bài toán này
là thuật toán Pollard-rho
Do có kích thước nhỏ và khả năng phát sinh khóa nhanh nên lược đồ chữ ký
số ECDSA rất được quan tâm để áp dụng cho các ứng dụng trên môi trường giới hạn về thông lượng truyền dữ liệu,giới hạn về khả năng tính toán, khả nănglưu trữ Tuy nhiên vẫn còn hạn chế lớn nhất hiện nay là việc chọn sử dụng các tham số đường cong Elliptic và các điểm cơ sở chung như thể nào để đạt được
độ bảo mật cần thiết
Trang 20CHƯƠNG 3 CÁC TẤN CONG CHỮ KÝ SỐ SECP256K1 LIÊN QUAN GIÁ TRỊ NONCE TRONG LƯỢC ĐỒ CHỮ
KÝ SỐ ECDSA
3.1 Giới thiệu về các rò rỉ khóa của người dùng Bitcoin
Tiền điện tử đã trở thành thực thể phổ biến trên thị trường tài chính toàn cầu
Ví dụ điển hình của một loại tiền tệ như vậy là Bitcoin với vốn hóa thị trường hiện tại là hơn 135 tỷ đô la hoặc Ethereum với vốn hóa thị trường hiện tại trên 44 tỷ đô
la Do đó, không có gì ngạc nhiên khi các kẻ xấu liên tục cố gắng ăn cắp các loại tiền tệ đó, tức là thay đổi quyền sở hữu tài sản tiền điện tử mà không có sự đồng ý của chủ sở hữu hợp pháp Bản chất phi tập trung và ẩn danh (hoặc ít nhất là bút danh) của những loại tiền tệ đó làm cho các hoạt động độc hại như vậy trở nên hấp dẫn hơn, vì việc truy tìm và truy tố bởi các cơ quan thực thi pháp luật khó hơn đáng kể so với các loại tiền tệ truyền thống
Về việc đánh cắp tài sản tiền điện tử, có một số khả năng Tiền điện tử thường dựa trên một giao thức mật mã, sử dụng một số gốc mật mã như đường cong elliptic hoặc chữ ký số , mà người ta có thể cố gắng tấn công Tuy nhiên, cả giao thức và nguyên tắc thường được nghiên cứu kỹ lưỡng và được chứng minh là
an toàn trên lý thuyết hoặc đã được các chuyên gia trong lĩnh vực này thực hiện quy trình kiểm tra Do đó, những kẻ tấn công tốt nhất có thể hy vọng trong cài đặt này là các lỗi triển khai, thường tồn tại trong thời gian ngắn do bản chất nguồn mở của việc triển khai tiền điện tử Sự cố nổi bật nhất của một lỗ hổng triển khai như vậy xảy ra vào tháng 2 năm 2014, khi những kẻ tấn công tìm thấy một lỗ hổng trong sàn giao dịch Bitcoin Mt Gox, cho phép chúng đánh cắp 850.000 BTC trị giá khoảng 450 triệu đô la vào thời điểm đó Mặc dù cuộc tấn công không ảnh hưởng đến bản thân giao thức Bitcoin, nhưng nó đã khai thác tính linh hoạt giao dịch vốn có của các giao dịch Bitcoin để phá vỡ một số giả định của hệ thống kế toán nội bộ của Mt Gox
Mặc dù những sự cố quy mô lớn như vậy rất hiếm, nhưng một loại tấn công phổ biến hơn và do đó cũng nghiêm trọng hơn chống lại tiền điện tử nhằm mục đích làm rò rỉ các khóa mật mã Tài sản tiền điện tử được bảo vệ bằng mật mã bởi một tập hợp các khóa bí mật, được gọi là ví Nếu ví này được lưu trữ theo cách không an toàn, tức là trên đĩa đơn thuần mà không có bất kỳ biện pháp bảo vệ bổ
Trang 21sung nào, thì phần mềm độc hại có thể chỉ cần quét đĩa để tìm các ví đó và báo cáo chúng cho kẻ tấn công, từ đó có thể sử dụng chúng để đánh cắp tài sản Do sự phổ biến của tiền điện tử, những kẻ tấn công đã triển khai ồ ạt phần mềm độc hại nhằm mục đích làm rò rỉ các khóa bí mật như vậy Một trường hợp nổi tiếng về phần mềm độc hại đó là Pony Botnet, hoạt động từ tháng 9 năm 2013 đến tháng 1 năm
2014 Phần mềm độc hại đã quét máy của nạn nhân để tìm các thông tin đăng nhập
bí mật khác nhau, bao gồm cả các khóa tiền điện tử, dẫn đến thiệt hại tài chính là 220.000 đô la Các ví hiện đại ngày nay sử dụng các phương tiện quản lý khóa phức tạp hơn như mã hóa bổ sung bằng mật khẩu, xác thực hai yếu tố hoặc bảo mậtdựa trên phần cứng , nhằm bảo vệ chống lại các cuộc tấn công cục bộ như vậy
Trong bài báo này, chúng tôi có một góc nhìn khác và nghiên cứu xem liệu các vectơ tấn công từ xa có cho phép rò rỉ khóa mật mã từ người dùng hay không Đầu tiên, chúng tôi nghiên cứu xem liệu người dùng (vô tình hoặc cố ý) có làm rò
rỉ khóa mật mã một cách rõ ràng hay không, tức là đăng chúng công khai Để đạt được mục tiêu này, chúng tôi tận dụng khái niệm trí tuệ nguồn mở (OSINT) liên quan đến rò rỉ tiền điện tử Như một nghiên cứu điển hình, chúng tôi coi Bitcoin là loại tiền điện tử phổ biến nhất được sử dụng hiện nay, nhưng bất kỳ loại tiền điện
tử nào khác cũng sẽ phù hợp Là một nền tảng OSINT, chúng tôi coi Pastebin [3],
là một ứng dụng web chia sẻ thông tin phổ biến trên Internet và đã được chứng minh là làm rò rỉ các loại thông tin khác nhau liên quan đến quyền riêng tư [16] Tuy nhiên, các nền tảng OSINT khác như Twitter, Reddit, Facebook hoặc GitHub cũng sẽ hoạt động Chúng tôi hình dung một tình huống trong đó nạn nhân sử dụngPastebin để chia sẻ một phần thông tin bao gồm các bí mật của Bitcoin, chẳng hạn như đoạn mã thực hiện một giao dịch hoặc đầu ra gỡ lỗi của phần mềm ví Nạn nhân tạo ra tệp dán này để chia sẻ thông tin một cách riêng tư, mà không biết rằng thông tin đó sẽ được công bố công khai trong nguồn cấp dữ liệu Pastebin Sau đó,
kẻ tấn công giám sát nguồn cấp dữ liệu này có thể quét từng miếng dán mới để tìm các khóa Bitcoin, chẳng hạn như sử dụng định dạng nổi tiếng của chúng và sử dụng các khóa đó để đánh cắp Bitcoin Để mô phỏng điều này, chúng tôi đã theo dõi nguồn cấp dữ liệu Pastebin kể từ tháng 9 năm 2017 để biết các bí mật về
Bitcoin Kết quả của chúng tôi cho thấy kẻ tấn công có thể đã đánh cắp 22,40 BTC trong khoảng thời gian này
Sau đó, chúng tôi cũng nghiên cứu khả năng rò rỉ khóa ngầm, vì người dùng tiền điện tử (hoặc nhà phát triển phần mềm) có thể áp dụng sai các nguyên tắc mật
mã Đặc biệt, khi tập trung vào Bitcoin, chúng tôi nghiên cứu việc sử dụng không