• CHỮ KÝ ĐIỆN TỬ – CƠ SỞ ỨNG DỤNG CỦA BLOCKCHAIN

    Chữ ký điện tử (digital signatures) là công cụ mật mã học (crytographic primitive) được sử dụng rất nhiều trong công nghệ blockchain; chữ ký điện tử và hàm hash là nền tảng cơ bản mà blockchain sử dụng.

    Mật mã hóa Khóa công khai (Public-key Cryptography)

    Chữ ký điện tử cụ thể là chữ ký điện tử dùng trong blockchain được xây dựng trên hệ mật mã hóa khóa công khai hay còn được gọi là mật mã hóa khóa bất đối xứng (asymmetrical crytography).

    Hệ thống này sử dụng một cặp khóa: khóa công khai như tên gọi của nó, được đưa ra cho mọi người biết, không yêu cầu bảo mật, và khóa cá nhân chỉ có chủ nhân mới biết, yêu cầu giữ bí mật. Để một người sử dụng hệ mật mã này, việc đầu tiên người đó sẽ dùng một thuật toán sinh khóa G để tạo ra một cặp khóa mật mã ký hiệu là (sk,pk).

    Như ví dụ minh họa trên, thì sk sẽ là khóa bí mật của Alice, còn pk sẽ là khóa công khai của Alice.

    Bây giờ Bob có thể gửi một thông điệp m đến cho Alice bằng cách dùng khóa công khai của Alice pk để mã hóa cE(m,pk), sao đó Bob gửi thông điệp đã được mã hóa c cho Alice. Alice muốn đọc được nội dung cả văn bản c đã được mã hóa thì sẽ dùng khóa bí mật (private key) của mình để giải mã m=D(c,sk). Người ta gọi đây là hệ mật mã hóa khóa bất đối xứng vì việc mã hóa E và giải mã D dùng hai khóa khác nhau.

    Một hệ thống mã hóa dùng khóa công khai thì bao gồm 3 thuật toán chính (G,E,D): thuật toán sinh khóa G, thuật toán mã hóa E, và thuật toán giải mã D. Với hệ thống mã hóa này thì với mọi thông điệp m và mọi cặp khóa (sk,pk) được sinh ra bởi thuật toán G thì nếu ta dùng khóa bí mật sk để giải mã một nội dung được mã hóa bằng khóa công khai pk thì chúng ta sẽ phải có được nội dung gốc Dsk(Epk(m))=m.

    Trong công nghệ blockchain thì người ta dùng mật mã hóa công khai pk để làm chữ ký điện tử.

    Chữ ký Điện tử

    Chữ ký điện tử như cái tên của nó cho thấy là công cụ mật mã có những tính chất tương đồng như chữ ký tay ta vẫn dùng thực tế. Hai tính chất cơ bản của chữ ký điện tử là:

    • Thứ nhất, chỉ có bạn mới có thể tạo ra chữ ký của bạn, nhưng bất kỳ ai nhìn thấy chữ ký đó đều có thể kiểm tra được chữ ký đó là thật.
    • Thứ hai, chúng ta muốn một chữ ký phải gắn liền với một văn bản cụ thể, để chữ ký đó không thể được mang đi để ký một văn bản khác. Tương tự như chữ ký tay, chúng ta không muốn người ta cắt một chữ ký từ một hợp đồng này để dán sang một hợp đồng khác.

     

    Một cách cụ thể, thì một hệ chữ ký điện tử sẽ gồm có 3 thuật toán sau:

    • (sk,pk):=G(keysize) thuật toán tạo khóa G này giống như thuật toán tạo khóa đã đề cập ở trên.
    • sig:=sign(sk,m) thuật toán ký sẽ lấy đầu vào là một thông điệp m và mà khóa bí mật sk, sau đó tạo ra chữ ký cho thông điệp m dưới mã sk.
    • verify(pk,m,sig) thuật toán kiểm định chữ ký verify sẽ lấy đầu vào là một thông điệm m, một chữ ký sig, và một khóa công khai pk. Thuật toán sẽ trả lại giá trị true nếu sig là chữ ký của thông điệp m dưới mã khóa công khai pk, trả lại giá trị false nếu không phải.

    Chúng ta đòi hỏi hệ chữ ký điện tử phải thỏa mãn 2 tính chất sau:

    • Chữ ký đúng thì phải được kiểm tra ra kết quả đúng: verify(pk,m,sign(sk,m))=true
    • Chữ ký không thể bị giả mạo.

     

    Tính chất đầu tiên rất hiển nhiên. Khi chúng ta ký một thông điệp m bằng chữ ký bí mật sk, sau đó một người khác sử dụng chữ kỹ công khai pk để kiểm tra chữ ký đó trên cùng một thông điệp m thì phải được trả lại kết quả đúng (true). Đây là đòi hỏi cơ bản nhất để chữ ký điện tử có thể được sử dụng.

    Tính chất thứ hai có nghĩa là không có thuật toán hoặc phương tiện tính toán nào để tạo ra được chữ ký giả. Nếu một người khác biết được chữ ký công khai của chúng ta và nhìn thấy chữ ký của chúng ta trên một số thông điệp trước, thì họ không thể giả mạo được chữ ký của chúng ta trên một thông điệp mà họ chưa thấy chữ ký của ta.

     

    Emanvn | Trần Tuấn Anh

    Ngày đăng: 02-11-2017 1,818 lượt xem