CHƯƠNG 1 – GIỚI THIỆU 1. Kể từ khi xuất hiện vào năm 2009, công nghệ blockchain đã làm thay đổi cách chúng ta hiểu về quá trình giao dịch và lưu trữ dữ liệu trực tuyến. Được tạo ra bởi một người (hoặc nhóm người) ẩn danh dưới bí danh Satoshi Nakamoto, blockchain là một hệ thống phân tán dùng để ghi lại các giao dịch một cách an toàn và không thể sửa đổi. Điều này đã thúc đẩy sự phát triển của nhiều ứng dụng mới trong các lĩnh vực như tài chính, y tế, chuỗi cung ứng, và nhiều lĩnh vực khác.2 Mục tiêu và ý nghĩa của báo cáo Trong bối cảnh đầy thách thức và cơ hội này, nghiên cứu này tập trung vào việc nghiên cứu và thảo luận về các kỹ thuật mã hóa trong blockchain.
Mã hóa là một yếu tố cốt lõi trong bảo mật của blockchain, đóng vai trò quan trọng trong việc bảo vệ tính toàn vẹn của dữ liệu và đảm bảo tính riêng tư của người dùng. Mục tiêu của bài báo cáo này là: - Hiểu rõ các nguyên tắc cơ bản của mã hóa trong blockchain. - Xem xét các phương pháp mã hóa phổ biến được sử dụng trong blockchain. - Đánh giá tầm quan trọng của mã hóa đối với tính bảo mật của blockchain và các ứng dụng của nó.
6 CHƯƠNG 2 – NỘI DUNG 2.1 Khái niệm Mật mã học (Cryptography) là một ngành khoa học nghiên cứu về mã hóa và giải mã thông tin. Mã hóa là quá trình biến thông tin thành dạng không thể đọc được trừ khi có khóa giải mã phù hợp. Giải mã là quá trình biến thông tin đã được mã hóa thành dạng có thể đọc được. Mật mã học có 5 thuộc tính bao gồm: a) Tính bảo mật: Người sở hữu hoặc các thực thể sở hữu dữ liệu thông tin này ; b) Tính toàn vẹn: Thông tin , dữ liệu chỉ được sửa đổi do thực thể sở hữu có quyền truy cập.
c) Tính xác thực: Thuộc tính này cung cấp sự đảm bảo về danh tính của thực thế (người gửi , người nhận) và tính hợp lệ của văn bản mã hóa , dữ liệu. Có 2 loại xác thực như sau : Xác thực thực thể Xác thực nguồn gốc của dữ liệu (Entity authentication) (Data origin authentication) - Xác thực thực thể dùng để kiểm tra sự - Phương pháp này dùng để kiểm tra nguồn hiện diện của thực thể trong một phiên gốc của dữ liệu là hợp lệ. - Xác thực nguồn gốc dữ liệu ngụ ý tính - Thông thường, người dùng cần tài toàn vẹn của dữ liệu vì nếu nguồn được khoản bao gồm tên và mật khẩu để truy chứng thực thì dữ liệu không được thay đổi. cập vào hệ thống được gọi là 1 nhân tố - Các thuật toán thường được sử dụng : xác thực (single factor authentication).
Message Authentication Codes (MACs), - Cần phải có nhân tố thêm vào để đảm chữ ký điện tử. bảo tính bảo mật của hệ thống. 7 d) Tính không chối bỏ: Tính không chối bỏ là sự đảm bảo rằng một thực thể không thể từ chối một cam kết hoặc hành động trước đó bằng cách cung cấp bằng chứng không thể giả mạo. Đây là một dịch vụ bảo mật cung cấp bằng chứng không thể giả mạo cho thấy một hành động cụ thể đã xảy ra.
Đây là một thuộc tính cần thiết đối với các tình huống có thể tranh chấp trong đó một thực thể đã từ chối các hành động được thực hiện. Ví dụ như đặt hàng trên hệ thống thương mại điện tử. e) Tính trách nhiệm Thuộc tính này đảm bảo rằng các hành động gây ảnh hưởng đến bảo mật của hệ thống đều có thể tìm được các thực thể gây ra hành động này. Thuộc tính này thường được cung cấp bởi các bảng logging và cơ chế kiểm toán (audit mechanisms).2 Mật mã đối xứng.
Mật mã đối xứng là loại mật mã mà khóa được dùng để mã hóa và giải mã là như nhau , phương pháp mã hóa này còn được biết đến mật mã chia sẻ khóa mã hóa (shared key cryptography). Khóa mã hóa cần phải được chấp thuận giữa người gửi và người nhận trong quá trình trao đổi dữ liệu , do đó phương pháp này còn có thêm tên gọi khác là mật mã khóa bí mật (secret key cryptography) 8 Có 2 loại mã hóa đối xứng: stream ciphers và block ciphers. Thuật toán Data Encryption Standard (DES) và Advanced Encryption Standard (AES) thường được sử dụng trong block ciphers, thuật toán RC4 và A5 thường được sử dụng trong stream ciphers. Stream ciphers là một thuật toán mã hóa , nó hoạt động dựa trên việc tạo ra một luồng bit ngẫu nhiên (key stream) và áp dụng lên dữ liệu đầu vào (plain text) để tạo ra dữ liệu mã hóa.
Có 2 loại stream ciphers: đồng bộ (synchronous) và không đồng bộ(asynchronous). Trong đó, synchronous stream ciphers có key stream hoàn toàn độc lập, đối với asynchronous stream ciphers có key stream phụ thuộc vào dữ liệu mã hóa. Trong thuật toán này , mã hóa và giải mã là 2 hàm số như nhau vì chúng là phép cộng modulo 2 ( tổng của phép chia 2 lấy dư) hoặc phép toán logic XOR. Các khóa trong thuật toán này được bảo mật và lấy ngẫu nhiên từ key stream.
Block ciphers là thuật toán mã hóa hoạt động bằng cách phân rã dữ liệu thô thành các khối có độ dài nhất định và áp dụng quá trình mã hóa theo từng khối. Thuật toán này được thiết kế dựa trên kiến trúc Feistel Cipher. Các thuật toán block ciphers hiện nay như AES được thiết kế bằng cách sử dụng bằng phép chuyển vị và hoán vị còn được gọi là substitution-permutation network (SPN). Mật mã Fiestel dựa trên mạng Fiested, là cấu trúc được phát triển bởi Horst Feistel.
Cấu trúc này dựa trên ý tưởng kết hợp nhiều vòng hoạt động lặp đi lặp lại để đạt được các thuộc tính mật mã mong muốn được gọi là sự nhầm lẫn và phổ biến. Mạng Feistel hoạt động bằng cách chia dữ liệu thành hai khối (trái và phải) và xử lý các khối này thông qua các hàm vòng có khóa. Sự nhầm lẫn làm cho mối quan hệ giữa văn bản được mã hóa và văn bản gốc trở nên phức tạp. Điều này đạt được bằng cách thay thế trong thực tế.
Ví dụ: 'A' trong văn bản thuần túy được thay thế bằng 'X' trong văn bản được mã hóa. Trong các thuật toán mã hóa hiện đại, việc thay thế được thực hiện bằng cách sử dụng các bảng tra cứu gọi là hộp S (S-boxes). Thuộc tính khuếch tán trải văn bản thuần túy một cách thống kê trên dữ liệu được mã hóa, đảm bảo rằng ngay cả khi một bit bị thay đổi trong văn bản đầu vào, nó sẽ dẫn đến thay đổi ít nhất một nửa (trung bình) số bit trong văn bản mật mã. Cần có sự nhầm lẫn khiến việc tìm kiếm khóa mã hóa trở nên rất khó khăn ngay cả khi nhiều cặp dữ liệu được mã hóa và giải mã được tạo bằng cùng một khóa.
Trong thực tế, điều này đạt được bằng cách chuyển vị hoặc hoán vị. 11 Một số chế độ hoạt động của block ciphers : - Chế độ Electronic Codebook (ECB) - Chế độ Cipher Block Chaining (CBC) - Chế độ Ciphertext Feedback (CFB) - Chế độ Output Feedback (OFB) - Chế độ Counter (CTR) 2.3 Mật mã bất đối xứng. Mật mã bất đối xứng đề cập đến một loại mật mã trong đó khóa được sử dụng để mã hóa dữ liệu khác với khóa được sử dụng để giải mã dữ liệu. Còn được gọi là mật mã khóa công khai, nó sử dụng khóa chung (public key) và khóa riêng (private key) để mã hóa và giải mã dữ liệu tương ứng.
Nhiều thuật toán mật mã bất đối xứng khác nhau đang được sử dụng hiện nay như : RSA, DSA và El-Gammal. Sơ đồ dưới giải thích cách người gửi mã hóa dữ liệu bằng khóa chung của người nhận và sau đó được truyền qua mạng tới người nhận. Khi đến được người nhận, nó có thể được giải mã bằng khóa riêng của người nhận. Bằng cách này, khóa riêng vẫn ở phía người nhận và không cần chia sẻ khóa để thực hiện mã hóa và giải mã : 12 Một sơ đồ khác cho thấy cách mật mã khóa công khai có thể được sử dụng để xác minh tính toàn vẹn của tin nhắn mà người nhận nhận được.
Trong mô hình này, người gửi ký dữ liệu bằng khóa riêng của họ và truyền thông báo đến người nhận. Khi tin nhắn được nhận từ phía người nhận, nó có thể được xác minh tính toàn vẹn bằng khóa chung của người gửi: Các cơ chế bảo mật được cung cấp bởi hệ thống mật mã khóa công khai bao gồm thiết lập khóa, chữ ký số, nhận dạng, mã hóa và giải mã. Cơ chế thiết lập khóa liên quan đến việc thiết kế các giao thức cho phép thiết lập khóa trên một kênh không an toàn. Dịch vụ chống chối bỏ, một đặc tính rất được mong 13 muốn trong nhiều trường hợp, có thể được cung cấp bằng chữ ký số.
Đôi khi, điều quan trọng là không chỉ xác thực người dùng mà còn xác định thực thể liên quan đến giao dịch; Điều này cũng có thể đạt được bằng cách kết hợp chữ ký số và các giao thức phản hồi thách thức. Cuối cùng, cơ chế mã hóa để cung cấp tính bảo mật cũng có thể được thực hiện bằng cách sử dụng các hệ thống mật mã khóa công khai, chẳng hạn như RSA, ECC hoặc El-Gammal. Thuật toán khóa công khai tính toán chậm hơn so với thuật toán khóa đối xứng. Do đó, chúng không được sử dụng phổ biến trong việc mã hóa các tệp lớn hoặc dữ liệu thực tế cần mã hóa.
Chúng thường được sử dụng để trao đổi khóa lấy thuật toán đối xứng và khi khóa được thiết lập an toàn, thuật toán khóa đối xứng có thể được sử dụng để mã hóa dữ liệu.2 Các thuật toán liên quan đến mã hóa 2.1 Thuật toán RSA 2.1 Lịch sử phát triển (1) Thuật toán RSA, được đặt theo tên của ba tác giả là Ronald Rivest, Adi Shamir và Leonard Adleman, được mô tả lần đầu vào năm 1977 tại Học viện Công nghệ Massachusetts (MIT) ở Hoa Kỳ. Tuy nhiên, trước đó, vào năm 1973, Clifford Cocks, một nhà toán học người Anh làm việc tại GCHQ, đã đề xuất một thuật toán tương tự. Tuy thuật toán của Cocks không được công bố rộng rãi và thử nghiệm, nhưng nó đã đóng góp cho sự phát triển của RSA. Thuật toán RSA gắn liền với việc sử dụng một bộ hai khóa, gồm khóa công khai và khóa riêng tư.
Khóa công khai được chia sẻ với mọi người, trong khi khóa riêng tư được giữ bí mật chỉ cho người sở hữu.