• Thứ Sáu, 30/07/2004 04:24 (GMT+7)

    Cuộc cách mạng toán học mã RSA và chính phủ điện tử

    Trong chính phủ điện tử, có hai điều quan trọng. Một là làm thế nào bảo đảm các văn bản trao đổi qua mạng không bị thay đổi nội dung, hai là làm thế nào để xác minh người gửi văn bản đó. Hệ mã RSA do 3 nhà khoa học: Rivest, Shamir và Adleman phát minh đã giải quyết trọn vẹn hai vấn đề này...

    Phát minh bị quên lãng

    Khi phương pháp mã khóa công khai chưa ra đời, người ta sử dụng hầu như cùng một 'chìa khóa' để mã hóa cũng như giải mã chung cho cả người gửi và người nhận thông tin (hệ mã đối xứng). Với hệ mã này, một trong những khó khăn lớn của ngành an ninh và mã hóa  lúc đó là làm sao gửi an toàn chìa khóa bí mật trên các kênh truyền tin công khai có nhiều người tham gia.

    Ba nhà khoa học Shamir, Rivest và Adleman
     
    Đầu năm 1969, James Ellis, một chuyên gia thám mã lỗi lạc của  Cơ Quan Truyền Thông Chính Phủ Anh Quốc (GCHQ) đã nảy ra ý tưởng đặc sắc  rằng, nếu người nhận tin đưa một nhiễu nào đó lên đường truyền công khai mà chỉ riêng anh ta biết cách khử nhiễu, thì mọi thông tin mật gửi đến cho anh ta đều có thể đưa lên kênh truyền tin công khai đó. Những người khác, dù bắt được tín hiệu cũng không thể nào giải mã được tin mật.

    Cuối năm 1969, James Ellis nhận ra ý tưởng trên có thể đạt được bằng  'hàm một chiều' (tựa như cái hom giỏ, cá chỉ vào mà không ra được). Theo đó, chỉ có thể tìm hàm ngược nếu biết thông tin nào đó, giống như khôi phục tín hiệu khi biết cái nhiễu do mình tạo ra. Nhưng ông không thực hiện được điều này, do  không biết liệu hàm một chiều có tồn tại hay không.

    Bốn năm sau đó, tình cờ, Clifford Cocks- một nhân viên mới của GCHQ- được Patterson, thầy hướng dẫn, kể cho nghe ý tưởng độc đáo của James Ellis trong một buổi uống cà phê. Tốt nghiệp ĐH Cambridge, làm về lý thuyết số và đã từng tham gia Olympic Toán Quốc Tế Moscow 1968, anh thanh niên được đào tạo cơ bản về số học đã tìm ra hàm một chiều cần thiết chỉ trong vòng nửa giờ: đó chính là phép nhân! Nhân hai số nguyên tố lớn bao nhiêu cũng được là điều hết sức dễ dàng, nhưng khi biết tích của chúng, để tìm lại các thừa số thì ta cần phân tích số đã cho ra thừa số nguyên tố. Điều này hầu như không thể làm được với các số đủ lớn.

    Thật vậy, để phân tích n (=pq)  ra thừa số nguyên tố, cần chia lần lượt n cho các số nguyên tố nhỏ hơn. Theo một định lý nổi tiếng trong số học, có khoảng (n/log n) số nguyên tố bé hơn n. Nếu n có khoảng 300 chữ số thì sẽ phải làm khoảng 10150/300 phép chia. (Nếu dùng máy tính tốc độ 1 tỷ phép tính/giây, bạn sẽ mất chừng...tỷ tỷ tỷ năm để phân tích số n!) Như vậy, hàm số thiết lập sự tương ứng giữa hai số p, q với tích n=pq chính là hàm một chiều. Giải pháp thật đơn giản và Cocks cũng không tự cảm nhận được đầy đủ  ý nghĩa của kết quả đạt được. 

    Kết quả của Cocks được giữ tuyệt mật. Nó có sức thuyết phục lớn trong nội bộ GCHQ. Nhưng phương tiện tính toán thời đó không cho phép triển khai  thuật toán. 

    Năm 1978, kết quả của Cocks được Rivest, Shamir và Adleman phát minh lại! Đó chính là cuộc cách mạng trong lĩnh vực mật mã, cuộc cách mạng mang tên RSA (ghép chữ đầu tên của ba nhà khoa học trên).

    RSA, cuộc cách mạng của các nhà toán học.

    Tại sao hệ mã RSA lại đưa đến một cuộc cách mạng thực sự? Vấn đề là giờ đây, với hệ mã RSA, không cần phải gửi chìa khóa giải mã cho người nhận thông tin nữa. Hệ mã RSA sử dụng 2 khóa. Khóa lập mã của tôi được công khai với bạn (để bạn có thể gửi thông tin mã hóa cho tôi), còn khóa giải mã của tôi là khóa riêng tôi giữ, do đó chỉ tôi mới có thể đọc được thông tin mã hóa bạn gửi, còn người khác không thể tìm ra khoá giải mã  trong một thời gian chấp nhận được. 

    Từ khi RSA ra đời đến nay, có nhiều người đưa ra nhiều hệ mã với các hàm một chiều khác nhau. Tuy nhiên, chỉ có RSA và hệ mã gần với nó, hệ mã đường cong elliptic, là được sử dụng rộng rãi, vì người ta có thể tin hàm được dùng đúng là hàm một chiều. Còn với những hệ mã chưa được nghiên cứu kỹ, biết đâu có một  cổng hậu nào đó chưa tìm ra?

      MINH HỌA MỘT PHƯƠNG PHÁP GỬI & NHẬN VĂN BẢN QUA EMAIL CÓ SỬ DỤNG THUẬT TOÁN BĂM VÀ CHỮ KÝ ĐIỆN TỬ ĐỂ XÁC ĐỊNH NGƯỜI GỬI VÀ TÍNH TOÀN VẸN CỦA VĂN BẢN (VB)  
     

     
                                 Gửi                             Nhận  
     

    Sau khi đăng ký một chứng chỉ số (với nhà cung cấp chứng chỉ số), bạn được cấp một khóa riêng (khóa bí mật) lưu ở một chỗ 'kín' (ẩn) trên PC của bạn.
    Trước khi gửi văn bản, bạn áp dụng một thuật toán phần mềm để nhận giá trị băm của văn bản gốc.
    Bạn mã hóa giá trị băm đó bằng khóa riêng (hay gọi là 'ký' lên giá trị băm), và thu được cái gọi là chữ ký điện tử.
    Sau đó văn bản gốc được gửi đi cùng với chữ ký điện tử và khóa công khai của bạn.

     

    Khi nhận được thư, người nhận sử dụng khóa công khai của người gửi giải mã chữ ký điện tử để biết được người gửi có đúng là bạn không, và đồng thời thu được giá trị băm của văn bản gốc.
    Người nhận cũng dùng thuật toán băm để thu được giá trị băm của văn bản nhận được.
    Nếu 2 giá trị băm bằng nhau thì văn bản được khẳng định là toàn vẹn (không bị thay đổi từ sau khi người gửi ký).

     

     
             

    RSA và chính phủ điện tử

    Trong chính phủ điện tử, có hai điều quan trọng. Một là, làm thế nào để bảo đảm các văn bản trao đổi qua mạng không bị thay đổi nội dung (đảm bảo tính toàn vẹn của văn bản).  Hai là, làm thế nào để xác minh người gửi văn bản đó (xác nhận chủ thể). RSA cũng như các hệ mã khóa công khai khác đã giải quyết trọn vẹn 2 vấn đề đặt ra.  Tuy nhiên, tốc độ mã hóa của RSA rất chậm (gấp chừng 1000 lần so với các hệ mã đối xứng), nên với các văn bản lớn, việc mã hoá bằng RSA là không khả thi. Do vậy, RSA được ứng dụng để giải quyết các vấn đề trên theo một số phương thức độc đáo riêng. Thí dụ: xác nhận 'giá trị băm'- một đặc trưng thu gọn, giống như 'vân tay' của văn bản - thay vì xác nhận văn bản, dùng kết hợp mã đối xứng, như  DES, IDEA ( để mã hoá văn bản) và RSA (để mã hóa chìa khóa )...

    Ngày nay, các hệ mã khóa công khai và các tiện ích đi kèm đã được thương mại hóa. Bạn có thể mua trên thị trường hoặc tải từ Internet về để dùng (như một số người, một số công ty đã làm). Tuy nhiên, cần nhớ rằng, độ an toàn của các sản phẩm như vậy không cao. Như đã phân tích trên đây, chốt của vấn đề là phải có những số nguyên tố lớn để lập khóa. Không ai cho bạn biết rằng, trong hệ mã mà bạn mua về, các số nguyên tố được dùng đã sinh ra như thế nào. Chúng ngẫu nhiên đến mức nào, hay là đã có sẵn trong một kho của người làm khóa. Và nếu cần, người bán cho bạn có thể tìm ra khóa giải mã của bạn bằng cách duyệt toàn bộ cái kho mà anh ta đã biết rõ? Điều này hoàn toàn tương tự như khi ta mượn khóa của hàng xóm về khóa cửa nhà mình, mà không biết họ còn chìa dự trữ nào khác không. Dĩ nhiên vẫn có thể làm như vậy, khi ông hàng xóm của bạn đủ tin cậy, và nhất là khi mà nhà bạn không có cái gì quý đến mức người ta phải lấy bằng mọi giá. Nhưng nếu bạn là một chủ ngân hàng thì hãy thận trọng! Cũng như vậy, với các hệ thống đòi hỏi độ an toàn cao, như chính phủ điện tử trong tương lai của Việt Nam chẳng hạn, thì không thể dùng những bộ khóa mua trên thị trường như vậy được. Cho nên, sớm muộn cũng phải tự làm lấy. Công việc của anh thợ khóa như thế hiện đang được tiến hành ở một số cơ quan của Việt Nam, trong đó có Viện Toán Học (Viện Khoa Học và Công Nghệ Việt Nam).

    Cho đến nay, người ta vẫn tin rằng RSA, hệ mã đường cong elliptic,  là không thể phá được. Điều này gần như đi ngược với đặc điểm của thời kinh tế tri thức, khi một trong những khẩu hiệu của nó là 'hãy làm cho sản phẩm của bạn trở nên lạc hậu nhanh, trước khi đối thủ của bạn làm điều đó'. Tuy nhiên, toán học vẫn ngày càng phát triển, và biết đâu một ngày nào đấy, ta bỗng thấy cả thế giới này không còn bí mật nào nữa!

    GS TSKH Hà Huy Khoái - Viện Trưởng Viện Toán Học Việt Nam

    ID: B0407_45