openai 套皮站的相关信息另建了一个 channel,发布更新信息,就不再在这里发了。这个频道还是专注做有价值信息的笔记,这是最后一条了。
前文介绍了 ECC 和 ECDH。本来想接着写一篇 ECDSA 和 Schnorr Signature 的笔记的,但是内容有点长,干脆写了篇博客,介绍 ECC、ECDH、ECDSA、Schnorr、MuSig。
因为最近薅到一些羊毛渠道,我在我的套皮站上也做了处理,请求会优先匹配到折扣最大的渠道上,近期各位充值用户的请求应该有很大概率能折扣甚至免费(可以看日志中的分组倍率)。无需任何改动,会根据我薅羊毛的情况动态调整。
首先,绘制一个扭曲的曲线。然后在这个曲线上定义一种名为加法的运算:
1. P 点和 Q 点相加: 绘制直线 PQ,得到和曲线的第三交点为 R,R 的 x 轴镜像点为结果。
2. P 点自己和自己相加: 绘制 P 点的切线,得到和曲线的交点 R,其镜像点为结果。
3. 定义零值为 y 轴的无穷远处,和零相加等于画一条垂直线。
如上我们定义了运算规则,接下来就是从曲线的点中选取一些点构成一个循环群。群就是一组满足相同规律的数的集合。循环群(cycle group)中存在一些本原元(primitive element),这些原元通过不断累加,可以遍历整个群。
形象地说,你找到一个本原元点(primitive element),然后不断地累加这个点,利用前文我们所介绍的加法运算,你其实就是在曲线上不断地跳跃,并最终会跳回起点。
ECC 加密算法中,就是构建这么一个曲线,它的循环群内的成员数量达到 2^100 次方,我们认为这个量级的数是无法靠暴力遍历破解的。这个曲线的每一个值是根据一个大素数的模的方程构建的,成员数量约等于这个素数的位数,一个 160-bits 的素数可以构建一个包含 2^160 个点的群。
然后给出这么一个公式
dP = T
。P 是一个 primitive element,它累加 d 次后会得到 T 点。P、T 是公钥,d 是私钥。这也是为什么 ECC 的私钥可以很短。也就是说,我公开展示最终的 T 点,但是不告诉你我跳跃了多少次。你是难以通过暴力遍历去求解 d 的。这个
dP = T
就是构建了一个离散对数问题(DLP),计算 dP 很简单,但是逆运算求算 d 很复杂,需要暴力搜索 2^100 的空间。既然利用 ECC 构建了 DLP,那么就可以利用 ECC 替换传统 DLP 问题,比如 Diffie-Hellman 密钥交换算法,现在可以重构为基于 ECC 的 ECDH 算法。
Alice 和 Bob 都确认一个曲线和一个 primitive element P。然后双方各自生成一个 d,然后交换计算结果 dP。拿到对方的 dP 后再乘上自己的 d,就会得到一个相同的 T。窃听者能拿到曲线、P、d_alice*P 和 d_bob*P,但是他无法逆向求解 d_alice 和 d_bob,所以无法破解最终的 T。
PS: 所有的 DHKX 算法,都难以防御中间人攻击(MITM attack),即攻击者可以篡改通信,同时和双方握手。解决办法是引入数字证书,对对方的公钥进行签名。
PS: 安全的椭圆曲线是很难绘制的,一般参考 NIST 的推荐。 #crypto
next: https://t.me/laiskynotes/173
https://youtu.be/r0Ji7KqqEqg?si=Dobd3qPl8BW8zZHm Hostomel 之战的详细解释。实际上俄军 VDV 强袭机场得手后,当天下午就被包围了。乌军的炮击破坏了机场设施,使得 18 架次的后续增援部队无法降落。
我觉得降落了估计也不会有特别大的影响,毕竟俄军主力很快就从北方推进到了此处,然而除了搞个 bucha 大屠杀外再也无所作为。
我觉得降落了估计也不会有特别大的影响,毕竟俄军主力很快就从北方推进到了此处,然而除了搞个 bucha 大屠杀外再也无所作为。
https://laisky.notion.site/Anonymous-Credential-Part-2-Selective-Disclosure-and-CL-Signature-4e88462949764a579222d810c614842a
想象这么一个场景,政府给你签发了身份证,政府为这个证件背书上面的信息都是真实有效的。
然后你为了上某 X 网站,需要证明你已经年满 18 岁。于是你把身份证信息加密后上传给网站,然后选择只披露其中的姓名和年龄属性。网站通过签名验证这个身份信息确实是由政府颁发的,其中的信息真实可靠,而且证件上的年龄显示你已经年满 18 岁,而证件上的其他信息都对网站不可见。
在上述流程中,政府(issuer)为你(holder)签发了信息,你选择将部分信息披露给网站(verifier)。这就是 Anonymous Credential(Anoncred)或称为 Attribute-based Credential(ABC)。
这一算法的特点包括:
1. issuer 可以使用一对公私钥,签发 K 组信息。
2. holder 可以选择性地披露 N 组信息(N<=K)。
3. verifier 可以通过 issuer 的公钥验证 holder 所披露的信息的有效性。
穿插提一下密码学中的 Commitment Schema。Alice 可以对一个未披露的 Message 声明 Commitment,Bob 可以保留这一 Commitment,直到 Alice 披露 Message 后,Bob 可以验证这一 Message 是否与 Commitment 一致。结合前面所提的 ABC,其实就是一个 Commitment Schema,Issuer 为 Holder 的信息背书(statement signature),Verifier 需要 Holder 披露信息后才能验证真实性。
最简单的实现就是基于 RSA 的 CL Signature,更多细节可点击查看: https://telegra.ph/CL-Signature-02-26-2 #crypto
next:
- ECC & ECDSA & ECDH
- AC & ZKP
想象这么一个场景,政府给你签发了身份证,政府为这个证件背书上面的信息都是真实有效的。
然后你为了上某 X 网站,需要证明你已经年满 18 岁。于是你把身份证信息加密后上传给网站,然后选择只披露其中的姓名和年龄属性。网站通过签名验证这个身份信息确实是由政府颁发的,其中的信息真实可靠,而且证件上的年龄显示你已经年满 18 岁,而证件上的其他信息都对网站不可见。
在上述流程中,政府(issuer)为你(holder)签发了信息,你选择将部分信息披露给网站(verifier)。这就是 Anonymous Credential(Anoncred)或称为 Attribute-based Credential(ABC)。
这一算法的特点包括:
1. issuer 可以使用一对公私钥,签发 K 组信息。
2. holder 可以选择性地披露 N 组信息(N<=K)。
3. verifier 可以通过 issuer 的公钥验证 holder 所披露的信息的有效性。
穿插提一下密码学中的 Commitment Schema。Alice 可以对一个未披露的 Message 声明 Commitment,Bob 可以保留这一 Commitment,直到 Alice 披露 Message 后,Bob 可以验证这一 Message 是否与 Commitment 一致。结合前面所提的 ABC,其实就是一个 Commitment Schema,Issuer 为 Holder 的信息背书(statement signature),Verifier 需要 Holder 披露信息后才能验证真实性。
最简单的实现就是基于 RSA 的 CL Signature,更多细节可点击查看: https://telegra.ph/CL-Signature-02-26-2 #crypto
next:
- ECC & ECDSA & ECDH
- AC & ZKP
https://t.me/laiskynotes/64 ),就是需要客户端存储太多数量的 resident keys,这对于如 Yubikey 这样的 security keys 设备非常不友好,因为消费级 security keys 往往只有 10~20 个 private key slots。
https://laisky.notion.site/HD-Wallets-Explained-From-High-Level-to-Nuts-and-Bolts-44d109ed89e04bb79f993234f185848e?pvs=4
最近学习了 Hierarchical Deterministic Keys 结构。HD Keys 本质上是一种面向非对称密钥的 KDF(key derivation function)。它可以从一个 root private key 为根节点,通过添加一些 key material 生成新的 child key。
KDF 是一个确定性(deterministic)的函数,也就是相同的输出,始终能得出一样的结果。这一概念对于熟悉 KMS 的人而言并不陌生,其实所有的 KMS 都是只存储 master key 的。HD Keys 的主要特点就是支持了非对称密钥。
那么我们是否可以把 HD 和 passkey 结合起来,让用户只需要存储一个(或多个,增强安全性)root key,然后服务端存储 key derivation materials,这样用户依然可以做到不同网站使用不同的 child key,而同时又不需要存储大量的 resident keys?
#crypto
此前讨论过 passkey 的一个缺陷( https://laisky.notion.site/HD-Wallets-Explained-From-High-Level-to-Nuts-and-Bolts-44d109ed89e04bb79f993234f185848e?pvs=4
最近学习了 Hierarchical Deterministic Keys 结构。HD Keys 本质上是一种面向非对称密钥的 KDF(key derivation function)。它可以从一个 root private key 为根节点,通过添加一些 key material 生成新的 child key。
KDF 是一个确定性(deterministic)的函数,也就是相同的输出,始终能得出一样的结果。这一概念对于熟悉 KMS 的人而言并不陌生,其实所有的 KMS 都是只存储 master key 的。HD Keys 的主要特点就是支持了非对称密钥。
那么我们是否可以把 HD 和 passkey 结合起来,让用户只需要存储一个(或多个,增强安全性)root key,然后服务端存储 key derivation materials,这样用户依然可以做到不同网站使用不同的 child key,而同时又不需要存储大量的 resident keys?
#crypto
早上一来就修了个 bug。
Azure OAI 的响应格式有变化,以前可以通过 choices 为空来判定对话已结束。而现在 azure oai 会首先返回一个 choices 为空的响应(只包含 content filters 结果),会导致老程序误判会话已结束。
你需要 skip 这些 empty response,然后把有内容的响应拼接起来。我的套皮站最近可能遇到会话卡住没有响应的问题,就是这个原因,已修复。
如果各位有 azure oai 项目发现响应突然变成空了可以排查下…
Azure OAI 的响应格式有变化,以前可以通过 choices 为空来判定对话已结束。而现在 azure oai 会首先返回一个 choices 为空的响应(只包含 content filters 结果),会导致老程序误判会话已结束。
你需要 skip 这些 empty response,然后把有内容的响应拼接起来。我的套皮站最近可能遇到会话卡住没有响应的问题,就是这个原因,已修复。
如果各位有 azure oai 项目发现响应突然变成空了可以排查下…
https://telegra.ph/Attention-Mechanism-02-21
简要概括下 RNN、attention、transformer 的关系。
next: https://t.me/laiskynotes/184
简要概括下 RNN、attention、transformer 的关系。
next: https://t.me/laiskynotes/184
https://laisky.notion.site/GPL-_-_-_-1222f285a5f04fc98af34b10614feb7e?pvs=4
很多人转这篇《最高人民法院:这份判决给软件开发者吃了定心丸》,稍微去看了下,感觉有点标题党。
原告基于 GPLv2 的开源项目二次开发了闭源商业软件,使用 socket/commandline 规避了 GPLv2 感染。被告窃取了原告的非开源商业代码,狡辩称这是 GPL 代码,可以使用。法院支持了原告的诉求,认定侵权事实成立。
侵权是发生于非开源商业代码,其实感觉和 GPLv2 没啥关系,又不是支持了开源代码的权利声明,而只是支持了软著的权利,没什么说服力,跟各位开源开发者也没什么关系。
很多人转这篇《最高人民法院:这份判决给软件开发者吃了定心丸》,稍微去看了下,感觉有点标题党。
原告基于 GPLv2 的开源项目二次开发了闭源商业软件,使用 socket/commandline 规避了 GPLv2 感染。被告窃取了原告的非开源商业代码,狡辩称这是 GPL 代码,可以使用。法院支持了原告的诉求,认定侵权事实成立。
侵权是发生于非开源商业代码,其实感觉和 GPLv2 没啥关系,又不是支持了开源代码的权利声明,而只是支持了软著的权利,没什么说服力,跟各位开源开发者也没什么关系。
https://youtu.be/WXuK6gekU1Y?si=KnJ-WTTVCpgvEgT3
前阵子和人讨论 GPT 时聊到了 AlphaGo,我意识到我对 AlphaGo 不太了解,所以最近打算学习一下。而要了解 AlphaGo,首先都推荐观看这部纪录片。
2014 年深度学习(AlexNet)的论文发表,DeepMind 开始利用深度神经网络处理视频游戏,并很快转向了对围棋的研究。2015 年,DeepMind 邀请欧洲围棋冠军 Fan Hui 来到英国与 AlphaGo 对弈并全胜,这是围棋程序第一次战胜专业人类选手,Fan Hui 也以顾问的身份加入 AlphaGo。2016 年 DeepMind 前往韩国挑战世界冠军 Lee Sedol,并取得了四胜一负的成绩。这一系列的胜利引起了全球的关注,也让人们开始认识到了深度学习的威力。
值得注意的是,围棋的特色在于其近乎无穷的可能性,这也对应着近乎无穷的计算量,这使得围棋其实是一个直觉游戏(intuitive game),而不是一个需要深思熟虑的策略游戏(logic based game),毕竟任何所谓的深思熟虑在这无穷的可能性面前都是无谓的。专业棋手其实是通过记忆数以万计的棋谱来训练自己的直觉,然后使用直觉来对弈,这一训练方式和神经网络的工作原理非常相似,这也是深度神经网络最终能够击败人类的原因。
更多关于神经网络信息可以参考此前发过的介绍 GPT 的文: https://t.me/laiskynotes/144
我还在学习 AlphaGo 的论文,更多笔记日后再更新。
前阵子和人讨论 GPT 时聊到了 AlphaGo,我意识到我对 AlphaGo 不太了解,所以最近打算学习一下。而要了解 AlphaGo,首先都推荐观看这部纪录片。
2014 年深度学习(AlexNet)的论文发表,DeepMind 开始利用深度神经网络处理视频游戏,并很快转向了对围棋的研究。2015 年,DeepMind 邀请欧洲围棋冠军 Fan Hui 来到英国与 AlphaGo 对弈并全胜,这是围棋程序第一次战胜专业人类选手,Fan Hui 也以顾问的身份加入 AlphaGo。2016 年 DeepMind 前往韩国挑战世界冠军 Lee Sedol,并取得了四胜一负的成绩。这一系列的胜利引起了全球的关注,也让人们开始认识到了深度学习的威力。
值得注意的是,围棋的特色在于其近乎无穷的可能性,这也对应着近乎无穷的计算量,这使得围棋其实是一个直觉游戏(intuitive game),而不是一个需要深思熟虑的策略游戏(logic based game),毕竟任何所谓的深思熟虑在这无穷的可能性面前都是无谓的。专业棋手其实是通过记忆数以万计的棋谱来训练自己的直觉,然后使用直觉来对弈,这一训练方式和神经网络的工作原理非常相似,这也是深度神经网络最终能够击败人类的原因。
更多关于神经网络信息可以参考此前发过的介绍 GPT 的文: https://t.me/laiskynotes/144
我还在学习 AlphaGo 的论文,更多笔记日后再更新。