NHIỆM VỤ VÀ NỘI DUNG: Tìm hiểu các phương pháp mã hóa mã hóa công khai, hàm băm và mã QR để hiện thực phương pháp xác thực văn bản giấy dùng chữ ký số và mã QR nhằm xác thực các loại vă
GIỚI THIỆU ĐỀ TÀI
Tính cấp thiết của đề tài
Ngày nay, với sự tiến bộ trong công nghệ in ấn, công nghệ vật liệu việc tạo ra các văn bằng, chứng chỉ theo một định dạng trở nên dễ dàng.Vì vậy ngày càng nhiều các văn bằng, chứng chỉ của các trường học, trung tâm đào tào tại Việt nam bị làm giả, với mục đích lừa đảo, chiếm đoạt tài sản, xin việc bổ nhiệm chức vụ…
Văn bằng chứng chỉ là một công cụ định lượng kiến thức, thông qua đó có thể biết được người đó có trình độ nào, chuyên ngành đào tạo là gì, xếp loại ra sao…Văn bằng, chứng chỉ cũng là một tiêu chí được dùng để đánh giá các ứng viên trong việc tuyển dụng lao động của các doanh nghiệp hay tuyển dụng công chức trong cơ quan nhà nước ở Việt Nam hiện nay
Tình trạng giả mạo các loại văn bản, tài liệu quan trọng trên giấy như bằng cấp chứng chỉ và các loại văn bản pháp lý khác ngày càng nghiêm trọng và tinh vi hơn, nhằm qua mặt các cơ quan công quyền Điều này dẫn đến những thiệt hại to lớn về vật chất, cũng như sự suy giảm về niềm tin gây nhiều bất ổn trong xã hội
Việc xác thực văn bằng chứng chỉ hiện tại được thực hiện theo cách tra cứu thông tin tại đơn vị cấp phát văn bằng
Trước thực trạng này, tác giả đề xuất giải pháp có tính khả thi cao trong việc phòng chống và phát hiện giả mạo các loại văn bằng chứng chỉ, giấy tờ pháp lý được xuất bản ở dạng in Giải pháp đề xuất ứng dụng mã vạch hai chiều kết hợp với chữ ký số, sử dụng thuật toán mã hóa công khai giúp việc xác minh thông tin trên văn bản in một cách chính xác, an toàn và nhanh chóng.
Mục tiêu đề tài
Mục tiêu của đề tài là xây dựng công cụ hỗ trợ xác thực văn bản giấy (Văn bằng, Chứng chỉ, Giấy chứng nhận, ) trong hoàn cảnh hiện tại ở Việt Nam
Mục tiêu này bao gồm:
Xác định đơn vị phát hành văn bản
Xác định đối tượng chủ thể liên quan đã được ghi trên văn bản Để thực hiện mục tiêu của đề tài đề ra cần thực hiện thỏa mãn các yêu cầu sau:
Đảm bảo tính xác thực, tính toàn vẹn, tính chống chối bỏ
Đơn giản hóa quá trình xác thực
Áp dụng được vào trong các tổ chức, đơn vị có nhu cầu chống giả văn bản giấy do mình phát hành và các doanh nghiệp, cơ quan công chứng có nhu cầu xác thực văn bản giấy
Xác định thông tin của đối tượng, chủ thể được ghi trên văn bản như họ tên, năm sinh đề tài dựa trên Chứng minh thư được cơ quan quản lý nhà nước Việt Nam công nhận.
Phương pháp thực hiện
Dựa vào các công trình nghiên cứu liên quan về xác thực văn bản giấy [1], [2],[3] tác giả tiến hành đánh giá ưu điểm và những hạn chế còn lại Từ đó, đưa ra giải pháp áp dụng vào việc xây dựng công cụ xác thực văn bản giấy ở Việt Nam Sau khi hiện thực tác giả tiến hành phân tích đánh giá đảm bảo các mục tiêu đã đề ra
Tài liệu nghiên cứu: Trong qua trình thực hiện đề tài tác giả đã tham khảo tài liệu về các chủ đề sau:
+ Các tài liệu về mã QR
+ Các tài liệu về mã hóa bất đối xứng, hàm băm
+ Các đề tài công trình về xác thực văn bản.
Bố cục luận văn
Nội dung các phần còn lại của luận văn được phân bố như sau:
Chương 2-“Nghiên cứu liên quan” - trong chương này sẽ trình bày sơ lược một số công trình nghiên cứu liên quan đến xác thực văn bản giấy, đây cũng là xuất phát điểm cho giải pháp mà đề tài đề xuất Chương 3 - “Kiến thức nền” - sẽ trình bày những kiến thức nền tảng mà tác giả áp dụng trong đề tài bao gồm Mã QR, Mã hóa bất đối xứng, Chữ ký số, Phương pháp RSA, Hàm băm…Nội dung trong chương này sẽ giúp người đọc tiếp cận dễ dàng hơn đối với những phần còn lại của đề tài
Nội dung chính của đề tài sẽ được trình bày ở chương 4 và chương 5
Chương 4 - “Giải pháp xác thực văn bản giấy” - sẽ mô tả giải pháp sẽ được đề xuất để đáp ứng mục tiêu của đề tài đó là “Xác thực văn bản giấy dùng chữ ký số và mã QR” Nội dung của chương sẽ mô tả cụ thể các bước trong qua trình xác thực và đánh giá giải pháp Chương 5 - “Hiện thực phương pháp xác thực văn giấy dùng chữ ký số và mã QR” - trình bày cách hiện thực giải pháp đã đề xuất trong chương 4, đánh giá ưu nhược của của hệ thống đã hiện thực
Chương 6 -“Kết luận”- tổng kết nhận xét về giải pháp cũng như nêu lên một số hướng mở rộng đề tài
Hinh 2.1: Sơ đồ xử lý của quá trình gửi
NHỮNG NGHIÊN CỨU LIÊN QUAN
Phương pháp xác thực văn bản in dùng chữ ký số và mã vạch 2 chiều
Phương pháp gồm 2 quá trình tổng quát như sau:
Nội dụng văn bản và mã vạch HC2D chứa mã xác thực được in ra trên giấy Hình 2.1[2] minh họa cho quá trình này Nội dung văn bản thông qua hàm băm tạo ra giá trị băm, sau đó giá trị băm được mã hóa bằng giải thuật mã hóa bất đối xứng với khóa riêng của người tạo văn bản để tạo ra chữ ký số Tùy vào khả năng lưu trữ của mỗi loại mã vạch và dung lượng của nội dung văn bản kết hợp với chữ ký số mà có thể thực hiện nén nội dung văn bản và chữ ký số trước khi lưu trữ vào mã vạch, sau đó in mã vạch lên văn bản giấy
Hinh 2.2: Sơ đồ xử lý của quá trình nhận
Sau khi nhận được văn bản từ bên tạo văn bản, bên nhận có thể thực hiện xác thực văn bản nhận được bằng cách xử lý theo sơ đồ xác thực-Hình
2.2[2] Quá trình xác thực đầu tiên là thực hiện kiểm tra tính toàn vẹn của thông tin đươc lưu trữ trong mã vạch Dữ liệu trên mã vạch bao gồm nội dung văn bản và chữ ký số Chúng đươc thực hiện tạo giá trị băm với nội dung văn bản và giải mã bằng khóa công khai của người tạo văn bản với chữ ký số
Sau đó so sánh giá trị băm của nội dung văn bản với giá trị giải mã bằng khóa công khai của người tạo văn bản
- Để xác thực ta cần chuyển đổi hình ảnh của văn bản giấy thành văn bản điện tử thông qua công cụ nhận diện ký tự quang học (OCR) Giá trị băm của văn bản điện tử vừa nhận từ công cụ OCR được so sánh với giá trị băm thu được từ mã vạch HC2D.
Ưu điểm của phương pháp
Với phương pháp này bên nhận đảm bảo văn bản nhận được là đúng bên gửi tạo ra và không bị thay đổi nội dung trong quá trình gửi bằng việc sử dụng chữ ký số Phương pháp đảm bảo 3 đặc tính của tính bảo mật
Là người duy nhất giữa khóa riêng, một chữ ký hợp lệ đồng nghĩa với văn bản người nhận đã nhận được, được tạo ra bởi người gửi Người nhận sử dụng khóa công khai tương ứng được người gửi chia sẻ dùng để xác minh chữ ký Chữ ký không hợp lệ người nhận không thể xác thực văn bản
Xác suất giá trị băm khác nhau là rất cao nếu văn bản bị thay đổi vì không có khả thi khi tìm một văn bản khác để có giá trị băm giống nhau Giá trị băm được mã hóa bằng khóa riêng của người gửi trong quá trình tạo chữ ký số Do đó, việc tấn công sửa đổi văn bản và chứ ký hợp lệ là không khả thi Điều này thể hiện sự toàn vẹn của văn bản
Trong mã hóa bất đối xứng, thông tin được mã hóa bằng khóa riêng chỉ có thể được giải mã bằng khóa công khai tương ứng Vì cặp khóa này có quan hệ toán học với nhau Khi người gửi đã ký văn bằng khóa riêng và người nhận dùng khóa công khai tương ứng của người gửi để xác thực văn bản Vì vậy người gửi không thể phủ nhận mình đã ký vào văn bản Nói một cách khác người gửi không chối bỏ văn bản do mình tạo ra
Phương pháp thực hiện xác thực nhanh chóng và dễ dàng.
Kết luận
Với việc sử dụng chữ ký số, phương pháp đã có thể đảm bảo tính xác thực và tính toàn vẹn của văn bản Tính chính xác của phương pháp trong quá trinh thực phụ thuộc vào sự hoạt động chính xác của công cụ nhận dạng ký tự quang học (OCR) Với khả năng lưu trữ có giới hạn của các mã vạch hai chiều (QR, HC2D) đã gây ra sự hạn chế của phương pháp khi văn bản giấy có khối lượng thông tin lớn hơn khả năng lưu trữ của mã vạch.
NỀN TẢNG LÝ THUYẾT
Mã vạch
Mã vạch là phương pháp lưu trữ truyền tải thông tin bằng một loại ký hiệu gọi là ký mã vạch Ký mã vạch hay gọi tắt cũng là mã vạch Theo định nghĩa của tiêu chuẩn ISO/IEC-mã vạch là một đại diện máy có thể đọc thông tin mà được hình thành bởi sự kết hợp của các vùng phản xạ cao và thấp của bề mặt của một đối tượng, trong đó có thể được chuyển đổi thành "0" và " 1 "
Mã vạch được thiết kế để đọc và hiểu bằng thị giác của máy tính bao gồm máy quét laser quang học, camera, phần mềm đọc mã vạch Mã vạch được chia thành 02 loại: Mã vạch một chiều và Mã vạch hai chiều
Mã vạch 1D (một chiều) được sử dụng rộng rãi, thường thấy trên bề mặt hoặc thẻ giá các sản phẩm tại các cửa hàng hoặc siêu thị Tùy theo dung lượng thông tin, dạng thức thông tin và mục đích sử dụng ta có nhiểu loại mã vạch một chiều như UPC-A, UPC-B, UPC-C, UPC-D và UPC-E, EAN-8,
EAN-13, EAN-14…Tuy nhiên, mã vạch một chiều chứa rất ít dữ liệu, có nhiều nỗ lực làm tăng khả năng lưu trữ dữ liệu nhưng lại làm tăng kích thước khu vực mã vạch điều này không thuận cho việc in ấn
Mã vạch 2D (hai chiều) được ra đời nhằm khắc phục hạn chế của mã vạch một chiều như dung lượng lưu trữ, diện tích của mã vạch… Mã vạch hai chiều đầu tiên là loại mã vạch xếp chồng lên nhau như mã vạch Code 16K,
Code 49, PDF-417, sau đó là mã vạch ma trận Mã vạch hai chiều dạng ma trận lưu trữ dữ liệu theo 2 chiều đó là chiều ngang và chiều dọc (MaTrix Code, HC2D Code,…) Vì vậy, chúng có mật độ dữ liệu cao và diện tích nhỏ
Mã QR (Quick Response) là một mã vạch 2 chiều
Mã QR[5] được phát triển bởi công ty Denso Wave Nhật Bản vào năm 1994 nhằm cải thiện khả năng lưu trữ dữ liệu và giải mã tốc độ cao so với mã vạch một chiều Mã QR được tạo thành bởi các module sáng, tối phân bố theo cột và hàng và được sắp xếp trong một hình vuông
Mã QR được chia thành 2 vùng [6], đó là vùng mã hóa (encoding region) và vùng mô hình chức năng (function pattern region) Vùng mã hóa là vùng chứa thông tin, dữ liệu cần lưu trữ, sửa lỗi và các thông tin dùng cho
Hinh 3.1: Cấu trúc mã QR việc xác định phiên bản, loại dữ liệu Vùng mô hình chức năng bao gồm tất cả các thông tin cần thiết để mã QR có thể được đọc ở bất kỳ hướng nào trong 360 độ Hình 3.1[6] thể hiện cấu trúc của mã QR
Mã QR Model 1 và Model 2: Model 1 là mã QR nguyên thủy phiên bản lớn nhất là phiên bản 14 với khả năng lưu trữ tối đa là 1167 ký tự và số Model 2 được cải tiến từ Model 1, phiên bản lớn nhất là phiên bản 40
Mã Micro QR: Chỉ có 1 điểm nhận dạng Mã này có diện tích rất nhỏ
Mã iQR: Có hình dạng là hình vuông hoặc hình chữ nhật Phiên bản tối đa là phiên bản 61(422x422) tương đương khả năng lưu trữ 40000 ký tự số
Mã SQRC: là loại mã QR được giới hạn khả năng đọc Hình dạng giống như hình dạng mã QR bình thường
Mã Frame QR: là mã có khu diện tích dành riêng có thể được sử dụng một cách linh hoạt cho phép chèn chữ cái, hình ảnh vào trong
Dung lượng dữ liệu và khả năng sửa lỗi
Mã QR được chia thành nhiều loại khác nhau và được xác định bởi phiên bản và cấp sửa lỗi của nó Các phiên bản của mã QR (Hình 3.2) xác định kích thước của nó và đi từ 21 × 21 cho phiên bản 1 lên đến 177 × 177 cho phiên bản 40 Có 4 cấp sửa lỗi L, M, Q và H cho phép để sửa lỗi từ 7%, 15%, 20% và lên đến 30% từ mã lỗi tương ứng
Hinh 3.2: Các phiên bản của mã QR
Khả năng lưu trữ dữ liệu của mã QR phụ thuộc vào kiểu dữ liệu, phiên bản và cấp sửa lỗi
Bảng 3.1: Khả năng lưu trữ ký tự tối đa của mã QR (40-L)
Chế độ đầu vào Ký tự tối đa Bit/char Ký tự khả dụng, bộ mã hoá mặc định Số đơn thuần 7,089 3⅓ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
Chữ và số 4,296 5ẵ 0–9, A–Z (chỉ chữ hoa), cỏch,
Ưu điểm của Mã QR
Với cấu trúc, đặc điểm và hình dáng thiết kế, mã QR đã đem lại nhiều lợi ích được thể hiện qua:
+Đọc nhanh, và quét ở mọi hướng : Với hoa văn định vị(Finder
Patterns) nằm ở 3 góc cho phép mã QR có thể nhận diện được 360 độ, bất kỳ từ hướng nào, vì vậy khó bị ảnh hưởng bởi bối cảnh xung quanh đảm bảo tốc độ đọc cao
+Kích thước và nhận dạng: Với 40 phiên bản mã QR rất đa dạng về kích thước, cùng 1 dung lượng dữ liệu mã QR có kích thước nhỏ hơn nhiều so với mã vạch một chiều Mã QR cũng có thể đọc được khi cả khi hình ảnh mã QR ở một bề mặt cong hay bị biến dạng
+ Khả năng lưu trữ dữ liệu và sửa lỗi : Mã QR có khả năng lưu trữ lớn nhất 7089 ký tự số và 4296 ký tự số và chữ So với mã vạch một chiều và một số mã vạch hai chiều khác (PDF-417, Matrix, ) thì mã QR có khả năng lưu trữ lớn hơn Khả năng sửa lỗi của mã QR với nhiều cấp độ khác nhau và cao nhất mã QR có thể phục hồi được 30% dữ liệu bị hư hỏng
+Nhiều loại dữ liệu: Mã QR có thể lưu trữ các loại dữ liệu như ký tự số, ký tự chữ, dữ liệu dạng nhị phân, và dữ liệu là ký tự Nhật Bản
Mã hóa bất đối xứng
Hiện nay con người luôn sống trong môi trường trao đổi thông tin hàng ngày, hàng giờ Những chuyện thường ngày như gửi email, goi điện thoại, gửi đơn đặt hàng đến cửa hàng…, đó chính là trao đổi thông tin Trong phần lớn trường hợp trao đổi thông tin, người ta đều không muốn thông tin bị lộ cho bên thứ ba.Vì điều đó có thể gây ra tổn thất về vât chất cũng như về tinh thần Để bảo vệ bí mật cho thông tin trao đổi người ta dùng phương pháp biến đổi làm cho bản gốc của thông tin (plaintext) thành một dạng bí mật (ciphertext) với một khóa bí mật mà chỉ có những người biết được khóa mới có thể biến đổi ngược lại thành dạng nguyên gốc ban đầu Phương pháp này gọi là mã hóa đối xứng Những thuật toán mã hóa tiêu biểu cho mã hóa đối xứng là DES, 3DES, AES
Mã hóa đối xứng đảm bảo tính bí mật cho thông điệp nhưng vẫn tồn tại 2 vấn đề:
+ Trao đổi khóa giữa người gửi và người nhận + Tính bí mật của khóa
Với mã hóa bất đối xứng hay mã hóa công khai cho phép người sử dụng trao đổi các thông tin mật mà không cần phải trao đổi các khóa bí mật trước đó Điều này được thực hiện bằng cách sử dụng một cặp khóa có quan hệ toán học với nhau đó là khóa công khai (Public Key) và khóa riêng (Private key)
Thuật toán tiêu biểu của phương pháp mã hóa bất đối xứng này là RSA
Trong mã hóa bất đối xứng, khóa riêng cần được giữ bí mật, khóa công khai được công bố rộng rãi Những thông tin được mã hóa bằng khóa công khai chỉ có thể được giải mã bằng khóa riêng tương ứng Nói cách khác, mọi người biết khóa công khai đều có thể mã hóa nhưng chỉ có người biết khóa
Hinh 3.3: Sơ đồ mã hóa đảm bảo tính bảo mật
Hinh 3.4: Sơ đồ mã hóa đảm bảo tính chứng thực riêng mới có thể giải mã được Cách mã hóa này nhằm đảm bảo tính bảo mật cho thông điệp cần mã hóa
Trong hình minh họa (Hình 3.3 và Hình 3.4), giả sử Alice gửi dữ liệu cho Bob dùng mã hóa bất đối xứng, Alice và Bob sẽ chon cặp khóa công khai- khóa riêng Ký hiệu khóa công khai- khóa riêng của Alice là K PA , K RA , của Bob là KPB , KRB Để bảo mật dữ liệu gửi cho Bob, Alice mã hóa dữ liệu bằng khóa công khai của Bob K PB , Bob dùng khóa riêng của mình để giải mã K RB
Ngoài ra mã hóa bất đối xứng còn được sử dụng để đảm bảo tính chứng thực và chống chối bỏ Với mục đích này khóa riêng được sử dụng để mã hóa, khóa công khai dùng để giải mã Để đảm bảo tính chứng thực, chống chối bỏ, Alice không từ chối trách nhiệm gửi dữ liệu Alice sẽ mã hóa dữ liệu bằng khóa riêng của minh K RA và Bob dùng khóa công khai của Alice để gải mã K PA
Các phương pháp mã hóa này khai thác những ánh xạ mà việc thực hiện ánh xạ ngược rất khó với việc thực hiện ánh xạ
Phương pháp RSA là phương pháp mã hóa bất đối xứng được xây dựng bởi các tác giả Ron Rivest, Adi Shamir và Len Adleman tại Học viện Công nghệ Massachusetts(MIT) vào năm 1977 Tên của thuật toán được lấy từ 3 chữ cái đầu của tên 3 tác giả
Trước đó, vào năm 1973, Clifford Cocks một nhà toán học người Anh đã mô tả một thuật toán tương tự Với khả năng tính toán tại thời điểm đó thì thuật toán này không khả thi và chưa bao giờ được thực nghiệm Tuy nhiên, phát minh này chỉ được công bố vào năm 1997 vì được xếp vào loại tuyệt mật
Về mặt tổng quát RSA là một phương pháp mã hóa theo khối Trong đó bản rõ và bản mã là các số nguyên từ 0 đến 2i với i số bít của khối RSA sử dụng hàm một chiều là vấn đề phân tích một số thành thừa số nguyên tố Đây là phương pháp phù hợp với việc tạo ra chữ ký số đồng thời với việc mã hóa RSA đang được sử dụng phổ biến trong thương mại điện tử và được cho là đảm bảo an toàn với điều kiện độ dài khóa đủ lớn Trong phương pháp này, tất cả các phép tính đều thực hiện trên Zn với n là tích của 2 số nguyên tố p và q khác nhau
1- Chọn hai số nguyên tố p và q, p khác q
2- Lấy tớch số: n = p*q và ứ(n) = (p-1)*(q-1), n được goi là modulo mó húa, ứ(n) được goi là hàm Euler
3- Chọn số e sao cho: 1 < e < p*q, e và ứ(n) là nguyờn tố cùng nhau e được goi là số mũ mã hóa
4- Tớnh số d sao cho tớch số d*e ≡ 1 mod ứ(n)(d là nghịc đảo của e trong phộp modulo ứ(n) )
5- Các giá trị n,e được công bố, trong khi đó các giá trị p,q và d được giữ bí mật
Các giá trị được công bố goi là khóa công khai K PU (n,e), các giá trị được giữ bí mật gọi là khóa riêng KPR(p,q,d) Để thực hiện việc mã hóa và giải mã, phương pháp RSA sử dụng phép lũy thừa modulo của lý thuyết số Tùy vào mục đích việc mã hóa, mã hóa bảo mật hay mã hóa chứng thực ta có công thức mã hóa và giải mã như sau :
Mã hóa bảo mật: C = M e mod n
Mã hóa chứng thực: C = M d mod n
Mã hóa bảo mật: M = C d mod n
Mã hóa chứng thực: M = C e mod n
Với M là bản gốc của thông tin cần mã hóa, C là bản đã mã hóa
Ưu và nhược của RSA
Phương pháp RSA thực hiện một dãy các phép tính lỹ thừa modulo khá lớn Độ phức tạp tính toán: Khóa công khai là O(k 2 ) bước tính toán, khóa riêng là O(k 3 ) với k là số bit của modulo Tổng quát phương pháp RSA có độ phức tạp tính toán là O(k 4 ) – k Phương pháp RSA có độ bảo mật cao hầu như không có giải thuật tổng quát mà phải dò thử dần Nếu chon số p,q lớn thì kết quả từ chỗ biết số mũ e tìm ngược lại d là rất phức tạp hầu như không làm được trong thời gian thực
Vì phương pháp RSA có độ phức tính lớn do đó RSA có tốc độ mã hóa và giải mã chậm
Các cách tiếp cận tấn công thuật toán RSA
- Véc cạn (Brute force): Cách tấn công này là thử tất cả các khóa riêng có thể Tuy nhiên với n lớn thì cách tấn công này không khả thi
- Tấn công đo thời gian (Timing attack): Đây là một phương pháp tấn công không dựa vào mặt toán học của thuật toán RSA, mà dựa vào một “hiệu ứng lề” sinh ra bởi quá trình giải mã RSA Hiệu ứng lề đó là thời gian thực hiện giải mã Giả sử kẻ tấn công có thể đo được thời gian giải mã dùng thuật toán bình phương liên tiếp Trong thuật toán bình phương liên tiếp, nếu một bít của d là 1 thì xảy ra hai phép modulo, nếu bít đó là 0 thì chỉ có một phép modulo, do đó thời gian thực hiện giải mã là khác nhau Bằng một số phép thử chọn bản rõ, người phá mã có thể biết được các bít của d là 0 hay 1 và từ đó biết được d
- Tấn công toán học (Mathematical attack): Cách tấn công này nhằm phân tích ra 2 thừa số số nguyên tố p và q Độ an toàn của RSA là việc phân tích n ra thành 2 thừa số nguyên tố là bất khả thi
Tuy nhiên, nhiều thuật toán phân tích mới đã được đề xuất, cùng với tốc độ xử lý của máy tính ngày càng nhanh, đã làm cho việc phân tích n không còn quá khó Với độ dài khóa 2048 đến nay vẫn còn an toàn
Bảng 3.2: Các mốc phá phương pháp RSA
Số chữ số của n Số bít RSA Năm phá mã Thuật toán
- Tấn công dựa trên lỗi trên phần cứng (Hardware fault-based attack): Cách tấn công này liên quan đến việc gây ra lỗi phần cứng trong Bộ xử lý đang tạo ra chữ ký số
Chữ ký số và Hàm Băm
Trong cuộc sống hằng ngày các trao đổi thông tin cần đảm bảo các yêu cầu sau:
+ Tính bảo mật: Thông tin dù lọt vào người thứ 3 thì người đó cũng không hiểu được nội dung
+ Tính toàn vẹn thông tin : Nêu thông tin cần trao đổi qua người trung gian và bị người trung gian thay đổi nội dung, thì người nhận thông tin cần biết là thông tin trao đổi đã bị can thiệp nhưng có thể không biết nội dung nào đã bị can thiệp
+ Tính nhận biết: Khi nhận được thông tin, người nhận nhận ra được thông tin là do người cần trao đổi đã gửi
+ Tính không chối bỏ: Người gửi thông tin trao đổi không thể chối bỏ trách nhiệm đã gửi
Thông thường, thông tin trao đổi được thể hiện trên giấy, vì vậy người gửi ký tên mình trên đó để xác nhận rằng thông tin này là của mình.Người nhận thấy chữ ký của người gửi là đủ tin tưởng
Chữ ký điện tử là công cụ đáp ứng được yêu cầu đề ra ở trên, cho việc trao đổi thông tin điện tử Ngoài ra, chữ ký điện tử còn đảm bảo các nguyên lý khác của việc bảo mật dữ liệu như: tính toàn vẹn thông tin, tính xác thực và tính nhận dạng đối tác Chữ ký điện tử có thể bao gồm các cam kết bằng email, ký bằng bút điện tử, nhập các số PIN vào các máy ATM …
Chữ ký số là một lớp con của chữ ký điện tử, nhằm mục đích nhận biết và không chối bỏ Chữ ký số dựa trên các phương pháp mật mã, sao cho kiểm tra được nhận dạng của người tạo văn bản và tính toàn vẹn của văn bản
Chữ ký số khác với chữ ký tay, chữ ký số có ràng buộc với văn bản Các văn bản khác nhau có chữ ký số khác nhau Chữ ký tay là phần tác động của con người lên bản giấy đã chưa văn bản và độc lập với phần văn bản
Chữ ký số được tạo dựa vào hàm băm kết hợp với mã hóa bất đối xứng
Hinh 3.5: Sơ đồ mã tạo chữ ký số và xác thực
Hình 3.5 minh họa cho việc tạo và xác minh chữ ký số Thông điệp M qua hàm băm cho ra giá trị băm H A, sau đó được mã hóa bằng khóa riêng để tạo ra chữ ký số DS Chữ ký số DS được gửi kèm với thông điệp M bởi người gửi Để xác minh, người nhận tiến hành tính giá trị băm của thông điệp M và so sánh với giá trị đã giải mã chữ ký số DS với khóa công khai, nhận được từ người gửi
Năm 1994 Viện Tiêu chuẩn Công nghệ(NIST) đã công bố thuật toán chữ ký số Digital Signature Standard(DSS) được phát triển bởi Cơ quan An ninh Quốc gia Mỹ (NSA) là tiêu chuẩn để xác thực tài liệu điện tử DSS có thể sử dụng bên thứ ba, để xác minh tính xác thực của chữ ký và dữ liệu trong nó
Trên thực tế thông điệp sử dụng chữ ký số có độ dài bất kỳ có thể lên đến vài Megabyte.Thời gian để tạo chữ ký và xác mình chữ ký sẽ tỉ lệ thuận với dung lượng của thông điệp.Thông thường người ta áp dụng chữ ký số với thông điệp ban đầu tương đối ngắn(160bit hoặc 256bit) Để giải quyết vấn đề độ dài thông điệp đầu vào áp dụng chữ ký số, người ta có thể chia thông điệp đầu vào thành nhiều đoạn nhỏ có độ dài thich hợp và áp dụng chữ ký số trên từng đoạn nhỏ này Giải pháp này có những khuyết điểm sau:
- Nếu thông điệp áp dụng chữ ký quá dài, sẽ có nhiều chữ ký được tạo ra và nhận được kết quả là có kích thước rất lớn
+ Mất thời gian cho việc tạo và xác thực chữ ký
+ Việc chia nhỏ sẽ không đảm bảo tính toàn vẹn của thông điệp ban đầu cần được ký
Hinh 3.6: Minh họa hoạt động của hàm băm[8]
Hinh 3.6: Minh họa hoạt động của hàm băm[8]
Hàm băm (Hash Function) là giải pháp phù hợp để giải quyết những vướng mắc trên khi áp dụng chữ ký số
Hàm băm là hàm toán học chuyển đổi một thông điệp có độ dài bất kỳ thành một dãy bít có độ dài cố định Dãy bít này còn được gọi là thông điệp rút gọn (message digest) hay là giá trị băm
Mỗi thông điệp gốc qua một hàm băm sẽ cho một giá trị băm duy nhất
Tuy nhiên, có trường hợp 2 thông điệp gốc khác nhau có cùng một giá trị băm, do đó không thể suy ngược từ giá trị băm ra thông điệp gốc Trên thực tế các thuật toán hàm băm là hàm một chiều vì vậy rất khó có thể suy ngược từ giá trị băm Trường hợp hai thông điệp gốc có cùng giá trị băm được gọi là sự đụng độ trong hàm băm Hình 3.6[8] thể hiện minh họa hoạt động của hàm băm
Một hàm băm được gọi là an toàn khi không xảy ra sự đụng độ (hoặc xác suất xảy ra đụng độ là cực kỳ thấp) Hàm băm giúp xác định tính toàn vẹn dữ liệu của thông điệp Mọi thay đổi trên thông điệp gốc, dù rất nhỏ đều làm thay đổi giá trị băm tương ứng Hàm băm còn có tính duy nhất bởi vì xác suất xảy ra đụng độ là cực kỳ thấp
Hàm băm được sử dụng trong nhiều ứng dụng bảo mật thông tin như tạo chữ ký số, xác thực mật khẩu, kiểm tra tính toàn vẹn dữ liệu, Có nhiều thuật toán để thực hiện hàm băm như RIPEMD160, MD5, SHA1, SHA256…
Hàm băm SHA (Secure Hash Algorithm)
SHA được phát triển bởi cục an ninh quốc gia Hoa Kỳ (NSA) dựa trên nền tảng của giải thuật MD4 và được Viện tiêu chuẩn và Công nghệ (NIST) công nhận thành chuẩn vào năm 1993 và được gọi là SHA-0 Sau đó, SHA-0 được phát hiện là có đụng độ Năm 1995, SHA-1 ra đời nhằm thay thế
SHA-0 Giá trị băm SHA-1 tạo ra có độ dài là 160bit SHA-1 trở thành chuẩn bảo mật cơ sở phổ biến trên Internet và được sử dụng rộng rãi trong nhiều ứng dụng và giao thức mạng như: TSL, SSL, PGP, SSH, S/MINE và IPSec
Năm 2002, NIST đưa ra một chuẩn mới bao gồm 3 phiên bản mới của SHA với độ dài của giá trị băm tương ứng là 256, 384 và 512 bit và được gọi tương ứng là SHA256, SHA384 và SHA512 Ba phiên bản trên gọi chung là SHA-2 Năm 2008 phiên phản SHA224 được bổ sung vào chuẩn này
Năm 2005, NIST chính thức công bố SHA-1 không còn an toàn và năm 2010 chuyển sang sử dụng SHA-2.
GIẢI PHÁP XÁC THỰC VĂN BẢN GIẤY
Đặt vấn đề
Trong cuộc sống, nhu cầu chứng thực bản sao từ bản gốc của văn bằng chứng chỉ, hay giấy tờ pháp lý để thực hiện các giao dịch trong xã hội nhằm phục vụ công việc là môt nhu cầu không thể thiếu đối với con người Trong tuyển sinh, tuyển dụng các trường học, doanh nghiệp cũng có nhu cầu kiểm tra lại tính xác thực của các bản sao văn bằng chứng chỉ của các ứng viên bằng cách yêu cầu ứng viên mang văn bằng chứng chỉ gốc để đối chiếu Để thực hiện chứng thực bản sao, kiểm tra đối chiếu các công chứng viên, nhân viên của các doanh nghiệp, trường học phải thực hiện các bước sau:
+ Yêu cầu người cần chứng thực, kiểm tra phải xuất trình bản chính và bản sao cần chứng thực, đối chiếu
+ Người thực hiện chứng thực, đối chiếu thực hiện kiểm tra tính hợp pháp của bản chính, nếu phát hiện bản chính có dấu hiệu giả mạo thì đề nghị người cần chứng thực chứng minh; nếu không chứng minh được thì từ chối chứng thực
+ Người thực hiện chứng thực, đối chiếu so sánh thông tin bản sao với bản chính, nếu bản sao đúng với bản chính thì chứng thực
Hiện tại, việc kiểm tra tính hợp pháp của bản chính vẫn được thực hiện trên kinh nghiệm của người thực hiện chứng thực, đối chiếu Yêu cầu đặt ra là làm thế nào để công chứng viên, nhân viên thực hiện đối chiếu kiểm tra của doanh nghiệp, trường học thực hiện một cách chính xác và nhanh chóng nhất về việc kiểm tra tính hợp pháp của văn bằng chứng chỉ,
Thực trạng việc giả mạo văn bản giấy ở Việt Nam
Cùng với sự phát triển của khoa học công nghệ, xã hội cũng ngày càng phát triển Nhu cầu sử dụng lao động trí thức hay công nhân lành nghề trong xã hội ngày càng nhiều Do vậy, trong quá trình tuyển dụng lao đông chúng ta đã quá chú trọng tới bằng cấp học vị, nên xã hội xuất hiện tình trạng bằng mọi cách để có được bằng cấp mà không qua thực học Ở Việt nam, tình trạng làm giả văn bằng chứng chỉ đã tồn tại từ trước
Ngày nay, tình trạng này đã đến mức báo động đặc biệt đối với bằng tốt nghiệp phổ thông trung học Có rất nhiều người sử dụng văn bằng chứng chỉ giả dùng để ứng tuyển vào các cơ quan công quyền nhà nước, hoặc thăng tiến
Năm 2016, Công an tỉnh Gia Lai đã phát hiện có ít nhất 20 cán bộ, viên chức mua văn bằng chứng chỉ giả[13] Bên cạnh đó, tình trạng mua bán văn bằng giả cũng đang diễn ra công khai và phổ biến
Các hồ sơ giả giấy chứng nhận về quyền sở hữu nhà và giấy chứng nhận về quyền sử dụng đất cũng trở nên nhức nhối, ngày càng nhiều hồ sơ về nhà đất đã qua mặt cơ quan công chứng để thực hiện hành vi lừa đảo trong việc mua bán nhà đất và vay vốn tại ngân hàng…rất khó để phân biệt hồ sơ thật và hồ sơ giả
Với sự phát triển của khoa học kỹ thuật quét và in kỹ thuật số đã mang lại chất lượng cao đối với các sản phẩm in với chi phí thấp Văn bằng, chứng chỉ và các giấy tờ pháp lý giả ngày càng được làm với kỹ thuật tinh vi hơn Tháng 04/2016 công an thành phố Hồ Chí Minh đã triệt phá đương dây làm bằng giả có quy mô cực lớn với độ giống bằng thật là 99%, không thể phân biệt bằng mắt thường [12] Nhưng hiên nay, việc phát hiện giả vẫn chủ yếu dựa vào sự hiểu biết và kinh nghiệm của mỗi cá nhân công chứng viên.
Phương pháp xác thực văn bản giấy dùng chữ ký số và mã QR
Ngoài yêu cầu đáp ứng được mục tiêu của đề tài, giải pháp còn phải đáp ứng thêm mục tiêu về thẩm mỹ đối với các văn bản là văn bằng, chứng chỉ, giấy chứng nhận khi áp dụng giải pháp
Qua đánh giá các công trình nghiên cứu liên quan tác giả chọn giải pháp xác thực văn bản in dùng chữ ký số và mã QR[1][2] có một số điểm thay đổi nhằm đáp ứng thêm với đặc điểm của văn bằng, chứng chỉ, giấy chứng nhận cụ thể:
+ Lượng thông tin thể hiển trên văn bằng, chứng chỉ ít vì vậy cần ngăn chặn nguy cơ thu thập bản rõ, bản mã hay dò khóa
+ Diện tích của mã QR phải đảm bảo được thẩm mỹ khi thực hiện in lên văn bằng, chứng chỉ
Phương pháp bao gồm 2 quá trình như sau:
Hinh 4.1: Quá trình tạo văn bản giấy có tính năng xác thưc dùng chữ ký số và mã QR
Bên phát hành văn bản:
Bên phát hành văn bản sẽ tạo ra thông điệp ban đầu từ nội dung của văn bản được phát hành Thông điệp ban đầu được chia thành 2 phần thông điệp 1(TD1) và thông điệp 2 (TD2) Bên cấp bắt đầu thực hiện tạo ra chữ ký số bằng cách thông điệp ban đầu được truyền qua hàm băm để nhận được giá trị băm tương ứng Giá trị băm này được mã hóa bằng khóa riêng của bên cấp thu được chữ ký số
Sau khi tạo chữ ký số, thông điệp 2 và giá trị băm được chuyển đổi thành các thông tin số đó là chuỗi số B và chuỗi số TD2 thông qua hàm chuyển số
Chia chuỗi số B thành 2 chuỗi số là CSB1 và CSB2 Chuỗi số CSB1 được trích từ chuỗi số B từ 1 vị trí ngẫu nhiên với chiều dài cố định Chuỗi số CSB2 thu được sau khi loại bỏ chuỗi số CSB1 ra khỏi chuỗi số B
Chữ ký số và chuỗi số TD2 được thực lưu trữ thành tập tin Text
Thông điệp TD1 và chuỗi số CSB2 được tham gia vào quá trình tạo mã QR
Hinh 4.2: Quá trình xác thực văn bản giấy sử dụng chữ ký số và mã QR
Thông điệp ban đầu, chuỗi số CSB1 và mã QR sau đó được in lên văn bản Văn bản được phát hành để sử dụng
Bên xác thực văn bản:
Khi nhận được văn bản giấy cần thực hiện xác thực, bên xác thực có thể xác minh tính xác thực của văn bản theo tiến trình sau Đầu tiên, văn bản được chụp ảnh hoặc scan tạo ra tập tin hình ảnh Mã QR sẽ được quét bằng camera và phần mềm đọc mã QR Dữ liệu thu được từ mã QR sẽ được thực hiện sửa lỗi với thuật toán Reed-Solomon nếu mã QR bị hư hỏng hoặc bị bóp méo, để cho ra thông điệp TD1 và chuỗi số CSB2
Hiển thị thông điêp đối chiếu với thông điệp in trên văn bản
Sau đó, đọc tập tin chứa chữ ký số và chuỗi số TD2 tương ứng với văn bản cần xác thực Chữ ký số được giải mã với khóa công khai được chia sẽ bởi bên phát hành, thu được giá trị băm của chữ ký số (GT băm 1)
Chuỗi số in trên văn bản (Chuỗi số CSB1) được trích xuất từ tập tin hình ảnh của văn bản thông qua sử dụng công cụ nhận dạng ký tự quang học (OCR) Chèn chuỗi số CSB1 vào chuỗi số CSB2 ở vị trí đã trích xuất CSB1 thu được chuỗi số B Chuỗi số TD2 và Chuỗi số B được truyền vào hàm chuyển chuỗi thu được giá trị băm in trên văn bản (GT băm 3) và thông điệp TD2
Kết hợp thông điệp TD1 và thông điệp TD2 cho ra thông điệp ban đầu Truyền thông điệp ban đầu qua hàm băm kết quả thu được là giá trị băm của thông điệp (GT băm 2) So sánh giá trị băm của thông điệp (GT băm 2) với giá trị băm của chữ ký số (GT băm 1) Nếu 2 giá trị này giống nhau, nghĩa là thông điệp TD1 trong mã QR không bị thay đổi
Tiếp theo, so sánh giá trị băm in trên văn bằng chứng chỉ (GT băm 3) với giá trị băm của thông điệp (GT băm 2) Nếu 2 giá trị này giống nhau, nghĩa là chuỗi số CSB1 trong mã QR không bị thay đổi và thông điệp ban đầu được xác thực Có thể giá trị băm in trên văn bằng chứng chỉ (GT băm 3) và giá trị băm của thông điệp (GT băm 2) là không giống nhau do lỗi của công cụ OCR nhận dạng ký tự không chính xác
Cuối cùng thực hiện so sánh bằng mắt thường thông điệp đã in trên văn bản và thông điệp thu được trong tiến trình
Phương pháp đảm bảo được tính bảo mật của chữ ký số cụ thể như:
+ Tính xác thực: Bên phát hành văn bản là bên duy nhất giữ khóa riêng, một chữ ký hợp lệ đồng nghĩa với thông điệp trên văn bản cần xác thực do bên phát hành văn bản phát hành không bị sửa đổi Bên xác thực sử dụng khóa công khai tương ứng được bên phát hành chia sẻ dùng để xác minh chữ ký Chữ ký không hợp lệ thì nội dung thông điệp của bên phát hành văn bản bị sửa đổi hoặc không phải thông điệp của bên phát hành văn bản
+ Tính toàn vẹn: Nếu thông điệp thể hiện trong mã QR hoặc trong tập tin được lưu trữ bị thay đổi thì quá trình xác thực sẽ kết thúc sau phép so sánh giá trị băm bởi vì giá trị băm từ thông điệp trong mã QR kết hợp thông điệp trong tập tin lưu trữ và giá trị băm sau khi giải mã chữ ký số trong tập tin lưu trữ sẽ khác nhau Điều này đảm bảo nội dung thông điệp trong mã QR và trong tập tin lưu trữ là toàn vẹn
Trong trường hợp kẻ giả mạo lấy được tập tin lưu trữ chữ kỹ số với thông điệp đã được chuyển sang thông tin số và mã QR là hợp lệ
Khả năng kẻ giả mạo biết được đầy đủ nội dung thông điệp để tạo ra giá trị băm là rất thấp vì nội dung thông điệp trong tập tin lưu trữ đã được che dấu nhờ chuyển sang dạng thông tin số
+ Tính chống chối bỏ: Chỉ có khóa công khai mà bên phát hành văn bản chia sẻ mới có thể giải mã được chữ ký số với khóa riêng tương ứng
Tổng kết chương
Giải pháp đề xuất chưa hoàn toàn tự động 100% do bước cuối cùng cần phải thẩm tra bằng mắt thường Bước thủ công này không ảnh hưởng nhiều đến thời gian xác thực
Giải pháp đề xuất đảm bảo được tính bảo mật và cũng có ưu điểm như phương xác thực văn bản [1][2] Áp dụng vào hoàn cảnh ở Việt Nam để xác thực văn bằng chứng chỉ là hoàn toàn khả thi
Chương 5: HIỆN THỰC PHƯƠNG PHÁP XÁC THỰC VĂN BẢN GIẤY DÙNG CHỮ KÝ SỐ VÀ MÃ QR
5.1 Các thƣ viện, công cụ đƣợc sử dụng
ZXing (viết tắt của “Zebra crossing”) là một thư viện mã nguồn mở, xử lý nhiều loại mã vạch, được cài đặt bằng ngôn ngữ Java, và cũng được chuyển sang hỗ trợ nhiều ngôn ngữ khác Mục đích của thư viện này là sử dụng camera trên điện thoại di động để chụp và giải mã mã vạch mà không cần phải kết nối với máy chủ Thư viện Zxing hỗ trợ quét các loại mã vạch sau:
UPC-A và UPC-E; EAN-8 và EAN- 13; Code 39; Code 128; QR Code; Data
Matrix Thư viện Zxing được sử dụng trong đề tài dùng để đọc mã QR để nhận thông tin từ mã QR
5.1.2 Tesseract OCR (Optical Character Recognition)
Tesseract là bộ công cụ mã nguồn mở để nhận diện ký tự quang học hay còn gọi là OCR được phát triển bởi hãng HP từ năm 1985 Bộ công cụ này thực hiện trích xuất văn bản từ hình ảnh Bộ công cụ Tesseract được phát triển dựa trên tài trợ của hãng Google từ năm 2006 Tesseract hoạt động trên nhiều nền tảng khác nhau (Windows, Linux, Mac OS) và hỗ trợ nhận dạng nhiều định dạng ảnh (TIFF, JPEG, PNG, GIF, BMP) và file PDF
Tessnet2 là bộ công cụ mã nguồn mở OCR trên nền tảng NET2.0, sử dụng Engine Tesseract Tessnet2 giúp cho việc sử dụng Tesseract trở nên dễ dàng hơn trường môi trường NET Tessnet2 được đề tài sử dụng để nhận dạng ký tự số Đề tài chọn thư viện này để sự dụng nhận dạng ký tự số với lý do thư viện miễn phí
Microsoft NET Framework cung cấp nền tảng và môi trường lập trình, tập hợp nhiều bộ công cụ và các giải pháp căn bản để đáp ứng việc thực hiện lập trình giao diện người dùng, truy cập dữ liệu, kết nối cơ sở dữ liệu Bên cạnh đó bộ Framework này cũng hỗ trợ quản lý việc thực thi các ứng dụng được viết dựa trên NET Framework
Microsoft NET Framework hỗ trợ cho nhiều ngôn ngữ lập trình khác nhau với công nghệ NET như VB.NET, C#.NET, ASP.NET Các thành phần chính của Framework gồm Common Language Runtime kết nối các thành phần trong NET Framework với hệ điều hành; NET Framework class library thư viện lập trình như cho ứng dụng, cơ sở dữ liệu, dịch vụ web
Phiên bản đầu tiên của.NET framework được phát hành vào năm 2002 cho các hệ điều hành Windows 98, NT 4.0, 2000 và XP
Microsoft đăng ký quyền sở hữu Win 32 Cryptography API (CryptoAPI) vào năm 1996 tích hợp trong Win NT Mặc dù CryptoAPI cung cấp đầy đủ sự hỗ trợ cho nghành lập trình mật mã Để đơn giản cho việc sử dung NET Framework cung cấp một lớp với tên gọi System.Security.Cryptography Một số nội dung chính có trong lớp System.Security.Cryptography:
+ SymmetricAlgorithm: Lớp mã hóa đối xứng Nó sẽ mã hóa theo các thuật toán mã hóa đối xứng như: DES, Rịndael
+ AsymmetricAlgorithm: Lớp mã hóa bất đối xứng, nó sẽ mã hóa theo các thuật toán RSA, DSA
+ CryptoStream: Kết nối dòng dữ liệu nguồn với các thuật toán mã hóa
+ CspParameters: Chứa thông tin của các tham số trong những thuật toán đặc biệt để có thể lưu trữ và lấy lại thông qua Cryptographic Service Provider (CSP)
+ HashAlgorithm: Lớp cơ sở hỗ trợ các thuật toán băm
+ RandomNumberGenerator: Lớp cơ sở sinh ra số ngẫu nhiên
+ ToBase64Transform và FromBase64Transform: Dùng để chuyển đổi các dãy Byte và Base-64
+ CryptographicException: Chứa thông tin về lỗi của các loại mã hóa khác nhau
5.2 Hệ thống xác thực 5.2.1 Mô tả
Hệ thống xác thực văn bản giấy được hiện thực bằng ngôn ngữ C#5.0 trong bộ Visual Studio 2013 của Hãng Microsoft Hệ thống này được hiện thực trên nền tảng Windown Form chạy trên máy PC Hệ thống xác thực gồm 2 phần:
+ Ký và tạo mã QR
Tác giả sử dụng thuật toán SHA-256, và giải thuật mã hóa công khai là giải thuật mã hóa RSA-2048 để thực hiện tạo chữ ký số và xác minh chữ ký số
Chuyển đổi thông tin ký tự sang thông tin số và ngược lại hay còn được gọi là hàm chuyển chuỗi và chuyển số, tác giả sử dụng thư viện System.Numberics.BigInteger được hỗ trợ đính kèm trong bộ Visual Studio 2013 Cụ thể mã nguồn như sau:
+ Chuyển chuổi ký tự thành số : hàm có đầu vào là 1 chuỗi ký tự bất kỳ và đầu ra cũng là 1 chuỗi ký tự chỉ bao gồm các ký tự số (0,1,2,3,4,5,6,7,8,9) public string strnum(string str) { string mdau = "",tepms = str; int mm = tepms.Length % 4; if (mm > 0) { tepms = new string('0', 4 - mm) + tepms;
} byte[] mb = Convert.FromBase64String(tepms);
BigInteger bigIn = new BigInteger(mb); string strrt = bigIn.ToString(); mdau = strrt.Substring(0, 1); if (mdau == "-") strrt = strrt.Replace("-", "0"); else strrt = "1" + strrt; return strrt;
+ Chuyển số thành ký tự: đầu vào là 1chuỗi ký tự chỉ bao gồm các ký tự số, đầu ra là một chuỗi ký tự bất kỳ public string numstr(string snum) { string mdau = "", msnum = snum; mdau = snum.Substring(0, 1); if (mdau == "0") msnum = "-" + msnum.Substring(1, msnum.Length - 1); else msnum = msnum.Substring(1, msnum.Length - 1);
BigInteger bigIn1 = new BigInteger(); bigIn1 = BigInteger.Parse(msnum); byte[] mb = bigIn1.ToByteArray(); string mstr = Convert.ToBase64String(mb); return mstr;
Mã QR tác giả sử dụng là mã QR Verson 8, kích thước 49x49, cấp độ sửa lỗi M(15%) và khả năng lưu trữ tối đa 152 ký tự và số
Mỗi đơn vị phát hành văn bản có tính năng xác thực, trước tiên họ cần có cặp khóa công khai và khóa riêng Trong hệ thống này sẽ thực hiện cung cấp cặp khóa đó Các cặp khóa công khai và khóa riêng khi được cung cấp sẽ lưu trữ dưới dạng tập tin văn bản có tên lần lượt là “PublicKey.xml” và
“PrivateKey.xml” Người dùng không cần khai báo khóa vào hệ thống Hệ thống tự động sử dụng khi cần Người tạo ra hệ thống xác thực là người sử dụng chức năng này Mã nguồn như sau: private void taoKeyToolStripMenuItem_Click(object sender, EventArgs e) { this.Enabled = false;
RSACryptoServiceProvider csp = new RSACryptoServiceProvider(2048); string privateKey = csp.ToXmlString(true).Replace(">\r\n\r\n\r\n\r\n