2021-01-30 AES加密算法笔记(一)

2021-02-03  本文已影响0人  胖渣大橘子

AES

异或对称加密

密钥

明文

密文

填充

原因

明文和秘文不等长没法执行异或运算

分组加密是:将明文分成多个等长的block模块,对每个模块分别加解密

最后一个明文block模块长度不足时,需要填充

分组加密方式

对称加密分组工作模式

ECB工作模式

CTR工作模式

完整性校验

hash函数

GCM工作模式就是 CTR模式加上GMAC完整性校验

GCM = CTR + GMAC

AES加解密步骤

AES(Advanced Encription Standard)

常用的填充算法:PKC57

常用的分组工作模式: GCM

AES的分组长度只能是16字节128位

AES 密钥长度(32位比特) 分组长度(32位比特) 加密轮数
AES=128 4 4 10
AES=192 6 4 12
AES=256 8 4 14

AES总体加密步骤

AES加密10轮步骤

密钥扩展(不是直接用密钥)

​ 异或

AES关键把密钥安全的传递给对方

非对称密码

每个参与方都有一对密钥

RSA过程

RSA算法共私钥的产生

1选择两个不同的质数p、q

2计算p、q的乘积n(明文小于n)

3计算n的欧拉函数

4 随机选择一个整数k

5计算k对于v的模反元素d

6 公钥(k,n)

7私钥(d,n)

RSA安全的原因

公钥是对外知道的

知道公钥就是知道(k,n) -> k就是一个随机数 n是两个质数p,q的乘积

​ ->v

​ ->v = (p-1)*(q-1),k 计算k对于v的模反元素d

​ ->(d,n)

难在n是一个大数,分解质因数n得到p,q会比较困难

安全性来源于对一个大数做因式分解特别困难。

RSA加密过程

opoen ssl 生成rsa公私钥

// 生成私钥
liuxiaoju@liuxiaojudeMBP EightLocks %
openssl genrsa -out private.pem
liuxiaoju@liuxiaojudeMBP EightLocks % cat /Users/liuxiaoju/Desktop/LagMonitor/EightLocks/EightLocks/private.pem
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAxH/E8JE00rifh0AI3eNlc52IMB8OfDts0ck3YsA+m3jKI3sG
M0lkQPvAHbTLlCetyc1BMt2x5RlhdBEt04BBC4TU2JAETJDZSxV3ovch1EnIEOPz
88WxXNvMLBvVwIjfFMyq0QE6MBClHAzc4U2v5oPLb2HwOwSpElimxghFT5IsVjL+
rRN1OxPhrn2mbmGySsvz7VLq0XijABXc6E05i3TnFI98hgK6RJuvpF7L6oVtgWkX
144hqrWI79UHFep8aO49VaaeMKYYzwdXHigyYTld9ehsAlvkdwGRRhp9I2XtAZrE
FHsqWHxQeydw1w+BaG/wRlhjoy/wyNC07GRSLwIDAQABAoIBAQC+ZQLhCgGB0Awb
E8vDm8s4XEKSRfVWIIpPN0WoNJg1MrPB7zlRxmISqRw8bGr5cfztVSlAbRkq4A3S
VbbugQ4FaD6IW/seaRdyrilOyWCI/riQzR8aa8pwLDTH5GyX8sccszcr7qF/4xDo
ffojgI/YrokWsnH/7YMY2Lc3mNn3vvp7t5lHcog6tP/Zj1hs9wVVFx4A5m71+O+l
ha4ul8wuM+7e1Uw/He02TntH/5quyOSThkz4fEUvxsmm8kY/8gCCdvCd85CkGkTW
V1MuIrbN7wpkZaytOZpb9f20rVwHrbR+IBKhrGIjpuhN9HSozo2t4DRt1dDwbvoK
AkwKf3L5AoGBAOtYKmR+v3uU3ZDufXjUy9uhvPrLbSafLKeqC4SCRElm9UliPaa6
qB6XprBU5GLad076fOAW17jszV1dxASFepi1HYoOhicCYLE2mwci1lvo0nXZVsw5
jNcwvKHj7qXJ2k/gdkc7fesTCXtWYW+VWNxtsSygTNATcT0+oHMVuMh7AoGBANW+
zu25Yo7lXh+jB7BRYWuujTBa2xqTix6dAiid71G4KEZUCz+bDoJr+cCE2tPSUMLr
SzZkGfuaShBRtHWqLT+AEeqdHM14iuUMDld3Wu3MMBgRWFZS9PDg+25rVqXsnPPJ
KYxRNu39SSXTRFTW3hcOIPb15RK3RgGjA0EMmcDdAoGAaPj6b7jZUBYmfe7iqHLC
O0T5NiRmm0OEd4SxfnlcXCFAZ2sadLPtKTgbcatr82veq6uu54VI04NMVsjsFdgz
xsmCU4IG9H9rAaCJpbU0R+qhdU9sF8vTtmhWux8f43MVnWtRVpSCpcfoAsuUymCj
Mi77SBx4JpeFevvkNXEK6uECgYEAnIHJXNHYc89I+xtRvu3nyoQWB6kPM8eDH1hR
w1HZcVnJy60wS1OK7T6IsknVPTKLRh4phVsIl20i/A4Hd/yygwOQmtyNwXmZIhuQ
yMSxRNu0/3p710GI7nOeRvy7hmTZi7vo+0BgWySSEes+5mwqVHFY+9uS7wBZd0tY
T6IdVtUCgYAlZdXIpVPX6l7mQfJk/swZrdKhqI1rr5ji5Tx2jyI8rE3bzz7LSJ3h
KGAxMGJnEAnH2PLW4w1xE9PnUw5U/bcyVMt7xHTUwUVsWDZaEE+Pr+4vFhKlVtsg
Ir2dkPM4OpRRVTj0D5bSQvIYBw9RKUMk1IjoafyeJepUh/V9lkCkZA==
-----END RSA PRIVATE KEY-----
// 生成对应私钥的公钥
openssl rsa -in private.pem -pubout -out public.pem
liuxiaoju@liuxiaojudeMBP EightLocks % cat public.pem

-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxH/E8JE00rifh0AI3eNl
c52IMB8OfDts0ck3YsA+m3jKI3sGM0lkQPvAHbTLlCetyc1BMt2x5RlhdBEt04BB
C4TU2JAETJDZSxV3ovch1EnIEOPz88WxXNvMLBvVwIjfFMyq0QE6MBClHAzc4U2v
5oPLb2HwOwSpElimxghFT5IsVjL+rRN1OxPhrn2mbmGySsvz7VLq0XijABXc6E05
i3TnFI98hgK6RJuvpF7L6oVtgWkX144hqrWI79UHFep8aO49VaaeMKYYzwdXHigy
YTld9ehsAlvkdwGRRhp9I2XtAZrEFHsqWHxQeydw1w+BaG/wRlhjoy/wyNC07GRS
LwIDAQAB
-----END PUBLIC KEY-----

私钥的编码格式

ASN.1

解码查看

openssl asn1parse -dump -in private.pem
    0:d=0  hl=4 l=1188 cons: SEQUENCE          
    4:d=1  hl=2 l=   1 prim: INTEGER           :00
    7:d=1  hl=4 l= 257 prim: INTEGER           :C47FC4F09134D2B89F874008DDE365739D88301F0E7C3B6CD1C93762C03E9B78CA237B0633496440FBC01DB4CB9427ADC9CD4132DDB1E5196174112DD380410B84D4D890044C90D94B1577A2F721D449C810E3F3F3C5B15CDBCC2C1BD5C088DF14CCAAD1013A3010A51C0CDCE14DAFE683CB6F61F03B04A91258A6C608454F922C5632FEAD13753B13E1AE7DA66E61B24ACBF3ED52EAD178A30015DCE84D398B74E7148F7C8602BA449BAFA45ECBEA856D816917D78E21AAB588EFD50715EA7C68EE3D55A69E30A618CF07571E283261395DF5E86C025BE4770191461A7D2365ED019AC4147B2A587C507B2770D70F81686FF0465863A32FF0C8D0B4EC64522F
  268:d=1  hl=2 l=   3 prim: INTEGER           :010001 
  273:d=1  hl=4 l= 257 prim: INTEGER           :BE6502E10A0181D00C1B13CBC39BCB385C429245F556208A4F3745A834983532B3C1EF3951C66212A91C3C6C6AF971FCED5529406D192AE00DD255B6EE810E05683E885BFB1E691772AE294EC96088FEB890CD1F1A6BCA702C34C7E46C97F2C71CB3372BEEA17FE310E87DFA23808FD8AE8916B271FFED8318D8B73798D9F7BEFA7BB7994772883AB4FFD98F586CF70555171E00E66EF5F8EFA585AE2E97CC2E33EEDED54C3F1DED364E7B47FF9AAEC8E493864CF87C452FC6C9A6F2463FF2008276F09DF390A41A44D657532E22B6CDEF0A6465ACAD399A5BF5FDB4AD5C07ADB47E2012A1AC6223A6E84DF474A8CE8DADE0346DD5D0F06EFA0A024C0A7F72F9
  534:d=1  hl=3 l= 129 prim: INTEGER           :EB582A647EBF7B94DD90EE7D78D4CBDBA1BCFACB6D269F2CA7AA0B8482444966F549623DA6BAA81E97A6B054E462DA774EFA7CE016D7B8ECCD5D5DC404857A98B51D8A0E86270260B1369B0722D65BE8D275D956CC398CD730BCA1E3EEA5C9DA4FE076473B7DEB13097B56616F9558DC6DB12CA04CD013713D3EA07315B8C87B
  666:d=1  hl=3 l= 129 prim: INTEGER           :D5BECEEDB9628EE55E1FA307B051616BAE8D305ADB1A938B1E9D02289DEF51B82846540B3F9B0E826BF9C084DAD3D250C2EB4B366419FB9A4A1051B475AA2D3F8011EA9D1CCD788AE50C0E57775AEDCC301811585652F4F0E0FB6E6B56A5EC9CF3C9298C5136EDFD4925D34454D6DE170E20F6F5E512B74601A303410C99C0DD
  798:d=1  hl=3 l= 128 prim: INTEGER           :68F8FA6FB8D95016267DEEE2A872C23B44F93624669B43847784B17E795C5C2140676B1A74B3ED29381B71AB6BF36BDEABABAEE78548D3834C56C8EC15D833C6C982538206F47F6B01A089A5B53447EAA1754F6C17CBD3B66856BB1F1FE373159D6B51569482A5C7E802CB94CA60A3322EFB481C782697857AFBE435710AEAE1
  929:d=1  hl=3 l= 129 prim: INTEGER           :9C81C95CD1D873CF48FB1B51BEEDE7CA841607A90F33C7831F5851C351D97159C9CBAD304B538AED3E88B249D53D328B461E29855B08976D22FC0E0777FCB28303909ADC8DC17999221B90C8C4B144DBB4FF7A7BD74188EE739E46FCBB8664D98BBBE8FB40605B249211EB3EE66C2A547158FBDB92EF0059774B584FA21D56D5
 1061:d=1  hl=3 l= 128 prim: INTEGER           :2565D5C8A553D7EA5EE641F264FECC19ADD2A1A88D6BAF98E2E53C768F223CAC4DDBCF3ECB489DE12860313062671009C7D8F2D6E30D7113D3E7530E54FDB73254CB7BC474D4C1456C58365A104F8FAFEE2F1612A556DB2022BD9D90F3383A94515538F40F96D242F218070F51294324D488E869FC9E25EA5487F57D9640A464
// 解析公钥

PKI体系和CA结构

数字签名

为什么有证书就安全了,签名验签流程

TLS握手过程 DH密钥交换协议

前向保密性

迫于美国政府压力,server端把私钥给了美国政府

美国政府作为中间人拦截客户端发的消息,公钥发的消息。

然后就用拿到的私钥解密,所有信息都可以看到。

DH密钥交换协议

上一篇 下一篇

猜你喜欢

热点阅读