一、前言最近在刷CryptoHack的密码学题库椭圆曲线密码ECC作为CTF Crypto板块必考、高频、基础的知识点是入门密码学的重中之重。很多新手刚接触ECC时会被椭圆曲线的公式、模运算、点加法规则绕晕尤其是有限域下的椭圆曲线运算和数学课本中的曲线运算完全不同。今天以CryptoHack ECC板块第一道Point Addition点加法 真题为例从零拆解ECC有限域点加法原理、运算公式、解题思路附可直接运行的Python源码帮大家彻底吃透ECC最核心的基础运算。二、题目信息CryptoHack原题1. 题目场景本题为ECC基础入门题核心考察有限域GF(p)下的椭圆曲线两点加法运算无复杂绕过、无高阶漏洞纯粹考察公式掌握和代码实现能力。2. 题目参数标准椭圆曲线通用公式y^2 x^3 ax b \pmod p题目给定参数- 大质数模数 p 31- 曲线参数 a 2 b 6- 参与运算的两个点- 点 P(5,9)- 点 Q(16,29)题目要求计算有限域下 PQ 的坐标输出结果即为题目Flag。3. 前置校验曲线合法性椭圆曲线需满足非奇异条件4a^327b^2 \not\equiv 0 \pmod p代入参数计算4\times2^327\times6^24\times827\times363297210041004 \bmod 31 \neq 0曲线合法无奇异点可正常进行点运算。三、核心知识点有限域ECC点加法规则椭圆曲线在有限域GF(p) 中点加法分为两点不同、两点相同倍点、无穷远点三种情况本题为两个不同普通点相加适用以下公式。条件已知 P(x_1,y_1)、Q(x_2,y_2)且 P\neq Q、均非无穷远点1. 计算斜率k有限域中除法等价于乘以模逆元公式k \frac{y_2-y_1}{x_2-x_1} \pmod p等价写法k (y_2-y_1) \times (x_2-x_1)^{-1} \pmod p2. 计算新点横坐标x3x_3 k^2 - x_1 - x_2 \pmod p3. 计算新点纵坐标y3y_3 k(x_1-x_3) - y_1 \pmod p核心注意点所有运算必须全程模p负数需要做模p转正处理这是新手最容易出错的地方四、手动分步演算吃透公式我们先手动计算一遍理解每一步运算逻辑再写代码自动化求解。已知参数p31,a2,b6P(5,9),Q(16,29)步骤1计算分子分母y_2-y_129-920x_2-x_116-511步骤2求模逆元求 11 在模 31 下的逆元即满足 11\times x \equiv1 \pmod{31}通过拓展欧几里得算法可得11^{-1} \bmod3117校验11\times17187187\bmod311逆元正确步骤3计算斜率kk20 \times17 \pmod{31}340 \pmod{31}31\times10310340-31030即 k30步骤4计算x3x_330^2-5-16 \pmod{31}900-21 \pmod{31}879 \pmod{31}计算得x_310步骤5计算y3y_330\times(5-10)-9 \pmod{31}30\times(-5)-9 \pmod{31}-150-9-159 \pmod{31}负数转正-159 6\times31 -15918627最终得y_327手动运算结果PQ(10,27)五、Python自动化解题代码手动计算适合理解原理刷题实战中统一使用代码运算高效且零出错。代码内置拓展欧几里得求逆元、模运算转正适配所有同类型ECC点加法题目。python# 拓展欧几里得算法 求模逆元def modinv(a, p):g, x, y extended_gcd(a, p)return x % pdef extended_gcd(a, b):if a 0:return b, 0, 1else:gcd, x, y extended_gcd(b % a, a)return gcd, y - (b // a) * x, x# 题目参数p 31a 2b 6x1, y1 5, 9x2, y2 16, 29# ECC不同点加法运算# 计算斜率分子分母dy (y2 - y1) % pdx (x2 - x1) % p# 求斜率kk (dy * modinv(dx, p)) % p# 计算新点坐标x3 (pow(k, 2, p) - x1 - x2) % py3 (k * (x1 - x3) - y1) % pprint(fP Q ({x3}, {y3}))运行结果plaintextP Q (10, 27)与手动演算结果完全一致题目Flag即为坐标 10,27 。六、新手易错点总结刷这道基础题时90%的新手会踩以下坑特此总结1. 忘记全程模p有限域所有加减乘除运算结果必须模质数p否则数值偏差极大2. 负数未转正模运算出现负数时必须 %p 转正负数坐标在ECC中不合法3. 混淆点加法与倍点公式两点不同用本文公式两点重合PP需用倍点斜率公式 k(3x^2a)/2y4. 普通除法代替逆元有限域无除法必须用模逆元实现除法运算七、知识点拓展1. 本题是ECC最基础的点加法在此基础上可延伸倍点运算、标量乘法kP是ECDLP椭圆曲线离散对数问题的核心基础2. ECC加密、解密、签名、密钥交换底层全部依赖有限域点运算3. CryptoHack ECC题库的进阶题目离散对数、参数泄露、弱曲线均建立在本题基础知识点之上八、总结这道Point Addition题目是ECC学习的入门敲门砖看似简单却涵盖了有限域运算、模逆元、椭圆曲线核心运算三大核心密码学知识点。掌握本题后大家可以彻底理解为什么ECC加密安全性高、为什么模运算贯穿ECC全程、有限域曲线运算的特殊规则。后续会持续更新CryptoHack ECC进阶题型倍点、离散对数、参数攻击的解题复盘新手可收藏学习原创不易点赞收藏一起从零通关CTF椭圆曲线密码学
CryptoHack椭圆曲线ECC入门
发布时间:2026/7/9 9:07:15
一、前言最近在刷CryptoHack的密码学题库椭圆曲线密码ECC作为CTF Crypto板块必考、高频、基础的知识点是入门密码学的重中之重。很多新手刚接触ECC时会被椭圆曲线的公式、模运算、点加法规则绕晕尤其是有限域下的椭圆曲线运算和数学课本中的曲线运算完全不同。今天以CryptoHack ECC板块第一道Point Addition点加法 真题为例从零拆解ECC有限域点加法原理、运算公式、解题思路附可直接运行的Python源码帮大家彻底吃透ECC最核心的基础运算。二、题目信息CryptoHack原题1. 题目场景本题为ECC基础入门题核心考察有限域GF(p)下的椭圆曲线两点加法运算无复杂绕过、无高阶漏洞纯粹考察公式掌握和代码实现能力。2. 题目参数标准椭圆曲线通用公式y^2 x^3 ax b \pmod p题目给定参数- 大质数模数 p 31- 曲线参数 a 2 b 6- 参与运算的两个点- 点 P(5,9)- 点 Q(16,29)题目要求计算有限域下 PQ 的坐标输出结果即为题目Flag。3. 前置校验曲线合法性椭圆曲线需满足非奇异条件4a^327b^2 \not\equiv 0 \pmod p代入参数计算4\times2^327\times6^24\times827\times363297210041004 \bmod 31 \neq 0曲线合法无奇异点可正常进行点运算。三、核心知识点有限域ECC点加法规则椭圆曲线在有限域GF(p) 中点加法分为两点不同、两点相同倍点、无穷远点三种情况本题为两个不同普通点相加适用以下公式。条件已知 P(x_1,y_1)、Q(x_2,y_2)且 P\neq Q、均非无穷远点1. 计算斜率k有限域中除法等价于乘以模逆元公式k \frac{y_2-y_1}{x_2-x_1} \pmod p等价写法k (y_2-y_1) \times (x_2-x_1)^{-1} \pmod p2. 计算新点横坐标x3x_3 k^2 - x_1 - x_2 \pmod p3. 计算新点纵坐标y3y_3 k(x_1-x_3) - y_1 \pmod p核心注意点所有运算必须全程模p负数需要做模p转正处理这是新手最容易出错的地方四、手动分步演算吃透公式我们先手动计算一遍理解每一步运算逻辑再写代码自动化求解。已知参数p31,a2,b6P(5,9),Q(16,29)步骤1计算分子分母y_2-y_129-920x_2-x_116-511步骤2求模逆元求 11 在模 31 下的逆元即满足 11\times x \equiv1 \pmod{31}通过拓展欧几里得算法可得11^{-1} \bmod3117校验11\times17187187\bmod311逆元正确步骤3计算斜率kk20 \times17 \pmod{31}340 \pmod{31}31\times10310340-31030即 k30步骤4计算x3x_330^2-5-16 \pmod{31}900-21 \pmod{31}879 \pmod{31}计算得x_310步骤5计算y3y_330\times(5-10)-9 \pmod{31}30\times(-5)-9 \pmod{31}-150-9-159 \pmod{31}负数转正-159 6\times31 -15918627最终得y_327手动运算结果PQ(10,27)五、Python自动化解题代码手动计算适合理解原理刷题实战中统一使用代码运算高效且零出错。代码内置拓展欧几里得求逆元、模运算转正适配所有同类型ECC点加法题目。python# 拓展欧几里得算法 求模逆元def modinv(a, p):g, x, y extended_gcd(a, p)return x % pdef extended_gcd(a, b):if a 0:return b, 0, 1else:gcd, x, y extended_gcd(b % a, a)return gcd, y - (b // a) * x, x# 题目参数p 31a 2b 6x1, y1 5, 9x2, y2 16, 29# ECC不同点加法运算# 计算斜率分子分母dy (y2 - y1) % pdx (x2 - x1) % p# 求斜率kk (dy * modinv(dx, p)) % p# 计算新点坐标x3 (pow(k, 2, p) - x1 - x2) % py3 (k * (x1 - x3) - y1) % pprint(fP Q ({x3}, {y3}))运行结果plaintextP Q (10, 27)与手动演算结果完全一致题目Flag即为坐标 10,27 。六、新手易错点总结刷这道基础题时90%的新手会踩以下坑特此总结1. 忘记全程模p有限域所有加减乘除运算结果必须模质数p否则数值偏差极大2. 负数未转正模运算出现负数时必须 %p 转正负数坐标在ECC中不合法3. 混淆点加法与倍点公式两点不同用本文公式两点重合PP需用倍点斜率公式 k(3x^2a)/2y4. 普通除法代替逆元有限域无除法必须用模逆元实现除法运算七、知识点拓展1. 本题是ECC最基础的点加法在此基础上可延伸倍点运算、标量乘法kP是ECDLP椭圆曲线离散对数问题的核心基础2. ECC加密、解密、签名、密钥交换底层全部依赖有限域点运算3. CryptoHack ECC题库的进阶题目离散对数、参数泄露、弱曲线均建立在本题基础知识点之上八、总结这道Point Addition题目是ECC学习的入门敲门砖看似简单却涵盖了有限域运算、模逆元、椭圆曲线核心运算三大核心密码学知识点。掌握本题后大家可以彻底理解为什么ECC加密安全性高、为什么模运算贯穿ECC全程、有限域曲线运算的特殊规则。后续会持续更新CryptoHack ECC进阶题型倍点、离散对数、参数攻击的解题复盘新手可收藏学习原创不易点赞收藏一起从零通关CTF椭圆曲线密码学