Để hiểu thêm về các giải thuật toàn vẹn dữ liệu cho bảo mật thông tin như sử dụng hàm băm mật mã, chữ ký số nên nhóm chúng em đã quyết định tìm hiểu đề tài tiểu luận “ chữ kí số và ứng d
Trang 1HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
KHOA VIỄN THÔNG 1
BÁO CÁO TIỂU LUẬN CUỐI KỲ
AN NINH MẠNG THÔNG TIN
Đề tài:
Chữ ký số và ứng dụng đảm bảo tính toàn vẹn của đề thi
Trang 2PHÂN CHIA CÔNG VIỆC
2
1.2 Nội dung về chữ ký số 1.2.1 Tổng quan về chữ kí số 1.2.2 Quá trình ký và tạo chữ ký số 1.2.2.1 Tạo và trao đổi khóa
1.2.2.2 Quá trình tạo chữ ký số 1.2.2.3 Quá trình xá thực chữ ký 1.2.3 Chữ ký số dựa trên RSA
2.3.1 Ứng dụng trong thị trường Việt Nam 2.3.2 Ứng dụng trong đề thi
III Kết luận Chỉnh sửa word, làm mục lục, danh mục hình ảnh
Trang 3MỤC LỤC
PHÂN CHIA CÔNG VIỆC i
MỤC LỤC ii
DANH MỤC HÌNH ẢNH iii
DANH MỤC VIẾT TẮT iv
ĐẶT VẤN ĐỀ 1
I Phương pháp đảm bảo toàn vẹn dữ liệu bằng chữ ký số 2
1.1 Hàm băm 2
1.1.1 Phân loại hàm băm 2
1.1.2 Mục đích sử dụng của hàm băm 2
1.1.3 Tính chất cơ bản của hàm băm 2
1.1.4 Cấu trúc tổng quát hàm băm 2
1.1.5 Các cách áp dụng hàm băm 3
1.1.6 Các yêu cầu của hàm băm 4
1.1.7 Hàm băm SHA 5
1.1.7.1 SHA1 và SHA2 5
1.1.7.2 Hàm băm SHA3 6
1.2 Chữ ký số 8
1.2.1 Tổng quan về chữ ký số 8
1.2.2 Quá trình tạo ra chữ ký số 9
1.2.2.1 Tạo khóa và trao đổi khóa 9
1.2.2.2 Quy trình tạo ra chữ ký số 10
1.2.2.3 Quá trình xác thực chữ ký số 11
1.2.3 Chữ ký số dựa trên RSA 11
II Ứng dụng chữ ký số đảm bảo tính toàn vẹn trong đề thi 12
2.1 Yêu cầu quản lý đề thi 12
2.2 Nguy cơ sửa đổi và lộ thông tin đề thi 13
2.3 Ứng dụng thực tế 15
2.3.1 Chữ ký số trong thị trường Việt Nam 15
2.3.2 Chữ ký số trong đề thi 16
KẾT LUẬN 20
Trang 4DANH MỤC HÌNH ẢNH
Hình 1.1: Cấu trúc tổng quát của hàm băm 3
Hình 1.2: Ví dụ về sử dụng hàm băm trong xác thưc 3
Hình 1.3: Sơ đồ tổng thể của hàm băm SHA1 5
Hình 1.4: Sơ đồ tổng thể của hàm băm SHA-512 5
Hình 1.5: Quá trình tạo khóa 9
Hình 1.6: Quy trình tạo chữ ký số 10
Hình 1.7: Quá trình xác thực chữ ký số 11
Hình 1.8: Sơ đồ tổng quát và quá trình tạo và xác thực chữ ký số RSA 11
Hình 2.1: Sửa thông điệp 14
Hình 2.2: Xem trộm thông điệp 14
Hình 2.3: Mạo danh 15
Hình 2.4:Sao chép thông điệp 15
Trang 5DANH MỤC VIẾT TẮT
CRHF Collision Resistant Hash
Function
Chức năng băm chống va chạm
MAC Message Authentication code Mã xác thực thông điệp
MDC Modification Detection code Mã phát hiện sửa lỗi
NIST
National Institute of Standards
and Technology
Viện tiêu chuẩn và công nghệ quốc gia ( Mỹ)
khóa công khai SHA Secure Hash Algorithnm Thuật toán băm an toàn
Trang 6ĐẶT VẤN ĐỀ
1 Lý do chọn đề tài
Bảo mật thông tin là vấn đề quan trọng hàng đầu trong các lĩnh vực các quân sự, ngoại giao và đây luôn là vấn đề được ưu tiên nghiên cứu trong thời đại công nghệ số hiện nay Bảo mật thông tin là duy trì tính bảo mật, tính toàn vẹn và tính sẵn sàng của thông tin Bảo mật nghĩa là đảm bảo thông tin chỉ được tiếp cận bởi những người được cấp quyền tương ứng Tính toàn vẹn là bảo vệ sự chính xác, hoàn chỉnh của thông tin
và thông tin chỉ được thay đổi bởi những người được cấp quyền Tính sẵn sàng của thông tin là những người được quyền sử dụng có thể truy xuất thông tin khi họ cần Ngày nay, các hệ thống thông tin trên mạng Internet cho phép mọi người truy cập, khai thác và chia sẻ thông tin và đó cũng chính là nguyên nhân dẫn đến thông tin bị rò
rỉ, bị phá hoại hoặc đánh cắp Lúc này việc bảo mật thông tin là một vấn đề cấp thiết
Để hiểu thêm về các giải thuật toàn vẹn dữ liệu cho bảo mật thông tin như sử dụng hàm băm mật mã, chữ ký số nên nhóm chúng em đã quyết định tìm hiểu đề tài tiểu luận “ chữ kí số và ứng dụng đảm bảo tính toàn vẹn của đề thi”
2 Mục đích của đề tài
Tìm hiểu lý thuyết về hoạt động, yêu cầu của hàm băm, các hàm băm SHA, quá trình ký, tạo chữ ký số và chữ ký số dựa trên RSA Từ đó sẽ trình bày ứng dựng để đảm bảo tính toàn vẹn của đề thi
3 Phương pháp và giải quyết vấn đề
Thu thập các tài liệu đã xuất bản, các luận văn, đồ án và các tài liệu trên mạng Internet liên quan đến bài tiểu luận đang tìm hiểu Từ đó chọn lọc và viết lại để phù hợp với đề tài của nhóm
4 Bố cục của tiểu luận
Ngoài phần đặt vấn đề và kết luận thì bài tiểu luận chia làm ba phần:
I Phương pháp đảm bảo toàn vẹn dữ liệu bằng chữ kí số
II Ứng dụng đảm bảo tính toàn vẹn trong đề thi
Trang 7I Phương pháp đảm bảo toàn vẹn dữ liệu bằng chữ ký số
1.1 Hàm băm
Hàm băm mật mã được xem là thuật toán mã hoá linh hoạt nhất trong các loại thuật toán mã hoá Nó chuyển đổi một thông điệp có độ dài bất kỳ thành một dãy bits có độ dài cố, dãy bits này được gọi là giá trị băm và thường được gọi là bản tin rút gọn Người gửi tính toán một giá trị băm từ các bít trong bản tin và gửi đồng thời giá trị băm và bản tin đó Người nhận thực hiện tính toán giá trị băm bằng các bit trong bản tin nhận được và so sánh nó với giá trị băm nhận được Trong trường hợp hai giá trị băm giống nhau thì bản tin được xác thực và ngược lại nếu hai giá trị băm khác nhau thì bản tin đã bị thay đổi
1.1.1 Phân loại hàm băm
Hàm băm đươc chia làm hai loại là hàm băm có khoá và hàm băm không có khoá Hàm băm có khoá là hàm băm có dữ liệu đầu vào và kèm thông điệp khác là một khoá bí mật Hàm băm có khoá thường được gọi là mã xác thực bản tin (MAC)
Hàm băm không có khoá là hàm băm sử dụng dữ liệu đầu vào chỉ là thông điệp và không chứa khoá Hàm băm không khoá gồm các lớp MDC(Modification Detection Code) Lớp MDC lai chia thành hai lớp con là hàm băm một chiều (OWHF - One way hash function) và Hàm băm khó va chạm (CRHF - Collision Resistant Hash Function) Hàm băm một chiều có nghĩa là với một giá trị băm biết trước, khó có thể tìm ra được thông điệp đầu vào Hàm băm khó va chạm có nghĩa là với thông điệp khác nhau thì sẽ không thể có cùng giá trị băm
1.1.2 Mục đích sử dụng của hàm băm
Hàm băm giúp cho các sơ đồ chữ ký giảm dung lượng của dữ liệu khi truyền qua mạng
Hàm băm kết hợp với chữ ký số tạo nên một loại chữ ký điện tử an toàn hơn
Các MDC tạo ra ảnh đặc trưng của thông điệp từ đó đảm bảo tính toàn vẹn của thông tin
1.1.3 Tính chất cơ bản của hàm băm
Với thông điệp đầu vào M có kích thước bất kì ta thu được giá trị băm đầu ra là h
= H(M) là duy nhất và có kích thước n bit cố định và thường thì sẽ có kích thước nhỏ hơn rất nhiều so với kích thước bản tin đầu vào
Chỉ thay đổi một bit đầu vào, làm thay đổi hoàn toàn giá trị đầu ra
Hai thông điệp khác nhau sẽ không thể có cùng một giá trị băm
1.1.4 Cấu trúc tổng quát hàm băm
Hàm băm gồm hai thành phần chính là một hàm nén và các hàm biến đổi khác, quá trình tạo ra hàm băm gồm các bước sau:
Tiền xử lý:
Từ bộ đệm thông điệp
Phân tích thông điệp đệm thành các khối m bits
Thiết lập giá trị khởi tạo bởi hàm băm
Thuật toán băm bao gồm:
Trang 8Tạo ra các trạng thái từ thông điệp đệm (cùng với hàm băm, hằng số, chiều dài cố định)
Kết quả giá trị băm dùng để xác định bản tóm tắt của thông điệp
Hình 1.1: Cấu trúc tổng quát của hàm băm
1.1.5 Các cách áp dụng hàm băm
Hình 1.2: Ví dụ về sử dụng hàm băm trong xác thưc
Trang 9Hình a: Tại bên gửi A bản tin M được đưa qua hàm băm để tạo ra giá trị băm, sau
đó bản tin M được nối với giá trị băm đưa vào bộ mã hoá sử dụng khoá K Bên nhận B
sử dụng khoá K để giải mã bản tin M và giá trị băm nhận được Bản tin M được đưa vào hàm băm để tính giá trị băm và so sánh với giá trị băm nhận được Trong phương pháp này chỉ có A và B biết khoá bí mật nên bản tin được đảm bảo truyền mà không bị sửa đổi
Hình b: Tại bên gửi A bản tin M được đưa qua hàm băm để tạo ra giá trị băm Giá trị băm sau đó được đưa vào bộ mã hoá sử dụng khoá K Giá trị băm sau khi mã hoá được nối với bản tin M Bên nhận B sử dụng khoá K để giải mã giá trị băm nhận được Bản tin M nhận được đưa vào hàm băm để tính giá trị băm và so sánh với giá trị băm nhận được phương pháp này được sử dụng khi các ứng dụng không yêu cầu bảo mật Hình c: Tại bên gửi A một giá trị bí mật S được nối với bản tin M và đưa qua hàm băm để tạo ra giá trị băm Giá trị băm sau đó được nối với bản tin M và truyền đi Bên nhận B sau khi nhận được thì tiến hành sử dụng giá trị bí mật S nối với bản tin M nhân được và đưa qua hàm băm để tính giá trị băm và so sánh với giá trị băm nhận được Trong phương pháp này tính bảo mật không được cung cấp
Hình d: Phương pháp này tương tự phương pháp c chỉ khác bộ mã hoá và giải mã được thêm vào Trong phương pháp này tính bảo mật được thêm vào để mã hoá toàn
bộ bản tin và giá trị băm
Khi tính bảo mật không cần thiết thì phương pháp (b) ưu việt hơn hai phương pháp (a) và (d) do phải tính toán ít hơn Thậm chí việc tránh mã hoá như trong phương pháp (c) ngày càng nhận được nhiều sự quan tâm hơn bởi các nguyên nhân sau:
Mã hoá bằng phần mềm tương đối chậm
Chi phí cho việc mã hoá bằng phần cứng là không nhỏ Với một hê thống có nhiều nút mạng thì chi phí sẽ tăng lên
Mã hoá bằng phần cứng phù hợp hơn trong việc mã hoá dữ liệu lớn Với các dữ liệu nhỏ thì phần lớn thời gia bị chiếm bởi các thủ tục khởi tạo và gọi hàm
Các thuật toán mã hoá thường bị giới hạn bởi các bằng sáng chế Vì vậy cần phải trả phí để sử dụng các thuật toán này làm tăng chi phí
1.1.6 Các yêu cầu của hàm băm
Trong khi phương pháp checksum CRC dùng hai dãy bít có cùng checksum, thì hàm băm H(x) lại chỉ cho phép một hàm tính checksum thỏa mãn các yêu cầu sau: Các thông điệp x có các độ dài khác nhau đều có thể áp dụng H
Kích thước đầu ra h = H(x) là cố định và nhỏ hơn thông điệp ban đầu
Tính một chiều: với một giá trị băm cho trước, không thể tìm lại được thông điệp x sao cho h = H(x) (về mặt thời gian tính toán)
Tính chống trùng yếu: cho trước một thông điệp x, không thể tìm thấy thông điệp y≠ x mà H(x) = H(y)
Tính chống trùng mạnh: không thể tìm ra cặp thông điệp x, y bất kỳ nào mà H(x) = H(y), hay nói cách khác nếu H(x) = H(y) thì chắc chắn rằng thông điệp x giống y
Trang 101.1.7 Hàm băm SHA
SHA là một họ những thuật toán băm mật mã do viện tiêu chuẩn và công nghệ Quốc gia công bố theo tiêu chuẩn xử lý thông tin Liên Bang Hoa Kỳ Hiện tại có ba thuật toán SHA được đin nghĩa là SHA1, SHA2, SHA3 SHA2 bao gồm 4 hàm băm với giá trị băm của nó là: 224, 256,384 hoặc 512 bit: SHA-224, SHA-256, SHA-384, SHA-512.SHA3 cũng được chia thành bốn dạng hàm băm SHA3-224, SHA3-256,
SHA3-384, SHA3-512
1.1.7.1 SHA1 và SHA2
Hàm băm SHA1 với giá trị băm có kích thước là 160 bit, được dùng để tính giá trị băm của thông điệp có kích thước tối đa là 264 bit
Hình 1.3: Sơ đồ tổng thể của hàm băm SHA1
Với SHA1 và SHA-256 thông điệp được phân tích thành N khối, mỗi khối 512 bit
và được kí hiệu là M1,M2…, MN Vì vây 512 bit của khối dữ liệu đầu vào có thể được thể hiện bằng 16 từ 32 bit
SHA-512 có cấu trúc tương tự SHA1 nhưng các khối tính toán có số bit lớn hơn
Hình 1.4: Sơ đồ tổng thể của hàm băm SHA-512
Với SHA 384 và SHA-512 thông điệp được phân tích thành N khối, mỗi khối 1024 bit
và được ký hiệu là M1,M2…, MN Vì vậy 1024 bit của khối dữ liệu ban đầu vào có thể được thể hiện bằng 16 từ 64 bit
Trang 11Khung thuât toán chung cho các hàm băm SHA
Trạng thái keccak
Trang 12Các hoán vị Keccak-p được xác định với hai tham số là chiều rộng của hoán vị ký hiệu là b và số vòng ký hiệu là 𝑛𝑟
SHA3 là một tập hợp gồm các hàm sponge đặc trưng bởi hai tham số là tốc độ r bit
và cường độ an toàn c Độ rộng của hàm băm SHA3 được xác định bằng tổng của r+c Trong xây dựng sponge, miền của phép hoán vị cũng là miền của trạng thái
Bảng 1.1: Keccak – p hoán vị chiều rộng và các số liệu liên quan
Mỗi hàm nén Keccak gồm 24 vòng nén và mỗi vòng nén gồm năm bước là năm thuât toán: theta θ(A), Rho (ρ), Pi (π), Chi(Χ), Iota(i)
Xây dựng Sponge
Xây dựng sponge nhằm mục đích để xác định các hàm dạng nhị phân có độ dài đầu
ra tùy ý Ba thành phần được sử dụng là chuỗi có chiều dài cố định(f), một tham biến tốc độ (r) và một quy tắc thêm pad để xây dựng sponge
Hàm f ánh xạ một chuỗi có chiều dài cố định được kí hiệu là b đến chuỗi có chiều dài tương tự Tỷ lệ r là số nguyên dương nhỏ hơn so với độ rộng b Dung lượng được
kí hiệu là C, b- r số nguyên dương Do đó r +c = b
Qui tắc đệm “pad” nghĩa là chuỗi có độ dài thích hợp để gắn các chuỗi f Cho x là
số nguyên dương và m số nguyên không âm Đệm đầu ra pad(x,m) là chuỗi có các thuộc tính m+len(pad(x,m)) là một bội số của x Trong đó sponge x= r và m = len(N), sao cho chuỗi đệm đầu vào có thể được phân chia thành một chuỗi các r –bits
Thuật toán: SPONGE[f,pad,r](N,d)
Các bước thực hiện:
Bước 1: cho P =N || pad(r,len(N))
Bước 2: cho n = len(P)/r
Bước 3: cho c = b-r
Bước 4: cho P0,…, Pn−1là chuỗi duy nhất có độ dài r sao cho P = P0 || … || Pn−1 Bước 5: cho S=0b
Bước 6: For i from 0 to n-1, let 𝑆 = 𝑓(𝑆⨂(𝑃𝑖||0𝑐))
Bước 7: Let Z chuỗi rỗng
Bước 8: Let Z= Z ztruncr(S)
Bước 9: if d |z|; return Truncd(Z); else continue
Bước 10: Let S=f(S), tiếp tục với bước 8
Từ những năm 2005, SHA1 đã được chứng minh là khá yếu Vào năm 2015 các nhà nghiên cứu của Google đã tìm ra phương pháp tạo ra cùng một giá trị băm cho hai thông điệp khác nhau Như vậy những kẽ tấn công có thể sử dụng để giả mạo chữ ký
Trang 13số.SHA 2 là kế nhiệm SHA1 có độ dài bit dài hơn Tuy nhiên vì thuật toán SHA2 tương tự thuật toán SHA1 nên có thể có các cuộc tấn công bất ngờ.Thuật toán SHA 3 bao gồm bốn hàm băm SHA3 -224, SHA3-256, SHA3-384, SHA3-512 và hai hàm mở rộng SHAKE128 và SHAKE256 Trong quá trình phân tích Keccak, các nhà thiết kế
đã đưa vào những giải pháp như cấu trúc Sponege Bên cạnh cấu trúc Sponge các tác giả còn thực hiện các biện pháp như bổ sung khóa mật vào đầu vào của keccak biến nó thành mã xác thực thông điệp, bổ sung khóa mật vào vector khởi đầu công khai và đưa vào chế độ gama có độ dài tùy ý biến cấu trúc Sponge thành mã dòng Vì vậy, Keccak
có nhiều ưu điểm vượt trội so với các hàm băm khác
1.2 Chữ ký số
1.2.1 Tổng quan về chữ ký số
Chữ ký số (Digital signature): là dạng một dạng chữ ký điện tử, phụ thuộc vào văn bản gửi đi (khác chữ ký truyền thống) Nó là một cơ chế xác thực cho phép người tạo thông tin dùng khóa riêng của mình để xử lý khối thông tin theo một thuật toán nào đó giúp người nhận thông tin kiểm chứng được tính toàn vẹn về nội dung và nguồn gốc thông tin Nó dựa trên công nghệ khóa công khai (mỗi người cần một 1 cặp khóa công khai và khóa bí mật)
Khóa bí mật và khóa công khai sẽ là một cặp khóa thuộc hệ thống mật mã bất đối xứng, Khóa bí mật được dùng để tạo chữ ký số, còn khóa công khai được sử dụng để kiểm tra chữ ký số được khởi tạo bởi khóa bí mật tương ứng trong cặp khóa (hay còn gọi là xác thực)
Chữ ký của một người trên tài liệu thường đặt ở cuối văn bản để xác nhận nguồn gốc hay trách nhiệm của người ký lên tài liệu đó.Với tài liệu đã được “số hóa” nếu chữ
ký đặt ở cuối văn bản thì việc sao chép “chữ ký số” là dễ dàng và không thể phân biệt bản gốc với bản sao vì chữ ký số là các số 0,1 Vì vậy một chữ số đặt ở cuối “tài liệu số” không thể chịu trách nhiệm đối với toàn bộ nội dung văn bản, mà chữ ký số phải được ký trên từng bit của dữ liệu đó Những chữ ký số cũng không thể ký trên bất kỳ tài liệu nào với độ dài tùy ý, vì như vậy chữ ký số sẽ có độ dài rất lớn Với tài liệu dài thì ký trên văn bản đại diện của nó Văn bản đại diện của tài liệu được tạo ra bởi hàm băm
Chữ ký số được phát triển và ứng dụng rộng rãi hiện nay dựa trên một số thuật toán như RSA, DSA, ElGamal, Elliptic …là cơ sở quan trọng để hình thành hạ tầng khóa công khai cho phép người sử dụng mạng công cộng internet để trao đổi dữ liệu và tìm một cách an toàn, thông qua việc sử dụng một cặp khóa công khai và bí mật được cấp phát
Việc sử dụng chữ ký số mang lại nhiều ưu điểm khi cần xác định nguồn gốc và tính toàn vẹn của văn bản trong quá trình sử dụng:
- Khả năng xác định nguồn gốc: Các hệ thống mật mã hóa khóa công khai cho
phép mật mã hóa văn bản với khóa bí mật mà chỉ có người chủ của khóa biết Để
sử dụng chữ ký số thì văn bản cần phải được mã hóa hàm băm (là giải thuật nhằm sinh ra các giá trị băm tương ứng với mỗi khối dữ liệu: có thể là một chuỗi