1. Trang chủ
  2. » Luận Văn - Báo Cáo

Tiểu Luận Ứng Dụng Hàm Băm SHA Vào Bitcoin

38 334 2

Đ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 38
Dung lượng 524,92 KB

Nội dung

MỤC LỤC DANH MỤC HÌNH ẢNH 3 DANH MỤC VIẾT TẮT 4 TÓM TẮT NỘI DUNG 5 LỜI NÓI ĐẦU 6 CHƯƠNG I : TÌM HIỂU CHUNG VỀ BITCOIN 9 1. Khái niệm Blockchain 9 2. Khái niệm bitcoin 9 3. Nguyên lý hoạt động của Bitcoin 11 4. Nền tảng kỹ thuật 12 CHƯƠNG II : THUẬT TOÁN BĂM SHA 14 1. Khái niệm 14 2. Đặc tính của hàm băm 14 3. Ứng dụng của hàm băm 14 4. Cấu trúc của hàm băm 15 5. Tính chất của hàm băm 15 6. Các loại hàm băm 15 6.1. Hàm băm MD4 (Message Disgest 4) và MD5 (Message Disgest 5) 15 6.2. Hàm băm SHS (Secure Hash Standard) 16 CHƯƠNG III : THUẬT TOÁN BĂM SHA 256 17 1. Khái niệm 17 2. Mô tả thuật toán 17 2.1. Các tham số, ký hiệu và thuật ngữ 18 2.2. Phép toán 18 2.3. Chuyển đổi dữ liệu 19 2.5. Các hàm chức năng sử dụng trong SHA256 20 2.6. Các hằng số sử dụng trong SHA256 20 2.8. Thuật toán băm SHA256 22 CHƯƠNG IV : DEMO THUẬT TOÁN SHA256 bằng PHP 25 1. Viết chương trình 25 2. Thử nghiệm 32 2.1. Giao diện chương trình 33 2.2. Kiểm thử 35 KẾT LUẬN 37 TÀI LIỆU THAM KHẢO 38   DANH MỤC HÌNH ẢNH Hình 1: Sơ đồ hoạt động của Blockchain 7 Hình 2 : Ví điện tử Trezor 8 Hình 3bit Mảng 64 hằng số 32bit Kj{256} 18 Hình 4 : Các giá trị khởi tạo của giá trị băm 19 Hình 5: Giao diện chương trình khi mới khởi chạy 28 Hình 6 : Giao diện trước khi bấm nút tính toán 29 Hình 7: Kết quả thu được sau khi thực hiện băm 30   DANH MỤC VIẾT TẮT Ký hiệu Tên đầy đủ Ý nghĩa BTC Ký hiệu đồng tiền ảo Bitocin SHA Secure Hash Algorithm Giải thuật băm an toàn FIPS Federal Information Processing Standard Chuẩn bảo mật an toàn của chính phủ Mỹ NIST National Institute of Standards and Technology Viện Tiêu chuẩn và Kĩ thuật Quốc gia PHP Hypertext Preprocessor Ngôn ngữ lập trình kịch bản SHS Secure Hash Standard Bộ mã hóa thuật toán băm an toàn XOR Phép toán thao tác bit NSA National Security Agency Cơ quan An ninh Quốc gia Hoa Kỳ MD4, MD5 Message Digest 4, 5 các giải thuật đồng hóa thông tin   TÓM TẮT NỘI DUNG Bài báo cáo tìm hiểu về thuật toán mã hóa đồng tiền ảo Bitcoin ngoài phần mở đầu, kết luận thì có nội dung chính được chia làm 4 chương: Chương 1 : Tìm hiều chung về Bitcoin: Tìm hiểu khái quát về đồng tiền Bitcoin như khái niệm, blockchain, nguyên lý hoạt động, nền tản kỹ thuật của đồng tiền ảo Bitcoin. Chương 2 : Thuật toán băm SHA : Tìm hiểu chung về khái niệm, đặc điểm, tính chất, cấu trúc của hàm băm SHA. Chương 3: Thuật toán băm SHA 256 : Tìm hiều khái niệm, những bước tiền xử lý và cách thức hoạt động của thuật toán SHA 256. Chương 4 : Demo : Tạo và chạy thử nghiệm thuật toán bằng ngôn ngữ PHP và kiểm tra, so sánh kết quả thu được với kết quả trên mạng Internet.   LỜI NÓI ĐẦU Ngày nay, xã hội càng phát triển, thế giới bùng nổ việc áp dụng công nghệ thông tin vào mọi hoạt động kinh tế. Đặc biệt Internet được đưa và ứng dụng trong các hoạt động thương mại đã tạo nên một lĩnh vực mới là thương mại điện tử. Thương mại điện tử đã xóa nhòa đi biên giới giữa các quốc gia tạo nên một thị trường giao dịch chung gọi là thị trường toàn cầu. Thương mại điện tử mang lại những tiện ích to lớn như tăng hiệu suất, nâng cao năng lực cạnh tranh, giảm chi phí, tăng lợi nhuận... Thương mại trên mạng Internet đã gần như hoàn toàn coi các tổ chức tài chính là bên thứ ba được tin cậy để xử lý các thanh toán điện tử. Trong khi làm việc khá tốt đối với hầu hết các giao dịch, hệ thống này vẫn tồn tại những điểm yếu cố hữu của mô hình tín nhiệm (the trust based model). Các giao dịch mà hoàn toàn không thể đảo ngược không thực sự là có thể xảy ra được, vì các tổ chức tài chính không thể tránh được các tranh chấp trung gian. Chi phí trung gian làm tăng cao các chi phí giao dịch, hạn chế mức giao dịch tối thiểu và làm giảm khả năng giao dịch với các mức giao dịch nhỏ thông thường, và phải mất chi phí cao hơn để thực hiện các thanh toán không thể đảo ngược cho các dịch vụ không thể đảo ngược. Với khả năng đảo ngược, nhu cầu tín nhiệm đã lan rộng. Các thương gia phải thận trọng với khách hàng của họ, sách nhiễu họ bởi nhiều thông tin hơn bình thường họ cần. Một tỉ lệ gian lận nhất định đã được công nhận là không thể tránh khỏi. Các chi phí và thanh toán không chắc chắn này có thể tránh được bằng cách sử dụng tiền tệ vật lý, nhưng không có cơ chế nào tồn tại để thực hiện các thanh toán qua một kênh thông tin liên lạc mà thiếu một bên được tin cậy. Vậy thứ ta cần là một hệ thống thanh toán điện tử dựa vào bằng chứng mật mã thay vì tín nhiệm, cho phép hai bên sẵn sàng có thể giao dịch trực tiếp với nhau mà không cần đến một bên thứ ba được tin cậy nào cả. Các giao dịch được tính toán để không đảo ngược được sẽ bảo vệ người bán khỏi gian lận, và các cơ chế ký quỹ có thể được thực hiện dễ dàng nhằm bảo vệ người mua. Đồng tiền ảo Bitcoin chính là một trong những giải pháp bảo đảm được điều này với tính bảo mật cao, khó bị làm giả hay đánh cắp. Bài báo cáo này sẽ tìm hiểu về thuật toán SHA 256 dùng để mã hóa đồng tiền ảo Bitcoin, tạo nên tính bảo mật an toàn cao cho nó. Chúng em xin chân thành cám ơn cô Nguyễn Thị Thu Thủy đã tạo điều kiện và tận tình giúp đỡ trong quá trình chúng em làm bài báo cáo này. Do kiến thức còn hạn hẹp nên bài báo cáo còn nhiều thiếu sót, chúng em sẽ cố gắng khắc phục trong thời gian tới. Chân thành cám ơn     CHƯƠNG I : TÌM HIỂU CHUNG VỀ BITCOIN Khái niệm Blockchain Blockchain (Chuỗi khối) là một cơ sở dữ liệu phân cấp lưu trữ thông tin trong các khối thông tin được liên kết với nhau bằng mã hóa và mở rộng theo thời gian. Mỗi khối thông tin đều chứa thông tin về thời gian khởi tạo và được liên kết tới khối trước đó, kèm một mã thời gian và dữ liệu giao dịch. Blockchain được thiết kế để chống lại việc thay đổi của dữ liệu: Một khi dữ liệu đã được mạng lưới chấp nhận thì sẽ không có cách nào thay đổi được nó. Blockchain được đảm bảo nhờ cách thiết kế sử dụng hệ thống tính toán phân cấp với khả năng chịu lỗi byzantine cao. Vì vậy sự đồng thuận phân cấp có thể đạt được nhờ Blockchain. Vì vậy Blockchain phù hợp để ghi lại những sự kiện, hồ sơ y tế, xử lý giao dịch, công chứng, danh tính và chứng minh nguồn gốc. Việc này có tiềm năng giúp xóa bỏ các hậu quả lớn khi dữ liệu bị thay đổi trong bối cảnh thương mại toàn cầu. Cách thức hoạt động của Blockchain được miểu tả như hình sau: Hình 1: Sơ đồ hoạt động của Blockchain Khái niệm bitcoin Tiền thuật toán là một loại tiền tệ kỹ thuật số, được sinh ra bởi các thuật toán mã hóa phức tạp dưới dạng phần mềm mã nguồn mở. Bitcoin (ký hiệu: BTC, XBT, ) là một loại tiền thuật toán, được phát minh bởi một người bí ẩn sử dụng bút danh Satoshi Nakamotodưới dạng phần mềm mã nguồn mở từ năm 2009. Bitcoin có thể được trao đổi trực tiếp bằng thiết bị kết nối Internet ngang hàng mà không cần thông qua một tổ chức tài chính trung gian nào. Do đó không cần phải trả lệ phí giao dịch và cũng không cần phải cung cấp tên thật. Đối với Bitcoin, có thể hình dung Blockchain là một cuốn sổ cái ghi lại tất cả các giao dịch. Dữ liệu trong cuốn sổ cái liên tục được mạng lưới máy tính ngang hàng trên thế giới cập nhật và bảo trì. Giao dịch khi A gửi X bitcoin cho B được ghi lại trên toàn hệ thống, tất cả các máy tính trong mạng này sẽ xác minh và ghi lại giao dịch đó vào cuốn sổ cái rồi cấp phát dữ liệu này tới các máy tính khác. Rất nhiều doanh nghiệp đã bắt đầu chấp nhận cho việc sử dụng bitcoin. Thậm chí,vào một ngày tháng 05 năm 2010, một lập trình viên tên Laszlo Hanyecz đã trả 10.000BTC để mua 2 chiếc bánh pizza. Cần phải có một phần mềm ví để lưu trữ cũng như quản lý nguồn chi tiêu bitcoin. Mỗi ví Bitcoin bao gồm địa chỉ Bitcoin công khai (hash của public key) và khóa riêng tư (private key). Một địa chỉ có 160 bit dữ liệu, vì vậy có thể tạo ra tổng cộng 2160 địa chỉ Bitcoin tương đương 1048 địa chỉ (để so sánh: Có tổng cộng khoảng 1047 phân tử nước trên trái đất). Ngoài ra địa chỉ còn bao gồm 4 byte checksum nên xác suất mạng lưới chấp nhận địa chỉ Bitcoin gõ sai cực kỳ thấp. Bất kỳ ai cũng có thể gửi Bitcoin đến một chiếc ví bằng địa chỉ công khai, còn khoá riêng tư phải được nhập khi chủ ví muốn gửi Bitcoin đi. Vì vậy, việc sở hữu Bitcoin được định nghĩa là sự nắm giữ khoá riêng tư của 1 địa chỉ Bitcoin. Một khi khoá riêng tư bị mất, mạng lưới Bitcoin sẽ không thể xác nhận được việc sở hữu số bitcoin đó, và số bitcoin trong địa chỉ đó sẽ vĩnh viễn bị mất. Ví cho phép người dùng hoàn tất thanh toán giữa các địa chỉ khác nhau bằng cách cập nhật vào Blockchain. Khi thực hiện giao dịch bằng thiết bị di động, người dùng có thể sử dụng mã QR để đơn giản hoá quy trình thanh toán. Hình 2 : Ví điện tử Trezor Bitcoin có thể được mua bán thông qua các sàn giao dịch, hoặc thậm chí ở một số nơi trên thế giới, kể cả ở Việt Nam đã có máy ATM dành riêng cho bitcoin. Người dùng có thể rút trực tiếp tiền mặt từ bitcoin bằng những bitcoin ATM này. Bitcoin không thể in như tiền mặt, chúng được tạo ra bởi một hệ thống máy tính trên toàn cầu. Quy mô của mạng lưới này càng ngày cảng rộng với sức mạnh từ những siêu máy tính tham gia. Chính vì tính chất ẩn danh và không thể bị kiểm soát bởi chính phủ cho nên đồng bitcoin trở nên hấp dẫn ngườ dùng. ¬¬Nguyên lý hoạt động của Bitcoin Giá trị của Bitcoin cũng giống như các loại tiền tệ khác, được xác định theo quy luật cung – cầu. Để xử lý giao dịch, hệ thống máy tính cần phải thực hiện thủ tục gọi là”Đào bitcoin”. Bao gồm việc giải mã một phương trình toán học và đưa ra đáp án gồm 64 ký tự. Khi bài toán được giải mã thành công, một khối Bitcoin bao gồm thông tin các giao dịch trong đó sẽ hoàn tất việc xử lý. Thợ mỏ những người đào Bitcoin, sẽ được thưởng một lượng Bitcoin từ mạng máy tính cho thành quả của mình. Độ khó mỗi bài toán sẽ tăng theo chu kỳ để đám bảo Bitcoin luôn được tạo mới sau mỗi 10 phút. Đồng tiền Bitcoin có thể được chia nhỏ thành nhiều đơn vị con. 1 Bitcoin bằng 100 triệu Satoshi – Shatori là đơn vị nhỏ nhất của đồng Bitcoin được đặt theo tên của người đã tạo ra nó. Nền tảng kỹ thuật Trong quá trình đào bitcoin, phần cứng khai thác bitcoin của bạn chạy một hàm băm mật mã (hashing) (2 vòng SHA256) trên một khối. Với mỗi hàm băm mới được thử, phần mềm đào bitcoin sẽ sử dụng một số khác nhau làm phần tử ngẫu nhiên của khối, số này được gọi là nonce. Tùy thuộc vào nonce và chức năng băng trong khối sẽ tạo một băm giống như dưới đây: 93ef6f358fbb998c60802496863052290d4c63735b7fe5bdaac821de96a53a9a Bạn có thể thấy hàm băm này rất dài. (Đó là một số thập lục phân, các chữ cái từ AF là đại diện cho các chữ số từ 10 đến 15). Mục tiêu khó khăn (difficulty target) sẽ đảm bảo rằng các khối sẽ được tạo ra khoảng mười phút một lần. Để tạo ra một khối hợp lệ, các thợ mỏ phải tìm một hàm băm sao cho nó nhỏ hơn mục tiêu khó khăn. Vì vậy nếu ví dụ mục tiêu là: 1000000000000000000000000000000000000000000000000000000000000000 Thì bất kỳ số nào bắt đầu bằng số 0 sẽ đạt yêu cầu, ví dụ: 0787a6fd6e0782f7f8058fbef45f5c17fe89086ad4e78a1520d06505acb4522f Nếu chúng ta hạ thấp mục tiêu xuống: 0100000000000000000000000000000000000000000000000000000000000000 Bây giờ chúng ta cần thêm 2 số 0 vào đầu mục tiêu để được như sau:00db27957bd0ba06a5af9e6c81226d74312a7028cf9a08fa125e49f15cae4979 Do mục tiêu là một dãy số khổng lồ với hàng chục chữ số, người ta thường sử dụng một số đơn giản để làm mục tiêu hiện tại. Con số này là đại diện cho độ khó trong việc khai thác (mining difficulty). Chỉ số cho biết mức độ khó khăn khi khai thác khối hiện tại so với khi khai thác khối đầu tiên. Vì vậy, độ khó có giá trị 70000 có nghĩa là để tạo ra các khối hiện tại bạn phải làm khối lượng công việc gấp 70000 lần so với lúc Satoshi Nakamoto đã phải làm để tạo ra các khối đầu tiên. Để công bằng, thì phần cứng đào bitcoin và các thuật toán chậm hơn rất nhiều và ít được tối ưu hóa. Để giữ cho các khối sẽ được tạo ra mỗi 10 phút, độ khó sẽ được điều chỉnh sau mỗi 2016 blocks. Với sức mạnh hiện tại của mạng lưới toàn cầu, hiện tại sẽ mất khoảng 14 ngày để hoàn thành 2016 khối như vậy. Đó là lý do tại sao, khi sức mạnh của mạng lưới tăng lên, độ khó cũng sẽ tăng lên.   CHƯƠNG II : THUẬT TOÁN BĂM SHA Khái niệm Hàm băm là thuật toán không dùng khóa để mã hóa (ở đây dùng thuật ngữ “băm” thay cho “mã hóa”), nó có nhiệm vụ “lọc” (băm) tài liệu (bản tin) và cho kết quả là một giá trị “băm” có kích thước cố định, còn gọi là “đại diện tài liệu” hay “đại diện bản tin”, “đại diện thông điệp”. Hàm băm là hàm một chiều, theo nghĩa giá trị hàm băm là duy nhất, và từ giá trị băm này, khó có thể suy ngược lại được nội dung hay độ dài ban đầu của tài liệu gốc. Đặc tính của hàm băm Hàm băm h là hàm một chiều (One – wat Hash) với các đặc tính sau: Với tài liệu đầu vào (bản tin gốc) x, chỉ thu được giá trị băm duy nhất z = h(x). Nếu dữ liệu trong bản tin x bị thay đổi hay bị xóa để thành bản tin x’, thì giá trị băm h(x’) ≠ h(x). Cho dù chỉ là một sự thay đổi nhỏ, ví dụ chỉ thay đổi 1 bit dữ liệu của bản tin gốc x, thì giá trị băm h(x) của nó cũng vẫn thay đổi. Điều này có nghĩa là: hai thông điệp khác nhau, thì giá trị băm của chúng cũng khác nhau Nội dung của bản tin gốc “khó” thể suy ra từ giá trị băm của nó. Nghĩa là: với thông điệp x thì “dễ” tính được z=h(x), nhưng lại khó tính ngược lại x nếu chỉ biết giá trị băm h(x) (kể cả khi biết hàm băm h). Ứng dụng của hàm băm Với bản tin dài x, thì chữ ký trên x cũng sẽ dài, như vậy tốn thời gian “ký”, tốn bộ nhớ để lưu giữ “chữ ký”, tốn rất nhiều thời gian để truyền “chữ ký” trên mạng. Người ta dùng hàm băm h để đại cho bản tin z = h(x) nó có độ dài ngắn (ví dụ 128 bit). Sau đó ký trên z, như vậy chữ ký trên z sẽ nhỏ hơn rất nhiều so với chữ ký trên bản tin gốc x. Hàm băm dùng để xác định tính toàn vẹn dữ liệu. Hàm băm dùng để bảo mật một số dữ liệu đặc biệt, ví dụ bảo vệ mật khẩu, bảo vệ khóa mật mã, ... Cấu trúc của hàm băm Hầu hết các hàm băm mật mã đều có cấu trúc giải thuật như sau: Cho trước một thông điệp M có độ dài bất kỳ. Tùy theo thuật toán được sử dụng, chúng ta có thể cần bổ sung một số bit vào thông điệp này để nhận được thông điệp có độ dài là bội số của một hằng số cho trước. Chia nhỏ thông điệp thành từng khối có kích thước bằng nhau: M1, M2, …Ms Gọi H là trạng thái có kích thước n bit, f là “hàm nén” thực hiện thao tác trộn khối dữ liệu với trạng thái hiện hành. Khởi gán H0 bằng một vector khởi tạo nào đó Hi = f(Hi1,M) với i = 1, 2, 3, …, s Hs chính là thông điệp rút gọn của thông điệp M ban đầu. Tính chất của hàm băm Tính chất 1: Hàm băm không va chạm yếu. Hàm băm h được gọi là không va chạm yếu , nếu cho trước bức điện x, “khó có thể” tính toán để tìm ra bức điện x’ ≠ x mà h(x’) = h(x). Tính chất 2: Hàm băm không va chạm mạnh. Hàm băm h được gọi là không va chạm mạnh nếu “khó” thể tính toán để tìm ra hai bức thông điệp khác nhau x và x’ (x’≠ x) mà có h(x’) = h(x). Tính chất 3: Hàm băm h là hàm một chiều. Hàm băm h được gọi là hàm một chiều nếu khi cho trước một bản tóm lược thông báo z thì “khó thể” tính toán để tìm ra thông điệp ban đầu x sao cho h(x) = z. Các loại hàm băm Hàm băm MD4 (Message Disgest 4) và MD5 (Message Disgest 5) Hàm băm MD4 được Giáo sư Ron Rivest đề nghị vào năm 1990. Vào năm 1992, phiên bản MD5 của thuật toán này ra đời. Thông điệp rút gọn có độ dài 128 bit. Năm 1995, Hans Dobnertin đã chỉ ra sự đụng độ ngay chính trong bản than hàm nén của giải thuật (mặc dù chưa thật sự phá vỡ được giải thuật). Năm 2004, nhóm tác giả Xiaoyun Wang, Denguo Feng, Xuejia Lai và Hongbo Yu đã công bố kết quả về việc phá vỡ thuật toán MD4 và MD5 bằng phương pháp tấn công đụng độ Hàm băm SHS (Secure Hash Standard) Hàm băm SHS do NIST và NSA xây dựng được công bố trên Federal Register vào ngày 3111992, và sau đó chính thức trở thành phương pháp chuẩn từ ngày 1351993. Thông điệp rút gọn có độ dài 160bit. Ngày 26082002, Viện tiêu chuẩn và công nghệ quốc gia Hoa Kỳ đã đề xuất hệ thống chuẩn hàm băm an toàn gồm 4 thuật toán hàm băm SHA1, SHA256, SHA384, SHA512. Đến 25032004, NIST đã chấp nhận thêm thuật toán hàm băm SHA224 vào hệ thống chuẩn hàm băm. Các thuật toán hàm băm do NIST đề xuất được đặc tả trong tài liệu FIPS1802   CHƯƠNG III : THUẬT TOÁN BĂM SHA 256 Khái niệm SHA2 (Secure Hash Algorithm 2) là tập hợp các hàm băm mật mã được thiết kế bởi NSA. Hàm băm mật mã là các phép toán chạy trên dữ liệu kỹ thuật số, bằng cách so sánh các tính toán “băm” (đầu ra từ thực hiện các thuật toán) đến các giá trị hash được biết đến và mong đợi, một người có thể xác định tính toàn vẹn của dữ liệu. Ví dụ, tính toán các hash của một tệp tin tải về và so sánh kết quả vào một kết quả băm được phát hành trước đó có thể xác định các tệp tin tải về có bị sửa đổi hoặc giả mạo hay không. Một khía cạnh quan trọng của hàm băm mật mã là chúng kháng xung đột: Giá trị đầu vào khác nhau thì giá trị đầu ra sẽ không giống nhau. SHA256 là một loại hàm băm của SHA2, là hàm băm tính toán với các từ 32bit. Mô tả thuật toán Mỗi thuật toán có thể được mô tả trong hai giai đoạn: tiền xử lý và tính toán băm. Tiền xử lý liên quan đến việc đệm một thông điệp, phân tích cú pháp thông điệp đó thành các khối mbit, và thiết lập các giá trị khởi tạo sẽ được sử dụng trong tính toán băm. Việc tính toán băm sinh ra một thông điệp lịch trình (message schedule) từ thông điệp đã đệm và sử dụng lịch trình, cùng với chức năng, hằng số, và các hoạt động từ ngữ để lặp đi lặp lại tạo ra một loạt các giá trị băm. Các băm thức giá trị được tạo ra bởi việc tính toán hash được sử dụng để xác định các thông điệp tóm lược (message digest). Thuật toán băm SHA256 có thể chia làm hai giai đoạn: tiền xử lý và tính toán băm. Giai đoạn tiền xử lý đưa thông tin cần băm ( M ) về dạng chuẩn, phân tích M thành mbit block, và cài đặt giá trị ban đầu cho giai đoạn tính toán băm. Giai đoạn tính toán băm sinh ra thông điệp liệt kê của M từ thông điệp chuẩn, và sử dụng liệt kê đó cùng với các chức năng, các hằng số, các phép toán để sinh một dãy các giá trị băm. Giá trị băm cuối cùng sinh bởi giai đoạn tính toán băm được sử dụng làm giá trị băm của M. Các tham số, ký hiệu và thuật ngữ M thông điệp được băm a, b, c, …, h các biến thay đổi có độ dài wbit sử dụng trong tính toán giá trị băm H(i) giá trị băm thứ i, H(0) là giá trị khởi tạo, H(N) là giá trị băm cuối cùng, sử dụng làm giá trị băm Hj(i) từ thứ j của giá trị băm thứ i, H0(i) là từ trái nhất của giá trị băm thứ i Kt hằng số sử dụng cho vòng lặp thứ t của tính toán băm Số số 0 thêm vào thông điệp M trong quá trình tạo thông điệp chuẩn độ dài của thông điệp M tính theo bit số bit trong 1 block M(i) Block thứ i Mj(i) từ thứ j của block thứ i, M0(i) là từ trái nhất của block i w số bit của một từ T wbit tạm thời sử dụng trong tính toán băm N số block của thông điệp chuẩn Wt wbit thứ t của thông điệp liệt kê Phép toán phép toán end  phép toán or  phép toán cộng bit XOR  phép phủ định + phép cộng theo modulo 2w >n có nghĩa là x được dịch phải n bit Chuyển đổi dữ liệu Một số ở dạng hexa là một mảng của tập {0, 1, 2, … 9, a, b, …, f}. Một số hex là sự biểu diễn của chuỗi 4 bit. Ví dụ số hex “7” là biểu diễn của 4 bit “0111”, số hex “a” là biểu diễn của chuỗi 4 bit “1010”. Một từ là chuỗi wbit có thể sử dụng ở dạng hex. Để chuyển một từ sang dạng số hex, mỗi chuỗi 4 bit được tương ứng chuyển sang số hex. Ví dụ với chuối 32 bit : “1010 0001 0000 0011 1111 1110 0010 0011” Được chuyển thành “a103fe23” dưới dạng số hex Một số nguyên có thể được biểu diễn bằng một từ hoặc một số từ. Một số nguyên nằm giữa 0 và 232 – 1 có thể biểu diễn như là chuỗi 32 bit. Ví dụ số nguyên 291 = 256 + 32 + 2 + 1 = 28 + 25 + 2 + 1 được biểu diễn dưới dạng 32 bit là : “0000 0000 0000 0000 0000 0001 0010 0011” Và được biểu diễn dưới dạng số hex là : “ 00000123” Các phép toán Phép cộng modulo 2w : phép cộng modulo x+y được định nghĩa như sau: x,y là biểu diễn của 2 số nguyên dương X và Y với 0 < X < 2w và 0 < Y< 2w , chuyển số nguyên Z thành chuỗi z được phép cộng theo modulo 2w : z = x + y SHRn (x) : là phép dịch phải, với x là từ wbit và n là số nguyên dương với 0 < n < w được định nghĩa : SHRn (x) = x >> n ROTRn (x) : ROTRn (x) = (x>>n) v (x Tiếp theo ta tạo trang “index.php” để nhập dữ li

MỤC LỤC DANH MỤC HÌNH ẢNH DANH MỤC VIẾT TẮT TÓM TẮT NỘI DUNG LỜI NÓI ĐẦU CHƯƠNG I : TÌM HIỂU CHUNG VỀ BITCOIN .9 Khái niệm Blockchain .9 Khái niệm bitcoin Nguyên lý hoạt động Bitcoin 11 Nền tảng kỹ thuật 12 CHƯƠNG II : THUẬT TOÁN BĂM SHA .14 Khái niệm 14 Đặc tính hàm băm 14 Ứng dụng hàm băm 14 Cấu trúc hàm băm 15 Tính chất hàm băm 15 Các loại hàm băm 15 6.1 Hàm băm MD4 (Message Disgest 4) MD5 (Message Disgest 5) 15 6.2 Hàm băm SHS (Secure Hash Standard) .16 CHƯƠNG III : THUẬT TOÁN BĂM SHA 256 .17 Khái niệm 17 Mơ tả thuật tốn .17 2.1 Các tham số, ký hiệu thuật ngữ 18 2.2 Phép toán .18 2.3 Chuyển đổi liệu .19 2.5 Các hàm chức sử dụng SHA-256 20 2.6 Các số sử dụng SHA-256 20 2.8 Thuật toán băm SHA-256 .22 CHƯƠNG IV : DEMO THUẬT TOÁN SHA-256 PHP 25 Viết chương trình 25 Thử nghiệm .32 2.1 Giao diện chương trình 33 2.2 Kiểm thử 35 KẾT LUẬN .37 TÀI LIỆU THAM KHẢO 38 DANH MỤC HÌNH ẢNH Hình 1: Sơ đồ hoạt động Blockchain Hình : Ví điện tử Trezor Hình 3-bit Mảng 64 số 32-bit Kj{256} 18 Hình : Các giá trị khởi tạo giá trị băm 19 Hình 5: Giao diện chương trình khởi chạy 28 Hình : Giao diện trước bấm nút tính tốn 29 Hình 7: Kết thu sau thực băm .30 DANH MỤC VIẾT TẮT Ký hiệu BTC Tên đầy đủ Ý nghĩa Ký hiệu đồng tiền ảo Bitocin Giải thuật băm an toàn Processing Chuẩn bảo mật an toàn SHA FIPS Secure Hash Algorithm Federal Information NIST Standard phủ Mỹ National Institute of Standards and Viện Tiêu chuẩn Kĩ PHP Technology Hypertext Preprocessor thuật Quốc gia Ngơn ngữ lập trình kịch Secure Hash Standard Bộ mã hóa thuật tốn National Security Agency băm an tồn Phép tốn thao tác bit Cơ quan An ninh Quốc SHS XOR NSA gia Hoa Kỳ giải thuật đồng hóa MD4, MD5 Message Digest 4, thơng tin TĨM TẮT NỘI DUNG Bài báo cáo tìm hiểu thuật tốn mã hóa đồng tiền ảo Bitcoin ngồi phần mở đầu, kết luận có nội dung chia làm ch ương: Chương : Tìm hiều chung Bitcoin: Tìm hiểu khái quát v ề đ ồng tiền Bitcoin khái niệm, blockchain, nguyên lý hoạt động, tản kỹ thuật đồng tiền ảo Bitcoin Chương : Thuật toán băm SHA : Tìm hiểu chung khái niệm, đặc điểm, tính chất, cấu trúc hàm băm SHA Chương 3: Thuật tốn băm SHA 256 : Tìm hiều khái niệm, nh ững bước tiền xử lý cách thức hoạt động thuật toán SHA 256 Chương : Demo : Tạo chạy thử nghiệm thuật tốn ngơn ngữ PHP kiểm tra, so sánh kết thu với kết mạng Internet LỜI NÓI ĐẦU Ngày nay, xã hội phát triển, giới bùng nổ việc áp dụng công nghệ thông tin vào hoạt động kinh tế Đặc biệt Internet đ ược đ ưa ứng dụng hoạt động thương mại tạo nên lĩnh v ực m ới thương mại điện tử Thương mại điện tử xóa nhòa biên giới quốc gia tạo nên thị trường giao dịch chung gọi thị trường toàn cầu Thương mại điện tử mang lại tiện ích to lớn tăng hiệu suất, nâng cao lực cạnh tranh, giảm chi phí, tăng lợi nhuận Thương mại mạng Internet gần hoàn toàn coi t ổ chức tài bên thứ ba tin cậy để xử lý toán điện t Trong làm việc tốt hầu hết giao d ịch, hệ th ống v ẫn tồn điểm yếu cố hữu mơ hình tín nhiệm (the trust based model) Các giao dịch mà hồn tồn khơng thể đảo ngược khơng th ực s ự xảy được, tổ chức tài khơng thể tránh tranh chấp trung gian Chi phí trung gian làm tăng cao chi phí giao d ịch, h ạn chế mức giao dịch tối thiểu làm giảm khả giao d ịch v ới m ức giao dịch nhỏ thơng thường, phí cao h ơn đ ể th ực toán đảo ngược cho dịch vụ đảo ngược Với khả đảo ngược, nhu cầu tín nhiệm lan rộng Các th ương gia ph ải thận trọng với khách hàng họ, sách nhiễu họ nhiều thơng tin h ơn bình thường họ cần Một tỉ lệ gian lận định công nh ận khơng thể tránh khỏi Các chi phí tốn khơng chắn có th ể tránh cách sử dụng tiền tệ vật lý, khơng có c ch ế tồn để thực tốn qua kênh thơng tin liên lạc mà thiếu bên tin cậy Vậy thứ ta cần hệ thống toán điện tử dựa vào chứng mật mã thay tín nhiệm, cho phép hai bên sẵn sàng có th ể giao dịch trực tiếp với mà không cần đến bên thứ ba tin c ậy Các giao dịch tính tốn để khơng đảo ngược bảo vệ người bán khỏi gian lận, chế ký quỹ thực dễ dàng nhằm bảo vệ người mua Đồng tiền ảo Bitcoin nh ững giải pháp bảo đảm điều với tính bảo mật cao, khó bị làm gi ả hay đánh cắp Bài báo cáo tìm hiểu thuật tốn SHA 256 dùng đ ể mã hóa đồng tiền ảo Bitcoin, tạo nên tính bảo mật an tồn cao cho Chúng em xin chân thành cám ơn cô Nguyễn Thị Thu Thủy tạo điều kiện tận tình giúp đỡ trình chúng em làm báo cáo Do kiến thức hạn hẹp nên báo cáo nhiều thiếu sót, chúng em cố gắng khắc phục thời gian tới Chân thành cám ơn! CHƯƠNG I : TÌM HIỂU CHUNG VỀ BITCOIN Khái niệm Blockchain Blockchain (Chuỗi khối) sở liệu phân cấp lưu trữ thông tin khối thông tin liên kết với mã hóa m rộng theo thời gian Mỗi khối thông tin ch ứa thông tin v ề th ời gian khởi tạo liên kết tới khối trước đó, kèm mã th ời gian d ữ liệu giao dịch Blockchain thiết kế để chống lại việc thay đổi liệu: Một liệu mạng lưới chấp nh ận khơng có cách thay đổi Blockchain đảm bảo nhờ cách thiết kế sử dụng hệ thống tính tốn phân cấp với khả chịu lỗi byzantine cao Vì v ậy s ự đ ồng thuận phân cấp đạt nhờ Blockchain Vì Blockchain phù hợp để ghi lại kiện, hồ sơ y tế, xử lý giao dịch, công ch ứng, danh tính chứng minh nguồn gốc Việc có tiềm giúp xóa bỏ hậu lớn liệu bị thay đổi bối cảnh thương mại toàn cầu Cách thức hoạt động Blockchain miểu tả hình sau: Hình 1: Sơ đồ hoạt động Blockchain Khái niệm bitcoin Tiền thuật toán loại tiền tệ kỹ thuật số, sinh thuật tốn mã hóa phức tạp dạng phần mềm mã nguồn m Bitcoin (ký hiệu: BTC, XBT, ) loại tiền thuật toán, phát minh người bí ẩn sử dụng bút danh Satoshi Nakamotodưới dạng phần mềm mã nguồn mở từ năm 2009 Bitcoin trao đổi trực tiếp thiết bị kết nối Internet ngang hàng mà không c ần thơng qua tổ chức tài trung gian Do khơng cần ph ải trả lệ phí giao dịch khơng cần phải cung cấp tên th ật Đối với Bitcoin, hình dung Blockchain m ột cu ốn s ổ ghi lại tất giao dịch Dữ liệu sổ liên tục đ ược m ạng lưới máy tính ngang hàng giới cập nhật bảo trì Giao d ịch A gửi X bitcoin cho B ghi lại toàn hệ thống, tất máy tính mạng xác minh ghi lại giao dịch vào cu ốn s ổ r ồi cấp phát liệu tới máy tính khác Rất nhiều doanh nghiệp bắt đầu chấp nhận cho việc s d ụng bitcoin Thậm chí,vào ngày tháng 05 năm 2010, m ột l ập trình viên tên Laszlo Hanyecz trả 10.000BTC để mua bánh pizza Cần phải có phần mềm ví để lưu trữ quản lý nguồn chi tiêu bitcoin Mỗi ví Bitcoin bao gồm địa Bitcoin cơng khai (hash public key) khóa riêng tư (private key) Một địa ch ỉ có 160 bit d ữ li ệu, tạo tổng cộng 2160 địa Bitcoin - tương đ ương 1048 đ ịa (để so sánh: Có tổng cộng khoảng 1047 phân tử n ước trái đất) Ngoài địa bao gồm byte checksum nên xác suất mạng l ưới ch ấp nhận địa Bitcoin gõ sai thấp Bất kỳ gửi Bitcoin đến ví địa ch ỉ cơng khai, khố riêng tư phải nhập ch ủ ví muốn g ửi Bitcoin Vì vậy, việc sở hữu Bitcoin định nghĩa nắm giữ khoá riêng t địa Bitcoin Một khoá riêng tư bị mất, mạng l ưới Bitcoin không 10 { h=g g=f f=e e = d + T1 d=c c=b b=a a = T + T2 } Tính tốn lần thứ i giá trị băm trung gian H(i): =a+ =b+ =c+ =d+ =e+ =f+ =g+ =h+ } Sau lặp lặp lại bước đến N lần (tức sau xử lý M (N)), thơng điệp tóm lược 256-bit thông điệp M là: 24 CHƯƠNG IV : DEMO THUẬT TOÁN SHA-256 PHP Viết chương trình Để làm việc này, ta cần tạo trang “sha256.php” có ch ứa hàm để băm liệu nhập vào đưa kết Nội dung file nh sau: Tiếp theo ta tạo trang “index.php” để nhập liệu, g ửi d ữ li ệu đến file “sha256.php” để xử lý đưa giá trị băm Nội dung file sau: SHA-256 Hash Generator SHA-256 Demo Nhập văn vào đây: SHA-256 hash:

Ngày đăng: 14/08/2018, 13:53

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w