HMAC SHA256 la gì

Toàn vẹn tài liệu là gì ? Chúng có tương quan đến nghành nghề dịch vụ An toàn thông tin, hay ngành Mật mã học không ? Đâu là chính sách để bảo vệ tính toàn vẹn tài liệu hiệu suất cao được sử dụng lúc bấy giờ ? Mời những bạn đọc bài viết bên dưới để cùng giải đáp những vướng mắc .Bạn đang xem : Hmac là gì

HMAC SHA256 la gì

Toàn vẹn dữ liệu là gì?

Tính toàn vẹn dữ liệu (Data Integrity): dữ liệu hay thông tin không bị thay đổi, mất mát trong khi lưu trữ hay truyền tải. Nói cách khác tính toàn vẹn là tính không bị hiệu chỉnh của dữ liệu. Đây là một trong các khía cạnh của lĩnh vực an toàn thông tin: tính toàn vẹn (integrity), tính xác thực (authentication), tính không thoái thác (non-repudiation), sẵn sàng (availability), tính tin cậy/bảo mật (reliability/security).Theo https://en.wikipedia.org/wiki/Data_integrity

Lưu ý rằng, tính toàn vẹn dữ liệu và tính bảo mật thông tin là khái niệm khác nhau rất dễ nhầm lẫn, tính toàn vẹn chỉ đảm bảo phát hiện được sự thay đổi dữ liệu trái phép, chứ không đảm bảo che dấu dữ liệu khỏi các bên không liên quan.

Có rất nhiều nguyên do dẫn đến sự đổi khác thông điệp gốc, hoàn toàn có thể do đường truyền không tốt dẫn đến việc mất gói tin, hoặc có một kẻ trá hình nào đó ( hacker ) cố ý đổi khác thông điệp nhầm mục tiêu xấu, ví dụ điển hình hacker muốn chèn một đoạn mã độc vào chương trình mà tất cả chúng ta tải về trải qua một website xấu, do đó nhà cung ứng uy tín sẽ khuyến nghị tất cả chúng ta nên kiểm tra lại tính toàn vẹn của chương trình bằng cách checksum mã nguồn chương trình và so sánh với một chuỗi ký tự, nếu trùng khớp, chương trình tải về giống với nhà phân phối đưa ra và hoàn toàn có thể không bị gắn mã độc ở bước trung gian, nếu không trùng khớp, rủi ro tiềm ẩn là chương trình đó đã bị biến hóa nên cần vô hiệu. Đây là ví dụ thuận tiện cho thấy sự thiết yếu của việc bảo vệ tính toàn vẹn tài liệu .Cơ chế kiểm tra tính toàn vẹn dữ liệuChúng ta sẽ đi từ những cách từ cơ bản nhất đến những cách nâng cao. Đầu tiên nhắc lại một chút ít kỹ năng và kiến thức cơ bản về hàm Hash .Hash là một ánh xạ 1 : 1 giữa tài liệu nguồn vào và tác dụng đầu ra, công thức cơ bản : Y = H ( X )Một hàm Hash được coi là an toàn và đáng tin cậy khi nó thỏa mãn nhu cầu những tiêu chuẩn sau :1. Cho giá trị Y, và hàm hash H, hầu hết không hề tìm X sau cho Y = H ( X ) 2. Cho giá trị X, không hề tìm X ’ ( X ’ ! = X ) sao cho H ( X ) = H ( X ’ ) 3. Không thể tìm hai giá trị X và X ’ ( X ’ ! = X ) sao cho H ( X ) = H ( X ’ )Cách 1: Dùng kỹ thuật hashing đơn giản

HMAC SHA256 la gì

HMAC SHA256 la gì

Cơ bản quy trình này gồm hai bước như sau :1. Bên gửi sẽ hash đoạn thông điệp M với hàm hash H và đính kèm hiệu quả vào thông điệp và gửi đi. 2. Bên nhận sẽ lại hash đoạn thông điệp M và so sánh hiệu quả với đoạn hashcode đính kèm, nếu trùng khớp thì thông điệp M hoàn toàn có thể không bị đổi khác, còn nếu sai, chắc chắc thông điệp M đã bị đổi khác .Tuy nhiên, với cách làm này thì hacker cũng hoàn toàn có thể thuận tiện tính lại đoạn mã hashcode với thông điệp M ’ mà hắn đổi khác bằng hàm H và sau đó đính kèm M ’ để gửi đến người nhận mà không có sự phát hiện nào .Về cơ bản, lược đồ trên sẽ ổn hơn nếu tất cả chúng ta nâng cấp cải tiến lại hàm Hash bằng cách thêm vào một khóa K, khi đó giả sử chỉ có người nhận và người gửi biết khóa K đó, còn hacker thì không, thì việc trá hình thông điệp phần nhiều là không hề vì hacker không biết khóa K này .Xem thêm : Is It Possible To Play With Premade Là Gì ? : WildriftHàm hash nâng cấp cải tiến : Y = H ( K, M )

Để đảm bảo hàm hash này là an toàn, ta cũng sẽ có ba tiêu chí sau:

1. Cho giá trị Y, khóa K và hàm hash H, phần đông không hề tìm X sau cho Y = H ( K, X ) 2. Cho giá trị X, không hề tìm X ’ sao cho H ( K, X ) = H ( K, X ’ ) 3. Không thể tìm hai giá trị X và X ’ sao cho H ( K, X ) = H ( K, X ’ )Và đó cũng là chính sách sinh ra MAC ( Massage Authentication Code ) là mã xác nhận thông điệp, lược đồ bên dưới như sau :

HMAC SHA256 la gì

HMAC SHA256 la gì

Với lược đồ này, cả bên gửi và bên nhận bằng cách nào đó phải biết trước một khóa K dùng chung. Nếu hacker có bắt được thông điệp và cố ý trá hình thì phần nhiều là không được vì chúng không có khóa K. Tuy nhiên không do đó mà tính toàn vẹn thông điệp đã được bảo vệ, yếu tố quyết định hành động giờ đây là hàm H, phải phong cách thiết kế hàm này đủ tốt để thật sự tránh khỏi việc trá hình thông điệp của hacker .Cách 2: Tạo mã xác thực MAC(K, M) = H(K || M)Như tiêu đề, tất cả chúng ta sẽ tạo ra mã xác nhận bằng cách Hash đoạn thông điệp gồm khóa K nối với thông điệp M, trong đó phép toán | | được hiểu là phép nối chuỗi. Hàm hash ở đây thường được chọn là Merkle-Damgård, chúng cũng giống như những hàm MD ( Message Digest ) ở chỗ băm thông điệp gốc thành một thông điệp có size cố định và thắt chặt, lược đồ băm của chúng như sau :
Ở lược đồ trên, toàn thông điệp ( gồm có khóa K nối với message M ) sẽ được chia thành những block đều nhau, block cuối có thêm phần padding để lấp đầy khối, theo đó ở từng bước giá trị Hash sau sẽ có nguồn vào là giá trị Hash trước và block hiện tại, cho đến khi kết thúc thông điệp tất cả chúng ta được một giá trị Hash màu xanh dương như trên. Như đã nói, thông điệp hash này sẽ được đính kèm với thông điệp M gốc để phía nhận xác lập tính toàn vẹn tài liệu .Tưởng chừng mọi thứ đều ổn, tuy nhiên cách tạo ra MAC ( K, M ) = H ( K | | M ) lại vi phạm tiêu chuẩn thứ ba của một hàm hash an toàn và đáng tin cậy là hoàn toàn có thể tìm X ’ sao cho H ( K, X ’ ) = H ( K, X ) làm mất đi tính toàn vẹn của thông điệp, dẫn chứng là sống sót một cách tiến công mang tên Length-extension-attack theo lược đồ sau :
Giá trị MAC ’ mới MAC ’ ( K, M ’ ) = H ( K | | M | | Extension ) = MAC ( K, M + Extension ) đã vi phạm tiêu chuẩn thứ hai của một hàm hash đáng tin cậy, cho nên vì thế ta cần thiết kế một hàm Hash mới an toàn và đáng tin cậy, phần dưới sẽ đề cập HMAC, một hàm Hash an toàn và đáng tin cậy .Cách 3: Tạo mã xác thực bằng HMACHMAC hay là Hash-based MAC là một hàm dùng để hiện thực chính sách MAC, hàm này được định nghĩa như sau :HMAC ( M ) = H >Trong đó ,M là thông điệp cần trao đổiK là một khóa bí mật chỉ được biết bởi bên gửi và bên nhậnopad = 0x36, lặp lại nếu cần thiếtipad = 0x5C, lặp lại nếu cần thiết|| là phép toán nối chuỗi+ là phép toán XORM là thông điệp cần trao đổiK là một khóa bí hiểm chỉ được biết bởi bên gửi và bên nhậnopad = 0x36, tái diễn nếu cần thiếtipad = 0x5 C, tái diễn nếu thiết yếu | | là phép toán nối chuỗi + là phép toán XOR

Lược đồ băm có thể được nhìn thấy như bên dưới:

Theo triết lý, bất kỳ hàm Hash nào cũng hoàn toàn có thể được dùng với HMAC. MD5 và SHA-1 là những hàm thường được lựa chọn. Với vận tốc thống kê giám sát cực nhanh của máy tính lúc bấy giờ, 1 số ít thế hệ hàm Hash họ SHA phức tạp kể đến như thể SHA-256, SHA-384, và SHA-512 bảo đảm an toàn hơn, nhưng trong thực tiễn thì không được sử dụng thoáng rộng vì độ phức tạp cao, dẫn đến thời hạn thống kê giám sát chậm hơn, hai hàm MD5 và SHA-1 vẫn là lựa chọn thông dụng nhất .Tại sao phải dùng HMAC?Tốc độ là nguyên do chính, hàm HMAC sẽ đo lường và thống kê nhanh hơn những giải thuật Block ciphers như là DES và AES, một nguyên do khác là tính không lấy phí và luôn có sẵn, nó không chịu tác động ảnh hưởng bởi một số ít điều luật bản quyền nào khi sử dụng từ Hoa Kỳ hay những nước khác .Tuy nhiên, HMAC đứng về góc nhìn mật mã học vẫn không bảo vệ tính chống thoái thác ( non-repudiatable ), nghĩa là miễn bên tham gia biết được khóa K là hoàn toàn có thể tạo ra MAC dùng để xác nhận, tuy nhiên không xác nhận được đúng chuẩn ai là người tạo ra mã MAC đó .