เข้ารหัส / ถอดรหัส AES
วางข้อความและ passphrase เพื่อเข้ารหัสหรือถอดรหัส AES อย่างรวดเร็วด้วย PHP OpenSSL cipher ที่เลือก AES เป็น block cipher แบบสมมาตรที่ NIST กำหนดเป็นมาตรฐานใน FIPS 197 และใช้ในระบบ TLS, WPA2, VPN และ disk encryption จำนวนมาก แต่หน้านี้เป็นเครื่องมือสะดวกสำหรับข้อความความเสี่ยงต่ำ ไม่ใช่ที่เก็บ secret ที่ผ่านการ audit สำหรับไฟล์สำคัญหรือ secret ที่ต้องเก็บนาน ให้ใช้เครื่องมือ offline เช่น age, GnuPG หรือ 7-Zip
วิธีเข้ารหัสข้อความด้วย AES
-
1
เลือก OpenSSL cipher
ตัวเลือกปัจจุบันมี CBC, CTR และ GCM หลายแบบ CBC และ CTR ไม่มีการ authenticate และเครื่องมือนี้ไม่เก็บหรือตรวจสอบ tag การ authenticate ของ GCM
-
2
ใส่ passphrase
passphrase จะถูก hash ด้วย SHA-256 หนึ่งครั้งเพื่อสร้าง AES key ไม่มี PBKDF2, salt, Argon2 หรือ work factor ดังนั้นควรใช้ passphrase ที่ยาวและสุ่ม
-
3
วางข้อความความเสี่ยงต่ำ
นี่คือเครื่องมือ Livewire/PHP OpenSSL ที่ทำงานฝั่ง server อย่าวางรหัสผ่าน production key เอกสารส่วนตัว หรือ secret ที่คุณไม่อยากส่งให้เว็บไซต์นี้
-
4
คัดลอกผลลัพธ์ Base64
ตอนเข้ารหัส เครื่องมือจะสร้าง IV แบบสุ่ม วางไว้หน้าข้อความเข้ารหัสดิบ แล้วเข้ารหัส byte รวมเป็น Base64 การถอดรหัสต้องใช้ cipher และ passphrase เดิม
เครื่องมือนี้สร้างผลลัพธ์อะไรจริง ๆ
การทำงานนี้ใช้ PHP OpenSSL เมื่อเข้ารหัส เครื่องมือจะ hash passphrase ด้วย SHA-256 สร้าง IV แบบสุ่มตามความยาวที่ cipher ที่เลือกต้องการ เข้ารหัสข้อความ แล้วคืนค่า:
Base64(IV || ข้อความเข้ารหัส)
ผลลัพธ์ ไม่มี salt, พารามิเตอร์ PBKDF2, HMAC หรือ tag การ authenticate ของ GCM จึงไม่เข้ากันกับ format จาก Web Crypto, age, GnuPG, สูตร command-line ของ OpenSSL หรือ 7-Zip
ตัวเลือก AES ในบริบท
AES มี block size คงที่ 128 bit (16 byte) และ key size มาตรฐาน 128, 192 และ 256 bit ความต่างด้านความปลอดภัยที่สำคัญตรงนี้ไม่ใช่แค่ขนาด key แต่คือข้อความที่เข้ารหัสมีการ authenticate หรือไม่
| ตัวเลือก cipher | สิ่งที่ควรรู้ในเครื่องมือนี้ |
|---|---|
| AES-128-CBC / AES-192-CBC / AES-256-CBC | mode แบบ block ที่ใช้ IV แบบสุ่มและ PKCS#7 padding ต้องมี MAC แยก เช่น HMAC-SHA-256 เพื่อจับการแก้ไขข้อมูล |
| AES-256-CTR | ทำให้ AES ทำงานคล้าย stream mode ต้องมีการ authenticate แยก และห้ามใช้ IV/counter เดิมกับ key เดิมซ้ำ |
| AES-128-GCM / AES-256-GCM | โดยปกติ GCM เป็น AEAD mode แต่ต้องเก็บและตรวจสอบ tag การ authenticate ด้วย ผลลัพธ์ของเครื่องมือนี้ไม่มี tag นั้น จึงอย่าพึ่งพาเป็น authenticated encryption |
ข้อเตือนด้านความปลอดภัย
คำแนะนำด้าน cryptographic storage ของ OWASP แนะนำให้ใช้ authenticated encryption เมื่อทำได้ หรือใช้ encryption พร้อม MAC แยกต่างหาก โปรดจำไว้เมื่อใช้เครื่องมือนี้:
- นี่คือการเข้ารหัสแบบสมมาตร - passphrase เดียวกันใช้ถอดรหัส ควรส่ง passphrase ผ่านช่องทางคนละช่องกับข้อความเข้ารหัส
- passphrase อ่อนจะกลายเป็น key อ่อนในเครื่องมือนี้ - SHA-256 เร็วและไม่มี salt หากผู้โจมตีได้ผลลัพธ์ไปก็ลองเดาได้เร็ว
- CBC และ CTR ต้องมีการยืนยันความถูกต้อง - หากไม่มี HMAC หรือ MAC อื่น ผู้โจมตีอาจแก้ข้อความเข้ารหัสได้โดยไม่ถูกตรวจพบ
- อย่าใช้ IV หรือ nonce ซ้ำกับ key เดิม - เครื่องมือสร้าง IV สุ่มใหม่ตอนเข้ารหัส แต่ข้อมูลภายนอกที่นำมาวางก็ต้องทำตามกฎเดียวกัน
- ใช้เครื่องมือที่ audit แล้วสำหรับ secret จริง - age, GnuPG และ 7-Zip จัดการ file format, metadata และ authentication ได้รอบคอบกว่า
คำถามที่พบบ่อย
component ปัจจุบัน hash passphrase ด้วย SHA-256 และใช้ byte ที่ได้เป็น key material ให้ OpenSSL ไม่ได้ใช้ PBKDF2, salt, scrypt หรือ Argon2 ดังนั้น passphrase ที่สั้นหรือใช้ซ้ำจึงเสี่ยง
ไม่ CBC และ CTR ต้องมี MAC แยก เช่น HMAC-SHA-256 แม้ GCM ปกติจะให้ AEAD authentication แต่เครื่องมือนี้ไม่เก็บหรือตรวจสอบ GCM tag ในผลลัพธ์ Base64
เกิดบน server ของเว็บไซต์เมื่อ action ของ Livewire เรียก PHP OpenSSL นี่ไม่ใช่เครื่องมือ Web Crypto ที่ทำงานเฉพาะในเบราว์เซอร์ ดังนั้นอย่าวาง secret มูลค่าสูง private key หรือเอกสารอ่อนไหว
ผลลัพธ์ Base64 มี IV แบบสุ่มตามด้วยข้อความเข้ารหัสดิบ CBC padding อาจเพิ่ม byte และ Base64 ทำให้ข้อมูลไบนารีใหญ่ขึ้นประมาณหนึ่งในสาม รูปแบบที่บันทึกไม่มี salt หรือ authentication tag
เครื่องมือนี้จัดการเฉพาะข้อความ และควรใช้กับข้อความสั้นที่มีความเสี่ยงต่ำเท่านั้น สำหรับไฟล์หรือ secret สำคัญ ให้ใช้เครื่องมือเข้ารหัส offline ที่ผ่านการ audit เช่น age, GnuPG หรือ 7-Zip
เครื่องมือที่เกี่ยวข้อง
ตัวเข้ารหัสรหัสลับ A1Z26
เข้ารหัสข้อความด้วยรหัสลับ A1Z26 (A=1, B=2, ... Z=26) หรือถอดรหัสลำดับตัวเลขกลับเป็นตัวอักษร พร้อมปรับตัวคั่นได้
ตัวเข้ารหัส Atbash Cipher
เข้ารหัสหรือถอดรหัสข้อความด้วยรหัส Atbash ซึ่งเป็นการแทนที่แบบฮีบรูที่จับคู่ A-Z เป็น Z-A การทำงานเดียวกันใช้ได้ทั้งเข้ารหัสและถอดรหัส
เครื่องนับคำ
นับคำ ตัวอักษร ประโยค และย่อหน้า พร้อมเวลาในการอ่าน เวลาในการพูด ความหนาแน่นของคีย์เวิร์ด และคะแนนความอ่านง่าย Flesch สำหรับเรียงความ โพสต์ แคปชัน และ meta description
ตัวนับอักขระ
นับอักขระ คำ บรรทัด ประโยค และย่อหน้าในข้อความใดก็ได้ ดูผลรวมแบบรวมและไม่รวมช่องว่าง พร้อมการแยกประเภทอักขระ
แปลง Word เป็น PDF
แปลงเอกสาร Word .doc และ .docx เป็น PDF โดยคงเค้าโครงหน้า รูปภาพ ตาราง และหัวเรื่องไว้ อัปโหลดอย่างปลอดภัยและลบอัตโนมัติหลัง 2 ชั่วโมง
ตัวสร้างบาร์โค้ด
สร้างบาร์โค้ด 1D ที่สแกนได้ใน Code 128, Code 39, EAN-13, UPC-A, ITF-14 และ Codabar ส่งออกเป็น PNG, SVG หรือ PDF สำหรับงานพิมพ์