0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

利用樹(shù)莓派完成雙重身份驗(yàn)證的保險(xiǎn)箱

科技觀察員 ? 來(lái)源:Pablo Carranza Vélez ? 作者:Pablo Carranza Vélez ? 2022-03-30 17:13 ? 次閱讀

本項(xiàng)目為需要2FA才能打開(kāi)的保險(xiǎn)箱。使用resin.io和Authy構(gòu)建。

poYBAGJEH0GAFWA6AAPWLMSM-FU676.png

描述

物聯(lián)網(wǎng)主要是將物聯(lián)網(wǎng)帶入互聯(lián)網(wǎng),但也將互聯(lián)網(wǎng)帶入物聯(lián)網(wǎng)。銀行賬戶或比特幣錢包等關(guān)鍵任務(wù)服務(wù)網(wǎng)站提供雙因素身份驗(yàn)證(2FA)已有一段時(shí)間了,它不僅提供了密碼,還提供了額外的安全層。由于resin.io旨在跨越互聯(lián)網(wǎng)與現(xiàn)實(shí)世界之間的鴻溝,我們決定通過(guò)構(gòu)建一個(gè)需要2FA才能打開(kāi)的保險(xiǎn)箱來(lái)將這一概念付諸實(shí)踐。

通過(guò)將resin.io與Twilio的Authy相結(jié)合,我們可以通過(guò)一個(gè)非常簡(jiǎn)單的部署系統(tǒng)——gitpushresinmaster——和一種添加2FA機(jī)制的非常簡(jiǎn)單的方法來(lái)實(shí)現(xiàn)這一點(diǎn)。

保險(xiǎn)箱和儲(chǔ)物柜通常通過(guò)鑰匙或在數(shù)字鍵盤上敲擊代碼來(lái)打開(kāi)。我們提出了一種替代方法,將數(shù)字代碼與通過(guò)Authy發(fā)送到用戶手機(jī)的SMS相結(jié)合,這意味著打開(kāi)保險(xiǎn)箱需要同時(shí)擁有代碼和手機(jī)。

細(xì)節(jié)

我們?cè)谠桶迳鲜褂昧薘aspberryPi2和一個(gè)小電路。鎖本身是一個(gè)5V螺線管。

Pi運(yùn)行一個(gè)node.js服務(wù)器,該服務(wù)器通過(guò)一個(gè)簡(jiǎn)單的Web界面執(zhí)行身份驗(yàn)證。我們使用Authy提供第二因素身份驗(yàn)證和resin.io以實(shí)現(xiàn)超簡(jiǎn)單的代碼部署。

鎖定和解鎖保險(xiǎn)箱的程序如下:

用戶輸入他們的電子郵件。

如果是新用戶,他們會(huì)被要求提供電話號(hào)碼。

UI要求用戶輸入密碼來(lái)鎖定保險(xiǎn)箱。

當(dāng)用戶輸入密碼時(shí),鎖被接合。

完成后,打開(kāi)保險(xiǎn)箱:

首先,用戶必須輸入正確的代碼。

輸入代碼后,Authy會(huì)向用戶發(fā)送短信。

用戶輸入短信密碼,鎖打開(kāi)。

鎖只打開(kāi)幾秒鐘,但可以通過(guò)按UI上的“打開(kāi)”按鈕再次打開(kāi)。

當(dāng)您在手機(jī)上使用UI時(shí),您通??梢栽赟MS代碼到達(dá)時(shí)輸入它,因?yàn)樗鼤?huì)顯示在手機(jī)的通知區(qū)域中。

構(gòu)建說(shuō)明

硬件

螺線管驅(qū)動(dòng)器電路原理圖如下所示:

pYYBAGJEHzuAOGtYAADfl-k5b_0661.png

這是我們?cè)谠桶迳辖M裝螺線管驅(qū)動(dòng)器的方式:

poYBAGJEHzeAftQZAAPEE_kLPTo992.png

軟件

RaspberryPi運(yùn)行一個(gè)node.js服務(wù)器,該服務(wù)器實(shí)現(xiàn)了多步身份驗(yàn)證機(jī)制,為了實(shí)現(xiàn)這一點(diǎn),我們?cè)O(shè)計(jì)了一個(gè)使用machina.js的狀態(tài)機(jī),通過(guò)express.js在HTTP上提供服務(wù)。大多數(shù)交互都在socket.io上進(jìn)行,以向用戶提供實(shí)時(shí)反饋。

我們使用“authy”npm包輕松地與AuthyAPI交互,從他們的教程中借用一些代碼。

狀態(tài)機(jī)由產(chǎn)生從一種狀態(tài)到另一種狀態(tài)的轉(zhuǎn)換的狀態(tài)和事件組成——我們?cè)趹?yīng)用程序中使用的模型“Safebox”具有“打開(kāi)”和“關(guān)閉”狀態(tài),從一個(gè)狀態(tài)到另一個(gè)方向的轉(zhuǎn)換,通過(guò)通過(guò)處理身份驗(yàn)證過(guò)程的中間狀態(tài)。

每當(dāng)用戶與UI交互時(shí),都會(huì)通過(guò)socket.io觸發(fā)輸入事件,并將其傳遞給狀態(tài)機(jī)。

下面的代碼是如何定義這些狀態(tài)和轉(zhuǎn)換的示例:

poYBAGJEHzKAdS5lAABZjf17T4U593.png

當(dāng)機(jī)器轉(zhuǎn)換到“關(guān)閉”狀態(tài)時(shí),它的_onEnter函數(shù)被稱為禁用鎖并保存這個(gè)新?tīng)顟B(tài)。當(dāng)用戶隨后輸入代碼時(shí),我們將其與他們的密碼進(jìn)行比較,只有在匹配時(shí)才轉(zhuǎn)換到下一個(gè)狀態(tài)。

我們使用MongoDB來(lái)保存盒子的當(dāng)前狀態(tài)和用戶數(shù)據(jù)——存儲(chǔ)用戶數(shù)據(jù)允許我們存儲(chǔ)用戶的密碼和電話號(hào)碼,這樣他們就不需要在每次重啟設(shè)備時(shí)重新配置他們的設(shè)備。

集成用戶模型的代碼還與AuthyAPI交互,該API提供了向用戶發(fā)送SMS并驗(yàn)證他們提供的代碼的方法。

在客戶端,我們有一個(gè)簡(jiǎn)單的單頁(yè)jQuery應(yīng)用程序,它為每個(gè)狀態(tài)機(jī)的狀態(tài)顯示不同的HTML內(nèi)容,監(jiān)聽(tīng)撥號(hào)盤和輸入上的事件,發(fā)送socket.io消息并為用戶提供適當(dāng)?shù)姆答?。我們使用Bootstrap和toastr快速設(shè)計(jì)了一個(gè)相當(dāng)賞心悅目的界面:)

我們使用resin.io將所有內(nèi)容與設(shè)置環(huán)境并運(yùn)行我們的啟動(dòng)腳本的Dockerfile綁定在一起:

poYBAGJEHy2AB5tGAAB-ru5Os9s869.png

我們的start.sh腳本然后啟動(dòng)MongoDB(在不正常關(guān)閉的情況下修復(fù)它)和我們的Web服務(wù)器:

poYBAGJEHymAFK1FAAAiqEcU9TU798.png

使用resin.io使我們的部署就像輸入‘gitpush’一樣簡(jiǎn)單,而且它允許我們使用docker確保我們所有的依賴關(guān)系都以完全相同的方式滿足每個(gè)設(shè)備。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 保險(xiǎn)箱
    +關(guān)注

    關(guān)注

    0

    文章

    11

    瀏覽量

    6583
  • 樹(shù)莓派
    +關(guān)注

    關(guān)注

    116

    文章

    1679

    瀏覽量

    105252
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    保險(xiǎn)箱智能化真的有必要嗎?

    電子發(fā)燒友網(wǎng)報(bào)道(文/黃山明)如果家中擁有一些貴重的物品,又不適合存放于銀行,那么購(gòu)置一個(gè)保險(xiǎn)箱將是一個(gè)不錯(cuò)的選擇。而隨著科技的發(fā)展,智能保險(xiǎn)箱應(yīng)運(yùn)而生,它可以通過(guò)智能化,讓傳統(tǒng)硬件既硬(核心
    的頭像 發(fā)表于 07-20 00:24 ?1531次閱讀

    IC 卡保險(xiǎn)箱

    本文詳細(xì)介紹了利用邏輯加密卡SLE4442 設(shè)計(jì)IC 卡保險(xiǎn)箱(DEMO 板)的過(guò)程該保險(xiǎn)箱利用P87LPC764 做處理器另擴(kuò)展1 片E2PROM 組成的應(yīng)用系統(tǒng)該
    發(fā)表于 06-30 17:42 ?44次下載

    什么是身份驗(yàn)證和授權(quán)

    什么是身份驗(yàn)證和授權(quán) 根據(jù)RFC2828(Internet Security Glossary,May2000),驗(yàn)證是“校驗(yàn)被或向某系統(tǒng)實(shí)體聲明的身份的過(guò)程”。此處的關(guān)鍵字
    發(fā)表于 04-03 16:03 ?5718次閱讀

    什么是詢問(wèn)握手身份驗(yàn)證協(xié)議

    什么是詢問(wèn)握手身份驗(yàn)證協(xié)議 CHAP(詢問(wèn)握手身份驗(yàn)證協(xié)議)是用于遠(yuǎn)程登錄的身份驗(yàn)證協(xié)議,通過(guò)三次握手周期性的校驗(yàn)對(duì)端的身份,在初始鏈
    發(fā)表于 04-03 16:06 ?2627次閱讀

    什么是密碼身份驗(yàn)證協(xié)議

    什么是密碼身份驗(yàn)證協(xié)議 PAP是一種身份驗(yàn)證協(xié)議,是一種最不安全的身份證協(xié)議,是一種當(dāng)客戶端不支持其它身份認(rèn)證協(xié)議時(shí)才被用來(lái)
    發(fā)表于 04-03 16:07 ?1570次閱讀

    淺談雙因素身份驗(yàn)證的三個(gè)風(fēng)險(xiǎn)和缺點(diǎn)

    雖然有些人可能因?yàn)閼械萌ハ攵褂靡灼平獾娜趺艽a,但強(qiáng)密碼并非堅(jiān)不可摧。它們可能被攔截,被鍵盤記錄或因大數(shù)據(jù)攻擊而被泄露。 在過(guò)去幾年,雙因素身份驗(yàn)證(或雙重身份驗(yàn)證,two-factor
    發(fā)表于 01-01 01:06 ?4974次閱讀

    人臉識(shí)別在養(yǎng)老保險(xiǎn)身份驗(yàn)證系統(tǒng)中的應(yīng)用

    人臉識(shí)別養(yǎng)老保險(xiǎn)身份驗(yàn)證系統(tǒng)是以人臉識(shí)別技術(shù)為核心,基于自定義數(shù)據(jù)庫(kù)技術(shù),實(shí)現(xiàn)了人臉采集、人臉識(shí)別、人臉模板管理、用戶管理等功能的養(yǎng)老保險(xiǎn)身份驗(yàn)證系統(tǒng)。
    發(fā)表于 07-05 15:50 ?4999次閱讀

    塑料的保險(xiǎn)箱 你敢用嗎?

    修鎖匠Brisbane是澳大利亞鎖匠行業(yè)和安全方面的專家,近些日子,他制作了一種非常特別的3D打印保險(xiǎn)箱,因?yàn)樗撬芰系?!和一般?b class='flag-5'>保險(xiǎn)箱不同,這個(gè)以PET為原料的容器是專為敏感性電子設(shè)備和高輻射區(qū)
    的頭像 發(fā)表于 04-02 14:03 ?5257次閱讀

    制作簡(jiǎn)易保險(xiǎn)箱

    如何用紙板做個(gè)保險(xiǎn)箱呢?而且是跟真正保險(xiǎn)箱的原理是一樣的。
    的頭像 發(fā)表于 01-22 16:22 ?3.2w次閱讀

    身份驗(yàn)證和生物識(shí)別身份系統(tǒng)應(yīng)用越加廣泛

    身份驗(yàn)證和生物識(shí)別身份系統(tǒng)應(yīng)用越加廣泛
    發(fā)表于 02-27 14:37 ?1519次閱讀

    采用Arduino和木板自制指紋保險(xiǎn)箱

    用木板制作帶指紋的智能保險(xiǎn)箱,只有正確的指紋才打得開(kāi)哦!
    的頭像 發(fā)表于 05-24 06:34 ?4068次閱讀

    智能鑰匙開(kāi)鎖的簡(jiǎn)易保險(xiǎn)箱設(shè)計(jì)

    給我20塊,我給你做個(gè)保險(xiǎn)箱!
    的頭像 發(fā)表于 08-12 10:50 ?3108次閱讀

    了解如何創(chuàng)建Arduino保險(xiǎn)箱

    電子發(fā)燒友網(wǎng)站提供《了解如何創(chuàng)建Arduino保險(xiǎn)箱.zip》資料免費(fèi)下載
    發(fā)表于 11-28 09:24 ?0次下載
    了解如何創(chuàng)建Arduino<b class='flag-5'>保險(xiǎn)箱</b>

    基于Arduino并由紙板制成的保險(xiǎn)箱

    電子發(fā)燒友網(wǎng)站提供《基于Arduino并由紙板制成的保險(xiǎn)箱.zip》資料免費(fèi)下載
    發(fā)表于 12-19 09:54 ?1次下載
    基于Arduino并由紙板制成的<b class='flag-5'>保險(xiǎn)箱</b>

    LCD電子密碼保險(xiǎn)箱設(shè)計(jì)

    LCD電子密碼保險(xiǎn)箱系統(tǒng)介紹:? ? ? ?該電子密碼保險(xiǎn)箱的控制部分的主要任務(wù)包括:鍵盤的控制,LCD顯示屏的控制,鎖具的控制,蜂鳴器的控制。鎖具的原理是通過(guò)直流馬達(dá)轉(zhuǎn)動(dòng),帶動(dòng)門閂移動(dòng),達(dá)到開(kāi)門
    發(fā)表于 01-04 17:20 ?3次下載