A1 ็ๆฌ - ็จณๅฎ็ๅ ๅฏๆนๆก
๐ ๆฆ่ฟฐ
A1 ๆฏ Archive ้กน็ฎ็็ฌฌไธไธช็จณๅฎ็ๆฌ๏ผ้็จ็ปๅ
ธ็ AES-CBC ๅ ๅฏๆจกๅผ๏ผ้ๅ็ไบง็ฏๅขๅๅฏนๅ
ผๅฎนๆง่ฆๆฑ้ซ็ๅบๆฏใ
๐ ๅ ๅฏๆนๆก
ๆ ธๅฟๆๆฏ
- RSA 4096ไฝ: ็จไบๅ ๅฏ AES ๅฏ้ฅๅ้
็ฝฎ
- AES-256-CBC: ็จไบๅ ๅฏๅฎ้
ๆฐๆฎ
- tar.xz: ็จไบๆฐๆฎๅ็ผฉ
ๅ ๅฏๆต็จ
ๅๅงๆไปถ/็ฎๅฝ
โ
tar ๆๅ
โ
xz ๅ็ผฉ
โ
AES-CBC ๅ ๅฏ (512ๅญ่ๅ)
โ
ๆทปๅ ๆไปถๅคด
โ
ๅ ๅฏๅ็ผฉๅ
๐ฆ ๅ ๅฏๆไปถ็ปๆ
ๅฎๆด็ปๆๅธๅฑ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ็ๆฌๅคด (2 ๅญ่) โ
โ โโโโโโโโโโโโฌโโโโโโโโโโโ โ
โ โ Protocol โ Version โ โ
โ โ 'A' โ 1 โ โ
โ โ (1 byte) โ (1 byte) โ โ
โ โโโโโโโโโโโโดโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ ๆไปถๅคด (14 ๅญ่) โ
โ โโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ IsEncryption โ Padding โ โ
โ โ (bool) โ (13 bytes) โ โ
โ โ (1 byte) โ โ โ
โ โโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ [ๅฆๆๅ ๅฏ] RSA ๅ ๅฏ็ AES ้
็ฝฎ (512 ๅญ่) โ
โ โ
โ RSA-4096 ๅ ๅฏ็ JSON ๆฐๆฎ: โ
โ { โ
โ "iv": "base64...", // 16 ๅญ่ IV โ
โ "key": "base64...", // 32 ๅญ่ AES Key โ
โ "salt": "base64..." // 16 ๅญ่ Salt โ
โ } โ
โ โ
โ ไฝฟ็จๅ
ฌ้ฅๅ ๅฏ๏ผ็ง้ฅ่งฃๅฏ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ [ๅฆๆๅ ๅฏ] AES-CBC ๅ ๅฏๆฐๆฎ โ
โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ ๆฐๆฎๅ 1 (512 ๅญ่๏ผAES-CBC ๅ ๅฏ) โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค โ
โ โ ๆฐๆฎๅ 2 (512 ๅญ่๏ผAES-CBC ๅ ๅฏ) โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค โ
โ โ ๆฐๆฎๅ 3 (512 ๅญ่๏ผAES-CBC ๅ ๅฏ) โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค โ
โ โ ... ๆดๅคๆฐๆฎๅ ... โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค โ
โ โ ๆๅไธๅ (โค512ๅญ่๏ผ้ๆบๅกซๅ
่ณ512) โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ
โ ๆๆๅไฝฟ็จ็ธๅ็ IV ๅ Key โ
โ ไธฒ่กๅ ๅฏๅค็ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ tar.xz ๅ็ผฉๆฐๆฎ โ
โ โ
โ ๅๅงๆฐๆฎ็ป่ฟ tar ๆๅ
+ xz ๅ็ผฉๅ็็ปๆ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
่ฏฆ็ปๅญๆฎต่ฏดๆ
1. ็ๆฌๅคด (2 ๅญ่)
| ๅญๆฎต |
็ฑปๅ |
ๅคงๅฐ |
ๅผ |
่ฏดๆ |
| Protocol |
byte |
1 |
'A' (0x41) |
ๅ่ฎฎๆ ่ฏ็ฌฆ |
| Version |
uint8 |
1 |
1 |
็ๆฌๅท |
็ผ็ ๆนๅผ: Big Endian ไบ่ฟๅถ
2. ๆไปถๅคด (14 ๅญ่)
| ๅญๆฎต |
็ฑปๅ |
ๅคงๅฐ |
่ฏดๆ |
| IsEncryption |
bool |
1 |
ๆฏๅฆๅ ๅฏ (true=ๅ ๅฏ, false=ๆชๅ ๅฏ) |
| Padding |
byte[] |
13 |
ๅกซๅ
ๅญ่๏ผไฟ็็จไบๆชๆฅๆฉๅฑ๏ผ |
็ผ็ ๆนๅผ: Big Endian ไบ่ฟๅถ
3. RSA ๅ ๅฏๅ (512 ๅญ่๏ผไป
ๅ ๅฏๆถๅญๅจ)
ๅคงๅฐ: ๅบๅฎ 512 ๅญ่ (RSA-4096 ๅฏๆ้ฟๅบฆ)
ๅ
ๅฎน: ไฝฟ็จ RSA ๅ
ฌ้ฅๅ ๅฏ็ JSON ๆ ผๅผ AES ้
็ฝฎ
่งฃๅฏๅ็ JSON ็ปๆ:
{
"iv": "้ๆบ็ๆ็16ๅญ่ๅๅงๅๅ้",
"key": "้ๆบ็ๆ็32ๅญ่AESๅฏ้ฅ",
"salt": "้ๆบ็ๆ็16ๅญ่็ๅผ"
}
RSA ๅ ๅฏๅๆฐ:
- ็ฎๆณ: RSA PKCS#1 v1.5
- ๅฏ้ฅ้ฟๅบฆ: 4096 ไฝ
- ๆๆๆๅคง้ฟๅบฆ: 501 ๅญ่
- ๅฏๆๅบๅฎ้ฟๅบฆ: 512 ๅญ่
4. AES-CBC ๅ ๅฏๆฐๆฎ (ไป
ๅ ๅฏๆถๅญๅจ)
ๅ ๅฏๅๆฐ:
- ็ฎๆณ: AES-256-CBC
- ๅฏ้ฅ้ฟๅบฆ: 256 ไฝ (32 ๅญ่)
- IV ้ฟๅบฆ: 128 ไฝ (16 ๅญ่)
- ๅๅคงๅฐ: 512 ๅญ่
ๆฐๆฎๅค็:
-
ๅฎๆดๅ (512 ๅญ่):
- ็ดๆฅไฝฟ็จ AES-CBC ๅ ๅฏ
- ๆๆๅไฝฟ็จ็ธๅ็ IV ๅ Key
- ๅ ๅฏๅ้ฟๅบฆไปไธบ 512 ๅญ่
-
ๆๅไธๅ (ไธ่ถณ 512 ๅญ่):
- ไฝฟ็จ้ๆบๆฐๅกซๅ
่ณ 512 ๅญ่
- ็ถๅ่ฟ่ก AES-CBC ๅ ๅฏ
- ่ฟ็กฎไฟไบๆๆๅ ๅฏๅๅคงๅฐไธ่ด
ๆณจๆ:
- A1 ไฝฟ็จๅบๅฎ IV๏ผCBC ๆจกๅผไธๆๆๅไธฒ่กๅ ๅฏ
- ไธๆฏๆๅนถ่กๅ ๅฏ
- ่งฃๅฏๆถไนๅฟ
้กปไธฒ่กๅค็
5. tar.xz ๅ็ผฉๆฐๆฎ
ๅฎ้
็ๆไปถ/็ฎๅฝๅ
ๅฎน๏ผ็ป่ฟไปฅไธๅค็๏ผ
- ไฝฟ็จ tar ๆ ผๅผๆๅ
- ไฝฟ็จ xz (LZMA2) ็ฎๆณๅ็ผฉ
- ็ถๅ่ฟ่ก AES ๅ ๅฏ๏ผๅฆๆๅฏ็จ๏ผ
๐ ๆไปถๅคงๅฐ่ฎก็ฎ
ๅ ๅฏๆไปถๅคงๅฐ
ๆปๅคงๅฐ = ็ๆฌๅคด + ๆไปถๅคด + RSAๅ + ๅ ๅฏๆฐๆฎ
= 2 + 14 + 512 + ceil(ๅ็ผฉๆฐๆฎๅคงๅฐ / 512) ร 512
็คบไพ
| ๅ็ผฉๆฐๆฎๅคงๅฐ |
ๅ ๅฏๅๆฐ |
ๅ ๅฏๆฐๆฎๅคงๅฐ |
ๆปๆไปถๅคงๅฐ |
| 100 ๅญ่ |
1 |
512 ๅญ่ |
1,040 ๅญ่ |
| 512 ๅญ่ |
1 |
512 ๅญ่ |
1,040 ๅญ่ |
| 513 ๅญ่ |
2 |
1,024 ๅญ่ |
1,552 ๅญ่ |
| 10 KB |
20 |
10,240 ๅญ่ |
10,768 ๅญ่ |
| 1 MB |
2,048 |
1,048,576 ๅญ่ |
1,049,104 ๅญ่ |
ๆชๅ ๅฏๆไปถๅคงๅฐ
ๆปๅคงๅฐ = ็ๆฌๅคด + ๆไปถๅคด + ๅ็ผฉๆฐๆฎ
= 2 + 14 + ๅ็ผฉๆฐๆฎๅคงๅฐ
๐ ๅฎๅ
จๆง่ฏดๆ
ไผๅฟ
โ
็ป่ฟๅ
ๅ้ช่ฏ: AES-CBC ๆฏๆ็็จณๅฎ็ๅ ๅฏๆ ๅ
โ
RSA-4096: ๆไพ่ถณๅค็ๅฏ้ฅไฟๆคๅผบๅบฆ
โ
้ๆบ IV: ๆฏๆฌกๅ ๅฏไฝฟ็จๆฐ็้ๆบ IV
โ
ๅฏ้ฅ้็ฆป: ไฝฟ็จ RSA ไฟๆค AES ๅฏ้ฅ
ๆณจๆไบ้กน
โ ๏ธ ๆ ่ฎค่ฏ: CBC ๆจกๅผไธๆไพๆฐๆฎๅฎๆดๆง้ช่ฏ
โ ๏ธ ๅกซๅ
ๆนๅผ: ๆๅไธๅไฝฟ็จ้ๆบๅกซๅ
๏ผ่งฃๅๆถ่ชๅจๅค็
โ ๏ธ ไธฒ่กๅค็: ไธๆฏๆๅนถ่กๅ ๅฏ/่งฃๅฏ
โ ๏ธ ๅบๅฎๅ: ๆๆๅๅคงๅฐๅบๅฎไธบ 512 ๅญ่
ไธ A2 ็ๅฏนๆฏ
| ็นๆง |
A1 (ๆฌ็ๆฌ) |
A2 |
| ๅ ๅฏๆจกๅผ |
AES-CBC |
AES-GCM |
| ่ฎค่ฏ |
ๆ |
ๆ (AEAD) |
| ๅนถ่กๆง |
ไธฒ่ก |
ๅนถ่ก |
| ๅๅคงๅฐ |
512 ๅญ่ |
64 KB |
| IV/Nonce |
ๅบๅฎ IV |
ๆฏๅๅฏไธ nonce |
| ๆง่ฝ |
ไธญ็ญ |
้ซ (2-9x) |
| ๅ
ๅญไฝฟ็จ |
ไฝ (~1-2MB) |
ไธญ (~4-8MB) |
| ็จณๅฎๆง |
้ๅธธ็จณๅฎ |
ๆฐ็ๆฌ |
๐ ไฝฟ็จๅปบ่ฎฎ
้็จๅบๆฏ
โ
็ไบง็ฏๅข๏ผ้่ฆ้ฟๆ็จณๅฎๆง
โ
่ตๆบๅ้็็ฏๅข๏ผไฝๅ
ๅญ/CPU๏ผ
โ
ๅฏนๅ
ผๅฎนๆง่ฆๆฑ้ซ็ๅบๆฏ
โ
ๆน้ๅค็ๅฐๆไปถ
โ
้่ฆๆๅฐๅๅ
ๅญๅ ็จ
ไธ้็จๅบๆฏ
โ ้่ฆ้ซๆง่ฝๅค็ๅคงๆไปถ
โ ้่ฆๆฐๆฎๅฎๆดๆง้ช่ฏ
โ ๅคๆ ธ CPU ็ฏๅขไธ่ฟฝๆฑๆไฝณๆง่ฝ
โ ้่ฆ้ฒ็ฏกๆนไฟๆค