1. Trang chủ
  2. » Công Nghệ Thông Tin

Nghiên cứu hàm băm SHA256 và thực hiện cài đặt mô phỏng trên Java

23 1,6K 27

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 23
Dung lượng 1,01 MB
File đính kèm SHA256.zip (30 KB)

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Ngày này, với sự phát triển nhanh chóng của Internet và các ứng dụng giao dịch điện tử trên mạng, nhu cầu bảo vệ thông tin đi kèm cũng ngày càng được quan tâm và có ý nghĩa quan trọng. Một trong những công việc quan trọng của giao dịch điện tử chính là quá trình chứng thực nguồn gốc nội dung thông tin (chữ ký điện tử) và xác thực tính toàn vẹn dữ liệu. Để làm được điều này, chúng ta cần phải áp dụng ứng dụng chuẩn mật mã nâng cao, trong đó ứng dụng xây dựng các hàm băm mật mã là một trong những vấn đề cần được nghiên cứu và giải quyết

Trang 1

HỌC VIỆN KỸ THUẬT MẬT MÃ KHOA AN TOÀN THÔNG TIN

BÁO CÁO BÀI TẬP LỚN MÔN HỌC MẬT MÃ ỨNG DỤNG TRONG AN TOÀN THÔNG TIN

ĐỀ TÀI:

TÌM HIỂU, CÀI ĐẶT THUẬT TOÁN SHA-256

Giảng viên: Phạm Quốc Hoàng

Nguyễn Văn Nghị

Nhóm sinh viên: Nguyễn Tuấn Anh

Trần Văn Hoàng Nguyễn Đại Hiệp

Hà Nội, Tháng 3-2015

Trang 2

Ý KIẾN CỦA GIẢNG VIÊN

Trang 3

“Tìm hiểu, cài đặt thuật toán SHA-256” 1

MỤC LỤC

DANH MỤC HÌNH ẢNH 2

MỞ ĐẦU 3

CHƯƠNG 1: HÀM BĂM MẬT MÃ 4

1.1 HÀM BĂM 4

1.2 HÀM BĂM MẬT MÃ 4

1.2.1 Giới thiệu 4

1.2.2 Các tính chất của hàm băm mật mã 5

1.2.2.1 Tính kháng tiền ảnh (Preimage resistance) 5

1.2.2.2 Tính kháng tiền ảnh thứ hai (2nd-Preimage resistance) 5

1.2.2.3 Tính kháng xung đột (Collission resistance) 5

1.2.3 Phân loại hàm băm mật mã 5

1.2.4 Cấu trúc của thuật toán hàm băm 6

1.2.5 Ứng dụng của hàm băm mật mã 7

1.2.6 Các hàm băm mật mã hiện nay 9

CHƯƠNG 2: THUẬT TOÁN SHA-256 11

2.1 GIỚI THIỆU SHA 11

2.2 SHA-256 12

CHƯƠNG 3: CÀI ĐẶT THUẬT TOÁN SHA-256 17

KẾT LUẬN 20

TÀI LIỆU THAM KHẢO 21

Trang 4

“Tìm hiểu, cài đặt thuật toán SHA-256” 2

DANH MỤC HÌNH ẢNH

Hình 1: Cấu trúc tổng quát của hàm băm 6

Hình 2: Quá trình ký số 8

Hình 3: Quá trình xác thực 8

Hình 4: Hàm nén SHA-256 15

Hình 5: SHA-256 message schedule 16

Hình 6: Giao diện chính chương trình cài đặt thuật toán SHA-256 17

Hình 7: Chức năng băm file 17

Hình 8: Chọn file cần băm 18

Hình 9: Giá trị băm trả về khi thực hiện băm file 18

Hình 10: Chức năng băm thông điệp nhập vào từ bàn phím 18

Hình 11: Giá trị băm trả về khi thực hiện băm thông điệp nhập vào từ bàn phím 19

Trang 5

“Tìm hiểu, cài đặt thuật toán SHA-256” 3

MỞ ĐẦU

Ngày này, với sự phát triển nhanh chóng của Internet và các ứng dụng giao dịch điện tử trên mạng, nhu cầu bảo vệ thông tin đi kèm cũng ngày càng được quan tâm và có ý nghĩa quan trọng Một trong những công việc quan trọng của giao dịch điện tử chính là quá trình chứng thực nguồn gốc nội dung thông tin (chữ ký điện tử) và xác thực tính toàn vẹn dữ liệu

Để làm được điều này, chúng ta cần phải áp dụng ứng dụng chuẩn mật mã nâng cao, trong đó ứng dụng xây dựng các hàm băm mật mã là một trong những vấn đề cần được nghiên cứu và giải quyết

Ở bài báo cáo này, chúng ta sẽ đi tìm hiểu về các nội dung sau:

 CHƯƠNG 1: HÀM BĂM MẬT MÃ

Tìm hiểu về khái niệm, tính chất, phân loại, cấu trúc và ứng dụng của hàm băm mật mã

 CHƯƠNG 2: THUẬT TOÁN SHA-256

Trình bày về một trong những thuật toán băm được sử dụng rộng rãi hiện nay là

SHA-256 Chi tiết về các bước của thuật toán này

 CHƯƠNG 3: CÀI ĐẶT THUẬT TOÁN SHA-256

Sử dụng ngôn ngữ lập trình Java để cài đặt thuật toán SHA-256, thực hiện demo băm đoạn thông điệp nhập vào từ bàn phím

Trang 6

“Tìm hiểu, cài đặt thuật toán SHA-256” 4

CHƯƠNG 1: HÀM BĂM MẬT MÃ

Hàm băm (hash function) 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 kí tự, một đối tượng trong lập trình hướng đối tượng, v.v ) Giá trị băm đóng vai trò gần như một khóa để phân biệt các khối dữ liệu Hàm băm thường được dùng trong bảng băm nhằm giảm chi phí tính toán khi tìm một khối dữ liệu trong một tập hợp (nhờ việc so sánh các giá trị băm nhanh hơn việc so sánh những khối dữ liệu có kích thước lớn)

Vì tính thông dụng của bảng băm, ngày nay, đa số ngôn ngữ lập trình đều cung cấp thư viện ứng dụng bảng băm, thường gọi là thư viện collection trong đó có các vấn đề như: tập hợp (collection), danh sách (list), bảng (table), ánh xạ (mapping), từ điển (dictionary) Thông thường, các lập trình viên chỉ cần viết hàm băm cho các đối tượng nhằm tích hợp với thư viện bảng băm đã được xây dựng sẵn

Một hàm băm tốt phải thỏa mãn các điều kiện sau:

Hàm h(x) được gọi là một hàm băm nếu nó thoã mãn hai tính chất sau:

Nén gọn (Compression): Hàm h(x) tương ứng chuỗi bit đầu vào x có chiều dài hữu hạn tuỳ ý vào chuỗi bit y = h(x) có chiều dài cố định n > 0 cho trước

Trang 7

“Tìm hiểu, cài đặt thuật toán SHA-256” 5

Dễ tính toán (Easy of computation): Với mọi chuỗi bit đầu vào x có chiều dài hữu hạn tuỳ ý, h(x) được tính toán dễ dàng

1.2.2 Các tính chất của hàm băm mật mã

1.2.2.1 Tính kháng tiền ảnh (Preimage resistance)

Với mọi đầu ra y cho trước, không thể tìm được bất kỳ dữ liệu đầu vào x sao cho h(x)=y

(hay không thể tìm được một thông điệp từ một giá trị băm cho trước)

1.2.2.2 Tính kháng tiền ảnh thứ hai (2 nd -Preimage resistance)

Với mọi dữ liệu đầu vào x cho trước và y = h(x), không thể tính toán để tìm ra được giá trị x’≠x sao cho h(x’)=h(x) (hay không thể tìm ra 2 thông điệp khác nhau mà có cùng giá trị

băm)

1.2.2.3 Tính kháng xung đột (Collission resistance)

Không thể tính toán để tìm được hai dữ liệu đầu vào x và x’ phân biệt sao cho chúng có cùng giá trị băm h(x)=h(x’) (hay không thể sửa được một thông điệp mà không làm thay đổi

giá trị băm của nó)

1.2.3 Phân loại hàm băm mật mã

Dựa trên tham biến đầu vào của các hàm băm, các hàm băm mật mã được phân thành hai lớp:

 Lớp các hàm băm sử dụng khoá (keyed hash functions), chẳng hạn như MAC (Message Authentication Codes): nhận hai giá trị đầu vào

o Thông điệp cần tính giá trị băm

o Khoá bí mật để băm văn bản theo đúng chuẩn quy định

 Lớp các hàm băm không sử dụng khoá (unkeyed hash functions): chỉ nhận duy nhất một giá trị đầu vào là Thông điệp (message)

Trong lớp các hàm băm không sử dụng khoá thì MDCs (Modification Detection Codes –

mã nhận diện sự thay đổi) là lớp con của lớp này Lớp hàm này lại tiếp tục phân thành các lớp con nhỏ hơn:

Trang 8

“Tìm hiểu, cài đặt thuật toán SHA-256” 6

 Hàm băm một chiều (One-Way Hash Functions - OWHFs): các hàm trong lớp này đều thoả tính chất là với mọi mã băm biết trước, không thể tính toán để tìm được chuỗi bit đầu vào có mã băm bằng với mã băm đã cho

 Hàm băm kháng xung đột (Collision Resistant Hash Functions-CRHFs): các hàm trong lớp này thoã mãn tính chất không thể tính toán để tìm ra hai chuỗi bit có cùng giá trị băm

1.2.4 Cấu trúc của thuật toán hàm băm

Thành phần chính của một hàm băm là một hàm nén và các hàm biến đổi khác Hàm nén được thực thi nhiều lần để băm thông điệp ban đầu của hàm băm thành một chuỗi có chiều dài cố định Các hàm biến đổi khác (có thể có hoặc không) nhận vào chuỗi bít sau lần cuối cùng thực thi hàm nén và cho kết quả chính là mã băm cuối cùng của hàm băm Hình dưới đây là cấu trúc tổng quát của hàm băm

Hình 1: Cấu trúc tổng quát của hàm băm

Có rất nhiều thuật toán hàm băm cho đến nay sử dụng chung một cấu trúc cơ bản Cụ thể, một hàm băm thường gồm các bước như sau:

Trang 9

“Tìm hiểu, cài đặt thuật toán SHA-256” 7

Bước 1: Phân chia thông điệp đầu vào chiều dài hữu hạn thành các khối thông điệp con liên tiếp có chiều dài cố định r (giả sử là m1, m2, m3,…, mk)

Bước 2: Do m có độ dài bất kỳ nên luôn có một bước thêm các bit phụ sao cho chiều dài chuỗi mới m’ chia hết cho r (trong các bit thêm thường thêm 64 bit để lưu lại chiều dài ban đầu của chuỗi trước khi chèn)

Bước 3: Đưa khối thông điệp con m1, m2, m3,…, mk sẽ lần lượt đi qua một hàm nén f

của hàm băm h(m)

Bước 4: Kết quả của khối thứ mi-1 sau khi đi qua hàm nén f sẽ là nguồn dữ liệu đầu vào

cho bước thứ I tiếp theo

1.2.5 Ứng dụng của hàm băm mật mã

Xác thực mật khẩu: Mật khẩu thông thường không được lưu dưới dạng bản rõ (plaint text), mà ở dạng tóm tắt Để xác thực một người dùng, mật khẩu do người đó nhập vào được băm ra bằng hàm Hash và so sánh với kết quả băm được lưu trữ

Xác thực thông điệp: Giá trị đầu vào (tin nhắn, dữ liệu,…) bị thay đổi tương ứng giá trị băm cũng bị thay đổi Do vậy nếu một kẻ tấn công phá hoại, chỉnh sửa dữ liệu thì server có thể biết ngay lập tức

Bảo vệ tính toàn vẹn của tập tin, thông điệp được gửi qua mạng: Hàm băm mật mã có tính chất là hàm một chiều Từ khối dữ liệu hay giá trị đầu vào chỉ có thể đưa ra một giá trị băm duy nhất Như chúng ta đã biết đối với tính chất của hàm một chiều Kẻ tấn công nếu bắt được giá trị băm của thông điệp được gửi trên đường truyền cũng không thể suy ngược lại được nội dung của thông điệp đó

Tạo chữ ký điện tử: Chữ ký số có được bằng cách đem mã hóa bản tóm tắt thông điệp bằng khóa bí mật của người ký

Trang 10

“Tìm hiểu, cài đặt thuật toán SHA-256” 8

Trang 11

“Tìm hiểu, cài đặt thuật toán SHA-256” 9

1.2.6 Các hàm băm mật mã hiện nay

đầu ra

Kích thước trạng thái trong

Kích thước khối Độ dài Kích thước

Trang 12

“Tìm hiểu, cài đặt thuật toán SHA-256” 10

Trang 13

“Tìm hiểu, cài đặt thuật toán SHA-256” 11

CHƯƠNG 2: THUẬT TOÁN SHA-256

SHA (Secure Hash Algorithm) là thuật toán băm an toàn dùng để chuyển một đoạn dữ liệu nhất định thành một đoạn dữ liệu có chiều dài không đổi với xác suất khác biệt cao Thuật toán SHA được gọi là an toàn vì theo chuẩn FIPS 180-2 phát hành ngày 1 tháng 8 năm 2002:

 Cho một giá trị băm nhất định được tạo nên bởi một trong những thuật toán SHA, việc tìm lại được đoạn dữ liệu gốc là không khả thi

 Việc tìm được hai đoạn dữ liệu nhất định có cùng kết quả băm tạo ra bởi một trong những thuật toán SHA là không khả thi

 Bất cứ thay đổi nào trên đoạn dữ liệu gốc, dù nhỏ, cũng sẽ tạo nên một giá trị băm hoàn toàn khác với xác suất rất cao

SHA gồm 5 thuật toán là SHA-1 (trả lại kết quả dài 160 bit), SHA-224 (trả lại kết quả dài

224 bit), 256 (trả lại kết quả dài 256 bit), 384 (trả lại kết quả dài 384 bit) và

SHA-512 (trả lại kết quả dài SHA-512 bit)

Các tính chất của các thuật toán băm an toàn:

Trang 14

“Tìm hiểu, cài đặt thuật toán SHA-256” 12

SHA-256 cùng với SHA-224, SHA-384 và SHA-512 là bốn giải thuật thuộc họ SHA và gọi chung là SHA-2 Về giải thuật, các biến thể của SHA-2 không khác nhau Mặc dù chúng

sử dụng giá trị biến và hằng số cũng như độ dài từ,… khác nhau

SHA-256 hoạt động giống như MD4, MD5 và SHA-1 Gồm 2 bước cơ bản:

o Mở rộng thông điệp

Thông điệp M được mở rộng trước khi thực hiện băm Mục đich của việc mở rộng này là

để đảm bảo rằng thông điệp mở rộng có độ dài là bội số của 512

Giả sử độ dài của thông điệp M là l bit Thêm bit 1 vào cuối thông điệp, theo sau là k bit 0 (k là số không âm nhỏ nhất sao cho l + 1 + k ≡ 448(mod512)) Sau đó thêm khối 64 bit biểu diễn nhị phân của l

Ví dụ: thông điệp “abc”(8 bit ASCII) có độ dài 8 × 3 = 24 Thêm bít 1 vào cuối và 448 – (24+1) =423 bit 0 Cuối cùng là thêm độ dài của thông điệp Lúc này độ dài thông điệp mở rộng sẽ là 512 bit

01100001 01100010 01100011 1

o Phân tích thông điệp

Sau khi thông điệp đã được mở rộng, thông điệp cần được phân tích thành N khối 512 bit:

M (1) , M (2) ,…, M (N) Mỗi khối này lại được chia thành 16 từ 32 bit.M0(i) chứa 32 bit đầu của khối i, M1(i) chứa 32 bit tiếp theo,…

o Khởi tạo biến (căn bậc 2 của 8 số nguyên tố đầu tiên)

= 6a09e667 = bb67ae85 = 3c6ef372 = a54ff53a

Trang 15

“Tìm hiểu, cài đặt thuật toán SHA-256” 13

= 510e527f = 9b05688c = 1f83d9ab = 5be0cd19

Việc tính toán giá trị băm được thực hiện như sau:

For i = 1 to N (N là số khối của thông điệp mở rộng)

Trang 16

“Tìm hiểu, cài đặt thuật toán SHA-256” 14

H (N) = ( , ,…, ) là mã băm của thông điệp M

Định nghĩa sáu hàm sử dụng trong SHA-256: Mỗi hàm hoạt động theo 1 từ 32 bit có đầu

ra là 1 từ 32 bit Các hàm được định nghĩa như sau:

Ch(x,y,z) = (x ⋀ y) (x ⋀ z) Maj(x,y,z) = (x ⋀ y) (x ⋀ z) (y ⋀ z) = R 2 (x) R 13 (x) R 22 (x)

R n : quay phải n bit

S n : dịch phải n bit

Trang 17

“Tìm hiểu, cài đặt thuật toán SHA-256” 15

Các khối thông điệp W0, W1,…, W63 được tính toán như sau:

W j = for j = 0,1,…,15 và For j = 16 to 63

{

W j⃪1(W j-2) + W j +0(W j-15) + W j-16

}

Khởi tạo hằng số K 0 ,…, K 63 (căn bậc 3 của 64 số nguyên tố đầu tiên)

428a2f98 71374491 b5c0fbcf e9b5dba5 3956c25b 59f111f1 923f82a4 ab1c5ed5 d807aa98 12835b01 243185be 550c7dc3 72be5d74 80deb1fe 9bdc06a7 c19bf174 e49b69c1 efbe4786 0fc19dc6 240ca1cc 2de92c6f 4a7484aa 5cb0a9dc 76f988da 983e5152 a831c66d b00327c8 bf597fc7 c6e00bf3 d5a79147 06ca6351 14292967 27b70a85 2e1b2138 4d2c6dfc 53380d13 650a7354 766a0abb 81c2c92e 92722c85 a2bfe8a1 a81a664b c24b8b70 c76c51a3 d192e819 d6990624 f40e3585 106aa070 19a4c116 1e376c08 2748774c 34b0bcb5 391c0cb3 4ed8aa4a 5b9cca4f 682e6ff3 748f82ee 78a5636f 84c87814 8cc70208 90befffa a4506ceb bef9a3f7 c67178f2

Hình 4: Hàm nén SHA-256

Trang 18

“Tìm hiểu, cài đặt thuật toán SHA-256” 16

Hình 5: SHA-256 message schedule

Trang 19

“Tìm hiểu, cài đặt thuật toán SHA-256” 17

CHƯƠNG 3: CÀI ĐẶT THUẬT TOÁN SHA-256

Việc cài đặt thuật toán SHA-256 được triển khai bằng ngôn ngữ lập trình java Giao diện chương trình được tạo bằng Netbean

Giao diện chính của chương trình:

Hình 6: Giao diện chính chương trình cài đặt thuật toán SHA-256 Chương trình được xây dựng với 2 chức năng, là băm file (chọn Encrypt File) và băm một thông điệp bất kỳ nhập vào từ bàn phím (chọn Encrypt Message)

Một số giao diện khác của chương trình:

Chức năng băm 1 file:

Hình 7: Chức năng băm file

Trang 20

“Tìm hiểu, cài đặt thuật toán SHA-256” 18

Chọn file: chọn đường dẫn file cần băm

Hình 8: Chọn file cần băm

Khi băm xong file, giá trị băm được hiển thị trong textbox SHA-256

Hình 9: Giá trị băm trả về khi thực hiện băm file

Chức năng băm 1 thông điệp nhập vào từ bàn phím:

Hình 10: Chức năng băm thông điệp nhập vào từ bàn phím

Trang 21

“Tìm hiểu, cài đặt thuật toán SHA-256” 19

Thông điệp nhập vào ô textbox Message và giá trị băm trả về ô textbox SHA-256

Hình 11: Giá trị băm trả về khi thực hiện băm thông điệp nhập vào từ bàn phím

Trang 22

“Tìm hiểu, cài đặt thuật toán SHA-256” 20

Trang 23

“Tìm hiểu, cài đặt thuật toán SHA-256” 21

TÀI LIỆU THAM KHẢO

[1] Hàm băm

http://vi.wikipedia.org/wiki/H%C3%A0m_b%C4%83m

[2] Hàm băm mật mã

http://vi.wikipedia.org/wiki/H%C3%A0m_b%C4%83m_m%E1%BA%ADt_m%C3%A3_h%E1%BB%8Dc

Ngày đăng: 08/11/2017, 06:37

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w