资料介绍
描述
动机
交通上的信任/安全是一项挑战新功能,需要通过近年来越来越受欢迎的拼车服务来解决。Uber、Lyft、Via 和 Juno 是一些由业主驾驶的私家车的例子,提供从门到门或从特定起点到终点的交通服务。
公共交通和出租车因其共同的颜色、制造商和设计而很容易被发现。然而,拼车服务很难被注意到,因为它们只在前窗或侧窗上显示一个小贴纸。每次接老婆,都会在地铁站看到这种情况。人们在车站上下行走以寻找他们的请求乘车。发车款,颜色都尽量减轻这个负担,但还是有误乘的可能。
然后,有可能有人假装是您的乘车人,造成严重的安全问题。
该项目的动机是 Hackster 中提出的以下项目:
第一个展示了当前流行的使用个人外部设备(通常是手机)确认身份的安全功能。大多数系统会生成一个随机代码并将其发送到注册设备以输入到登录系统中。
第二个展示了用户成为确认身份的密码短语的想法。用户选择密码并将其发送到 AID,AID 将其转换为二维码以便于阅读。
使用 AID 可以保护隐私并使其具有防篡改功能,因为连接独立于拼车请求系统。
材料
Particle Boron LTE 是身份验证设备 (AID) 系统的核心板。Boron 板包含一个嵌入式 SIM 卡,可以与本地蜂窝网络通信。
Adafruit TFT 2.4" 触摸屏羽翼被用作主界面。
最后,任何网络浏览器都可以启用移动设备:笔记本电脑、平板电脑或手机来确认密码。
流水作业
工艺流程如下:
- 请求乘车(请求者)。
- 驱动程序接受请求并将 AID id 和名称发送给请求者
- 请求者收到 AID id 和名称;尝试建立连接。
- 使用 AID 连接成功,将设备名称与收到的设备名称进行比较。
- 请求者写入密码并将其发送给 AID。
- AID 接收请求者密码并构建 QR 码。
- 请求者扫描驾驶员 AID 屏幕上的二维码。
- 请求者对扫描的 QR 码进行解码并比较密码是否匹配。
- 相同的密码欢迎请求者并解锁车门。
安全密码
密码短语已被证明比单字密码更安全。使用的密码最多可以有 63 个字符。当密码有效时,系统可以有一个时间间隔,超过该时间密码无效并且需要新的密码。
粒子函数
该应用程序使用 Particle 函数通过 Cloud API 函数与 Web App 进行通信。
Boron 程序定义了以下两个函数。
void setup() {
display.begin();
.
.
.
Particle.function("safeRyder",setQRcode);
Particle.function("confirmSR",setAccessConfirm);
}
setQRcode 接收客户发送的密码,创建二维码并显示在屏幕上。
int setQRcode(String command) {
qrcode.create(command);
return 0;
}
当密码匹配二维码并验证客户身份时,调用 setAccessConfirm 函数。然后屏幕会显示一个绿色圆圈和一条欢迎消息。
int setAccessConfirm(String command)
{
int width = display.width();
int height = display.height();
display.fillScreen(ILI9341_BLACK);
display.fillCircle(width/2,height/3,width/3,ILI9341_GREEN);
display.setCursor(width/5, (height/3)*2+30);
display.setTextColor(ILI9341_WHITE);
display.setTextSize(4);
display.println("Welcome");
return 0;
}
云 API
HTML5 代码使用云 API 和 JSON 调用注册函数。下面的 pingParticle 函数使用网址打开一个 http 请求。请注意 deviceId: 和 token: 必须替换为您的 deviceId 和 token,您可以在 Particle 仪表板中找到它们。
另外,请注意,为了使用 JSON 格式,您必须定义一个标头来标识您请求的内容类型。这是您用于传递令牌的标头的附加内容。ping 命令发送包以检查设备是否在线和连接。
请注意,PUT 用于 ping 命令。
function pingParticle()
{
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
deviceInfo = this.responseText;
}
};
xhttp.open("PUT", "https://api.particle.io/v1/devices/deviceId:/ping", false);
xhttp.setRequestHeader("Authorization", "Bearer token:");
xhttp.setRequestHeader("Content-Type", "application/json");
xhttp.send();
}
The
以下函数 getDeviceInfo 请求设备的一般信息。请注意,回调函数将响应分配给 deviceInfo 全局变量。然后对该变量进行 JSON 解码以访问所需信息,例如设备名称。
请注意,a GET 用于获取设备信息。
function getDeviceInfo()
{
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
deviceInfo = this.responseText;
}
};
xhttp.open("GET", "https://api.particle.io/v1/devices/deviceId:", false);
xhttp.setRequestHeader("Authorization", "Bearer token:");
xhttp.setRequestHeader("Content-Type", "application/json");
xhttp.send();
}
callParticle 函数调用设备中定义的 Particle 函数。它使用 JSON 格式发送函数的参数,在本例中为密码。请注意,它使用 AID 的令牌和 deviceId。
请注意,POST 用于调用 Particle 函数。
function callParticle(msg2Send)
{
var xhttp = new XMLHttpRequest();
var txtSCode = document.getElementById('txtSafeCode');
var sendData = txtSCode.value;
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("btnContinue").style = "visibility:visible";
document.getElementById("btnSendCode").style = "visibility:hidden";
}
};
xhttp.open("POST", "https://api.particle.io/v1/devices/"+deviceId+"/safeRyder", false);
xhttp.setRequestHeader("Authorization", "Bearer "+token);
xhttp.setRequestHeader("Content-Type", "application/json");
xhttp.send("{"arg": ""+sendData+""}");
}
下面的函数是库解码二维码后的回调注册函数。请注意,我们使用 sessionStorage 函数将密码从一个网页传递到相机控制网页。该函数向 AID 设备发送确认命令。
qrcode.callback = function(data) {
var output = document.querySelector("output");
output.innerHTML = "QR Code Data 2: " + data;
var sendData = window.sessionStorage["passphrase"];
if (data == sendData)
confimCodeParticle();
}
这是通过调用confirmSR Particle 函数将确认POST 到AID 设备的函数。
请注意,POST 用于调用 Particle 函数。
function confimCodeParticle()
{
var xhttp = new XMLHttpRequest();
xhttp.open("POST", "https://api.particle.io/v1/devices/"+deviceId+"/confirmSR", false);
xhttp.setRequestHeader("Authorization", "Bearer "+token);
xhttp.setRequestHeader("Content-Type", "application/json");
xhttp.send("{"arg": ""}");
}
网络应用
Web App 是一个 HTML5/JavaScript 程序,它与 AID 设备建立通信,发送密码,从 AID 设备读取二维码并确认密码匹配。
在三星 Edge S7 手机中使用 Chrome 来运行 Web 应用程序。
下面的网页显示了主界面。该页面尝试使用收到的设备 ID 和令牌与 AID 设备建立通信。如果无法通信,界面中会显示 Ping 按钮。这使用户有机会再次尝试通信链接。
建立通信链路后,Ping 按钮消失,并显示从通信链路读取的 AID 名称和状态
输入您的唯一密码,然后按发送密码。该页面会将密码发送到 AID 设备(生成二维码的地方)并返回成功状态。
Send Passphrase 按钮被隐藏并显示 Continue 按钮。按继续按钮访问读取二维码扫描页面。
扫描二维码页面如上图所示。车辆到达车窗后,AID 附在车窗上,按下启动摄像头按钮激活车载摄像头,聚焦 AID 设备上显示的 QR 码,然后按下拍摄快照。
然后该页面处理 QR 码并比较发送的密码。如果两者都匹配,则它会向 AID 设备发送一条确认消息,该设备会通过显示带有欢迎消息的绿色圆圈来响应。
有时相机的使用无法按预期工作,并且无法解释 QR 码。图像格式的设置可能会出现问题,如果是这种情况,请按选择文件,在三星 S7 中会显示通过相机或浏览选择文件的菜单。选择相机并拍照,系统将拍摄该图像并处理二维码。
二维码
用于处理 QR 码的库取自 Lazar Laszlo(Web 应用程序)和 Anun Panya(AID 应用程序)。Anun Panya 的库经过修改以支持粒子板和 Adafruit TFT 2.4 触摸屏监视器。还允许在 QR 码显示上使用缩放系数。
援助应用
AID App 非常简单。它基本上基于几个粒子函数,这些函数定义了客户触发的事件。如粒子函数一节所示,这两个函数定义的一个是显示客户发送的密码,第二个是确认密码已被验证。
产品、车队和客户
该系统可以很容易地扩展到产品。客户将共享连接到产品的所有设备,并且只与接受驱动程序服务请求的设备对话。然后可以根据实际安装 AID 设备的驱动程序的地理位置和客户请求服务的位置对设备进行分组。
粒子仪表板在创建产品时提供这些功能。当请求被批准时,产品服务将 AID 设备 ID、名称和访问令牌发送到设备。客户接收这些信息并与 AID 建立直接通信链接。
客户未连接到 AID 设备,但在收到信息时无法篡改 ID。
结论
该系统在提高骑手的安全性和防止有人冒充您的骑行方面表现出可喜的表现。
该系统还可用于从机场接人的豪华轿车服务,或与我们从未接触过的人或服务的任何会议,例如杂货店送货服务。
未来的工作预见了一种为服务正确收费的方法。
- 智能安全帽开源构建
- Raven Pi安全摄像头开源分享
- Lifi安全系统开源设计
- 家庭报警安全系统开源分享
- MiMaMori家庭安全警报开源分享
- 夜间安全灯控制开源分享
- 物联网家庭安全模型开源分享
- 安全工作区开源分享
- 安全预警系统开源分享
- 激光安全报警器开源分享
- 开源网络协议分析器WireShark软件下载 15次下载
- 浑源软件项目中的代码结构和开源组件综述 5次下载
- ThinkPHP 6.0完全开发手册资源下载 13次下载
- 开源课程行动倡议及科学导论综述 6次下载
- 物联网应用的SoC安全架构设计方案 21次下载
- 介绍一种基于eBPF的Linux安全防护系统 708次阅读
- 利用开源软件的最佳实践 464次阅读
- 推荐GitHub上与嵌入式相关的高星开源项目 967次阅读
- 前沿开源技术领域的开源大数据一一解读 1005次阅读
- 谷歌重新定义开源软件漏洞治理框架 2657次阅读
- 2020年开源的六大发展趋势 4257次阅读
- 在贴片加工厂中有哪些安全防护需要了解 1306次阅读
- 开源过程中的5件注意事项 3548次阅读
- 开源与云的一些争论 3200次阅读
- 选择开源项目的重要因素 2122次阅读
- 物联网十大经典开源操作系统 1w次阅读
- 全年开源项目的盘点和总结 3231次阅读
- NASA的开源软件是什么?NASA的开源软件的详细分析 7186次阅读
- 开源存储的六大优势 3975次阅读
- 11个机器学习开源项目 2767次阅读
下载排行
本周
- 1山景DSP芯片AP8248A2数据手册
- 1.06 MB | 532次下载 | 免费
- 2RK3399完整板原理图(支持平板,盒子VR)
- 3.28 MB | 339次下载 | 免费
- 3TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 4DFM软件使用教程
- 0.84 MB | 295次下载 | 免费
- 5元宇宙深度解析—未来的未来-风口还是泡沫
- 6.40 MB | 227次下载 | 免费
- 6迪文DGUS开发指南
- 31.67 MB | 194次下载 | 免费
- 7元宇宙底层硬件系列报告
- 13.42 MB | 182次下载 | 免费
- 8FP5207XR-G1中文应用手册
- 1.09 MB | 178次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成电路应用800例(新编版)
- 0.00 MB | 33566次下载 | 免费
- 3接口电路图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21549次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字电路基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动电路设计》 温德尔著
- 0.00 MB | 6656次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537798次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420027次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191187次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183279次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论
查看更多