Phiên bản thử nghiệm
BAN CƠ YẾU CHÍNH PHỦ
CỤC QUẢN LÝ MẬT MÃ DÂN SỰ VÀ KIỂM ĐỊNH SẢN PHẨM MẬT MÃ
NATIONAL AGENCY OF CRYPTOGRAPHY AND INFORMATION SECURITY
Các thuật toán mật mã - Phần 2: Mật mã phi đối xứng
03:29:00 | 01-06-2020

KHÁI QUÁT VỀ TCVN 11367-2:2016 (ISO/IEC 18033-2)
“Công nghệ thông tin - Các kĩ thuật an toàn - CÁC THUẬT TOÁN MẬT MÃ PHẦN 2: MẬT MÃ PHI ĐỐI XỨNG”

Information technology – Security techniques – Encryption algorithms –
Part 2: Asymmetric ciphers

    TCVN 11367-2:2016 hoàn toàn tương đương với ISO/IEC 18033-2:2006 và nằm trong bộ tiêu chuẩn TCVN 11367:2016 do Cục Quản lý mật mã dân sự và Kiểm định sản phẩm mật mã biên soạn, Ban Cơ yếu Chính phủ đề nghị, Tổng cục Tiêu chuẩn Đo lường Chất lượng thẩm định, Bộ Khoa học và Công nghệ công bố.

    Tiêu chuẩn này mô tả các cơ sở toán học của các hàm, các thuật toán biến đối, các trường hữu hạn, các biến đổi mật mã, hàm băm mật mã, hàm dẫn xuất khóa, các thuật toán MAC và đặc tả một số hệ mật phi đối xứng. Các đặc tả này quy định các giao diện chức năng và các phương pháp đúng đắn sử dụng các mật mã loại này nói chung, cũng như chính xác hóa chức năng và định dạng bản mã cho một số mật mã phi đối xứng (mặc dù có thể chọn các hệ thống phù hợp và các định dạng khác để lưu trữ và truyền bản mã). Tuy nhiên, các đặc tả này không qui định các giao thức thu được một cách tin cậy khóa công khai, để chứng minh việc sở hữu khóa mật, hay để xác nhận khóa công khai hoặc khóa mật.

    Tiêu chuẩn này giới thiệu một số hệ mật phi đối xứng như:

    - ECIES-HC; PSEC-HC; ACE-HC: Hệ mật lai ghép tổng quát dựa trên mật mã Elgamal;

    - RSA-HC: Mật mã lai ghép dựa trên biến đổi RSA;

    - RSAES: Lược đồ đệm OAEP dựa trên biến đổi RSA;

    - HIME(R): Lược đồ dựa trên tính khó của bài toán phân tích số.

    Yêu cầu cơ bản của bất kì hệ mật phi đối xứng nào đó là tính đúng đắn tức là: với bất kì cặp khóa công khai/khóa riêng (PK, pk), với bất kì cặp nhãn/bản rõ (L, M) sao cho độ dài L, M không vượt quá giới hạn thì bất kì sự mã hóa bản rõ M với nhãn L và PK sẽ được giải mã bằng nhãn L và pk để nhận được bản rõ.

    Mật mã phi đối xứng AC bao gồm từ ba thuật toán:

    ─ Thuật toán tạo khóa AC.KeyGen(), với đầu ra là cặp khóa công khai/ khóa bí mật (PK, pk). Cấu trúc của PKpk phụ thuộc vào mật mã cụ thể.

    ─ Thuật toán mã hóa AC.Encrypt (PK, L, M, opt), nhận đầu vào là khóa công khai, nhãn L, bản rõ và tuỳ chọn opt, đầu ra là bản mã C.Lưu ý rằng LM và Clà các xâu bộ tám. Thuật toán mã hóa có thể thất bại, nếu độ dài L hoặc M vượt quá giới hạn trong thực thi.

    ─ Thuật toán giải mã AC.Decrypt(pk, L, C), nhận đầu vào là khóa riêng pk, nhãn L, bản mã Cvà đầu ra là bản rõ M. Thuật toán giải mã có thể thất bại trong một số tình huống nào đấy.

    Nhìn chung, các thuật toán tạo khóa, mã hóa là các thuật toán xác suất, còn thuật toán giải mã là thuật toán tất định.

    Một trong số các thuật toán mật mã phi đối xứng đang được dùng phổ biến nhất hiện nay đó là hệ mật phi đối xứng dựa trên RSA; dựa trên phép bình phương modolo.

    Đối với hệ mật phi đối xứng dựa trên RSA:

    * Các thuật toán tạo khóa RSA:

    Thuật toán tạo khóa RSA, RSAKeyGen() là thuật toán xác suất không có đầu vào, đầu ra là bộ ba (n, e, d), ở đây:

    ─ Số nguyên n là tích của hai số nguyên tố pq, có độ dài tương tự nhau, pq,

    e là số nguyên dương thỏa mãn điều kiện gcd(e,(p-1)(q-1))=1

    d là số nguyên dương thỏa mãn ed ở đây ed≡1(mod λ(n)) ở đây λ(nlà bội số chung nhỏ nhất của (p-1) và (q-1).

    Phân phối đầu ra của thuật toán tạo khóa RSA phụ thuộc vào thuật toán cụ thể. Thuật toán này được phép cho kết quả đầu ra không thỏa mãn các điều kiện trên đây, chừng nào điều đó còn xẩy ra với xác suất không đáng kể

    * Biến đổi RSA:

    Thuật toán RSATransform (X,α,n) nhận đầu vào là

    ─ Xâu bộ tám X,

    ─ Số nguyên α, 

    ─ Số nguyên n,

    Và đầu ra là xâu bộ tám. Thuật toán thực hiện như sau:

    a) Kiểm tra việc thực hiện |X|= L(n); nếu không thực hiện thì thất bại.

    b) Đặt x=OS2IP(X).

    c) Kiểm tra x ˂ n; nếu không thỏa mãn thì thất bại.

    d) Đặt y=xαmod n.

    e) Đặt Y=OS2IP(y, L(n).

    f) Đưa ra là Y.

    * Các cơ chế mã hóa RSA:

    Cơ chế mã hóa RSA, REM xác định hai thuật toán:

    ─ REM.Encode(M, L, ELen) nhận đầu vào là bản rõ M, nhãn L và độ dài đầu ra là ELen. Ở đây, M và L là các xâu bộ tám với độ dài bị hạn chế được mô tả dưới đây. Đầu ra là xâu bộ tám độ dài Elen.

    ─ REM.Decode(E, L) nhận đầu vào là xâu bộ tám E, nhãn L và tìm bản rõ M thỏa mãn. Nếu không đưa ra được M như vậy thì thất bại.

    Ngoài ra, cơ chế cũng nên xác định giới hạn REM.Bound, sao cho khi gọi REM.Encode(M,L,ELen), thì điều kiện ELenREM sẽ được thỏa mãn. Nếu không thuật toán mã hóa sẽ thất bại. Ngoài ra thuật toán mã hóa cũng có thể thất bại, nếu |L| vượt quá giới hạn được xác định bởi quá trình thực thi.

    Nói chung thuật toán REM.Encode là thuật toán xác suất, bởi cùng một bản rõ có thể được mã hóa bằng một số cách khác nhau. Đồng thời vì lí do kỹ thuật, yêu cầu bộ tám đầu tiên của đầu ra phải là Oct(0).

    Đối với hệ mật phi đối xứng dựa trên phép bình phương modulo:

    * Các thuật toán tạo khóa HIME:

    Với số dương l và d > 1 và thuật toán tạo khóa l-bit HIMEHIMEKeyGen là thuật toán xác suất không có đầu vào, đầu ra là các số nguyên dương (p, q, n, d),ở đấy:

    p là số nguyên tố, với 2l-1≤ p ˂ 2l; p≡3 (mod 4),

    ─ q là số nguyên tố với  2l-1≤ q ˂ 2l; q≡3 (mod 4)pq,

    ─ n = pdq.

    Phân phối đầu ra của thuật toán tạo khóa HIME bit phụ thuộc vào thuật toán cụ thể. Thuật toán này được phép cho kết quả đầu ra không thỏa mãn các điều kiện trên đây, chừng nào điều đó còn xảy ra với xác suất không đáng kể.

    * Các cơ chế mã hóa HIME

    Cơ chế mã hóa theo HIME, kí hiệu HIME là HEM đưa ra hai thuật toán:

 HEM.Encode(M, L, ELen, KLen) nhận đầu vào là bản rõ M, nhãn L, độ dài đầu ra Elen, và số nguyên dương KLen. M và L là các xâu bộ tám với độ dài bị giới hạn, được mô tả dưới đây. KLen thỏa mãn điều kiện 1≤ KLen≤8. Đầu ra là xâu bộ tám E độ dài ELen.

 HEM.Decode(E, L, KLen) nhận đầu vào là xâu bộ tám E, nhãn L, và số nguyên dương KLen. Đầu ra là bản rõ M sao cho HEM.Encode(M, L, |E|, KLen)  = E. Thuật toán sẽ đưa ra M, nếu không thì thất bại.

    Các cơ chế mã hóa REM1, RSAES, RSA-KEM, HIME, HIME(R) và các véc tơ kiểm tra cụ thể đối với từng cơ chế được quy định tại TCVN 11367-2:2016.

    Các vấn đề về các đặc tính an toàn của các lược đồ mật mã khác nhau được mô tả trong phụ lục B của tiêu chuẩn này.Về cơ bản, tính an toàn của mỗi lược đồ có thể được chứng minh một cách hình thức, dựa trên các giả thuyết nhất định về tính khó, hoặc trên một giả thuyết khác là các cơ chế ở mức thấp hơn là an toàn.

    Một số chứng minh tính an toàn thuộc mô hình được gọi là “tiên tri ngẫu nhiên”, mô hình này đầu tiên được hình thức hóa và từ đó được sử dụng để phân tích nhiều lược đồ mật mã. Trong mô hình tiên tri ngẫu nhiên, hàm băm và hàm dẫn xuất khóa được mô hình như những hàm ngẫu nhiên, mà đối với mọi thuật toán hay mọi kẻ tấn công, chúng chỉ là những “hộp đen”. Các loại chứng minh tính an toàn theo mô hình tiên tri ngẫu nhiên như thế tốt nhất là nên xem như những chứng minh mới ở mức tìm tòi (heuristic). Có thể, một lược đồ là an toàn theo mô hình tiên tri ngẫu nhiên, nhưng lại bị phá mà không cần giải được bài toán khó cơ sở, hoặc các giả thuyết an toàn và không cần phải tìm ra bất kì điểm yếu cụ thể nào trong hàm băm hay hàm dẫn xuất khóa nào. Nói cách khác, chứng minh tiên tri ngẫu nhiên đã loại bỏ mất một lớp tấn công rộng.

TS. Hồ Văn Hương, Cục QLMMDS & KĐSPMM

Đường dây nóng
Phòng QLMMDS: 024 3775 6896
Trung tâm ĐGSPH: 024 3232 3313
Cục trưởng: 0903 234 845
P.Cục trưởng phụ trách: 0913 592 170