打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
做了个FIDO安全密钥!开源了!能无密码登陆网站!
userphoto

2024.04.12 浙江

关注
嘉立创EDA
2024-04-07 17:08

FIDO安全密钥,能 Passkey 无密码登录网站,能增加NFC。

为什么要做这个安全密钥呢?

随着 Passkey 无密码登录的普及,以及开源密码管理器 Bitwarden 自身支持无密码登录,拥有一个安全密钥就有了一定的必要性,但市面上成品价格过高,故决定自己制作一款安全、便宜、体积小的设备。

一、安全密钥功能/亮点

  • 基于 nRF52840 和 OpenSK 的 USB KEY。
  • 采用触摸感应 按钮。
  • 可以用来 Passkey 无密码登录网站
  • 支持 FIDO2、FIDO及U2F 等协议。
  • 本项目基于谷歌的开源项目 OpenSK 修改适配,Google 作为 FIDO 联盟成员,且代码通过 FIDO 认证,安全性具有保障
  • Bootloader 基于 Adafruit_nRF52_Bootloader 修改适配,支持 uf2 文件烧录,方便后续更新固件

二、硬件设计说明

原理图

PCB图

硬件说明:

  • MCU采用nRF52840,有独立的安全系统,二手一片5元左右
  • 电源采用内置LOD,减少外部元件
  • 采用外部高速晶振(USB功能需要),内部低速晶振
  • 保留TVS电路,防止静电意外烧毁设备或电脑
  • 移除蓝牙相关电路,并预留NFC线圈焊盘(OpenSK后续不会支持蓝牙,且将支持NFC功能
  • 触摸感应按钮比微动开关使用更方便,背面微动开关用作进入烧录模式;LED灯及触摸感应按钮放在尾部,可以放入通用外壳

三、固件烧录教程

1.首次烧录 Bootloader

如何进行首次烧录?首先做好以下准备!

本教程采用 Picoprobe(DAPLink) ,在 Linux(WSL2) 环境下烧录,只需要手边有一个 RP2040 开发板即可使用

Windows 下可以使用 WSL2 + usbipd-win , 或者直接安装 Windows 版的 openocd (
https://gnutoolchains.com/arm-eabi/openocd/)。

其他烧录方式可以去开源网址查看学习,开源网址参考【第5章】指引。

接着,进行首次烧录!

启动 OpenOCD

openocd -d2 -f interface/cmsis-dap.cfg -f target/nrf52.cfg -s tcl

连接 OpenOCD

保持上一步窗口打开,并在新窗口中运行下面命令 :

telnet localhost 4444

解锁芯片并烧录

上一步 telnet 窗口分别运行下列命令,注意 4-5 行中 hex 文件名及路径替换成实际文件的(相对于 openocd 命令运行路径,如果不清楚就使用绝对路径):

nrf52_recover nrf5 mass_erase flash write_image pca10059_bootloader-xxxx.hex flash verify_image pca10059_bootloader-xxxx.hex reset run

进入 DFU 模式

按住 DFU 键(背面那个大按键)将设备插入电脑,设备上 LED 灯呼吸闪烁并且电脑上显示出一个存储设备即成功进入 DFU 模式。

这时将相应的 .uf2 文件复制进存储设备即可完成烧录。

2.升级 Bootloader

之后有 Bootloader 版本升级时,进入 DFU 模式,将附件中更新文件(
update-pca10059_bootloader-xxxx_nosd.uf2)
复制进去即可

3.烧录 OpenSK

进入 DFU 模式,将附件中的OpenSK固件(nrf52840_dongle_dfu_merged.uf2)复制进去即可

4.自行编译固件 (可选)

4.1 编译 Bootloader

①安装依赖

不赘述,按文末【参考资料】指引,自行在开源网址查找相关资料

②下载源码

git clone -b master https://github.com/adafruit/Adafruit_nRF52_Bootloader

cd Adafruit_nRF52_Bootloader

git submodule update --init

③应用补丁

将附件中补丁文件
OpenSK_Bootloader_xxxx.patch 复制到项目根目录,然后运行命令:

git apply OpenSK_Bootloader_xxxx.patch

④编译

make BOARD=pca10059 clean && make -j BOARD=pca10059 all

在 _build/build-pca10059 目录中。

4.2 编译 OpenSK

OpenSK 基于 OpenSK 修改,正常情况使用附件中固件即可,如果需要自定义则可自行编译固件。

①安装依赖

不赘述,按文末【参考资料】指引,自行在开源网址查找相关资料

②下载源码

git clone -b 2.1 https://github.com/google/OpenSK.git cd OpenSK ./setup.sh wget -P tools https://github.com/microsoft/uf2/raw/master/utils/uf2conv.py wget -P tools https://github.com/microsoft/uf2/raw/master/utils/uf2families.json chmod a+x tools/uf2conv.py

③应用补丁

将附件中补丁文件 OpenSK_xxxx.patch 复制到项目根目录,然后运行命令:

git apply OpenSK_xxxx.patch
cp -r boards/nordic/. third_party/tock/boards/nordic

④编译

./deploy.py --board=nrf52840_dongle_dfu --programmer=none --opensk ./tools/uf2conv.py -c -f 0xada52840 -o target/nrf52840_dongle_dfu_merged.uf2 target/nrf52840_dongle_dfu_merged.hex

编译生成的文件将存放在 target 目录中

四、复刻注意事项

(1)打样板厚为 0.8 mm,不然 Type-C 接口无法焊接上去,项目尺寸可免费打板。

(2)nRF52840 是 BGA 封装,焊接有一定难度,至少需要有加热台或者风枪,焊接时先焊接带有芯片的一面,然后通过 OpenOCD 烧录 Bootloader,并测量验证以下电压再焊接其他元件:

VDD_NRF : 3.0V

XC1 & XC2 : 0.8V

DN : 3.0V

DP : 0.0V

SW1 & SW2 : 3.0V

(3)尾部的挖槽可以在焊接完成后剪掉,金属化侧边就是触摸区域,也可以保留当挂绳孔

(4)3D外壳的后盖打印白色或者透明的,不确定黑色能不能透光。

参考资料:

[1]开源资料https://oshwhub.com/madoka/opensk-nrf52840-mini

— 完 —

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Cadence IC616及MMSIM141在CentOS5.11安装图文实录
HTC官方解锁(s
【神器之CAD2018】express tools汉化补丁(内含cad2010,2014,2015)...
【神器】CAD隐藏的这个工具你肯定没用过!(内附安装汉化教程)
windows下的基于Eclipse的STM32开发调试环境搭建
详解使用 fastboot 为 Android 刷入原厂镜像
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服