V2EX ysmood
ysmood

ysmood

V2EX 第 39678 号会员,加入于 2013-05-25 17:38:08 +08:00
根据 ysmood 的设置,主题列表被隐藏
二手交易 相关的信息,包括已关闭的交易,不会被隐藏
ysmood 最近回复了
345 天前
回复了 NerdHND 创建的主题 React Zustand 的文件组织?
我也是头疼 zustand 的文件组织和冗长代码,于是最近自己写了个库 stalo 。我写了个 todo app 用来演示如何将一个 store 分割成逻辑隔离的多个文件: https://github.com/ysmood/stalo/tree/main/examples/TodoApp

从目前我自己的使用来看,各项指标都由于 zustand ,我甚至用 stalo 写了个 devtools 来 debug stalo 自己: https://stalo-examples.vercel.app/examples/Devtools.tsx
2024-06-19 14:16:16 +08:00
回复了 0o0O0o0O0o 创建的主题 分享创造 vaultwarden 备份思路之再也不改版
@kuanat 可以试试这个,比 gpg 更简单方便 https://github.com/ysmood/whisper
2024-01-04 12:12:37 +08:00
回复了 ysmood 创建的主题 分享创造 利用 github id 加密隐私数据(测试送 100 元红包)
@chaoschick 这种工具之所以存在就是因为现有的很多系统功能不全,且不愿意花时间改进,比如 V2EX 就没法私信,这个时候有这种工具就会方便点,你如果不用类似工具,请问 v 站里两个陌生人在不暴露自己隐私的情况下如何交换邮箱互加好友?你可能可以,但是会很麻烦
2024-01-04 11:48:24 +08:00
回复了 ysmood 创建的主题 分享创造 利用 github id 加密隐私数据(测试送 100 元红包)
@chaoschick 你可以看看 age 这个工具 https://github.com/FiloSottile/age 被非常多的库依赖了,你可能不太能理解它的用途,但事实上用的人非常多。
2024-01-03 14:14:35 +08:00
回复了 ysmood 创建的主题 分享创造 利用 github id 加密隐私数据(测试送 100 元红包)
> 第二个问题,似乎你没有理解第一个攻击例子的场景:A 要和 B 说话,B 选择去听任何人的话,M 达成的效果是 M 不知道 A 想说什么,但是让 B 以为 M 说了 A 本来要说的话。B 是用 M 的公钥验证的。

你都不在乎谁发给信息了如何防止中间人攻击?

> 通行的做法是归约,你的算法可以看作某种安全性的 KEM 和 CPA 安全的私钥加密和签名的复合,无法推出第一个例子下的安全性。

就和你说的一样,这不是 whisper 想要解决的问题,这更像是 ssl 之类的需要考虑的问题。使用 whisper 的人大大概率不会考虑中间人攻击的问题,所以 sign 是可选的否则我就设置成必选的了。
2024-01-03 12:16:09 +08:00
回复了 ysmood 创建的主题 分享创造 利用 github id 加密隐私数据(测试送 100 元红包)
@Senorsen #22

> 谢谢回答,不过我的问题在于,只使用“加密”是不需要私钥的,只需要拉取 GitHub 上目标用户的公钥,因此无条件启动 agent 的行为比较怪。

多谢,这是个很好的建议,我把它改成只有需要的时候才启动好了。
加 sign 或者解密的时候都需要 passphrase ,非常常用。我建议是即使是发送的时候也加个 sign ,更安全。
2024-01-03 12:09:45 +08:00
回复了 ysmood 创建的主题 分享创造 利用 github id 加密隐私数据(测试送 100 元红包)
@geelaw #25

> 但是这会导致没有选择超过 128 位密钥的意义,限制了最大安全性。

openssl 默认用的 128bit ,在 whisper 的使用场景已经够安全了,因为这个 aes key 只会被使用一次就扔了。我加了个选项: https://github.com/ysmood/whisper/blob/86d93ffbb3897d1739664da5597f6b85d1045be4/lib/piper/encodings.go#L74-L75

> 第二个问题,对密文签名只能保证密文“被谁同意”,不能保证明文来自于谁,也不能保证密文在加密结束之后没有被“有意义地修改过”,后者是选择密文安全性的要求。

whisper 没有这个问题,readme 里已经说明了 sign 验证需要显示声明发件人的 github id 用以验证,否则你就不在乎被篡改。你不可能再签名的,验证会失败。

> 除非收信人只收取某个特定的人(以签名所用的公钥识别)的信息(因此 M 重新签名不会被接受),否则上述场景可以成立。

和上一个问题一样。

> 但如果收信人只收取特定人的信息,则没必要每次通信都用公钥加密。

这也不是安全问题,只是某种大部分人不在乎的性能优化,whisper 的使用场景是单次的无状态通信。
2024-01-03 10:49:26 +08:00
回复了 LonnyWong 创建的主题 程序员 我把开源 README 又改成英文了
还是依赖了 ssh-agent 服务吗?也就是如果没装 ssh 就没法用 agent 吗?
2024-01-02 20:04:59 +08:00
回复了 ysmood 创建的主题 分享创造 利用 github id 加密隐私数据(测试送 100 元红包)
@geelaw #24

> 你的第一段回复表明确实弄混了块长度和密钥长度,AES 的块长度永远是 128 位,密钥有三种长度。不存在“选择”块长度这种操作,因为没的可选。

我意思是保证不论使用什么长度的 secret ,最终都是使用 AES-128 ,这是 golang 的标准库规定的用法。抱歉没有很专业的表达我的意思,我这里并不在乎块的长度。所以我这个操作又安全风险吗?


> 第二段回复表明没理解什么是选择密文安全性。把公钥加密和 AES 以 OFB 模式(不是选择密文安全)结合时当然不可能期待选择密文安全性。

抱歉我理解错了你的意思,你意思就是信息可以被篡改吧?这个攻击又不可以破解具体内容。whisper 不是提供了 sign 吗,文档里最后有提到 sign 的用法,如果你觉得你的数据有被中间人篡改的风险,用 whisper 的 -s 参数就行了。
2024-01-02 17:10:45 +08:00
回复了 ysmood 创建的主题 分享创造 利用 github id 加密隐私数据(测试送 100 元红包)
@Senorsen 感谢试用!

> ssh 密钥确实也是个问题

关于选哪个 ssh 密匙一般不存在问题,大部分人机子里都有。而且可以加冒号选择某个 ssh pub key ,比如 "@ysmood:abc"

> 这密文还挺长的

密文已经很短了,你看 gpg 生成的比这可能长几倍。同类工具这个应该是最短的。

> 请教下为啥需要一个 background agent ?

因为 private key 通常是一个文件,任何系统里的 app 都可以读取到这个文件,这很不安全。所以一般都会用一个 passphrase 加密这个 private key ,只有用的时候才解密到内存里使用,这样任何系统里的 app 都没法获取真正的 private key 。但这会引入一个新问题,每次都输入 passphrase 非常麻烦,所以一般加密工具都会提供一个 agent 来缓存 passphrase 到内存,比如 ssh-agent ,这样只有重启电脑的时候才需要再输入一次。

这是一个非常通用的技巧,Apple 的 Touch ID 也是这样的,只不过它用了一个专用 chip 来缓存,掉电了就得重新输入 passcode 。
关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4439 人在线   最高记录 6679       Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 12ms UTC 01:03 PVG 09:03 LAX 18:03 JFK 21:03
Do have faith in what you're doing.
ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86