基於Espressif ESP8266 的動態密碼之門禁系統方案

現今,黑帽駭客對資安的威脅日益月滋,即使是再複雜的密碼,只要伺服器被滲透,便被一覽無遺。我們使用更安全、更簡便的方式來取代傳統登入,使用者只需準備一張NFC卡(悠遊卡、學生證等)與一台手機,即可完成身分驗證。

在網路訊號不佳甚至離線的環境下,動態密碼依舊可以正常運作,使完全隱私與零概率盜用成為了可能,擺脫了網際網路的限制。



註冊/登入 步驟

1. 確保行動裝置具有網際網路連線

2. 感應NFC卡片

3. 用Keypad選擇行動裝置的作業系統

4. 掃描OLED模組顯示的QR code

5. 下載TOTP APP

6. 掃描第二個QR code,獲取TOTP金鑰

7. 輸入行動裝置上顯示的TOTP密碼

8. 系統驗證金鑰雜湊是否正確

9. 完成,系統將活動紀錄上傳至雲端

流程圖



上傳至雲端後,可至Google Sheets觀看詳細活動資訊。

Google Sheets 結果圖

機構使用了壓克力製作,將機構頂部打孔,把所有介面元件裝上,並依需要使用雙面膠固定,且所有的線材包裝至內部。

成品內部



程式碼 片段簡介
撰寫程式碼時,必須要自行理解Base32的原理 ,閱讀完文檔後,要轉換化為C++程式碼,並經過一系列的映射、填充,才得以完成規範。

Base32片段程式碼

切割資料

由於接收端無法得知資料的個別含意,利用indexOf定位、substring切割資料,並使用全形數字來做為定位字元以分割資料,因為序列輸出都是半形,不會與中文的全形字元衝突。

APP Script

APP Script負責整理伺服器端傳來的活動資訊,並將其儲存至Google Sheet中,供閱覽紀錄。

本主題涉及了Wi-Fi與HTTPS範疇,透過申請了網路憑證與API本機化,得以直接上傳資料,減少了設定瑣項與第三方服務之依賴。

►場景應用圖

►展示板照片

►方案方塊圖

►核心技術優勢

1、本架構的伺服器端,不必與客戶端有任何的直接/間接資料傳輸,只需依循伺服器端的螢幕進行操作,即可完成驗證流程。 2、限制伺服器單向地傳輸資料至雲端,並儲存活動紀錄,且不接收任何外界的指令,防止輸入惡意指令,造成未預期的資料外洩。 3、此作品採取兩步驟驗證,一種更安全、更簡便的方式來取代傳統登入,使用者只需準備一張NFC卡(悠遊卡、學生證等)與一台手機,即可完成身分驗證。

►方案規格

1、ESP8266 MCU模組,擁有Wi-Fi機能,透過UART連接。確保最少的資料傳遞,避免機密洩漏。上傳伺服器端,所傳送的活動資訊,為了更獲取更強大的連線安全性,採用了HTTPS超級文字傳輸安全協定與自訂CA安全憑證,以確保Google Sheets的資料傳輸安全無虞。 2、4*4 Keypad 矩陣鍵盤。供使用者輸入指令至系統。 3、PN532 NFC近場通訊模組,透過I²C連接。用戶手持悠遊卡、學生證等靠近PN532模組(距離1~6cm),系統即可獲取卡片內UUID等資訊,以進行第一階段的身分驗證。 4、SSD1306 OLED模組,透過I²C連接。使用者透過該模組顯示的兩個QR code,分別進行「下載TOTP APP」與「獲取TOTP金鑰」兩個操作。 5、LCD2004 LCD模組,透過I²C連接。使用者透過該模組引導的步驟,完成註冊/登入流程。 6、DS3231 實時時鐘模組,透過I²C連接。用於在系統發生意外斷電,復電後可以持續記憶時間,而不會遺失。