Cryptography là khoa học và nghệ thuật mã hóa thông tin để bảo vệ dữ liệu khỏi việc truy cập trái phép. Nó đảm bảo rằng chỉ những người được phép mới có thể đọc và hiểu thông tin. Các khái niệm chính: Mã hóa (Encryption): Quá trình biến đổi dữ liệu từ dạng dễ hiểu (plaintext) thành dạng khó hiểu (ciphertext) để bảo vệ thông tin. Giải mã (Decryption): Quá trình ngược lại, chuyển ciphertext trở về plaintext để có thể đọc được. Khóa (Key): Chuỗi ký tự sử dụng để mã hóa và giải mã dữ liệu. Có hai loại khóa: Khóa đối xứng (Symmetric Key): Cùng một khóa được sử dụng để mã hóa và giải mã. Khóa công khai (Public Key): Sử dụng một cặp khóa – một khóa công khai để mã hóa và một khóa bí mật để giải mã.
Trang 1BÁO CÁO THỰC TẬP AN TOÀN THÔNG TIN
LÝ THUYẾT – MODULE 20
LO#01: Giải thích Các Khái Niệm về Mật Mã Hóa
LO#02: Giải thích Các Thuật Toán Mã Hóa Khác Nhau
LO#03: Thực Hiện Các Công Cụ Mã Hóa
LO#04: Giải thích Cơ Sở Hạ Tầng Khóa Công Khai (PKI)
LO#05: Thực Hiện Mật Mã Hóa Email
LO#06: Thực Hiện Mật Mã Hóa Ổ Đĩa
LO#07: Giải thích Các Phương Pháp Phân Tích Mật Mã Hóa và Tấn Công Mật Mã HóaKhác Nhau
LO#08: Giải thích Biện Pháp Phòng Ngừa Tấn Công Mật Mã Hóa
Mục Tiêu Học Tập
Bảo mật thông tin và mật mã hóa ngày càng trở nên quan trọng hơn với việc sử dụngInternet (World Wide Web) trong giao tiếp kinh doanh và cá nhân Việc bảo vệ thông tinnhạy cảm như chi tiết thẻ tín dụng, mã PIN, số tài khoản ngân hàng và tin nhắn riêng tưtrở nên ngày càng khó khăn hơn Các tổ chức dựa vào Internet để thực hiện các hoạtđộng như thương mại điện tử, nghiên cứu thị trường, hỗ trợ khách hàng và nhiều hoạtđộng khác
Mật mã hóa và hệ thống mật mã (gọi tắt là "crypto") giúp bảo vệ dữ liệu khỏi việc bịchặn và đe dọa trong quá trình truyền tải trực tuyến Module này cung cấp một hiểu biếttoàn diện về các hệ thống mật mã và thuật toán khác nhau, các hàm băm một chiều, cơ sở
hạ tầng khóa công khai (PKI), và cách mà mật mã hóa có thể đảm bảo sự riêng tư và anninh trong giao tiếp trực tuyến Nó cũng bao gồm các công cụ khác nhau được sử dụng
để mật mã hóa dữ liệu nhạy cảm
Cuối cùng, sau khi hoàn thành module này, bạn sẽ có khả năng:
Mô tả các khái niệm về mật mã hóa
Hiểu các thuật toán mật mã hóa khác nhau
Sử dụng các công cụ mật mã hóa khác nhau
Trang 2 Mô tả cơ sở hạ tầng khóa công khai (PKI).
Áp dụng mật mã hóa email
Áp dụng mật mã hóa đĩa
Mô tả các loại tấn công mật mã hóa khác nhau
Sử dụng các công cụ phân tích mật mã hóa khác nhau
LO#01: GIẢI THÍCH CÁC KHÁI NIỆM VỀ MẬT MÃ
Các Khái Niệm về Mật Mã Hóa
Mật mã hóa giúp bảo vệ giao dịch, giao tiếp và các quy trình khác thực hiện trong thếgiới điện tử Phần này nói về mật mã hóa và các khái niệm liên quan, giúp bạn hiểu cácchủ đề nâng cao được đề cập sau trong module này
Trang 3Mật Mã Hóa
"Từ ngữ "Cryptography" xuất phát từ từ tiếng Hy Lạp, với "kryptos" có nghĩa là "ẩn, che giấu, che phủ, bí mật hoặc bí ẩn," và "graphia" có nghĩa là "viết"; do đó,
cryptography có thể hiểu là "nghệ thuật của việc viết ẩn dụ."
Mật mã hóa là việc ẩn thông tin bằng cách chuyển đổi văn bản thuần (định dạng đọcđược) thành văn bản mật (định dạng không đọc được) bằng cách sử dụng một chìa khóahoặc hệ thống mật mã Đây là quá trình chuyển đổi dữ liệu thành một mã đã bị xáo trộnđược mật mã hóa và gửi qua mạng riêng hoặc công cộng Mật mã hóa bảo vệ thông tinmật như tin nhắn email, phiên trò chuyện, giao dịch web, dữ liệu cá nhân, dữ liệu doanhnghiệp, ứng dụng thương mại điện tử và nhiều loại giao tiếp khác Tin nhắn đã được mã
Trang 4hóa đôi khi có thể được giải mã bởi các kỹ thuật phân tích mật mã (phá mã), mặc dù các
kỹ thuật mật mã hiện đại gần như không thể bị phá vỡ
Mục Tiêu của Mật Mã Hóa
Bảo Mật Bí Mật (Confidentiality): Đảm bảo rằng thông tin chỉ có thể được truy
cập bởi những người được ủy quyền
Tính Toàn Vẹn (Integrity): Tính tin cậy của dữ liệu hoặc nguồn lực trong việc
ngăn chặn sự thay đổi không đúng và không được ủy quyền
Xác Thực (Authentication): Đảm bảo rằng giao tiếp, tài liệu hoặc dữ liệu là
chính xác và đáng tin cậy
Không Chối Bỏ (Nonrepudiation): Đảm bảo rằng người gửi tin nhắn không thể
phủ nhận sau này đã gửi tin nhắn và người nhận không thể phủ nhận đã nhận tinnhắn
Quy Trình Mã Hóa
Bản rõ (định dạng có thể đọc được) được mã hóa bằng các thuật toán mã hóa như RSA,DES và AES, dẫn đến một bản mã (định dạng không thể đọc được), khi đến đích, đượcgiải mã thành bản rõ có thể đọc được
Mật mã được phân thành hai loại tùy theo số lượng khóa được sử dụng để mã hóa và giảimã:
● Mã hóa đối xứng:
Mã hóa đối xứng yêu cầu cả người gửi và người nhận tin nhắn đều phải có cùng mộtkhóa mã hóa Người gửi sử dụng một khóa để mã hóa văn bản gốc và gửi văn bản mãhóa thu được cho người nhận, người sử dụng cùng một khóa (được sử dụng để mã hóa)
để giải mã văn bản mã hóa thành văn bản gốc Mã hóa đối xứng còn được gọi là mật mãkhóa bí mật, vì nó chỉ sử dụng một khóa bí mật để mã hóa và giải mã dữ liệu Loại mật
mã này hoạt động tốt khi bạn chỉ giao tiếp với một vài người
Vì người gửi và người nhận phải chia sẻ khóa trước khi gửi bất kỳ tin nhắn nào nên kỹthuật này chỉ được sử dụng hạn chế trên Internet, nơi những cá nhân chưa có liên hệtrước thường yêu cầu một phương tiện liên lạc an toàn Giải pháp cho vấn đề này là mãhóa bất đối xứng (mật mã khóa công khai)
Trang 5● Mã hóa bất đối xứng:
Khái niệm mã hóa bất đối xứng (còn được gọi là mật mã khóa công khai) được đưa ra đểgiải quyết các vấn đề về quản lý khóa Mã hóa bất đối xứng bao gồm cả khóa chung vàkhóa riêng Khóa chung được cung cấp công khai, trong khi người gửi giữ bí mật khóariêng
Hệ thống khóa bất đối xứng là phương pháp mã hóa sử dụng cặp khóa bao gồm khóachung có sẵn cho bất kỳ ai và khóa riêng chỉ do chủ sở hữu khóa nắm giữ, giúp cung cấptính bảo mật, tính toàn vẹn, xác thực và không thể chối bỏ trong quản lý dữ liệu
Trang 6Mã hóa bất đối xứng sử dụng trình tự sau để gửi tin nhắn:
1 Một cá nhân tìm thấy khóa công khai của người mà mình muốn liên hệ trong mộtdanh bạ
2 Khóa chung này được sử dụng để mã hóa tin nhắn sau đó được gửi đến ngườinhận dự kiến
3 Người nhận sử dụng khóa riêng để giải mã tin nhắn và đọc nó
Không ai ngoài người nắm giữ khóa riêng có thể giải mã tin nhắn được mã hóa bằngkhóa chung tương ứng Điều này làm tăng tính bảo mật của thông tin vì mọi thông tinliên lạc chỉ liên quan đến khóa chung; người gửi tin nhắn không bao giờ truyền hoặc chia
sẻ khóa riêng Người gửi phải liên kết khóa công khai với tên người dùng một cách antoàn để đảm bảo rằng các cá nhân tự xưng là người nhận dự định không chặn thông tin
Để đáp ứng nhu cầu xác thực người ta có thể sử dụng chữ ký số
Trang 7Điểm Mạnh Và Điểm Yếu Của Các Phương Pháp Tiền Điện Tử
Điểm mạnh
Mã hóa đối xứng Mã hóa bất đối xứng
Triển khai nhanh hơn và dễ dànghơn vì cùng một khóa được sửdụng để mã hóa và giải mã dữliệu
Yêu cầu ít sức mạnh xử lý hơn
Có thể được triển khai trong chiptích hợp dành riêng cho ứngdụng (ASIC)
Sử dụng thuận tiện vì không cầnphân phối khóa để mã hóa tinnhắn
Ngăn chặn sự xâm phạm bảomật tin nhắn trên diện rộng vìcác khóa bí mật khác nhau được
sử dụng để liên lạc với các bênkhác nhau
Bảo mật nâng cao, vì người takhông cần chia sẻ hoặc truyềnkhóa riêng cho bất kỳ ai
Khóa không bị ràng buộc với dữliệu được truyền trên liên kết; do
đó, dù có chặn dữ liệu cũngkhông thể giải mã được
Cung cấp chữ ký số khôngthể bị từ chối
Điểm yếu
Mã hóa đối xứng Mã hóa bất đối xứng
Thiếu kênh an toàn để trao đổikhóa bí mật
Xử lý chậm và đòi hỏi sức mạnh
xử lý cao
Khó quản lý và bảo mật quánhiều khóa chung được tạo đểliên lạc với các bên khác nhau
Có thể xảy ra xâm phạm bảo mậttin nhắn trên diện rộng (tức là
kẻ tấn công có thể đọc tin nhắnhoàn chỉnh nếu khóa riêng bị xâmphạm)
Không cung cấp sự đảm bảo nào
về nguồn gốc và tính xác thựccủa tin nhắn vì cả người gửi vàngười nhận đều sử dụng cùngmột khóa
Tin nhắn nhận được khôngthể được giải mã nếu mất khóariêng
Dễ bị tấn công từ điển và tấncông bạo lực Dễ bị tấn công man-in-the-middlevà brute-force
Trang 8Quyền Truy Cập Của Chính Phủ Vào Khóa (GAK)
Quyền truy cập của chính phủ vào khóa (GAK) đề cập đến nghĩa vụ theo luật định củacác cá nhân và tổ chức là tiết lộ khóa mật mã của họ cho các cơ quan chính phủ Điều đó
có nghĩa là các công ty phần mềm sẽ cung cấp bản sao của tất cả các khóa (hoặc ít nhất
là đủ khóa để phần còn lại có thể bị bẻ khóa) cho chính phủ Các cơ quan thực thi phápluật trên khắp thế giới thu thập và sử dụng các khóa mật mã này để theo dõi các hoạtđộng liên lạc đáng ngờ và thu thập bằng chứng về tội phạm mạng vì lợi ích an ninh quốcgia Chính phủ hứa rằng họ sẽ giữ chìa khóa một cách an toàn và chỉ sử dụng chúng khitòa án ban hành lệnh làm như vậy Đối với chính phủ, vấn đề này tương tự như khả năngnghe lén điện thoại
Các cơ quan chính phủ thường sử dụng ký quỹ chìa khóa để có thể truy cập vào chìakhóa một cách không bị gián đoạn Chìa khóa ký quỹ là chìa khóa thỏa thuận trao đổitrong đó các khóa mật mã thiết yếu được lưu trữ với bên thứ ba trong ký quỹ Bên thứ ba
có thể sử dụng hoặc cho phép người khác sử dụng khóa mã hóa theo một số điều kiệnnhất định hoàn cảnh đã định trước Bên thứ ba, liên quan đến GAK, nói chung là cơ quanchính phủ có thể sử dụng các khóa mã hóa để giải mã bằng chứng kỹ thuật số theo ủyquyền hoặc lệnh từ một tòa án của pháp luật Tuy nhiên, mối lo ngại ngày càng tăng vềquyền riêng tư và bảo mật của khóa mật mã và thông tin Cơ quan nhà nước có tráchnhiệm bảo vệ những phím Các cơ quan như vậy thường sử dụng một khóa duy nhất đểbảo vệ các khóa khác, đây không phải là một ý tưởng hay vì để lộ một phím có thể làm
lộ các phím khác
Các cơ quan này không biết thông tin được bảo vệ bằng khóa bí mật đến mức nào, điềunày gây khó khăn cho việc đánh giá mức độ bảo vệ cần thiết Trong trường hợp khóa bịthu giữ cũng bảo vệ các thông tin khác mà các cơ quan này không có quyền truy cập thìkhông thể xác định được hậu quả của việc tiết lộ khóa vì các cơ quan chính phủ khôngnhận thức được thông tin mà các phím đó bảo vệ Trong những trường hợp như vậy,người sở hữu chìa khóa phải chịu trách nhiệm về hậu quả của việc sự tiết lộ quan trọng.Trước khi chủ sở hữu giao chìa khóa của mình cho cơ quan chính phủ, họ cần phải yên
Trang 9tâm rằng các cơ quan chính phủ sẽ bảo vệ các khóa này theo tiêu chuẩn đủ mạnh để bảo
vệ quyền lợi của họ
Trang 10LO#02: GIẢI THÍCH CÁC THUẬT TOÁN MÃ HÓA
KHÁC NHAU
Thuật Toán Mã Hóa
Mã hóa là quá trình chuyển đổi văn bản gốc có thể đọc được thành văn bản mật mãkhông thể đọc được bằng cách sử dụng một bộ thuật toán phức tạp để chuyển đổi dữ liệuthành các khối hoặc luồng ký tự chữ và số ngẫu nhiên Phần này đề cập đến mật mã vàcác thuật toán mã hóa khác nhau như DES, AES, RC4, RC5, RC6, DSA, RSA, MD5,SHA, v.v
Trang 11Mật Mã
Trong mật mã, mật mã là một thuật toán (một chuỗi các bước được xác định rõ ràng) đểthực hiện mã hóa và giải mã Mã hóa là quá trình chuyển đổi văn bản gốc thành mật mãhoặc mã; quá trình ngược lại được gọi là giải mã Một tin nhắn được mã hóa bằng mật
mã sẽ không thể đọc được trừ khi người nhận biết khóa bí mật cần thiết để giải mã nó.Công nghệ truyền thông (ví dụ: Internet, điện thoại di động) dựa vào mật mã để duy trì
cả tính bảo mật và quyền riêng tư Các thuật toán mật mã có thể là nguồn mở (quy trìnhthuật toán thuộc phạm vi công cộng trong khi khóa được người dùng chọn và riêng tư)hoặc nguồn đóng (quy trình được phát triển để sử dụng trong các lĩnh vực cụ thể, chẳnghạn như quân sự và Bản thân thuật toán không thuộc phạm vi công cộng) Hơn nữa, mật
mã có thể được sử dụng miễn phí hoặc được cấp phép
Trang 12Các loại mật mã cổ điển
Mật mã thay thế: Người dùng thay thế các đơn vị của văn bản gốc bằng vănbản mã hóa theo hệ thống thông thường Các đơn vị có thể là các chữ cái đơn lẻ,các cặp chữ cái hoặc sự kết hợp của chúng, v.v Người nhận thực hiện thay thếnghịch đảo để giải mã văn bản Ví dụ bao gồm mật mã Beale, mật mã autokey,mật mã Gronsfeld và mật mã Hill
Ví dụ: "HELLO WORLD" có thể được mã hóa thành "PSTER HGFST" (tức là
H=P, E=S, v.v.)
Mật mã chuyển vị: Ở đây, các chữ cái trong bản rõ được sắp xếp lại theo một
hệ thống thông thường để tạo ra bản mã Ví dụ: "CRYPTOGRAPHY" khi được
mã hóa sẽ trở thành "AOYCRGPTYRHP." Ví dụ bao gồm mật mã hàng rào
đường sắt, mật mã tuyến đường và chuyển vị Myszkowski
Mật mã hiện đại
Mật mã hiện đại được thiết kế để chống lại một loạt các cuộc tấn công Họ cung cấp tínhbảo mật, tính toàn vẹn và xác thực của người gửi Người dùng có thể tính toán mật mãhiện đại bằng cách sử dụng hàm toán học một chiều có khả năng phân tích các số nguyên
tố lớn
Trang 13Các loại mật mã hiện đại
Dựa trên loại khóa được sử dụng
Thuật toán khóa đối xứng (Mật mã khóa riêng): Sử dụng cùng một khóa
để mã hóa và giải mã
Thuật toán khóa bất đối xứng (Mật mã khóa công khai): Sử dụng hai
khóa khác nhau để mã hóa và giải mã
Dựa vào loại dữ liệu đầu vào
Mật mã khối: Các thuật toán xác định hoạt động trên một khối (một nhóm
bit) có kích thước cố định với phép biến đổi không thay đổi được chỉ địnhbởi khóa đối xứng Hầu hết các mật mã hiện đại đều là mật mã khối Chúngđược sử dụng rộng rãi để mã hóa dữ liệu số lượng lớn Các ví dụ bao gồmDES, AES, IDEA, v.v Khi kích thước khối nhỏ hơn kích thước được mật
mã sử dụng, phần đệm được sử dụng để đạt được kích thước khối cố định
Mật mã luồng: Mật mã khóa đối xứng là các chữ số văn bản gốc được kết
hợp với một luồng khóa (luồng chữ số mật mã giả ngẫu nhiên) Ở đây,người dùng áp dụng khóa cho từng bit một Ví dụ bao gồm RC4, SEAL,v.v
Trang 14Tiêu Chuẩn Mã Hóa Dữ Liệu (DES)
DES là một tiêu chuẩn mã hóa dữ liệu sử dụng khóa bí mật cho cả mã hóa và giải mã (hệthống mật mã đối xứng) DES sử dụng khóa bí mật 64 bit, trong đó 56 bit được tạo ngẫunhiên và 8 bit còn lại được sử dụng để phát hiện lỗi Nó sử dụng thuật toán mã hóa dữliệu (DEA), mật mã khối khóa bí mật sử dụng khóa 56 bit hoạt động trên các khối 64 bit.DES là mật mã khối nguyên mẫu - một thuật toán lấy một chuỗi bit văn bản gốc có độdài cố định và biến đổi nó thành chuỗi bit văn bản mã hóa có cùng độ dài Thiết kế củaDES cho phép người dùng triển khai nó trong phần cứng và sử dụng nó để mã hóa mộtngười dùng, chẳng hạn như để lưu trữ các tệp trên đĩa cứng ở dạng mã hóa
DES cung cấp 72 triệu triệu khóa mã hóa có thể trở lên và chọn một khóa ngẫu nhiên để
mã hóa mỗi tin nhắn Do điểm yếu cố hữu của DES so với các công nghệ ngày nay,một
số tổ chức sử dụng ba DES (3DES), trong đó họ lặp lại quy trình ba lần để tăng them sứcmạnh cho đến khi họ có đủ khả năng cập nhật thiết bị của mình lên khả năng AES
Tiêu Chuẩn Mã Hóa Dữ Liệu Ba (3DES)
Cuối cùng, rõ ràng là DES sẽ không còn an toàn nữa Chính phủ Liên bang Hoa Kỳ bắtđầu cuộc thi tìm kiếm thuật toán mã hóa thay thế Tuy nhiên, trong lúc đó, 3DES đượctạo ra như một giải pháp tạm thời Về cơ bản, nó thực hiện DES ba lần với ba phím.3DES sử dụng "gói khóa" bao gồm ba khóa DES, K1, K2 và K3 Mỗi khóa là một khóaDES 56 bit tiêu chuẩn Sau đó nó thực hiện quá trình sau:
Mã hóa DES bằng K1, giải mã DES bằng K2, mã hóa DES bằng K3
Có ba lựa chọn cho các phím Trong tùy chọn đầu tiên, cả ba khóa đều độc lập và khácbiệt Trong tùy chọn thứ hai, K1 và K3 giống hệt nhau Trong tùy chọn thứ ba, cả ba
Trang 15khóa đều là như nhau; do đó, theo nghĩa đen, bạn đang áp dụng cùng một thuật toán DES
ba lần với cùng một khóa
Tùy chọn đầu tiên là an toàn nhất, trong khi tùy chọn thứ ba là kém an toàn nhất
Tiêu chuẩn mã hóa nâng cao (AES)
Tiêu chuẩn mã hóa nâng cao (AES) là đặc điểm kỹ thuật của Viện Tiêu chuẩn và Côngnghệ Quốc gia (NIST) để mã hóa dữ liệu điện tử Nó cũng giúp mã hóa thông tin kỹthuật số như dữ liệu viễn thông, tài chính và chính phủ Các cơ quan chính phủ Hoa Kỳ
đã sử dụng nó để bảo mật tài liệu nhạy cảm nhưng chưa được phân loại
AES bao gồm một thuật toán khóa đối xứng: cả mã hóa và giải mã đều được thực hiệnbằng cùng một khóa Nó là một mật mã khối lặp hoạt động bằng cách lặp lại các bước đãxác định nhiều lần Nó có kích thước khối 128 bit, với kích thước khóa lần lượt là 128,
192 và 256 bit cho AES-128, AES-192 và AES-256 Thiết kế của AES giúp việc sử dụng
nó hiệu quả cả về phần mềm và phần cứng Nó hoạt động đồng thời ở nhiều lớp mạng
Trang 16sử dụng giao thức SSL.
● RC5
RC5 là mật mã khối khóa đối xứng nhanh được thiết kế bởi Ronald Rivest cho Bảo mật
dữ liệu RSA (nay là Bảo mật RSA) Thuật toán này là một thuật toán được tham số hóavới kích thước khối thay đổi, kích thước khóa thay đổi và số vòng thay đổi Kích thướckhối có thể là 32, 64 hoặc 128 bit Phạm vi của các vòng có thể thay đổi từ 0 đến 255 vàkích thước của khóa có thể thay đổi từ 0 đến 2.040 bit Tính biến đổi tích hợp này có thểmang lại sự linh hoạt ở mọi cấp độ bảo mật
Các thủ tục được sử dụng trong RC5 là mở rộng khóa, mã hóa và giải mã
Trong quy trình mở rộng khóa, khóa bí mật mà người dùng cung cấp sẽ được mở rộngđểđiền vào bảng khóa (kích thước của nó phụ thuộc vào số vòng) RC5 sử dụng bảng khóacho cả mã hóa và giải mã Quy trình mã hóa có ba thao tác cơ bản: cộng số nguyên, XORtheo bit và xoay biến Việc sử dụng rộng rãi cơ chế xoay vòng phụ thuộc vào dữ liệu và
Trang 17sự kết hợp của các hoạt động khác nhau khiến RC5 trở thành một thuật toán mã hóa antoàn.
● RC6
RC6 là mật mã khối khóa đối xứng có nguồn gốc từ RC5 Đây là một thuật toán đượctham số hóa với kích thước khối, kích thước khóa và số vòng thay đổi Hai đặc điểmgiúp phân biệt RC6 với RC5 là phép nhân số nguyên (được sử dụng để tăng độ khuếchtán, đạt được trong ít vòng hơn với tốc độ mã hóa tăng lên) và việc sử dụng bốn thanhghi làm việc 4 bit thay vì hai thanh ghi 2 bit RC6 sử dụng bốn thanh ghi 4 bit thay vì haithanh ghi 2 bit vì kích thước khối của AES là 128 bit
Trang 18Blowfish là một loại thuật toán mã hóa khối đối xứng được thiết kế để thay thế thuật toánDES hoặc IDEA Nó sử dụng cùng một khóa bí mật để mã hóa và giải mã dữ liệu Thuậttoán này chia dữ liệu thành một khối có độ dài 64 bit và tạo ra khóa có độ dài từ 32 bitđến 448 bit Do tốc độ cao và hiệu quả tổng thể, Blowfish được sử dụng trong nhiềuphần mềm, từ công cụ bảo vệ mật khẩu đến các trang web thương mại điện tử để đảmbảo thanh toán
Đó là mật mã Feistel 16 vòng hoạt động trên các khối 64 bit Tuy nhiên, không giốngnhư DES, kích thước khóa của nó dao động từ 32 bit đến 448 bit
Thuật toán này có hai phần Phần đầu tiên xử lý việc mở rộng khóa Phần thứ hai thực sự
mã hóa dữ liệu
Việc mở rộng khóa được xử lý theo một số bước Bước đầu tiên là chia khóa gốc thànhmột tập hợp các khóa con Cụ thể, một khóa có độ dài không quá 448 bit được tách thành4.168 byte Có một mảng P và bốn hộp S 32 bit Mảng P chứa 18 khóa con 32 bit, trongkhi mỗi hộp S chứa 256 mục nhập
Việc mở rộng khóa được thực hiện như sau:
1 Bước đầu tiên là khởi tạo mảng P và hộp S.
2 Sau đó, XOR mảng P với các bit khóa Ví dụ: P1 XOR (32 bit đầu tiên của khóa), P2 XOR (32 bit tiếp theo của khóa).
3 Sử dụng phương pháp trên để mã hóa chuỗi hoàn toàn bằng 0
4 Đầu ra mới này hiện là P1 và P2
5 Mã hóa P1 và P2 mới bằng các khóa con đã sửa đổi
6 Đầu ra mới này hiện là P3 và P4
7 Lặp lại quy trình 521 lần để tính toán các khóa con mới cho mảng P và bốn hộp S.Hàm tròn chia đầu vào 32 bit thành bốn phần tư 8 bit và sử dụng các phần tư làm đầu vàocho hộp S Các đầu ra được thêm modulo 232 và XOR để tạo ra đầu ra 32 bit cuối cùng
Trang 19Thuật toán Twofish là một trong năm thuật toán lọt vào vòng chung kết của Chính phủHoa Kỳ để thay thế DES, nhưng nó không được chọn Nó được thiết kế bởi BruceSchneier, John Kelsey, Doug Whiting, David Wagner, Chris Hall và Niels Ferguson.TwoFish là mật mã khối 128 bit Đây là một trong những thuật toán đơn giản nhất về mặtkhái niệm, sử dụng một khóa duy nhất cho cả mã hóa và giải mã với độ dài bất kỳ lên tới
256 bit Đó là mật mã Feistel Nó không chỉ hoạt động nhanh chóng cho CPU hoặc phầncứng mà còn linh hoạt cho các ứng dụng dựa trên mạng Hơn nữa, nó cho phép đánh đổihiệu suất ở nhiều mức độ khác nhau đối với các tham số như tốc độ mã hóa, số cổngphần cứng, mức sử dụng bộ nhớ, v.v Kỹ thuật cho phép triển khai khác nhau này sẽ cảithiện hiệu suất tương đối của thuật toán Bất kỳ người dùng nào cũng có thể tối ưu hóahiệu suất dựa trên lịch trình chính
Threefish
Threefish được phát triển vào năm 2008 và nó là một phần của thuật toán Skein Nó đãđược ghi danh vào cuộc thi SHA-3 (hàm băm) của NIST Đây là một mật mã khối khóađối xứng lớn có thể điều chỉnh được, trong đó kích thước khối và khóa bằng nhau, tức là
256, 512 và 1024 Threefish chỉ bao gồm ba thao tác, tức là ARX (cộng-xoay-XOR),giúp mã hóa đơn giản và tất cả các thao tác này đều hoạt động trên các từ 64 bit Cáckhối Threefish 256, 512 và 1024 lần lượt bao gồm 72, 72 và 80 vòng tính toán để đạtđược mục tiêu bảo mật cuối cùng Thuật toán này không sử dụng hộp S để ngăn chặn cáccuộc tấn công định thời vào bộ đệm
Trang 20Giống như Blowfish, Serpent là một mật mã khối khóa đối xứng đã lọt vào vòng chungkết trong cuộc thi AES Thuật toán này được thiết kế bởi Ross Anderson, Eli Biham vàLars Knudsen Nó sử dụng mật mã khối đối xứng 128 bit với kích thước khóa là 128,
192 hoặc 256 bit Nó có thể được tích hợp vào các chương trình phần mềm hoặc phầncứng mà không có bất kỳ hạn chế nào
Serpent bao gồm 32 vòng hoạt động tính toán bao gồm các hoạt động thay thế và hoán vịtrên bốn khối từ 32 bit sử dụng hộp S 8 biến với đầu vào 4 bit và đầu ra 4 bit Tất cả cáchộp S hoạt động song song 32 lần Mặc dù Serpent là một trong những cơ chế mã hóa antoàn nhất trong các cuộc thi AES, nhưng các nhà nghiên cứu đã chọn Rijndael thay vìSerpent do tốc độ mã hóa vừa phải (do số vòng nó sử dụng) và độ phức tạp Serpentgiảm thiểu mối tương quan giữa hình ảnh được mã hóa hoặc bản rõ ở mức độ lớn hơn sovới Twofish và Rijndael Do đó, Rijndael là đối thủ cạnh tranh nổi bật của AES và hiệnđang được sử dụng làm AES
TEA
Thuật toán mã hóa nhỏ (TEA) được tạo ra bởi David Wheeler và Roger Needham vàđược trình bày công khai lần đầu tiên vào năm 1994 Đây là một thuật toán đơn giản, dễthựcnhiện bằng mã Đó là mật mã Feistel sử dụng 64 vòng (lưu ý rằng đây chỉ là gợi ý;
nó có thể được thực hiện với ít hoặc nhiều vòng hơn) Số vòng phải chẵn vì chúng đượcthực hiện theo cặp gọi là chu kỳ
Trang 21TEA sử dụng khóa 128 bit hoạt động trên khối 64 bit Nó cũng sử dụng một hằng sốđược xác định là 232/tỷ lệ vàng Hằng số này được gọi là delta và trong mỗi vòng, bội sốcủa delta được sử dụng Khóa 128 bit được chia thành bốn khóa con 32 bit khác nhau cónhãn K[0], K[1], K[2] và K[3]
Thay vì sử dụng phép toán XOR, TEA sử dụng phép cộng và phép trừ nhưng với mod
232 khối được chia thành hai nửa R và L R được xử lý thông qua hàm vòng
Hàm làm tròn lấy nửa R và thực hiện phép dịch trái là 4 Sau đó, kết quả của thao tác nàyđược cộng vào K[0] Tiếp theo, kết quả của thao tác này được thêm vào delta (hãy nhớrằng delta là bội số hiện tại của 232/tỷ lệ vàng) Kết quả của thao tác này sau đó đượcdịch sang phải 5 và được them vào K[1] Đây là chức năng tròn Như với tất cả các mật
mã Feistel, kết quả của hàm vòng được XOR với L, sau đó L và R được hoán đổi chovòng tiếp theo
Trang 22CAST-128, còn được gọi là CAST5, là mật mã khối khóa đối xứng có mạng Feistel 12hoặc 16 vòng cổ điển với kích thước khối 64 bit CAST-128 sử dụng kích thước khóathay đổi từ 40 bit đến 128 bit với bước tăng 8 bit Các thành phần CAST-128 bao gồmcác hộp S lớn 8 × 32 bit (S1, S2, S3, S4) dựa trên các chức năng uốn cong, cộng và trừmô-đun, xoay phụ thuộc vào khóa và các hoạt động XOR CAST-128 sử dụng phím che(Km1) và phím xoay (Kr ) để thực hiện các chức năng của nó Hàm vòng bao gồm ba₁) để thực hiện các chức năng của nó Hàm vòng bao gồm baloại xen kẽ để thực hiện các phép toán cộng, trừ hoặc XOR ở các giai đoạn khác nhau
Nó được sử dụng làm mật mã mặc định trong GPG (GNU Privacy Guard) và PGP(Pretty Good Privacy)
256 là phần mở rộng của 128 sử dụng quy trình thiết kế tương tự
CAST-256 có kích thước khối 128 bit và sử dụng kích thước khóa thay đổi từ 128 đến CAST-256 bit.Hơn nữa, nó sử dụng phương pháp phân tích mật mã không tương quan, có thể phá vỡ 28vòng với thời gian = 2246.9 và dữ liệu =298.8
Trang 24GOST Block Cipher
Mật mã khối GOST (Tiêu chuẩn Chính phủ), còn được gọi là Magma, là mật mã khốikhóa đối xứng có mạng Feistel 32 vòng hoạt động trên các khối 64 bit với độ dài khóa
256 bit Nó bao gồm một hộp chữ S có thể được giữ bí mật và chứa khoảng 354 bit thôngtin bí mật GOST là một thuật toán mã hóa đơn giản, trong đó khóa con 32 bit modulo
232 được thêm vào và đặt vào lớp hộp S và thao tác dịch chuyển trái được sử dụng đểdịch chuyển 11 bit, từ đó cung cấp đầu ra của hàm tròn
Việc lập lịch khóa của mật mã khối GOST được thực hiện bằng cách chia khóa 256 bitthành 8 khóa con 32 bit, trong đó mỗi khóa con được sử dụng bốn lần Trong thuật toánnày, các từ khóa được sử dụng theo thứ tự trong 24 vòng đầu tiên và chúng được sử dụngtheo thứ tự ngược lại trong 8 vòng cuối cùng
Kuznyechik là phần mở rộng mới nhất của GOST, sử dụng khối 128 bit
Camellia
Camellia là mật mã khối khóa đối xứng có 18 vòng (đối với khóa 128 bit) hoặc 24 vòng(đối với khóa 256 bit) Đó là mật mã Feistel có kích thước khối 128 bit và kích thướckhóa là 128, 192 và 256 bit Camellia sử dụng bốn hộp S 8x8 bit để thực hiện các phépbiến đổi affine và các phép toán logic Hàm FL của lớp biến đổi logic hoặc hàm nghịch
Trang 25đảo của nó được áp dụng sáu vòng một lần Camellia sử dụng kỹ thuật làm trắng chính
để tăng cường độ an toàn
Camellia là một phần của giao thức Transport Layer Security (TLS), được sử dụng đểcung cấp bảo mật giao tiếp Camellia không thể bị ép buộc ngay cả với công nghệ mớinhất mặc dù nó sử dụng kích thước khóa nhỏ hơn 128 bit, do đó làm cho nó trở thànhmật mã an toàn Ngoài ra, Camellia còn mang lại hiệu quả cao bảo mật và kỹ năng xử lýcủa nó tương đương với AES hoặc Rijndael
Trang 26DSA Và Các Sơ Đồ Chữ Ký Liên Quan
Thuật toán chữ ký số (DSA) là Tiêu chuẩn xử lý thông tin liên bang dành cho chữ ký số.NIST đã đề xuất DSA để sử dụng trong Tiêu chuẩn chữ ký số (DSS), được thông quadưới dạng FIPS 186 DSA giúp tạo và xác minh chữ ký số cho các ứng dụng nhạy cảm
và chưa được phân loại Nó tạo ra chữ ký số 320 bit với độ bảo mật 512-1024-bit
Chữ ký số là một sơ đồ toán học được sử dụng để xác thực tin nhắn kỹ thuật số Việctính toán chữ ký số sử dụng một bộ quy tắc (tức là DSA) và một bộ tham số để ngườidùng có thể xác minh danh tính của người ký và tính toàn vẹn của dữ liệu
Các quy trình liên quan đến DSA:
Quy trình tạo chữ ký: Khóa riêng được sử dụng để biết ai đã ký nó.
Quy trình xác minh chữ ký: Khóa chung được sử dụng để xác minh xem chữ ký
số đã cho có phải là chính hãng hay không
DSA là một hệ thống mật mã khóa công khai, vì nó liên quan đến việc sử dụng cả khóariêng và khóa chung
Lợi ích của DSA:
Ít có khả năng giả mạo hơn so với chữ ký bằng văn bản
Phương thức giao dịch kinh doanh nhanh chóng và dễ dàng
Vấn đề tiền giả có thể được giảm thiểu đáng kể
Trang 27Thuật toán DSA:
Mỗi thực thể A thực hiện như sau:
1 Chọn số nguyên tố q sao cho 2159 < a < 2160
2 Chọn một số nguyên t sao cho 0 ≤ t ≤ 8, và chọn một số nguyên tố p thỏa mãn
2511+64t < p < 2512+64t, với điều kiện là q chia hết cho (p-1)
3 Chọn một phần tử ⍺ của nhóm tuần hoàn duy nhất có thứ tự q trong Z*, bằngcách chọn một phần tử g trong Z*, và sau đó tính toán ⍺ ≡ g (p-1)/q mod p cho đến
khi ⍺ ≠ 1.
4 Chọn số nguyên ngẫu nhiên d sao cho 1≤ d ≤ q-1
5 Tính y = ⍺d mod p
6 Khóa công khai của A là (p, q, a, y); Khóa riêng của A là d
Để ký vào tin nhắn m, A thực hiện như sau:
1 Chọn số nguyên bí mật ngẫu nhiên k, 0<k<q
2 Tính r=(⍺ k mod p) mod q
3 Tính k-1 mod q
4 Tính s=k-1 {h(m) + dr}mod q, trong đó h là Thuật toán băm an toàn
5 Chữ ký của A cho m là cặp (r,s)
Để xác minh chữ ký (r,s) của A trên m, B nên làm như sau:
1 Lấy khóa công khai đích thực của A (p,q,a,y)
2 Xác minh rằng 0<r<q và 0<s<q; nếu không thì từ chối chữ ký
3 Tính w = s-1 mod q và h (m)
4 Tính u = w.h (m) mod q và u = rw mod q₁) để thực hiện các chức năng của nó Hàm vòng bao gồm ba ₂ = rw mod q
5 Tính v = (⍺u1 y u2 mod p) mod q
6 Chấp nhận chữ ký khi và chỉ khi v=r
Trang 28Rivest Shamir Adleman (RSA)
Ron Rivest, Adi Shamir và Leonard Adleman đã xây dựng RSA, một hệ thống mật mãkhóa công khai cho Mã hóa và xác thực Internet RSA sử dụng số học mô-đun và số cơbản lý thuyết để thực hiện tính toán sử dụng hai số nguyên tố lớn Hệ thống RSA được
sử dụng rộng rãi trong nhiều sản phẩm, nền tảng và ngành công nghiệp Đây là một trongnhững tiêu chuẩn mã hóa thực tế Các công ty như Microsoft, Apple, Sun và Novell xâydựng thuật toán RSA vào hoạt động của họ hệ thống RSA cũng có thể được tìm thấytrên điện thoại được bảo mật bằng phần cứng, card mạng Ethernet và những chiếc thẻthông minh
RSA hoạt động như sau:
1 Hai số nguyên tố lớn được lấy (a và b) và tích của chúng được xác định (c = ab,trong đó "c" được gọi là mô đun)
2 RSA chọn một số "e" nhỏ hơn "c" và nguyên tố cùng nhau với (a-1)(b-1) Do đó,
e và (a-1)(b-1) không có ước chung ngoại trừ 1
3 Hơn nữa, RSA chọn một số "f" sao cho (ef - 1) chia hết cho (a-1)(b-1)
4 Các giá trị "e" và "f" lần lượt là số mũ công khai và số mũ riêng tư
5 Khóa công khai là cặp (c, e); khóa riêng là cặp (c, f)
6 Rất khó lấy được khóa riêng (c, f) từ khóa chung (c, e) Tuy nhiên, nếu ai đó cóthể phân tích "c" thành "a" và "b" thì người đó có thể giải mã được khóa riêng (c,f)
Tính bảo mật của hệ thống RSA phụ thuộc vào giả định rằng việc bao thanh toán đó khóthực hiện ra ngoài, làm cho kỹ thuật mã hóa trở nên an toàn
Trang 29Một ví dụ về cách mật mã sử dụng thuật toán RSA trong trao đổi thực tế được minh họa theo trình tự sau:
1 Người gửi tin nhắn mã hóa tin nhắn bằng khóa đối xứng DES được chọn ngẫunhiên DES (Tiêu chuẩn mã hóa dữ liệu) là một hệ thống khóa đối xứng tương đốikhông an toàn sử dụng mã hóa 64 bit (56 bit cho kích thước khóa, 8 bit để kiểmtra dự phòng theo chu kỳ) để mã hóa dữ liệu
2 Sau đó, người gửi sẽ tra cứu khóa chung của người nhận và sử dụng nó để mã hóakhóa DES bằng hệ thống RSA
3 Người gửi truyền một phong bì kỹ thuật số RSA, bao gồm tin nhắn được mã hóaDES và khóa DES được mã hóa RSA, cho người nhận
4 Người nhận sẽ giải mã khóa DES và sau đó sử dụng khóa DES để giải mã chínhtin nhắn
Hệ thống này kết hợp tốc độ cao của DES với sự thuận tiện trong quản lý khóa của hệthống RSA
Lược đồ chữ ký RSA
Mật mã học sử dụng RSA để mã hóa khóa công khai và chữ ký số (để ký một tin nhắn vàxác minh nó) Lược đồ chữ ký RSA là kỹ thuật đầu tiên được sử dụng để tạo chữ ký số.Đây là một sơ đồ chữ ký số xác định cung cấp khả năng khôi phục tin nhắn từ chính chữ
ký đó, khiến nó trở thành kỹ thuật linh hoạt và thiết thực nhất hiện có
RSA liên quan đến cả khóa chung và khóa riêng Khóa công khai, như tên gọi, có thểđược bất kỳ ai sử dụng để mã hóa tin nhắn Các tin nhắn mà người dùng mã hóa bằngkhóa chung cần có khóa riêng để giải mã
Giả sử John mã hóa tài liệu M bằng khóa riêng SA, từ đó tạo ra chữ ký Sjohn(M) Johngửi M cùng với chữ ký Sjohn (M) cho Alice Alice giải mã tài liệu bằng khóa chung củaJohn, từ đó xác minh chữ ký của John
Tạo khóa RSA
Quy trình tạo khóa RSA là chung cho tất cả các sơ đồ chữ ký dựa trên RSA Để tạo cặpkhóa RSA, tức là cả khóa công khai RSA và khóa riêng tương ứng, mỗi thực thể A phảithực hiện như sau:
Tạo hai số nguyên tố lớn p và q tùy ý, mỗi số có độ dài bit gần bằng nhau
Khóa công khai của A là (n, e); Khóa riêng của A là d
Phá hủy p và q khi kết thúc quá trình tạo khóa
Thuật toán RSA tạo và xác minh chữ ký RSA như sau:
Thực thể A ký vào thông điệp m∈M Bất kỳ thực thể B nào cũng có thể xác minh chữ kýcủa A và khôi phục
Trang 30thông điệp m từ chữ ký.
1 Tạo chữ ký
Để ký tin nhắn m, thực thể A thực hiện như sau:
• Tính m = R(m), một số nguyên trong khoảng [0, n-1]
• Tính s = md mod n
Mẫu chữ ký của A là s
2 Xác minh chữ ký
Để xác minh chữ ký s của A và khôi phục tin nhắn m, B thực hiện như sau:
• Lấy khóa công khai xác thực của A (n, e)
• Tính m = se mod n
• Xác minh rằng m ∈ MR; nếu không, từ chối chữ ký
• Phục hồi m = R-1(m)
Ví dụ về thuật toán RSA
Toán học cơ bản của mã hóa khóa công khai RSA được mô tả dưới đây:
1 Tìm P và Q, hai số nguyên tố lớn (ví dụ: 1024-bit)
2 Chọn E sao cho E lớn hơn 1, E nhỏ hơn PQ và E và (P-1)(Q-1) nguyên tố cùngnhau, nghĩa là chúng không có thừa số nguyên tố chung E không nhất thiết phải
là số nguyên tố nhưng phải là số lẻ (P-1)(Q-1) không thể là số nguyên tố vì nó là
số chẵn
3 Tính D sao cho (DE - 1) chia hết cho (P-1)(Q-1) Các nhà toán học viết điều này
là DE = 1 (mod (P-1)(Q-1)), và họ gọi D là nghịch đảo nhân của E Điều này rất
dễ thực hiện - chỉ cần tìm một số nguyên X làm cho D = (X(P -1)(Q-1) + 1)/E là
số nguyên và sau đó sử dụng giá trị đó của D
4 Hàm mã hóa là C = (T^E) mod PQ, trong đó C là bản mã (số nguyên dương), T làbản rõ (số nguyên dương) và biểu thị lũy thừa Trong quá trình mã hóa tin nhắn, Tphải nhỏ hơn mô đun PQ
5 Hàm giải mã là T = (CAD) mod PQ, trong đó C là bản mã (số nguyên dương), T
là bản rõ (số nguyên dương) và biểu thị lũy thừa
Khóa công khai của bạn là cặp (PQ, E) Khóa riêng của bạn là số D (không tiết lộ cho bất
kỳ ai) Sản phẩm PQ là mô đun E là số mũ công khai D là số mũ bí mật
Bạn có thể xuất bản khóa công khai của mình một cách tự do vì không có phương pháptính toán dễ dàng nào được biết đến Chỉ cung cấp D, P hoặc Q (PQ, E) (khóa chung củabạn)
Đưa ra dưới đây là một ví dụ về thuật toán RSA:
P = 61<= số nguyên tố đầu tiên (hủy số này sau khi tính E và D)
Q = 53<= số nguyên tố thứ hai (hủy số này sau khi tính E và D)
Trang 31PQ = 3233<= mô đun (đưa cái này cho người khác)
E = 17<= số mũ công khai (đưa cái này cho người khác)
D = 2753<= số mũ riêng (giữ bí mật này)
Khóa công khai của bạn là (E,PQ)
Khóa riêng của bạn là D
Trang 33Thuật toán Diffie-Hellman
Hệ thống có hai tham số gọi là p và g
Tham số p là số nguyên tố
Tham số g (thường được gọi là bộ tạo) là một số nguyên nhỏ hơn p, có tính chấtsau: với mọi số n nằm trong khoảng từ 1 đến p-1 (bao gồm cả hai), có một lũy
thừa k của g sao cho n = g k mod p
Nhiều sách giáo khoa về mật mã sử dụng các ký tự hư cấu “Alice” và “Bob” để minh họacho mật mã; chúng tôi cũng sẽ làm điều tương tự ở đây:
Alice tạo ra một giá trị riêng tư ngẫu nhiên a và Bob tạo ra một giá trị riêng tưngẫu nhiên b Cả a và b đều được rút ra từ tập hợp số nguyên
Chúng lấy được các giá trị công khai bằng cách sử dụng các tham số p và g và các
giá trị riêng tư của chúng Giá trị công khai của Alice là g a mod p, và giá trị công
khai của Bob là g b mod p.
Họ trao đổi giá trị công cộng của họ
Alice tính g ab = (g b ) a mod p, và Bob tính g ba = (g a ) b mod p
Vì g ab = g ba = k nên Alice và Bob hiện có khóa bí mật chung k
Thuật toán Diffie-Hellman không cung cấp bất kỳ xác thực nào cho việc trao đổi khóa và
dễ bị tấn công bằng mật mã Tuy nhiên, nó là cơ sở của nhiều cơ chế xác thực
Ví dụ: Nó cung cấp tính bảo mật chuyển tiếp trong các chế độ tạm thời của giao thức
TLS tùy thuộc vào thông số mật mã
Trang 34YAK là giao thức Trao đổi khóa xác thực (AKE) dựa trên khóa công khai Việc xác thựcYAK dựa trên các cặp khóa chung và nó cần PKI để phân phối khóa chung xác thực.YAK là một biến thể của giao thức Hashed Menezes-Qu-Vanstone (HMQV) hai lượt sửdụng bằng chứng không có kiến thức (ZKP) để chứng minh kiến thức về các khóa bí mậtphù du của cả hai bên Giao thức YAK thiếu khả năng kiểm soát khóa chung và cácthuộc tính bí mật hoàn hảo về phía trước
Việc triển khai giao thức YAK giữa hai bên Alice và Bob được mô tả như sau:
1 Alice chọn một số ngẫu nhiên x sao cho X∈R[0, q - 1], tính X = gx và tạo ra ZKPcủa x, ký hiệu là KP{x} Alice gửi X và KP{x} cho Bob
2 Bob chọn một số ngẫu nhiên y sao cho y∈R[0, q- 1], tính Y = gy và tạo ZKP của y,
ký hiệu là KP{y} Bob gửi Y và KP{y} cho Alice
3 Alice xác minh KP{x} đã nhận và tính khóa phiên sau khi xác minh là k = H((Y.PKB)x+a), trong đó H là hàm băm
4 Bob xác minh KP{y} đã nhận và tính khóa phiên sau khi xác minh là k = H ((X.PKA)y+b)
5 Chúng xác thực lẫn nhau và cả hai đều nhận được cùng một khóa phiên k = H(g(x+a)(y+b))
Giao thức YAK có thể thực hiện các mục tiêu sau:
Bảo mật khóa riêng
Bảo mật hoàn toàn về phía trước
Bảo mật khóa phiên
Trang 35Hàm Phân Loại Tin Nhắn (Băm Một Chiều)
Hàm băm tính toán biểu diễn chuỗi bit có kích thước cố định duy nhất, được gọi là bảntóm tắt thông báo, của bất kỳ khối thông tin tùy ý nào Các chức năng phân loại thôngbáo chắt lọc thông tin chứa trong một tệp (nhỏ hoặc lớn) thành một số có độ dài cố định,thường là từ 128 đến 256 bit Nếu bất kỳ bit nào của đầu vào của hàm bị thay đổi thì mọibit đầu ra đều có 50% cơ hội thay đổi Với một tệp đầu vào và thông báo tóm tắt tươngứng của nó, gần như không thể tìm thấy một tệp khác có cùng giá trị thông báo thôngbáo, vì về mặt tính toán là không thể có hai tệp có cùng giá trị thông báo thông báo.Hàm phân loại thông điệp còn được gọi là hàm băm một chiều vì chúng tạo ra các giá trịgần như không thể đảo ngược, có khả năng chống lại sự tấn công, hầu hết là duy nhất vàđược phân phối rộng rãi Bản thân các thuật toán phân loại tin nhắn không tham gia vàocác hoạt động mã hóa và giải mã Chúng cho phép tạo chữ ký số và mã xác thực tin nhắn(MAC) cũng như lấy khóa mã hóa từ cụm mật khẩu
Vai trò chính của hàm băm mật mã là cung cấp tính toàn vẹn trong quản lý tài liệu Hàmbăm mật mã là một phần không thể thiếu của chữ ký số Chúng tương đối nhanh hơnthuật toán chữ ký số; do đó, tính năng đặc trưng của chúng là tính toán chữ ký của giá trịbăm của tài liệu, giá trị này nhỏ hơn tài liệu Ngoài ra, các bản tóm tắt còn giúp ẩn nộidung hoặc nguồn của tài liệu
Các hàm phân loại tin nhắn được sử dụng rộng rãi bao gồm các thuật toán sau:
MD5
SHA
Lưu ý: Thông báo tóm tắt còn được gọi là hàm băm một chiều vì chúng không thể đảongược được
Trang 37Chức Năng Phân Loại Tin Nhắn: MD5 Và MD6
MD2, MD4, MD5 và MD6 là các thuật toán phân loại tin nhắn được sử dụng trong cácứng dụng chữ ký số để nén tài liệu một cách an toàn trước khi hệ thống ký vào tài liệu đóbằng khóa riêng Các thuật toán có thể có độ dài thay đổi, nhưng bản tóm tắt thông điệpthu được luôn có kích thước 128 bit
Cấu trúc của cả ba thuật toán (MD2, MD4 và MD5) có vẻ giống nhau, mặc dù thiết kếcủa MD2 khá khác so với MD4 và MD5 MD2 hỗ trợ máy 8 bit, trong khi MD4 và MD5
hỗ trợ máy 32 bit Thuật toán đệm thông báo bằng các bit bổ sung để đảm bảo rằng số bitchia hết cho 512 Các bit bổ sung có thể bao gồm thông báo nhị phân 64 bit
Các cuộc tấn công vào các phiên bản MD4 ngày càng thành công Nghiên cứu đã chỉ racách kẻ tấn công thực hiện các cuộc tấn công va chạm trên phiên bản MD4 đầy đủ trongvòng một phút trên PC thông thường MD5 an toàn hơn một chút nhưng chậm hơn MD4.Tuy nhiên, cả kích thước tóm tắt tin nhắn và yêu cầu về phần đệm vẫn giữ nguyên
MD5 là hàm băm mật mã được sử dụng rộng rãi, lấy thông báo có độ dài tùy ý làm đầuvào và xuất ra bản tóm tắt thông báo hoặc dấu vân tay 128 bit (16 byte) của đầu vào.MD5 có thể được sử dụng trong nhiều ứng dụng mật mã và rất hữu ích cho các ứng dụngchữ ký số, tập tin kiểm tra tính toàn vẹn và lưu trữ mật khẩu Tuy nhiên, MD5 không cókhả năng chống va chạm; do đó, nó tốt hơn là sử dụng các thuật toán mới nhất, chẳnghạn như MD6, SHA-2 và SHA-3
MD6 sử dụng cấu trúc giống cây Merkle để cho phép tính toán băm song song quy môlớn cho đầu vào rất dài Nó có khả năng chống lại các cuộc tấn công phân tích mật mãkhác biệt
Để tính hiệu quả của hàm băm, hãy kiểm tra kết quả đầu ra khi thuật toán ngẫu nhiên hóamột thông báo đầu vào tùy ý
Sau đây là ví dụ về các bản tóm tắt thông báo có sự khác biệt tối thiểu:
Trang 38 echo "There is 1500 CHF in the blue box" | md5sum
cụ trực tuyến này
Trang 39Chức Năng Phân Loại Tin Nhắn: Thuật Toán Băm An Toàn (SHA)
Hệ thống Tiêu chuẩn Quốc gia Hoa Kỳ (NIST) đã phát triển Thuật toán Băm An toàn (SHA), được xác định trong Tiêu chuẩn Băm An toàn (SHS) và được công bố như một
tiêu chuẩn xử lý thông tin liên bang (FIPS PUB 180) Thuật toán này tạo ra một giá trịbăm một chiều mật mã hóa Rivest đã phát triển SHA, nó tương tự như gia đình thuậttoán băm của hàm băm thông điệp Nó chậm hơn một chút so với MD5, nhưng giá trịbăm lớn hơn làm cho nó an toàn hơn đối với các cuộc tấn công va chạm và đảo ngượcmật mã
Mã hóa SHA là một chuỗi gồm năm hàm mật mã khác nhau và hiện có ba thế hệ:
SHA-1, SHA-2 và SHA-3
SHA-0: Một thuật ngữ được áp dụng sau cùng cho phiên bản gốc của hàm băm
160-bit được công bố vào năm 1993 dưới tên gọi SHA, đã bị rút khỏi thị trường
do một "lỗ hổng đáng kể" không được tiết lộ Nó đã được thay thế bằng mộtphiên bản được sửa đổi một chút, cụ thể là SHA-1
SHA-1: Đây là một hàm băm 160-bit giống với thuật toán MD5 trước đó được
phát triển bởi Ron Rivest Nó tạo ra một giá trị băm 160-bit từ một thông điệp
có chiều dài tối đa là (2^64 - 1) bit Nó được thiết kế bởi Cơ quan An ninh Quốcgia (NSA) để là một phần của Thuật toán Chữ ký Số (DSA) Nó thường được sửdụng trong các giao thức an ninh như PGP, TLS, SSH, và SSL Tính đến năm
2010, SHA-1 không còn được phê duyệt sử dụng trong mật mã vì nhược điểmmật mã của nó
SHA-2: SHA-2 là một gia đình gồm hai hàm băm tương tự nhau nhưng có kích
thước khối khác nhau, cụ thể là SHA-256, sử dụng từ 32-bit, và SHA-512, sửdụng từ 64-bit Các phiên bản cắt giảm của mỗi tiêu chuẩn là SHA-224 vàSHA-384
Trang 40 SHA-3: SHA-3 sử dụng cấu trúc bọt biển trong đó các khối thông điệp được
XOR vào các bit ban đầu của trạng thái, sau đó thuật toán đảo ngược chúng một
cách không thể mất thông tin Nó hỗ trợ cùng độ dài băm như SHA-2 nhưng
khác biệt về cấu trúc nội tại khá nhiều so với phần còn lại của gia đình SHA
So sánh các hàm SHA (SHA-O, SHA-1, SHA-2 và SHA-3)
Thuật toán về biến
thể
Kíchthướcđầura(bit)
Kíchthước vàtrạng tháibêntrong(bit)
Kíchthướckhối(bit)
Kíchthướ
c tinnhắntốiđa(bit)
Rounds Hoạt động mật(bit)Bảo
MD5 (để tham
khảo) 128 (4*32)128 512 264 -1 64
Thêm mod
232, and, or,xor, rot
<=18(collisionsfound)
Thêm mod
232, and, or,xor, rot
<34(collisionsfound)
(5*32) 512 264 -1 80
Thêm mod
232, and, or,xor, rot
<63(collisionsfound)
112 128
SHA-384
SHA-512
512/224SHA-512/256
SHA-384512224256
512(8*64) 1024 2
128
Thêm mod
264, and, or,xor, shr, rot
192 256 112 128
6
224256384512d(arbitrary)d(arbitrary)
1600(5*5*64)
11521088 832 57613441088
And, or,xor,rot
112 128 192 256Mind/2,128)Min(d/2,256)