写点什么

Redpoint Games 推出 NPM 包签名工具

  • 2018-01-18
  • 本文字数:985 字

    阅读完需:约 3 分钟

看新闻很累?看技术新闻更累?试试下载 InfoQ 手机客户端,每天上下班路上听新闻,有趣还有料!

Redpoint 推出了 pkgsign,一个 NPM 的软件包签名和验证工具。它旨在确保上传至 NPM 注册表和从 NPM 注册表下载的包的真实性,从而提高安全性。

当你用 NPM 工作时,会出现一个潜在的安全问题,那就是包的作者无法验证。这意味着恶意软件包可以以合法软件的名义得以上传,反过来,任何依赖它的应用程序也可以照常执行这个软件包。

最近发生的一起事件证明了这点。当几个包从 NPM 注册表意外消失时,九个不知名的包被上传,取而代之。虽然这个问题现在已经解决了,但还是有一段空档期,在这期间,不可信的代码会被误用,就如同它们是合法的代码一样。

为了降低这种风险,Redpoint 推出了 pkgsign:

pkgsign 是一个工具,它能为 NPM 和 Yarn 包添加签名并使用已知签名来验证这些包。为了简化操作,pkgsign 还允许使用 PGP 私钥或 keybase.io 来签名包。

在安装 Keybase 和 pkgsign 之后,包作者可以导航到其软件包目录,并发出如下的命令来签署软件包:

pkgsign .在这个过程中,一个“signature.json”文件将被添加到包中,其他用户可以用这个文件来验证作者的真实性。

通过使用 Keybase,签名还可以连接到各种社交媒体帐户,这有助于进一步验证签名者的身份。同时,PGP 签名也是可用的,这意味着作为替代选择,大公司可以生成 PGP 密钥并将其上传到公共域。

要验证当前你正在处理的包的依赖包,你可以再次发出下面这条命令:

pkgsign verify .--full未来还将发布一个“代表签名”的功能。即使依赖项所有者本身未进行签名,这个功能也可以让软件包为其依赖包的内容签名。所以,它能够使包被完全签名。

需要指出的是,由于该工具仍然较新,所以有些软件包仍然没有用它进行签名:

目前 pkgsign 依赖于未签名的包(因为它还比较新!)。当你从 GitHub 或 NPM 安装 pkgsign 时,这些依赖包还不能得到验证。

如果 pkgsign 使用率增长,可能就会改变这一情况,但现在,建议你直接从 GitHub 克隆 pkgsign 项目,以确保你使用的是正确的版本。或者,你可以直接从 NPM 注册表中安装它,而不用签名。

查看英文原文 Redpoint Games Launch NPM Package Signing Tool


感谢冬雨对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2018-01-18 18:001561
用户头像

发布了 34 篇内容, 共 20.3 次阅读, 收获喜欢 47 次。

关注

评论

发布
暂无评论
发现更多内容

Vite 搭建 Vue2 项目(Vue2 + vue-router + vuex)

德育处主任

JavaScript Vue 大前端 vite

大数据训练营一期0718作业

朱磊

大数据训练营 -0718课后作业

cc

技术上的过度医疗

superman

过度设计 完美方案

Scrum Master的职责——《Scrum指南》重读有感(5)

Bruce Talk

Scrum 敏捷 随笔 Agile

OpenCV 形态学操作之腐蚀与膨胀,开运算与闭运算,顶帽与黑帽,图像梯度运算相关知识点回顾

梦想橡皮擦

python从入门到精通 7月日更

高基数数据特性是什么意思

HoneyMoose

OGC标准WMTS服务概念与地图商的瓦片编号流派-web地图切片加载

zhoulujun

GIS 瓦片地图 地图瓦片服务 WMTS

构建高效Presubmit卡点,落地测试左移最佳实践

大卡尔

ci 测试左移 Presubmit

没有隐私计算,区块链这个美丽的梦想就不能落地

CECBC

web自动化测试(3):web功能自动化测试selenium基础课

zhoulujun

自动化测试 selenium UI测试 界面测试

架构实战营 - 模块三作业

思梦乐

究竟有没有世界上最好的编程语言?

escray

学习 极客时间 朱赟的技术管理课 7月日更

MySQL事务初始

卢卡多多

MySQL 事务 7月日更

赶紧收藏!花了1万多买的软件测试教程全套,包含所有软件测试工程师全栈知识点(功能测试理论基础+接口测试+Python自动化+持续集成+性能测试+测试开发+面试简历)软件测试项目实战+训练营学习教程持

程序员阿沐

Python 软件测试 自动化测试 接口测试 测试用例

使用MLlib进行机器学习(十-上)

Databri_AI

机器学习 spark 线性回归

Fact Table 数据表什么意思

HoneyMoose

网络攻防学习笔记 Day85

穿过生命散发芬芳

网络攻防 7月日更

我不会写代码,但我能做系统

明道云

架构实战营 - 模块三作业

李东旭

「架构实战营」

web自动化测试(1):再谈UI发展史与UI、功能自动化测试

zhoulujun

大前端 自动化测试 UI自动化测试 web测试

在线诉讼区块链证据规则的理论逻辑与制度体系

CECBC

挑选TOP10关键时刻的九大原则

石云升

读书笔记 用户体验 商业洞察 7月日更 体验设计

Linux之wc命令

入门小站

Linux

基于 Blazor 打造一款实时字幕

newbe36524

ASP.NET Core dotnet blazor

架构实战营 模块8 作业

Geek_8c5f9c

#架构实战营

禁止在构造函数里调用虚函数

喵叔

7月日更

架构实战营模块三作业

老猎人

架构实战营

web自动化测试(2):选择selenium优势?与PhantomJS/QTP/Monkey对比

zhoulujun

自动化测试 web测试 UI测试 界面测试 页面测试

Flutter 命令本质之 Flutter tools 机制源码深入分析

工匠若水

flutter android dart Gradle

在线QuartzCron定时任务表达式在线生成

入门小站

工具

Redpoint Games推出NPM包签名工具_安全_Andrew Morgan_InfoQ精选文章