Last active
December 25, 2020 00:34
-
-
Save utarn/7d6ec7f15be13e6b2066ecfe0fee4314 to your computer and use it in GitHub Desktop.
Cryptography Note
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Cryptography Lab | |
1. Symmetric encryption รหัสเดียวกันสำหรับเข้ารหัสและถอดรหัส | |
ข้อเด่น 1. เร็ว 2. คีย์ขนาดเล็กก็ปลอดภัย 256 บิต ก็ปลอดภัยมากๆ AES-256 | |
ข้อเสีย 1. ส่งคีย์ข้ามอินเทอร์เน็ตยาก หรือถึงขั้นเป็นไปไม่ได้ | |
2. Asymmetric encryption กุญแจคู่ ประกอบด้วยกุญแจส่วนตัวและกุญแจสาธารณะ | |
(Private key, Public key) | |
- ถ้าตัวใดตัวหนึ่งใช้เข้ารหัส ต้องใช้อีกตัวหนึ่งถอดรหัส | |
- ถ้า Public key หาย สามารถสร้างใหม่จาก Private key ได้ | |
แต่ถ้า Private key หาย ไม่สามารถสร้างใหม่ได้ | |
- ไม่มีกระบวนการทางคณิตศาสตร์ใดๆ ที่สามารถหา Private key จาก Public key | |
ข้อเด่น 1. ส่งคีย์ข้ามอินเทอร์เน็ตง่าย | |
ข้อเสีย 1. ช้า 2. คีย์ขนาดใหญ่มากๆ ถึงจะปลอดภัย 4096 บิต | |
===================================== | |
Use case | |
1. เข้ารหัสแบบสมมาตร | |
2. เข้ารหัสแบบอสมมาตร | |
2.1 การสร้าง Private Key และ Public Key | |
2.2 ใช้ Private key เข้ารหัส และ Public key ถอดรหัส | |
--> ยืนยันคนส่ง | |
2.3 ใช้ Public key เข้ารหัส และ Private key ถอดรหัส | |
--> ยืนยันคนรับ | |
คำถาม: ถ้าต้องการยืนยันทั้งคนรับคนส่งละ?? | |
2.4 ใช้ Private key และ Public key เข้ารหัส จากนั้น | |
Private key และ Public key ถอดรหัส | |
A --> B | |
1. PublicB(PrivateA(data)) //// | |
^ ^ | |
PrivateB PublicA | |
2. PrivateA(PublicB(data)) XXXX | |
^ ^ | |
PublicA PrivateB | |
ถ้าเข้ารหัสชั้นเดียว rsautl | |
openssl smime | |
-> Certificate : | |
Public key + Private key(User Information) | |
DER --> binary | |
PEM --> BASE64 | |
SMIME --> Email format, attachment | |
2.5 Mix encryption | |
--> ยืนยันคนรับ | |
1) Generate random shared key --> shared_key (32 bytes) | |
2) เอา shared_keyไปเข้ารหัส DATA แบบสมมาตร AES256 | |
3) ใช้ Public key เข้ารหัส shared_key | |
และ Private key ถอดรหัส shared_key | |
4) เมื่อผู้รับได้ shared_key ก็เอา shared_key ไปถอดรหัส DATA | |
2.6 Message Digestion (hash, digital signature) | |
- hash f(x) => y | |
รู้ x แล้วจะรู้ y แต่ถ้ารู้ y จะไม่รู้ x | |
SHA256 Input เป็นเท่าไหร่ก็ช่าง Output ออกมาได้ 32 bytes | |
10GB --> 32 bytes | |
SHA256 SHA512 SHA3-256 SHA3-512 | |
============================= | |
คำสั่งสุดท้ายที่ตกไปในคลิป | |
คัดลอกไฟล์ sample.jpg.digest | |
# openssl dgst -sha256 -verify PublicA.key -signature sample.jpg.digest sample.jpg |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment