[小白/土法/三重加密]个人理解的多重加密安全方式(附py脚本)

sh/bash/dash/ksh/zsh等Shell脚本
回复
ghome9
帖子: 47
注册时间: 2023-01-11 11:12
系统: ubuntu22.04

[小白/土法/三重加密]个人理解的多重加密安全方式(附py脚本)

#1

帖子 ghome9 » 2024-04-27 13:29

首先 先肯定一点,现在的aes256 与rsa4096 加密很安全了.
为了应对计算机发展过程中,算力越来越强的情况,加密后的文件在长时间的历史进程后,安全性会下降;为了偷懒,不想重新再换新方式再加密一回.小白理解的最安全的三重叠加加密:
先用大容量key(40m)进行异或运算,运算后的文件AES256-CBC加密成sec文件,sec文件再GPG的rsa4096加密成gpg文件.
截止至8楼: 大佬们给的很多反馈!
提出疑问:SO现阶段对称加密,现成的免费开源软件选什么好,openssl中下面的模型选哪个模型好?
aes-[128|192|256]-cbc 128/192/256 bit AES in CBC mode
aes[128|192|256] Alias for aes-[128|192|256]-cbc
aes-[128|192|256]-cfb 128/192/256 bit AES in 128 bit CFB mode
aes-[128|192|256]-cfb1 128/192/256 bit AES in 1 bit CFB mode
aes-[128|192|256]-cfb8 128/192/256 bit AES in 8 bit CFB mode
aes-[128|192|256]-ctr 128/192/256 bit AES in CTR mode
aes-[128|192|256]-ecb 128/192/256 bit AES in ECB mode
aes-[128|192|256]-ofb 128/192/256 bit AES in OFB mode
非对称加密ECC模型,选curve25519? (有推荐的免费开源方案嘛?gnupg里面ECC曲线的只有cv25519/brainpool系列/NIST系列) PuTTY密钥恢复漏洞(CVE-2024-31497)中涉及的NIST P-521ECC类还安全嘛?(这个漏洞,是算法本身就不安全了,还是软件兼容性考虑造成的安全性问题?)
=============下面为旧的内容=====
加密过程:
1.异或运算 在文件目录下 python3 **/xor.py 原文件 key文件 生成的xor文件 (key文件要保存好)
2.AES256加密
openssl aes-256-cbc -a -S d1837811783ef786 -iter 10000 -pbkdf2 -in watch.sh -out watch6.enc
openssl aes-256-cbc -a -S <16位盐> -iter <轮数> -pbkdf2 -in <输入文件> -out <AES加密后文件> (盐值 轮数 是否有pbkdf2 两次输入的密码 要记好,这些解密时要用到)
3.RSA4096加密
先看钥列表 gpg -k --keyid-format short
gpg -e -o txt333.gpg -r uid txt.txt
gpg -e -o <加密后文件名> -r <GPG公钥id> <要加密的文件名>
当然也可以用gnupg的IMAGE gui图形界面进行加密. (gpg的公私钥要保存好,私钥的防护密码也要记好)
解密过程:
1.先看钥列表 gpg -k --keyid-format short
gpg -d -r uid -o 11.txt txt333.gpg
gpg -d -r <GPG私钥id> -o <解密后文件名> <要解密的gpg文件>
2.AES解密
openssl aes-256-cbc -d -a -S d1837811783ef786 -iter 10000 -pbkdf2 -in watch7.enc -out watch2.shsss
openssl aes-256-cbc -d -a -S <加密时撒的盐> -iter <加密的轮数> -pbkdf2 -in <要解密的AES文件> -out <解密后文件名>
3.异或运算 在文件目录下 python3 **/xor.py 要解开的xor文件 key文件 最初的原文
python3 xor.py infile keyfile outfile (xor命令都是这格式,加密时,infile是原文;解密是infile是xor加密后文件)
至此三重加密方案,解说完毕. 如果量子计算机出来了,能破解了,我等小白也没有招的.
三重加密 重点要保存 异或的key文件 GPG的公私钥文件 AES的四个参数( 盐值 轮数 是否有用pbkdf2 安全密码 ) gpg的私钥防护密码 总计 三个文件 五个参数 要存好,要记牢,丢了就解不开了.
=================================================================
接下来要说异或的key文件;
异或key选择好一个文件,查看好HASH值.保存多地保存好.
如怕KEY文件泄漏,可选一个比KEY文件大的,使用split分割成多种容量多块.再cat合并起来成key文件, 记好分割命令与合成命令与散列值,重新生成时核对散列值.
如果怕网络保存,网络传输会造成文件位丢失位翻转,那个可以用hash多轮叠加生成一大串字符串文件,记好起始关键字与轮数与叠加方式,key文件就不会丢了.

附件是我的脚本.异或大文件会不会造成内存不够,未测试, 异或大文件,请按自己的内存容量进行先分割再异或再加密的方法.
===============================================================
终端命令不记录进history的一种方式 $: command (命令前加几个空格)
===============================================================
1.确定一个起始关键字, 要么随机,要么选个种子关键字再加上轮数,进行HASH散列得到关键字
我的方案示例:python3 sha512_easy.py ubuntu 3336823594 得到128位的HASH值,此值拿来当关键字(命令参数 ubuntu 3336823594 记好写到纸上存好,轮数请超1亿次以上,增加彩虹表破解难度). #为了安全,可以不使用这个easy.py 可使用第二步的sha512.py来生成起始关键字(它多一些变量) (04-28更新)
2.生成一个大容量key文件.使用上一步确定的起始关键字
我的方案示例:python3 sha512.py <上一步的HASH值> <**********/10位随机数> <跑多少轮/(40M/128)/一轮生成128位,要多大就自己除法记算多少轮> <生成的key文件名> (重点,命令参数 HASH值 10位随机数 轮数 key文件的散列值要记好.)
3.是否重新分割组合KEY文件,目的打乱key,防止一直用同一文件,一漏万漏
生成命令如下:split -b 10m key -d -a 3 keysp_
自己选择分割0-N种容量.
cat *1 *4 *0 *7 >newkey
sha512sum newkey
(重点记好,key的散列值.以便解密时核对)
4.使用KEY 对文件进行异或运算
看贴子开头
5.使用AES进行加密
6.使用GPG进行加密
(重点提示,使用过程在的命令参数 与key散列值,要记好. 不存大文件KEY,就要靠命令参数来确保能重新生成KEY)
==================================================
下面是split 的示例: (分割,组合过程中的参数,顺序要记好,丢了就组合不起来原来的KEY了,命名请随机.)
split -b 10m key.mkv -d -a 3 key.mkv_
cat key.mkv_004 key.mkv_008 key.mkv_001 key.mkv_006 >key.mkv****
split -b 10m key.mkv4816 -d -a 3 key_
md5sum key_000 key.mkv_004 key_001 key.mkv_008 key_002 key.mkv_001 key_003 key.mkv_006
d931f10980e1637f292341babfaec501 key_000
d931f10980e1637f292341babfaec501 key.mkv_004
2ff1785b4136e5e5b4d169b099372c8e key_001
2ff1785b4136e5e5b4d169b099372c8e key.mkv_008
36b56adab5b27a48463404affbefa8ce key_002
36b56adab5b27a48463404affbefa8ce key.mkv_001
8b3c281e079573cb43675fccf319c6f4 key_003
8b3c281e079573cb43675fccf319c6f4 key.mkv_006
split -b 659841 key_000 -d -a 3 keyram_
以上,要一个乱序的key文件,把一个确认的永恒的key文件,先分割成3类分块.再自己随机抽选几个分块, 重新 cat * * * * * * * * * * * * *>key
记住命令 与顺序,key就丢不了.
附件
pymd5cur.txt
(1.05 KiB) 已下载 3 次
py_sha-xor.tar
(10 KiB) 已下载 6 次
sha512.py
(1.54 KiB) 已下载 7 次
sha512_easy.py
(448 Bytes) 已下载 6 次
xor.py
(1.12 KiB) 已下载 4 次
上次由 ghome9 在 2024-04-28 20:44,总共编辑 1 次。
我大声地说:"我是小白,我是普通网民";所以我的发贴内容会有漏洞,不会是最新技术.请自行判断!
叠甲!最后,看个乐子就好!
ghome9
帖子: 47
注册时间: 2023-01-11 11:12
系统: ubuntu22.04

Re: [小白/土法/三重加密]个人理解的多重加密安全方式(附py脚本)

#2

帖子 ghome9 » 2024-04-27 13:35

一楼的命令过程要记好啊,重新生成时要用的.
一楼的命令过程要记好啊,重新生成时要用的.
一楼的命令过程要记好啊,重新生成时要用的.
(另外问个问题,gpg与luks的一个文件可被多个密钥解密,那么多个密钥加密同一文件,与单一密钥加密同一文件,安全性近似相等嘛,还是会有下降)
二楼,直接附上py脚本代码
sha512_easy.py:

代码: 全选

# for example python3 sha512_easy.py <keyword> <numbers>
# 求例 python3 sha512_easy.py 起始关键字 循环多少轮数
# 记得自己cd到脚本目录
import hashlib
import sys
str1 = sys.argv[1]
int1 =int(sys.argv[2])
str_sha512 = hashlib.sha512(str1.encode(encoding='utf-8')).hexdigest()
for _ in range(int1 - 1):
    str_sha512 = hashlib.sha512(str_sha512.encode(encoding='utf-8')).hexdigest()

print('sha512加密后为 :' + str_sha512)
sha512.py :

代码: 全选

# for example python3 sha512.py <keyword> <number exceed 10B> <epoch number> <filename>
# ubun@uubuntu-H81MLV3:~/Downloads$python3 sha512.py ubuntu 0123456789 5 5sha.txt
# result: /home/ubun/Downloads/5sha.txt
# 示例 python3 sha512.py 起始关键字 10位以上数字 跑多少轮 文件名称
# 上面 起始关键字 10位数字 轮数,关系到最后字符串,请必须记好.
# 生成的文件,会在启动时 命令行当前的目录下.
import hashlib
import sys
import array as arr
import os
Path = os.getcwd()

str1 = sys.argv[1]
str2 = sys.argv[2]
int1 = int(sys.argv[3])
str4_path = Path+"/"+sys.argv[4]
nums=arr.array('i',[0,1,2,3,4,5,6,7,8,9])
nums[0]=int(str2[0:1])
nums[1]=int(str2[1:2])
nums[2]=int(str2[2:3])
nums[3]=int(str2[3:4])
nums[4]=int(str2[4:5])
nums[5]=int(str2[5:6])
nums[6]=int(str2[6:7])
nums[7]=int(str2[7:8])
nums[8]=int(str2[8:9])
nums[9]=int(str2[9:10])
str_all=''
str_sha512 = hashlib.sha512(str1.encode(encoding='utf-8')).hexdigest()
str_all+=str_sha512
#print(str_all,"outfor")
for i in range(int1 - 1):
    yu=i%10
    duan=len(str_sha512)-nums[yu]
    str_sha512=str_sha512[0:duan]
    sotrue=len(str_sha512)
   # print(i,sotrue,str_sha512)
    str_sha512 = hashlib.sha512(str_sha512.encode(encoding='utf-8')).hexdigest()
    str_all+=str_sha512
#print('sha512加密后为 :' + str_all,len(str_all))
with open(str4_path,"w") as file:
    file.write(str_all)
str_sha512 = hashlib.sha512(str_all.encode(encoding='utf-8')).hexdigest()
print("生成文件路径为",str4_path,"请自行查看\n","文件内容sha512值为",str_sha512)
xor.py 如下:

代码: 全选

# for example python3 xor.py <infile> <keyfile> <outfile>
# 示例 python3 xor.py 原文件 钥匙文件 密文文件
# 会自动获取命令行当前目录, 原文件 钥匙文件 密文文件 请都放于该目录
# 换个说法,三个文件存放于同一目录,cd到该目录后 python3 ***/xor.py infile keyfile outfile
# xor.py 脚本不与原文件同一目录是可以的,只要你记得路径
import time
import sys
import os
Path = os.getcwd()

strsrcin = Path+"/"+sys.argv[1]
strsrckey =Path+"/"+sys.argv[2]
strtarout =Path+"/"+ sys.argv[3]
time_start=time.time()
srcinRead=open(strsrcin,mode="rb")
srcinData=srcinRead.read()
srcinLen=len(srcinData)
tarout_write = open(strtarout,"wb")
srckeyRead=open(strsrckey,mode="rb")
srckeyData=srckeyRead.read()
srckeyLen=len(srckeyData)
if srcinLen > srckeyLen:
    key=srcinLen//srckeyLen*srckeyData+srckeyData[:srcinLen%srckeyLen]
else:
    key=srckeyData[:srcinLen]
    
for i in range(len(key)):
    newByte=key[i]^srcinData[i]
    tarout_write.write(bytes([newByte]))
tarout_write.close()
srcinRead.close()
srckeyRead.close()
time_end=time.time()
print('time cost',time_end-time_start,'s')
我大声地说:"我是小白,我是普通网民";所以我的发贴内容会有漏洞,不会是最新技术.请自行判断!
叠甲!最后,看个乐子就好!
头像
astolia
论坛版主
帖子: 6477
注册时间: 2008-09-18 13:11

Re: [小白/土法/三重加密]个人理解的多重加密安全方式(附py脚本)

#3

帖子 astolia » 2024-04-27 17:04

虽然也有点老了,但是还是建议先读一下 https://gist.github.com/byronhe/232d22f1d3dcaa0a20cb

还有不要在标题里给自己加那么多戏
onlylove
论坛版主
帖子: 5235
注册时间: 2007-01-14 16:23

Re: [小白/土法/三重加密]个人理解的多重加密安全方式(附py脚本)

#4

帖子 onlylove » 2024-04-27 17:45

astolia 写了: 2024-04-27 17:04 虽然也有点老了,但是还是建议先读一下 https://gist.github.com/byronhe/232d22f1d3dcaa0a20cb

还有不要在标题里给自己加那么多戏
gist在外面吧,他要是没工具,看不到吧?
头像
astolia
论坛版主
帖子: 6477
注册时间: 2008-09-18 13:11

Re: [小白/土法/三重加密]个人理解的多重加密安全方式(附py脚本)

#5

帖子 astolia » 2024-04-27 18:01

onlylove 写了: 2024-04-27 17:45 gist在外面吧,他要是没工具,看不到吧?
那是他的问题了。 这里有个转载版,但存在一些上面链接中已经修正的文字错误 https://gwb.tencent.com/community/detail/101862
ghome9
帖子: 47
注册时间: 2023-01-11 11:12
系统: ubuntu22.04

Re: [小白/土法/三重加密]个人理解的多重加密安全方式(附py脚本)

#6

帖子 ghome9 » 2024-04-27 18:32

astolia 写了: 2024-04-27 17:04 虽然也有点老了,但是还是建议先读一下 https://gist.github.com/byronhe/232d22f1d3dcaa0a20cb

还有不要在标题里给自己加那么多戏
标题加那么多戏,目的是让阅读者自己直接先过滤一回.(不想看小白文的,就可以不用进来看了)
感谢链接,我看看去.我都是链接组装式方案.
我大声地说:"我是小白,我是普通网民";所以我的发贴内容会有漏洞,不会是最新技术.请自行判断!
叠甲!最后,看个乐子就好!
头像
lilydjwg
论坛版主
帖子: 4250
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: [小白/土法/三重加密]个人理解的多重加密安全方式(附py脚本)

#7

帖子 lilydjwg » 2024-04-27 23:55

除了费时费力之外没啥意义。建议读点正经密码学教程,别做一边说要安全、一边用着 cbc 和 pbkdf2 这种自相矛盾的事……
头像
大宝
帖子: 3059
注册时间: 2008-06-30 22:32
联系:

Re: [小白/土法/三重加密]个人理解的多重加密安全方式(附py脚本)

#8

帖子 大宝 » 2024-04-28 16:06

硬核帖!
所以,加密鄙人还是使用现成的 VeraCypt
ghome9
帖子: 47
注册时间: 2023-01-11 11:12
系统: ubuntu22.04

Re: [小白/土法/三重加密]个人理解的多重加密安全方式(附py脚本)

#9

帖子 ghome9 » 2024-05-04 1:51

我又突发想知道解密速度比较;做完得到以下结果;(叠甲,特定机器的特定结果,只供参考.)
I5 4590 shell 命令解密1000次 12794byte大小的文件加密后的 加密文件.
计时结果如下:
5.218507984 cv25519 255bit 非对称
19.975254342 nist256 256bit 非对称
75.175644688 nist512 512bit 非对称
21.956489188 brain256 256bit 非对称
65.810053789 brain512 512bit 非对称
20.107859162 rsa2048 非对称
69.618622875 ras4096 非对称
82.075125735 dsa2048 非对称
5.688893135 aes256-cbc pbkdf2 对称
5.574080964 aes256-cbc iter 10 对称
5.692876828 aes128-cbc iter 10 对称
(总结,cv25519效率优,最方便;非对称可使用范围广)
我大声地说:"我是小白,我是普通网民";所以我的发贴内容会有漏洞,不会是最新技术.请自行判断!
叠甲!最后,看个乐子就好!
回复