Các lượt nộp
    Danh sách bài
    Trang chủ
    Báo lỗi

    solution

    Đề bài: [An toàn thông tin] Chữ ký số ECDSA với nonce cho trước

    Thuật toán chữ ký số ECDSA trên đường cong elliptic E:y2≡x3+ax+b(modp)E: y^2\equiv x^3+ax+b\pmod pE:y2≡x3+ax+b(modp) với điểm cơ sở G=(Gx,Gy)G=(G_x,G_y)G=(Gx​,Gy​) có bậc (order) nnn (nghĩa là nG=OnG=OnG=O) hoạt động như sau. Cho khóa bí mật ddd (1≤d<n1\le d<n1≤d<n), giá trị băm thông điệp đã được rút gọn thành số nguyên eee (0≤e<n0\le e<n0≤e<n, để đơn giản đề bài cho sẵn eee thay vì tính từ hàm băm thật), và một số ngẫu nhiên (nonce) kkk (1≤k<n1\le k<n1≤k<n, đảm bảo gcd⁡(k,n)=1\gcd(k,n)=1gcd(k,n)=1):

    1. Tính điểm R=kG=(xR,yR)R=kG=(x_R,y_R)R=kG=(xR​,yR​) bằng thuật toán Double-and-Add.
    2. r=xR mod nr=x_R\bmod nr=xR​modn (đề bài đảm bảo r≠0r\neq 0r=0).
    3. s=k−1(e+rd) mod ns=k^{-1}(e+rd)\bmod ns=k−1(e+rd)modn, với k−1k^{-1}k−1 là nghịch đảo modulo nnn của kkk (đề bài đảm bảo s≠0s\neq 0s=0).

    Chữ ký là cặp (r,s)(r,s)(r,s). Cho TTT bộ dữ liệu, hãy tính chữ ký (r,s)(r,s)(r,s) cho mỗi bộ.

    Ví dụ: p=97,a=2,b=3,G=(0,10),n=50,d=7,e=3,k=13⇒(r,s)=(37,24)p=97,a=2,b=3,G=(0,10),n=50,d=7,e=3,k=13 \Rightarrow (r,s)=(37,24)p=97,a=2,b=3,G=(0,10),n=50,d=7,e=3,k=13⇒(r,s)=(37,24).

    • Định dạng đầu vào:
      • Dòng 1: số nguyên TTT (1≤T≤1001\le T\le 1001≤T≤100).
      • TTT dòng tiếp theo, mỗi dòng 9 số nguyên: "p a b Gx Gy n d e kp\ a\ b\ G_x\ G_y\ n\ d\ e\ kp a b Gx​ Gy​ n d e k".
    • Định dạng đầu ra:

      TTT dòng, mỗi dòng in "r s" cách nhau một khoảng trắng.

    Ví dụ:

    Đầu vào:

    1
    97 2 3 0 10 50 1 0 3

    Đầu ra:

    23 41
    

    Đầu vào:

    1
    97 2 3 0 10 50 7 3 13

    Đầu ra:

    37 24
    

    Đang tải editor...