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

NGHIÊN cứu TÍCH hợp THIẾT bị KHÓA cửa THÔNG MINH

68 446 3

Đ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 68
Dung lượng 2,93 MB

Nội dung

Những điều đã đạt được Quá trình nghiên cứu và xây dựng đề tài đã giúp em có một cái nhìn tổng quan về hệ thống khoá cửa thông minh tự động và những ứng dụng cũng như tính năng cơ bản, nâng cao của một hệ thống khoá cửa thông minh và thân thiện với người dùng. Bên cạnh đó, trong quá trình nghiên cứu em cũng đã thu hoạch được nhiều kiến thức bổ ích về các thuật toán mã hoá cũng như các phương thức bảo mật cần thiết cho một hệ thống thông minh tự động, từ đó xây dựng và thiết kế một hệ thống khoá cửa thông minh với các tính năng phù hợp để có thể trở thành một sự lựa chọn cho người dùng, đặc biệt là người dùng Việt Nam. Những hạn chế Hệ thống còn một số khuyết điểm cần khắc phục như: Chưa có ứng dụng điện thoại để tối ưu hoá trải nghiệm của người dùng. Giao diện người dùng còn sơ sài, chưa thân thiện. Không có quá nhiều các tính năng tuỳ biến nâng cao dành cho người sử dụng tuỳ biến hệ thống cho phù hợp với các diều kiện hoàn cảnh khác nhau. Hướng phát triển đề tài Với định hướng cho việc phát triển đề tài, em mong muốn cải thiện về giao diện cũng như trải nghiệm sử dụng sản phẩm, giúp cho hệ thống trở nên thân thiện với người dùng hơn và có thể dễ dàng tiếp cận đến nhiều đối tượng và độ tuổi khác nhau. Cụ thể như sau: Phát triển ứng dụng điện thoại có các chức năng như hiển thị mật khẩu, thông báo khi cơ chế khoá cửa hoạt động, thông báo nhắc nhở khi cửa đã khoá hoặc chưa khoá. Thêm vào ứng dụng các tính năng tuỳ biến cho khoá cửa như nhận thông báo mật khẩu khi về tới cửa nhà, đặt chế độ tự động khoá cửa khi ra khỏi nhà, update các thông tin về hoạt động của hệ thống cũng như những cập nhật có sẵn để nâng cấp hệ thống. Tích hợp ứng dụng điện thoại vào hệ thống nhà thông minh, cập nhật các thông tin về người trong nhà, phân quyền cho người khác mở cửa từ xa cũng như ghi lại lịch sử những lần mở cửa của hệ thống giúp người dùng quản lý một cách dễ dàng hơn và góp phần tránh xảy ra những rủi ro ngoài ý muốn.

Trang 1

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

Hoàng Thái Dương

NGHIÊN CỨU TÍCH HỢP THIẾT BỊ KHÓA CỬA THÔNG MINH

KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY

Ngành: Công nghệ kỹ thuật Cơ điện tử

HÀ NỘI - 2019

Trang 2

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

Hoàng Thái Dương

NGHIÊN CỨU TÍCH HỢP THIẾT BỊ KHÓA CỬA THÔNG MINH

KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY

Ngành: Công nghệ kỹ thuật Cơ điện tử

Cán bộ hướng dẫn: TS Nguyễn Ngọc Linh

HÀ NỘI - 2019

Trang 3

LỜI CẢM ƠN

Lời đầu tiên, em xin gửi lời cảm ơn và lòng biết ơn sâu sắc nhất tới TS Nguyễn NgọcLinh, người đã dành tâm huyết hướng dẫn em hoàn thành đồ án tốt nghiệp này Sự hướngdẫn tận tình của thầy đã giúp đỡ em rất nhiều trong việc hoàn thành tốt được khóa luận nhưngày hôm nay Nhờ đó, em đã nhận được rất nhiều bài học quý báu

Em xin cảm ơn đến Quý thầy cô trường Đại học Công nghệ - Đại học Quốc gia HàNội đã truyền đạt kiến thức trong thời gian đi học cũng như tạo điều kiện thuận lợi trongquá trình học tập, giúp chúng em có thể hoàn thành đồ án

Em cũng xin gửi lời cảm ơn tới các anh chị, các bạn sinh viên khoa Cơ học kỹ thuật và

Tự động hóa đã chia sẻ và giúp đỡ em rất nhiều trong quá trình học tập Đặc biệt, cảm ơncác bạn trong lớp K60M đã ủng hộ, khuyến khích em trong suốt quá trình 4 năm học tập tạitrường

Cuối cùng, em muốn được gửi lời cảm ơn tới gia đình thân yêu, bạn bè, những người

đã luôn tin tưởng và ủng hộ em

Em xin chân thành cảm ơn!

Hà Nội, ngày tháng năm 2019

Sinh viên thực hiện

Hoàng Thái Dương

Trang 4

LỜI CAM ĐOAN

Tôi xin cam đoan nội dung trong khóa luận này là kết quả công trình nghiên cứu củariêng tôi dưới sự hướng dẫn của TS Nguyễn Ngọc Linh Những nội dung tham khảo đềuđược trích dẫn từ các tài liệu được liệt kê trong danh mục tài liệu tham khảo của công trình

Hà Nội, ngày tháng năm 2019

Sinh viên thực hiện

Hoàng Thái Dương

Trang 5

HỆ THỐNG KHÓA CỬA TỰ ĐỘNG THÔNG MINH

SỬ DỤNG MÃ HÓA THỜI GIAN THỰC

Hoàng Thái Dương

Khóa QH-2015-I/CQ, ngành Công nghệ Kỹ thuật Cơ điện tử

TÓM TẮT

Tóm tắt: Hiện nay, với sự phát triển nhanh chóng của xã hội, cùng với đó là mức sống và

nhu cầu xã hội ngày càng tăng, người dân có xu hướng tìm kiếm những giải pháp, thiết bịthông minh để hỗ trợ con người trong cuộc sống hằng ngày Cùng với nhu cầu về sự pháttriển, nhu cầu về tính an toàn và bảo mật cũng trở thành một trong những nhu cầu không thểthiếu trong thời đại công nghệ hiện nay Từ đó, em quyết định lựa chọn đề tài khoá luận làphương án giải quyết 2 vấn đề trên thông qua việc xử lý và tối ưu hoá các vấn đề của hệthống khoá cửa hiện tại nhằm đáp ứng nhu cầu của xã hội

Từ khóa: Khóa cửa thông minh, TOTP, …

Trang 6

MỤC LỤC

Trang 7

DANH MỤC HÌNH

Trang 8

DANH MỤC BẢNG

Trang 9

DANH MỤC TỪ VIẾT TẮT Tên viết tắt Thuật ngữ

TOTP Time-based One Time Password

HOTP HMAC-based One Time Password

UDP User Diagram Protocol

USART Universal Synchronous/Asynchronous Receiver TransmitterI2C Inter-Integrated Circuit

MCU Micro Controller Units

NTP Network Time Protocol

CLI Command Line Interface

Trang 10

MỞ ĐẦU Tính cấp thiết của đề tài

Với sự phát triển mạnh mẽ của khoa học và kỹ thuật như hiện nay, việc đảm bảo antoàn cho ngôi nhà hay căn phòng, tủ để đồ không thể hoàn toàn giao phó cho những chiếc ổkhóa truyền thống đơn giản Do đó, những thiết bị khóa cửa thông minh được ra đời vớimục đích nâng cấp cũng như cải thiện khả năng của những chiếc khóa cửa truyền thốngthông thường

Khóa cửa thông minh được hiểu đơn giản là những loại khóa điện tử với hàm lượng

công nghệ cao tích hợp các tính năng vượt trội, mang đến cho người sử dụng những lợi íchtuyệt vời hơn bất kỳ loại khóa truyền thống nào Với khóa thông minh, việc khóa và mở cửatrở nên vô cùng nhanh chóng và thuận tiện chỉ bằng việc xác nhận một chuỗi số trên mànhình, bằng việc quẹt thẻ hoặc sử dụng dấu vân tay

Ý nghĩa khoa học và thực tiễn của khóa luận

Việc nghiên cứu và phát triển các hệ thống khóa cửa nói riêng và các hệ thống khóathông minh nói chung có một vai trò quan trọng trong việc phát triển một hệ sinh thái thôngminh như phòng thông minh, nhà thông minh hay thậm chí là thành phố thông minh Từ đócon người có thể sử dụng các công cụ công nghệ hiện đại như một trợ lý để kiểm soát cácvấn đề trong cuộc sống của bản thân mình chỉ với một chiếc điện thoại đơn giản hay mộtchiếc máy tính có kết nối mạng internet Qua đó, chất lượng sống của con người được cảithiện, giúp nâng cao chất lượng sống của xã hội

Bên cạnh đó, việc nghiên cứu và phát triển các hệ thống khóa cửa thông minh có tínhứng dụng cao mang đến cho người sử dụng những trải nghiệm về một hệ thống khóa có tínhtin cậy cao, khả năng kiểm soát cũng như việc chia sẻ chìa khóa một cách dễ dàng Người

sử dụng có thể hoàn toàn yên tâm mỗi khi đi ra ngoài và luôn nhận được thông báo mỗi khi

có người mở cửa, đóng cửa hay đơn giản là mở cửa cho khách vào nhà chờ trong khi đangtrên đường về nhà…

Đối tượng và phương pháp nghiên cứu

Đối tượng nghiên cứu như đã nêu ở trên, khóa luận này chú trọng vào việc nghiêncứu và thiết kế hệ thống khóa cửa thông minh tự động có thể thay thế hoặc cải thiện hệthống khóa cửa truyền thống có tính ứng dụng cao

Phương pháp nghiên cứu dựa trên các sản phẩm có sẵn trên thị trường, tham khảo vànghiên cứu các đặc tính của các sản phẩm đó, từ đó đưa ra một hệ thống có tính chính xác

và độ tin cậy cao, trở thành một sự lựa chọn phù hợp cho người sử dụng trong những hoàncảnh và điều kiện thực tế khác nhau

Trang 11

Nội dung nghiên cứu

Nghiên cứu cấu tạo và các yêu cầu cần có của một hệ thống khóa cửa thông minh tựđộng và các tính năng cũng như cách thức hoạt động của hệ thống khóa cửa thông minh, cụthể ở đây là hệ thống khóa cửa thông minh sử dụng phím bấm

Nghiên cứu để cải thiện tính năng của hệ thống khóa cửa thông minh sử dụng phímbấm, bắt đầu từ ưu, nhược điểm của hệ thống để đưa ra giải pháp phù hợp Cụ thể là sửdụng giải pháp mã hóa mật khẩu dựa trên thời gian thực để tối ưu tính năng bảo mật của hệthống khóa cửa

Nghiên cứu về thuật toán mã hóa thời gian thực, sử dụng như một giải pháp để nângcấp cho hệ thống khóa cửa thông minh hiện tại đang có trên thị trường

Từ đó, xây dựng các thiết kế về mạch điện tử, các hệ thống cơ khí và đóng gói đưa ramột hệ thống khóa cửa hoàn thiện có khả năng tích hợp và ứng dụng cao

Trang 12

1 TỔNG QUAN VỀ ĐỀ TÀI

1.1. Nhu cầu về khóa cửa thông minh

Hiện nay, với sự phát triển mạnh mẽ của ứng dụng điện toán đám mây và các giaotiếp không dây, việc “thông minh hóa” các hoạt động trong cuộc sống hằng ngày rất đượcquan tâm và phát triển Bắt đầu từ những thói quen sử dụng điện thoại thông minh, trợ lý ảothông minh giúp sắp xếp thời gian biểu hay thông báo lịch hẹn, hay các ứng dụng tài chínhthông minh giúp cân đối tài chính cá nhân, gia đình… cho đến cả những cảnh báo tắcđường, chỉ đường khi tham gia giao thông, tất cả mọi thứ giờ đây chỉ nằm gọn trong túiquần của bạn Và tất nhiên, nhà thông minh cũng bắt đầu trở thành một xu thế, khi chiếcđiện thoại thông minh giờ đây có thể giúp bạn kiểm soát ngôi nhà của mình thông qua cáccảnh báo SMS hay Email về mọi thứ bạn muốn như nhiệt độ phòng, bật tắt đèn từ xa, kiểmsoát điện năng tiêu thụ… và quan trọng nhất là các cảnh báo về an ninh trong ngôi nhà củabạn

Để đáp ứng nhu cầu đó, khóa cửa thông minh được sinh ra để giúp người dùng kiểmsoát việc ra vào ngôi nhà của họ, mở cửa/ khóa cửa từ xa, và đương nhiên là sẽ đáng tin cậyhơn rất nhiều so với ổ khóa truyền thống Các loại khóa cửa thông minh phổ biến nhất hiệnnay sử dụng 3 cơ chế khóa chính, đó là: mở khóa bằng thẻ từ, mở khóa bằng vân tay và mởkhóa bằng phím số

Không chỉ vậy, khóa cửa thông minh có chức năng chính là tăng cường độ tin cậy vềbảo mật, do đó nó có thể được ứng dụng vào nhiều hệ thống khóa khác như khóa cửa phòng,khóa cửa tủ, khóa cửa hầm, két sắt…

Với hiệu năng làm việc, độ tin cậy và tính ứng dụng cao, khóa cửa thông minh dầntrở thành một xu thế tất yếu trong cuộc sống hằng ngày của con người

1.2. Các hệ thống, thiết bị khóa phổ biến

1.2.1 Hệ thống khóa cửa truyền thống

Khoá cửa truyền thống là hệ thống khoá cửa sử dụng chìa để mở, thường phổ biến ởcác khu vực dân cư, cụm dân cư hoặc nhà dân

Khóa cửa truyền thống thường sử dụng cơ chế mở khóa đơn giản (chìa/ổ khóa) cùngvới cơ cấu vật lý 100%

Trang 13

Hình 1.2.1.1.1 Cấu tạo khóa cửa tay gạt

- Ưu điểm: đơn giản, hoạt động ổn định, bền và chắc chắn do hệ thống hoạt động100% dựa trên cơ học

- Nhược điểm: tính bảo mật kém, thao tác mở khóa nhiều khi gây cảm giác mấtthời gian Sử dụng sau một thời gian dài có thể bị ảnh hưởng bởi môi trường vàthời tiết gây ra những hiện tượng như hóc khóa, kẹt chìa…

Trang 14

1.2.2 Hệ thống khóa cửa thông minh

Các loại khoá thông minh được sử dụng phổ biến hiện nay:

Thẻ từ (RFID hoặc NFC)

- Ưu điểm: thao tác mở khóa nhanh, hiệu quả và tính ổn định cao

- Nhược điểm: khả năng chia sẻ phức tạp hơn rất nhiều so với khóa cửa truyềnthống

Mã pin

- Ưu điểm: thao tác mở khóa nhanh, chỉ cần bấm mà không cần rút bất kì thứ gì trongtúi ra

- Nhược điểm: khó khăn trong việc tối ưu hóa tính bảo mật (độ dài mật khẩu gia tăngtính bảo mật nhưng ảnh hưởng đến trải nghiệm người dùng)

Trang 15

Vân tay

- Ưu điểm: hoạt động ổn định và gần như không có vấn đề về cảm biến phần cứng dovòng đời sản phẩm khá cao

- Nhược điểm: chi phí cao, có thể bị ảnh hưởng bởi các yếu tố như hơi nước, bụi bẩnhay thậm chí là mồ hôi tay

1.3. Hệ thống khóa cửa thông minh sử dụng mật khẩu TOTP (Time-base One Time Password)

Qua một số ví dụ ở trên, có thể thấy được những ưu điểm và nhược điểm của cácphương pháp bảo mật dành cho khóa cửa thông minh đang được sử dụng phổ biến hiện nay

Từ đó đưa ra một phương pháp để tối ưu hệ thống khóa cửa thông minh sử dụng bảo mậtbằng bàn phím số: sử dụng mật khẩu mã hóa thời gian thực

Với việc sử dụng thuật toán mã hóa mật khẩu theo thời gian thực, vấn đề về tính bảomật của mật khẩu mở khóa sẽ được giải quyết mà không cần phải tăng độ dài kí tự của mậtkhẩu, cũng như không yêu cầu người dùng phải nhớ các chuỗi kí tự ngẫu nhiên không baogồm các yếu tố chứa thông tin cá nhân của họ Mật khẩu được sinh ra sẽ khác nhau với mỗilần mở khóa khác nhau tại các thời điểm khác nhau, người dùng sẽ nhận được mật khẩu quaứng dụng điện thoại kể cả khi điện thoại của họ không được kết nối với mạng Internet

Trang 16

CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 2.1. Thuật toán mã hóa TOTP (Time-based One Time Password) [1][2]

2.1.1 Sơ lược về thuật toán HOTP

Ở phần này sẽ giới thiệu qua về thuật toán HOTP, là thuật toán gốc của thuật toán mãhóa chính được sử dụng trong đề tài

2.1.1.1. Kí hiệu và mô tả thuật toán

Một chuỗi luôn là một chuỗi nhị phân, nghĩa là một chuỗi gồm các số 0 và 1

- Nếu s là một chuỗi thì | s | biểu thị chiều dài của chuỗi đó

- Nếu n là một số thì | n | biểu thị giá trị tuyệt đối của số đó

- Nếu s là một chuỗi thì s[i] biểu thị bit thứ i của nó

- Chuỗi được bắt đầu từ bit ở vị trí 0 cho nên s = s[0] s[1] … s[n-1] trong đó n = | s

| là chiều dài của s

Đặt StToNum (Chuỗi thành số) là hàm có chức năng trả về số có biểu diễn nhị phân

là chuỗi s được nhập vào (VD: StToNum(110) = 6)

Một số ký tự được sử dụng trong thuật toán:

C Biến giá trị đếm 8-byte, biến đếm này phải được đồng bộ giữa thiết bị

tạo mã và máy chủ xác thực mã

K Bí mật được chia sẻ (khóa) giữa thiết bị tạo mã và máy chủ xác thực

mã Mỗi thiết bị tạo mã sẽ có một khóa riêng của mình

T Tham số điều chỉnh: máy chủ sẽ từ chối kết nối từ một người dùng

sau T lần cố gắng xác thực không thành công

s Tham số đồng bộ hóa: máy chủ sẽ cố gắng xác minh một mã xác thực

nhận được sau s lần gửi mã xác thực liên tiếp

Digit Số kí tự trong một mã HOTP sau khi được mã hóa (tham số hệ thống)

Mô tả thuật toán:

Thuật toán HOTP dựa trên giá trị truy cập tăng dần (C) và khóa đối xứng tĩnh(K) để đưa ra một mã xác thực thông qua thuật toán mã hóa HMAC-SHA-1

Vì đầu ra của thuật toán SHA-1 là 160 bit, do đó chúng ta phải rút gọn giá trịnày thành một giá trị là một chuỗi có thể dễ dàng được nhập bởi người dùng (ví

dụ như chuỗi số hoặc chữ cái hoặc cả 2):

HOTP(K, C) = Truncate(HMAC-SHA-1(K, C))Trong đó: Truncate là hàm chuyển đổi rút gọn một giá trị mã hóa HMAC-SHA-1 thành một chuỗi mã hóa HOTP (chi tiết sẽ được nói ở phần bên dưới) Giátrị đầu ra của phép tính này được lưu dưới dạng một dữ liệu big edian

Trang 17

2.1.1.2. Cách tạo một giá trị HOTP

Cách tạo một giá trị HOTP có thể được mô tả qua 3 bước riêng biệt:

Bước 1: Tạo giá trị bằng thuật toán mã hóa HMAC-SHA-1.

HS = HMAC-SHA-1 (K, C) // HS là một chuỗi giá trị 20 bytes

Bước 2: Tạo 1 chuỗi 4 bytes (Cắt ngắn động).

Đặt Sbits = DT (HS) // DT, được định nghĩa bên dưới,

// trả về chuỗi 31 bit

Bước 3: Tính toán giá trị HOTP.

Đặt Snum = StToNum (Sbits) // Chuyển đổi S thành một số trong

// khoảng 0 231 -1Trả về D = Snum mod 10 ^ Digit // D là một số trong khoảng

// 0 10Digit -1

Hàm Truncate sẽ bao gồm bước 2 và bước 3 ở trên, tức là cắt ngắn động sau đó lấykết quả đó và chia lấy dư cho 10Digit Mục đích của phương pháp cắt ngắn động là trích xuất

4 byte mã nhị phân động từ 20 byte kết quả của phép tính mã hóa SHA-1

DT(String) // String = String[0] String[19]

Đặt OffsetBits là 4 bits thứ tự thấp của String[19]

Offset = StToNum (OffsetBits) // 0 <= Offset <= 15Đặt P = String[Offset] String[Offset + 3]

// Trả lại 31 bit cuối cùng của P

Lý do sử dụng phương pháp bit masking cho những bit quan trọng của P là để tránh

sự nhầm lẫn khi sử dụng phép toán chia lấy dư cho các biến kiểu signed và unsigned Các

bộ xử lý khác nhau sẽ cho các kết quả khác nhau khi thực hiện phép toán này, do đó việc sửdụng phương pháp bit masking sẽ loại bỏ được sự không rõ ràng kể trên

Để đảm bảo tính bảo mật của thuật toán, kết quả cuối cùng cần phải xuất ra kết quả

có độ dài ít nhất là 6 kí tự hoặc có thể là 7 hoặc 8 kí tự

Trang 18

2.1.2 Giới thiệu chung

Thuật toán mã hóa TOTP là thuật toán mở rộng của thuật toán mật khẩu một lần(One Time Password), cụ thể là thuật toán HOTP được trình bày ở trên, dùng để hỗ trợ chobài toán mã hóa với các tham số đầu vào phụ thuộc theo thời gian

Theo định nghĩa ở phần trên, thuật toán HOTP là thuật toán dựa trên thuật toán mãhóa HMAC-SHA-1 với một biến số đếm tăng dần sau mỗi lần tính toán, và được rút gọnthành một chuỗi các ký tự (bao gồm chữ hoặc số hoặc cả chữ và số):

HOTP(K, C) = Truncate(HMAC-SHA-1(K, C))

Trong đó, K là mật mã được chia sẻ và C là biến số đếm tăng dần.

Như đã nói ở trên, TOTP là thuật toán mã hóa mở rộng của HOTP với tham số đầuvào phụ thuộc theo thời gian, do đó biến số C ở trên sẽ được thay thế bằng biến số T phụthuộc theo thời gian Bên cạnh đó, thuật toán TOTP còn có thể sử dụng các hàm băm mật

mã SHA-256 hoặc SHA-512 để thay thế cho SHA-1 được sử dụng trong thuật toán HOTPtrình bày ở trên

2.1.3 Yêu cầu thuật toán

- R1: Các Prover (mã thông báo, mã thông báo mềm…) và Verifier (máy chủ xác thực

hoặc tương tự) phải biết hoặc có thể lấy được thời gian Unix hiện tại (số giây trôi qua

kể từ ngày 1 tháng 1 năm 1970) để tạo OTP Độ chính xác của thời gian có được sẽảnh hưởng đến tần suất đồng bộ của đồng hồ

- R2: Các Prover và Verifier phải chia sẻ cùng 1 bí mật hoặc kiến thức về một sự thay

đổi bí mật để tạo ra 1 bí mật được chia sẻ

- R3: Phải sử dụng thuật toán HOTP làm khối chính để xây dựng thuật toán.

- R4: Các Prover và Verifier phải sử dụng cùng một giá trị bước thời gian X.

- R5: Mỗi Prover phải có một khóa bí mật đặc biệt của riêng mình.

- R6: Các khóa nên được tạo ngẫu nhiên hoặc được mã hóa bằng thuật toán đạo hàm.

- R7: Khóa có thể được lưu trữ trong các thiết bị chống giả mạo và nên được bảo vệ để

chống lại việc truy cập và sử dụng trái phép

2.1.4 Thuật toán TOTP

Biến thể của thuật toán HOTP này xác định việc tính toán giá trị của một OTP dựatrên tham số thời gian thay vì sử dụng biến đếm tăng dần

Trang 19

Cụ thể hơn, T = (Thời gian Unix hiện tại – T0) / X, là một hàm cơ bản mặc định được

sử dụng trong việc tính toán

Ví dụ: với T0 = 0 và Bước thời gian X = 30, T = 1 nếu hiện tại Thời gian Unix là 59giây và T = 2 nếu thời gian Unix hiện tại là 60 giây

Việc thực hiện thuật toán này yêu cầu bộ nhớ dành cho giá trị thời gian phải lớn hơn

số nguyên 32-bit khi vượt quá năm 2038 Giá trị của các tham số hệ thống X và T0 phảiđược thiết lập trước trong quá trình cung cấp và giao tiếp giữa Prover và Verifier

2.1.5 Chú ý về bảo mật

Một OTP được tạo ra trong cùng 1 bước thời gian sẽ luôn giống nhau Khi một hệthống xác thực nhận được 1 OTP, hệ thống sẽ không biết thời điểm chính xác mà OTP đóđược tạo ra trên thiết bị khách Do đó, hệ thống thường có thể sử dụng dấu thời gian mỗi khinhận được một OTP cho việc so sách các OTP

Do độ trễ mạng, khoảng cách giữa thời gian mà OTP đã được tạo cho đến lúc hệthống xác thực nhận được OTP đó có thể lớn, dẫn đến thời gian khi OTP được tạo ra và thờigian hệ thống nhận được OTP đó có thể không cùng một bước thời gian Vì vậy, một hệthống xác thực nên đặt ra những quy tắc dành cho những trường hợp truyền OTP với độ trễchấp nhận được (thường sẽ là nhiều nhất 1 bước thời gian)

Độ dài của bước thời gian cũng sẽ tác động đến cả tính bảo mật và trải nghiệm sửdụng Bước thời gian dài hơn nghĩa là sẽ có khoảng thời gian dài hơn cho mỗi lần tạo ra mãmới và giao tiếp với hệ thống xác thực, từ đó sẽ tạo ra nhiều cơ hội hơn để cho các cuộc tấncông từ bên thứ 3 sử dụng OTP được tạo ra trong khoảng thời gian này để truy cập vào hệthống xác thực Còn nếu trường hợp bước thời gian quá ngắn sẽ gây khó khăn cho người sửdụng khi mà OTP được tạo ra chưa được gửi đến hệ thống xác thực đã bị thay đổi do thờigian nhảy sang một bước mới Do đó, độ dài của bước thời gian được khuyến nghị là 30s,đây là khoảng thời gian có thể cân bằng giữa bảo mật và trải nghiệm người dùng

2.2. Giao tiếp ngoại vi

2.2.1 Giao tiếp với sever sử dụng giao thức UDP (User Datagram Protocol) [3]

Giới thiệu chung về giao thức

Giao thức gói dữ liệu người dùng (UDP) là một trong những giao thức cốt lõi củaTCP/IP (Giao thức điều khiển truyền và Giao thức liên mạng) Giao thức này cho phép các

tổ hợp máy tính được kết nối với nhau trong cùng một môi trường mạng có thể giao tiếp vớinhau bằng cách chuyển tiếp dữ liệu dưới dạng gói (diagram packet)

Giao thức này cung cấp một quy trình cho các chương trình ứng dụng gửi tin nhắnđến các chương trình khác với một cơ chế tối thiểu hóa dữ liệu và thời gian truyền cho mỗi

Trang 20

lần giao tiếp Trong giao thức này hướng truyền, tính phân phối và bảo vệ việc lặp dữ liệucủa các gói dữ liệu khi gửi không được đảm bảo cho nên sẽ không được sử dụng cho cácgiao tiếp có yêu cầu cao về sự tin cậy của luồng dữ liệu.

Tuy nhiên, với yêu cầu của bài toán đặt ra là truy vấn dữ liệu thời gian trên sever,giao thức UDP là một giao thức phù hợp bởi đặc tính cho phép truyền nhận các gói dữ liệunhỏ trong thời gian ngắn và không quan tâm đến thứ tự truyền nhận của dữ liệu Từ đó, yêucầu về tính chính xác của thông số thời gian sẽ được thỏa mãn bằng một số lượng lớn cáctruy vấn nhỏ trong thời gian ngắn

Cấu trúc gói dữ liệu và cách thức truyền nhận

Trong bộ giao thức TCP/IP, UDP cung cấp một giao diện rất đơn giản giữa tầngmạng bên dưới (thí dụ, IPv4) và tầng phiên làm việc hoặc tầng ứng dụng phía trên UDPkhông đảm bảo cho các tầng phía trên thông điệp đã được gửi đi và người gửi cũng không

có trạng thái thông điệp UDP một khi đã được gửi (Vì lý do này đôi khi UDP còn được gọi

là Unreliable Datagram Protocol) UDP chỉ thêm các thông tin multiplexing và giao dịch.Các loại thông tin tin cậy cho việc truyền dữ liệu nếu cần phải được xây dựng ở các tầng caohơn

Dưới đây bảng thể hiện cấu trúc gói dữ liệu của một tập tin UDP:

Cấu trúc gói dữ liệu UDP

Phần header của UDP chỉ chứa 4 trường dữ liệu, trong đó có 2 trường là tùy chọn (ônền đỏ trong bảng)

- Source port: Trường này xác định cổng của người gửi thông tin và có ý nghĩa nếu

muốn nhận thông tin phản hồi từ người nhận Nếu không dùng đến thì đặt nó bằng 0

- Destination port: Trường xác định cổng nhận thông tin, và trường này là cần thiết.

- Length: Trường có độ dài 16 bit xác định chiều dài của toàn bộ datagram: phần

header và dữ liệu Chiều dài tối thiểu là 8 byte khi gói tin không có dữ liệu, chỉ cóheader

- Checksum: Trường checksum 16 bit dùng cho việc kiểm tra lỗi của phần header và

dữ liệu, thường được thêm bit 0 vào cuối (nếu cần) để tạo ra bội của 2 octets Phươngpháp tính toán checksum cũng giống như phương pháp dùng trong giao thức TCP

Trang 21

2.2.2 Giao tiếp truyền thông nối tiếp USART [4]

Giao tiếp truyền thông nối tiếp USART (Universal Synchronous & AsynchronousReceiver - Transmitter) có chức năng chính là truyền dữ liệu nối tiếp giữa các vi điều khiển

Sơ đồ khối UART

Sơ đồ khối UART bao gồm hai thành phần là máy phát và máy thu được hiển thị bêndưới Phần máy phát bao gồm ba khối là thanh ghi giữ truyền, thanh ghi dịch chuyển vàlogic điều khiển Tương tự, phần máy thu bao gồm một thanh ghi giữ, thanh ghi thay đổi vàlogic điều khiển Hai phần này thường được cung cấp bởi một bộ tạo tốc độ baud Trình tạonày được sử dụng để tạo tốc độ khi phần máy phát và phần máy thu phải truyền hoặc nhận

Trang 22

Các khái niệm quan trọng trong chuẩn truyền thông USART:

Baudrate: Số bit truyền được trong 1s, ở truyền nhận không đồng bộ thì ở các bên

truyền và nhận phải thống nhất Baudrate Các thông số tốc độ Baudrate thường hay sử dụng

dể giao tiếp với máy tính là 600, 1200, 2400, 4800, 9600, 14400, 19200, 38400, 56000,

57600, 115200

Frame: Ngoài việc giống nhau của tốc độ baud 2 thiết bị truyền nhận thì khung

truyền của bên cũng được cấu hình giống nhau Khung truyền quy định số bit trong mỗi lầntruyền, bit bắt đầu “Start bit”, các bit kết thúc (Stop bit), bit kiểm tra tính chẵn lẻ (Parity),ngoài ra số bit quy định trong một gói dữ liệu cũng được quy định bởi khung truyền Có thểthấy, khung truyền đóng một vai trò rất quan trọng trong việc truyền thành công dữ liệu

- Idle frame: Đường truyền UART ở mức “1”, để xác nhận hiện tại đường truyền dữliệu trống, không có frame nào đang được truyền đi

- Break frame: Đường truyền UART ở mức “0”, để xác nhận hiện tại trên đườngtruyền đang truyền dữ liệu, có frame đang được truyền đi

Start bit: Bit đầu tiên được truyền trong một frame, bit này có chức năng báo cho

bên nhận rằng sắp có một gói dữ liệu truyền đến Đường truyền UART luôn ở trạng thái caomức “1” cho đến khi chip muốn truyền dữ liệu đi thì nó gởi bit start bằng cách kéo xuốngmức “0” Như vậy start bit giá trị điện áp 0V và phải bắt buộc có bit start trong khungtruyền

Data: Data hay dữ liệu là thông tin mà chúng ta nhận được trong quá trình truyền và

nhận Data trong STM32 có quy định khung truyền là 8bit hoặc 9bit Trong quá trình truyềnUART, bit có trọng số thấp nhất (LSB – least significant bit – bên phải) sẽ được truyềntrước và cuối cùng là bit có ảnh hưởng cao nhất (MSB – most significant bit – bên trái)

Trang 23

Parity bit: Parity dùng để kiểm tra dữ liệu truyền có đúng hay không Có 2 loại

Parity đó là Parity chẵn (even parity) và parity lẽ (odd parity) Parity chẵn nghĩa là số bit 1trong trong data truyền cùng với bit Parity luôn là số chẵn, ngược lại nếu Parity lẽ nghĩa là

số bit 1 trong data truyền cùng với bit Parity luôn là số lẽ Bit Parity không phải là bit bắtbuộc và vì thế chúng ta có thể loại bỏ bit này ra khỏi khung truyền

Stop bits: Stop bits là một bit báo cáo để cho bộ truyền/nhận biết được gói dữ liệu đã

được gởi xong Stop bits là bit bắt buộc phải có trong khung truyền Stop bits có thể là 1bit,1.5bit, 2bit, 0.5bit tùy thuộc vào ứng dụng UART của người sử dụng

Các ứng dụng của UART

UART thường được sử dụng trong các bộ vi điều khiển cho các yêu cầu chính xác vàchúng cũng có sẵn trong các thiết bị liên lạc khác nhau như giao tiếp không dây, thiết bịGPS, mô-đun Bluetooth và nhiều ứng dụng khác

Các tiêu chuẩn truyền thông như RS422 & TIA được sử dụng trong UART ngoại trừRS232 Thông thường, UART là một IC riêng được sử dụng trong giao tiếp nối tiếp UART

Ưu điểm và nhược điểm của UART

- Chỉ cần hai dây để truyền dữ liệu

- Tín hiệu CLK là không cần thiết

- Bao gồm một bit chẵn lẻ để cho phép kiểm tra lỗi

- Sắp xếp gói dữ liệu có thể được sửa đổi vì cả hai mặt được sắp xếp

- Kích thước khung dữ liệu tối đa là 9 bit

- Không chứa một số hệ thống phụ (hoặc)

- Tốc độ truyền của UART phải ở mức 10% của nhau

2.2.3 Chuẩn giao tiếp I2C [5]

Giới thiệu I2C

I2C là viết tắt của "Inter-Integrated Circuit", một chuẩn giao tiếp được phát minh bởiPhilips’ semiconductor division (giờ là NXP) nhằm đơn giản hóa việc trao đổi dữ liệu giữacác ICs Đôi khi nó cũng được gọi là Two Wire Interface (TWI) vì chỉ sử dụng 2 kết nối đểtruyền tải dữ liệu, 2 kết nối của giao tiếp I2C gồm: SDA (Serial Data Line) và SCL (SerialClock Line)

Có hàng ngàn thiết bị sử dụng giao tiếp I2C, chẳng hạn như real-time clocks, digitalpotentiometers, temperature sensors, digital compasses, memory chips, FM radio circuits,I/O expanders, LCD controllers, amplifiers,

I2C bus là một chuẩn truyền thông trong hệ thống nhúng (embedded system) rấtđược ưa chuộng Kết nối giữa master (hoặc multimaster) với single slave (hoặc multi slave).Một trong những ưu điểm nổi bật của chuẩn giao tiếp I2C là nó chỉ duy nhất 2 dây SCL(serial clock) và SDA (serial data) để truyền nhận tín hiệu

Trang 24

Hình 2.2.3.1.1 Hệ thống các thiết bị ngoại vi sử dụng chuẩn I2C.

Kéo xuống mức thấp (Open Drain Pulling Low)

Khi giao tiếp qua 2 dây SCL và SDA IC sẽ tạo ra xung vuông mức cao và mức thấp

để truyền nhận tín hiệu Nguyên lý để tạo ra mức thấp là khi IC (Slave hoặc Master) kéoFET xuống mức thấp, VBus sẽ đi qua FET và nối đất (ground) –> Logic 0

Kéo lên mức cao (Open Drain Releasing Bus)

Khi ngừng kích FET, thì điện áp qua trở kéo Rpu và kéo VBus lên mức cao –> Logic 1

Trang 25

Hình 2.2.3.1.3 Kéo lên mức cao (Realease the Bus with an Open-drain Interface)

Nguyên lý hoạt động của I2C

Trình tự Master muốn truyền dữ liệu cho Slave:

- Master là transmitter (IC gửi) sẽ truyền bit START và địa chỉ của Slave

- Master sẽ truyền dữ liệu cho slaver nhận (receiver)

- Master sẽ truyền bit STOP để kết thúc quá trình gửi

Trình tự Master muốn nhận (hoặc đọc) dữ liệu từ Slave:

- Master là receiver (IC nhận) sẽ truyền bit START và địa chỉ của Slave(transmitter)

- Master (receiver) gửi thanh ghi được yêu cầu để đọc từ Slave (transmitter)

- Master (receiver) sẽ nhận dữ liệu từ Slave truyền đến

- Master sẽ gửi bit STOP để kết thúc quá trình gửi

Bit điều kiện START và STOP

Giao tiếp I2C với thiết bị này được bắt đầu bởi Master gửi điều kiện START vàSTOP

- Chuyển đổi từ cao –> thấp trên dây SDA trong khi SCL ở mức cao là định nghĩaSTART

- Chuyển đổi từ thấp –> cao trên dòng SDA trong khi SCL ở mức cao là định nghĩaSTOP

Trang 26

Hình 2.2.3.1.4 Bit điều kiện

Định dạng Byte

Mỗi bit được truyền bởi mỗi xung của SCL 1 byte = 8bit trên được truyền bởi SDA.Một byte ở đây có thể là địa chỉ I2C của IC, địa chỉ thanh ghi, dữ liệu truyền và nhận Dữliệu được truyền với Most Signigicant Bit (MSB) đầu tiên

Acknowledge (ACK) và Not Acknowledge (NACK) Bit

Mỗi byte dữ liệu (bao gồm byte địa chỉ- address byte) được theo sau bởi một bitACK từ reciver Bit ACK cho phép receiver giao tiếp với transmiter rằng byte đã được nhậnthành công và một byte khác byte có thể được gửi

Trước khi gửi kit ACK, transmitter phải nhả (release) chân SDA Để gửi ACKbit, receiver phải kéo chân SDA xuống mức thấp trong khi SCL ở mức cao Nếu trường hợpchân SDA vẫn ở mức cao lúc này sẽ xuất hiện bit NACK

Trang 27

Hình 2.2.3.1.6 Bit ACK và NACK

Bit NACK xuất hiện khi:

- Receiver không nhận và truyền vì chưa sẵn sàng giao tiếp với Master

- Trong quá trình truyền nhận, receiver nhận dữ liệu hoặc lệnh mà nó không hiểu

- Trong quá trình truyền nhận, receiver không thể nhận hoặc truyền thêm bất kì dữliệu nào nữa

- Một Master-receiver kết thúc quá trình nhận dữ liệu và thông báo đến Slave quabit NACK

Dữ liệu I2C

Dữ liệu được gửi hoặc nhận được từ Slave Thanh ghi (register) được lưu trong bộnhớ của Slave, thanh ghi có thể được chứa các cấu hình (configuration) hoặc dữ liệu vàđược gửi đến Master Master có thể viết (write) tất cả các thông tin vào những thanh ghi này

để hướng dẫn Slave làm những nhiệm vụ cụ thể

Gửi dữ liệu cho Slave thông qua I2C Bus

Để viết dữ liệu thông qua I2C bus, Master phải gửi bit START qua bus và địa chỉ củaSlave + bit cuối (R/W=0) biểu thị việc viết Sau đó Slave gửi ACK để xác nhận việc kết nốigiữa Master –> Slave Sau đó Master sẽ gửi địa chỉ thanh ghi (Register Adress) và dữ liệutới thanh ghi (Data byte to Register) Để kết thúc quá trình truyền dữ liệu Master gửi tínhiệu STOP

Trang 28

Hình 2.2.3.1.7 Dữ liệu I2C viết cho thanh ghi của các thiết bị ngoại vi

Đọc dữ liệu từ Slave qua I2C bus

Việc đọc dữ liệu từ Slave cũng khá giống với việc viết dữ liệu Sau khi thực hiện cácbước giống như đọc dữ liệu ở trên, Master sẽ gửi thêm một bit START một lần nữa(Repeated Start) sau đó là địa chỉ của Slave + (R/W =1) biểu thị việc đọc Ngay lập tứcMaster release chân SDA nhưng vẫn tiếp tục cấp xung cho chân SCL, trong lúc này Mastertrở thành Receiver và Slave trở thành transmitter

Mỗi lần Master nhận được 1 byte data, nó sẽ gửi bit ACK đến Slave để thông báorằng muốn nhận thêm data Một khi Master nhận đủ lượng data cần thiết, nó sẽ gửi bitNACK để dừng việc giao tiếp Sau đó là bit STOP

Trang 29

2.3. Phần cứng tích hợp

2.3.1 Arduino Pro Micro

Giới thiệu chung

Pro Micro là một board mạch được sản xuất bởi Sparkfun, sử dụng vi xử lýAtmega32u4 8bit với 32K bộ nhớ flash và 2.5K RAM, cùng với 20 chân Input/Output vàcổng Micro USB để kết nối trực tiếp với máy tính Từ đó có thể thấy Pro Micro có khả nănghoạt động tương đương với một board mạch Arduino cơ bản tuy nhiên Pro Micro gọn gànghơn rất nhiều với kích thước chỉ cỡ đồng xu (3.3x1.8cm)

Ngoài ra, trên board mạch của Pro Micro còn có sẵn mạch regulator chống cấp ngượcđiện áp nên board mạch này bền hơn đáng kể so với các mạch khác có cùng kích thước

Số chân Digital I/O 14 chân (5 chân PWM)

Trang 30

Hình 2.3.1.1.2 Sơ đồ nguyên lý board mạch

Sơ đồ chân

Trang 31

2.3.2 Module wifi ESP8266

Giới thiệu

ESP8266 là một chip tích hợp cao - System on Chip (SoC), có khả năng xử lý và lưutrữ tốt, cung cấp khả năng vượt trội để trang bị thêm tính năng wifi cho các hệ thống kháchoặc đóng vai trò như một giải pháp độc lập

Module wifi ESP8266 v1 cung cấp khả năng kết nối mạng wifi đầy đủ và khép kín,bạn có thể sử dụng nó để tạo một web server đơn giản hoặc sử dụng như một access point

Thông số kỹ thuật

- Wifi 802.11 b/g/n

- Wifi 2.4 GHz, hỗ trợ WPA/WPA2

- Chuẩn điện áp hoạt động 3.3V

- Chuẩn giao tiếp nối tiếp UART với tốc độ Baud lên đến 115200

- Có 3 chế độ hoạt động: Client, Access Point, Both Client and Access Point

- Hỗ trợ các chuẩn bảo mật như: OPEN, WEP, WPA_PSK, WPA2_PSK,WPA_WPA2_PSK

- Hỗ trợ cả 2 giao tiếp TCP và UDP

- Tích hợp công suất thấp 32-bit CPU có thể được sử dụng như là bộ vi xử lý ứng dụng

- SDIO 1.1 / 2.0, SPI, UART

- Làm việc như các máy chủ có thể kết nối với 5 máy trạm

Trang 32

Sơ đồ chân và các chức năng

URXD(RX) Dùng đ nh n tín hi u trongể ậ ệ giao ti p UART ế

GPIO 2 Thường được dùng nh m t c ng TX trong ư ộ ổ

giao ti p UART đ debug l iế ể ỗ

CH_PD Kích ho t chip, s d ng cho Flash Boot và ạ ử ụ

updating l i module,ạ n i v i m c caoố ớ ứ

UTXD(TX) Dùng đ truy nể ề tín hi u trongệ giao ti p UART ế

v i vi đi u khi nớ ề ể

2.3.3 Module RTC DS1302

Giới thiệu chung

DS1302 Board sử dụng IC RTC DS1302Z (Trickle-Charge Timekeeping Chip, SerialI/O) Module hoàn chỉnh có các đầu ra serial cho phép bạn giao tiếp với bất kỳ MCU nào.Chỉ có 3 chân được yêu cầu để giao tiếp với MCU là RST (Reset), I/O (Data line) và SCLK(Serial Clock)

Trang 33

Hình 2.3.3.1.1 Module DS1302

Sơ đồ chân và chức năng

- IC RTC: DS1302Z (Trickle-Charge Timekeeping Chip, Serial I/O)

- Thạch anh 32,768KHz, cho tín hiệu thời gian chính xác

- Có sẵn pin CR2032 và đế giữ pin trên board

- Có đèn LED báo tín hiệu nguồn

- Kích thước: 30 x 34 mm

2.3.4 Module I2C cho LCD 16x2

Giới thiệu chung

Để điều khiển một chiếc màn hình LCD thông thường sẽ phải cần đến tối thiểu là 6chân (RS, EN, D7, D6, D5 và D4), thậm chí nhiều hơn Việc này đôi lúc sẽ khá là bất tiệnnếu sử dụng LCD kết hợp với các thiết bị kết nối ngoại vi khác như bàn phím hay cácmodule cảm biến sử dụng nhiều chân I/O Do đó, module I2C dành cho LCD được ra đờivới chức năng thu gọn số lượng chân I/O cần sử dụng của vi điều khiển để điều khiển mànhình LCD xuống còn 4 chân bằng cách đưa về chuẩn giao thức I2C (VCC, GND, SDA vàSCL)

Trang 34

Hình 2.3.4.1.1 Module giao tiếp I2C dành cho LCD

Thông số kỹ thuật và chức năng

- Điện áp hoạt động: 2.5-6V DC

- Hỗ trợ màn hình: LCD1602,1604,2004 (driver HD44780)

- Giao tiếp: I2C

- Địa chỉ mặc định: 0X27 (có thể điều chỉnh bằng ngắn mạch chân A0/A1/A2)

- Kích thước: 41.5mm(L)x19mm(W)x15.3mm(H)

- Trọng lượng: 5g

- Tích hợp Jump chốt để cung cấp đèn cho LCD hoặc ngắt

- Tích hợp biến trở xoay điều chỉnh độ tương phản cho LCD

2.3.5 Keypad 4x4

Ngày đăng: 11/07/2019, 14:56

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

TÀI LIỆU LIÊN QUAN

w