首页 > 其他分享 >Schmidt-Samoa密码系统

Schmidt-Samoa密码系统

时间:2023-01-24 22:55:14浏览次数:49  
标签:Samoa mathrm bmod 密码 mod Schmidt pubkey equiv

Schmidt-Samoa密码系统

Schmidt-Samoa密码系统,像rabin加密一样,其安全性基于整数因式分解的难度。但 Rabin 解密时会得到四个解,而 Schmidt-Samor 得到的是唯一解。

密钥生成

1.选取两个大的质数 \(p\) 和 \(q\) 并进行计算 $N = p^2 q $

2.计算 \(d = invert(N,\phi(p*q))\)

加密

对消息m,计算密文 \(C = m^N mod \;N\)

解密

计算明文,\(m = C^d mod (p*q)\)

举例:

  • p = 7 , q = 11,N = \(p^2*q\) = 539,d = \(N^{-1}\) \(mod lcm (p-1,q-1)\) = 29
  • m =32,c = \(m^N mod \;N\) = 373

验证:

  • m = \(c^d mod\;p*q\) = \(373^{20}mod\;77\) = 32

关于获取pq的问题

由$N = p^2 q \(,\)dN = 1 mod;(p-1)(q-1)$,通过欧拉定理可以得到:

\(\mathrm{a}^{(\mathrm{p}-1)(\mathrm{q}-1)} \equiv 1 \bmod \mathrm{p*q}\)

所以:

\(\mathrm{a}^{\mathrm{N} * \mathrm{~d}}=\mathrm{a}^{1+\mathrm{k} *(\mathrm{q}-1)(\mathrm{p}-1)} \equiv \mathrm{a} * \mathrm{a}^{\mathrm{k} *(\mathrm{q}-1)(\mathrm{p}-1)}=\mathrm{a} \bmod \mathrm{p*q}\)

所以:

\(\begin{array}{l} \mathrm{k} * \mathrm{p*q}=\mathrm{a}^{\mathrm{N} * \mathrm{~d}}-\mathrm{a} \\ \mathrm{p*q}=\operatorname{gcd}\left(\mathrm{a}^{\mathrm{N} * \mathrm{~d}}-\mathrm{a}, \mathrm{N}\right) \end{array}\)

因为 a 的取值可以是 $ a=2,3,4,5 \ldots$ , 这里方便计算我们取 2

例题:

[GUET-CTF2019]Uncle Sam

题目:

from Crypto.Util.number import *

def generkey(k):
	p, q = getPrime(k), getPrime(k)
	pubkey = p**2 * q
	n = pubkey
	l = (p-1)*(q-1) / gcd(p-1, q-1)
	privkey = inverse(n, l)
	return pubkey, privkey

def encrypt(m, pubkey):
	return pow(bytes_to_long(m), pubkey, pubkey)


# pubkey =  2188967977749378274223515689363599801320698247938997135947965550196681836543275429767581633044354412195352229175764784503562989045268075431206876726265968368605210824232207290410773979606662689866265612797103853982014198455433380266671856355564273196151136025319624636805659505233975208570409914054916955097594873702395812044506205943671404203774360656553350987491558491176962018842708476009578127303566834534914605109859995649555122751891647040448980718882755855420324482466559223748065037520788159654436293431470164057490350841209872489538460060216015196875136927502162027562546316560342464968237957692873588796640619530455268367136243313422579857823529592167101260779382665832380054690727358197646512896661216090677033395209196007249594394515130315041760988292009930675192749010228592156047159029095406021812884258810889225617544404799863903982758961208187042972047819358256866346758337277473016068375206319837317222523597
# privkey = 1430375790065574721602196196929651174572674429040725535698217207301881161695296519567051246290199551982286327831985649037584885137134580625982555634409225551121712376849579015320947279716204424716566222721338735256648873164510429206991141648646869378141312253135997851908862030990576004173514556541317395106924370019574216894560447817319669690140544728277302043783163888037836675290468320723215759693903569878293475447370766682477726453262771004872749335257953507469109966448126634101604029506006038527612917418016783711729800719387298398848370079742790126047329182349899824258355003200173612567191747851669220766603
# enc = 1491421391364871767357931639710394622399451019824572362288458431186299231664459957755422474433520889084351841298056066100216440853409346006657723086501921816381226292526490195810903459483318275931326433052468863850690793659405367902593999395060606972100169925074005992478583035226026829214443008941631771292291305226470216430735050944285543542354459162474346521327649934512511202470099020668235115245819634762067338432916012664452035696422865651002305445711778476072004708256200872226475346448360491248823843688268126341094612981308791499434770936360676087490303951728563482686307164877000300082742316368597958297217061375140696272398140310043942637287763946305961019518639745426370821124559939597559475362769382796386720030343305889701616194279058139516811941262747298761646317383112470923295543635754747288259324745583689440061956478083777663996487389553238481759103908588004219390662578446313004404784835263543083088327198

注意到 $ l=\operatorname{lcm}(p-1, q-1) $, 并且还给出了私钥 $ d $ 值位 $n $模 $l $ 下的逆元。查阅了相关资料,可 以得知这是$Schmidt-Samoa \(公钥密码体系。 这一加密体系中,加密过程是\) c \equiv m^{n}(\bmod n) \(,而解密函数则是\) m \equiv c^{d}(\bmod p q) $
下面简单地证明一下:
已知

\(\phi(n)=\phi\left(p^{2} q\right)=p(p-1)(q-1)\)

由费马小定理,可以推出

\(a^{p(p-1)(q-1)} \equiv 1 \quad(\bmod n)\)

又因为

\(d n \equiv 1 \quad(\bmod (p-1)(q-1))\)

所以

\(a^{n d} \equiv a^{n d} \bmod ((p-1)(q-1)) \equiv a\)

所以

\(a^{n d}-a \equiv 0 \quad(\bmod p q)\)

因此

\(p q=\operatorname{gcd}\left(a^{n d}-a, n\right)\)

由于 $a $ 是任意的数字,因此我们可以取$ a=2,3,4 \ldots $ 均可, 为方便起见这里取$ 2$

解题EXP:

from gmpy2 import*
from libnum import*

N =  2188967977749378274223515689363599801320698247938997135947965550196681836543275429767581633044354412195352229175764784503562989045268075431206876726265968368605210824232207290410773979606662689866265612797103853982014198455433380266671856355564273196151136025319624636805659505233975208570409914054916955097594873702395812044506205943671404203774360656553350987491558491176962018842708476009578127303566834534914605109859995649555122751891647040448980718882755855420324482466559223748065037520788159654436293431470164057490350841209872489538460060216015196875136927502162027562546316560342464968237957692873588796640619530455268367136243313422579857823529592167101260779382665832380054690727358197646512896661216090677033395209196007249594394515130315041760988292009930675192749010228592156047159029095406021812884258810889225617544404799863903982758961208187042972047819358256866346758337277473016068375206319837317222523597
#N = p^2*q
d = 1430375790065574721602196196929651174572674429040725535698217207301881161695296519567051246290199551982286327831985649037584885137134580625982555634409225551121712376849579015320947279716204424716566222721338735256648873164510429206991141648646869378141312253135997851908862030990576004173514556541317395106924370019574216894560447817319669690140544728277302043783163888037836675290468320723215759693903569878293475447370766682477726453262771004872749335257953507469109966448126634101604029506006038527612917418016783711729800719387298398848370079742790126047329182349899824258355003200173612567191747851669220766603
c = 1491421391364871767357931639710394622399451019824572362288458431186299231664459957755422474433520889084351841298056066100216440853409346006657723086501921816381226292526490195810903459483318275931326433052468863850690793659405367902593999395060606972100169925074005992478583035226026829214443008941631771292291305226470216430735050944285543542354459162474346521327649934512511202470099020668235115245819634762067338432916012664452035696422865651002305445711778476072004708256200872226475346448360491248823843688268126341094612981308791499434770936360676087490303951728563482686307164877000300082742316368597958297217061375140696272398140310043942637287763946305961019518639745426370821124559939597559475362769382796386720030343305889701616194279058139516811941262747298761646317383112470923295543635754747288259324745583689440061956478083777663996487389553238481759103908588004219390662578446313004404784835263543083088327198

pq = gcd(pow(2,d*N,N)-2,N)

m = pow(c,d,pq)
print(n2s(m))

标签:Samoa,mathrm,bmod,密码,mod,Schmidt,pubkey,equiv
From: https://www.cnblogs.com/vconlln/p/17066497.html

相关文章

  • B站青少年模式忘记密码怎么解决(非官网解决方法)
    B站青少年模式忘记密码了管不了,点了忘记密码之后发现只有身份验证或者申诉的方法,感觉非常麻烦。我尝试卸载重装也没用,于是经过搜索,发现了以下解决方法,亲测有用。步骤如下:......
  • 如何给硬盘加密码
    打开电脑的计算机,找到想要加密的磁盘,比如给某盘进行加密,直接在某盘上单击鼠标右键,然后选择启用Bitlocker,选择启用密码解锁驱动器,为了防止以后忘了密码,出现无法访问磁盘的......
  • 如何重置Debian 10系统的root登录密码.Debian 10 默认密码是debia
    谜底就在谜面上,密码是debian如何重置Debian10系统的root登录密码.Debian10默认密码是debian 在这个简短的教程中,您将学习如何在Debian10服务器的系统中重设忘记......
  • 基本密码类型及特征----2023.1.22
    1,md5特征:阿拉伯数字和大小写英文26个字母2,当铺密码特征:将中文和数字进行转化的密码 ,算法相当简单:当前汉字有多少笔画出头,就是转化成数字几。转化密文:王夫井工夫......
  • Mysql8开启root远程并设置访问密码
    和旧版本设置,有点不一样mysql-urootmysql>usemysql;#查看user表信息,注意密码字段已改为autentication_stringmysql>selectuser,host,authentication_string......
  • 2299. 强密码检测器(LeetCode)
    #19/01/2023.2299题classSolution:defstrongPasswordCheckerII(self,password:str)->bool:iflen(password)<8:returnFalse......
  • 力扣每日一题2023.1.19---2299. 强密码检验器 II
    如果一个密码满足以下所有条件,我们称它是一个强 密码:   它有至少8 个字符。   至少包含一个小写英文 字母。   至少包含一个大写英文 字母。   至......
  • 直播开发app,MySQL8修改root密码加密方式
    直播开发app,MySQL8修改root密码加密方式第一步:进入mysql #连接mysqlmysql-uroot-p#选择mysql数据库usemysql;​第二步:修改用户密码加密方式,密码可以和原来的相同......
  • 基本密码类型及特点--2023.1.18
    1,base16特征:base16就是16进制转ASCII问题base16中只有数字0-9以及大写字母ABCDEF 2,base32特征:base32编码是由大写字母(A-Z)和数字234567组成与base64类似转化密......
  • PIPOJ 破译密码
    题目描述据说最早的密码来自于罗马的凯撒大帝。消息加密的办法是:对消息原文中的每个字母,分别用该字母之后的第5个字母替换(例如:消息原文中的每个字母A 都分别替换成字......