การเข้ารหัสในแอปพลิเคชันมือถือ — พื้นฐาน อัลกอริทึม และหลักการทำงาน

ผู้แต่ง: IT Sectr เผยแพร่เมื่อ: 2026-04-02 เวลาอ่าน: 8 นาที

การเข้ารหัส (encryption) คือกระบวนการแปลงข้อมูลให้อยู่ในรูปแบบที่ไม่สามารถอ่านได้หากไม่มีคีย์พิเศษ ในแอปพลิเคชันมือถือ การเข้ารหัสช่วยปกป้องข้อมูลส่วนบุคคลของผู้ใช้ ข้อมูลการชำระเงิน และตรรกะทางธุรกิจจากการสกัดกั้นและการรั่วไหล จากข้อมูลของ Statista (2024) จำนวนการละเมิดข้อมูลจากแอปพลิเคชันมือถือเพิ่มขึ้น 38% ในสองปี และใน 72% ของกรณี สาเหตุมาจากการขาดการเข้ารหัสหรือการใช้การเข้ารหัสที่ไม่ถูกต้อง แพลตฟอร์มมือถือสมัยใหม่มี API ในตัวสำหรับการเข้ารหัส และการใช้งานถือเป็นมาตรฐานความปลอดภัยที่บังคับ Statista, 2024

ประเด็นสำคัญ

  • การเข้ารหัส — การแปลงข้อมูลให้อยู่ในรูปแบบที่อ่านไม่ได้ ซึ่งสามารถย้อนกลับได้เฉพาะเมื่อมีคีย์ถอดรหัส
  • การเข้ารหัสแบบสมมาตร ใช้คีย์เดียวสำหรับการเข้ารหัสและถอดรหัส — รวดเร็ว แต่ต้องมีการส่งคีย์อย่างปลอดภัย
  • การเข้ารหัสแบบไม่สมมาตร ใช้คู่คีย์ (สาธารณะและส่วนตัว) — ปลอดภัยกว่า แต่ช้ากว่าแบบสมมาตร
  • AES-256 — มาตรฐานทองคำของการเข้ารหัสแบบสมมาตร แนะนำโดย NIST และใช้ใน Android และ iOS
  • การเข้ารหัสแบบครบวงจร รับประกันว่าข้อมูลไม่สามารถเข้าถึงได้แม้แต่เซิร์ฟเวอร์ — เฉพาะผู้ส่งและผู้รับเท่านั้นที่อ่านได้

การเข้ารหัสในแอปพลิเคชันมือถือคืออะไร?

การเข้ารหัส ในบริบทของแอปพลิเคชันมือถือคือการประยุกต์ใช้อัลกอริทึมการเข้ารหัสเพื่อปกป้องข้อมูลที่จัดเก็บในอุปกรณ์ (data at rest) และข้อมูลที่ส่งผ่านเครือข่าย (data in transit) ในระดับอุปกรณ์ พื้นที่จัดเก็บในตัวเครื่องจะถูกเข้ารหัส: ไฟล์ ฐานข้อมูล SharedPreferences และแคช ในระดับเครือข่าย การรับส่งข้อมูลระหว่างแอปและเซิร์ฟเวอร์จะถูกเข้ารหัสผ่านโปรโตคอล TLS/HTTPS เป้าหมายสูงสุดคือเพื่อให้แน่ใจว่าแม้จะมีการเข้าถึงอุปกรณ์ทางกายภาพหรือการสกัดกั้นการรับส่งข้อมูล ผู้โจมตีก็ไม่สามารถอ่านข้อมูลที่ได้รับการปกป้องได้หากไม่มีคีย์การเข้ารหัส

ทำไมจึงต้องมีการเข้ารหัสในแอปพลิเคชันมือถือ

อุปกรณ์มือถือมีความเสี่ยงต่อการสูญเสียข้อมูลเป็นพิเศษ: โทรศัพท์สามารถสูญหาย ถูกขโมย หรือติดมัลแวร์ได้ง่าย ตามข้อมูลของ Ponemon Institute (2023) 42% ของบริษัทที่ได้รับผลกระทบจากการละเมิดข้อมูลระบุว่าเกิดจากอุปกรณ์มือถือ หากไม่มีการเข้ารหัส ผู้โจมตีสามารถเชื่อมต่อกับอุปกรณ์ผ่าน USB ดึงฐานข้อมูล SQLite และอ่านข้อมูลที่จัดเก็บทั้งหมด การเข้ารหัสช่วยแก้ปัญหานี้: แม้ฐานข้อมูลจะถูกดึงออกมา เนื้อหายังคงถูกเข้ารหัส นอกจากนี้ ในสหรัฐอเมริกาและสหภาพยุโรปมีกฎหมาย (GDPR, CCPA) ที่กำหนดให้ต้องมีการเข้ารหัสข้อมูลส่วนบุคคลและมีบทปรับสูงถึง 4% ของรายได้ต่อปีสำหรับการละเมิด การใช้การเข้ารหัสไม่เพียงแต่เป็นความจำเป็นทางเทคนิค แต่ยังเป็นข้อกำหนดทางกฎหมายสำหรับแอปพลิเคชันมือถือที่จัดการกับข้อมูลผู้ใช้

การเข้ารหัสแบบสมมาตรและไม่สมมาตร

อัลกอริทึม การเข้ารหัส ทั้งหมดแบ่งออกเป็นสองประเภทหลัก: แบบสมมาตร (คีย์เดียวสำหรับการเข้ารหัสและถอดรหัส) และแบบไม่สมมาตร (คู่คีย์ — สาธารณะและส่วนตัว) การเลือกประเภทขึ้นอยู่กับสถานการณ์การใช้งาน: สำหรับการเข้ารหัสข้อมูลในเครื่องมักใช้อัลกอริทึมแบบสมมาตรเนื่องจากความเร็ว และสำหรับการแลกเปลี่ยนคีย์และการยืนยันตัวตนจะใช้อัลกอริทึมแบบไม่สมมาตร

คุณลักษณะสมมาตรไม่สมมาตร
จำนวนคีย์1 (ความลับ)2 (สาธารณะ + ส่วนตัว)
ความเร็วสูง (1–10 GB/s)ต่ำ (1–10 MB/s)
การกระจายคีย์มีปัญหา — ต้องส่งคีย์ง่าย — คีย์สาธารณะถูกเผยแพร่
ตัวอย่างAES, ChaCha20RSA, ECDH, ECIES
การใช้ในการพัฒนามือถือการเข้ารหัสข้อมูลในเครื่องการแลกเปลี่ยนคีย์, ลายเซ็นดิจิทัล

ในทางปฏิบัติ แอปพลิเคชันมือถือใช้ การเข้ารหัสแบบผสม: ด้วยอัลกอริทึมแบบไม่สมมาตร (เช่น ECDH) ทั้งสองฝ่ายแลกเปลี่ยนคีย์เซสชัน และข้อมูลทั้งหมดที่ตามมาจะถูกเข้ารหัสด้วยอัลกอริทึมแบบสมมาตร (AES หรือ ChaCha20) วิธีการนี้รวมความเร็วของการเข้ารหัสแบบสมมาตรเข้ากับความปลอดภัยของการแลกเปลี่ยนคีย์แบบไม่สมมาตร วิธีนี้เป็นพื้นฐานของ TLS 1.3, Signal Protocol และ Apple iMessage

อัลกอริทึมการเข้ารหัสหลัก

การพัฒนามือถือสมัยใหม่ใช้อัลกอริทึม การเข้ารหัส ที่ได้มาตรฐานหลายตัว ซึ่งแต่ละตัวออกแบบมาสำหรับงานเฉพาะและมีขอบเขตการใช้งานของตัวเอง

  • AES (Advanced Encryption Standard) — การเข้ารหัสแบบบล็อกสมมาตรที่ได้รับการรับรองโดย NIST ในปี 2001 ใช้คีย์ขนาด 128, 192 หรือ 256 บิต โหมดที่แนะนำคือ GCM (Galois/Counter Mode) ซึ่งให้การเข้ารหัสที่ผ่านการรับรองความถูกต้อง AES-256 ใช้ใน Android Keystore, iOS Keychain และโปรโตคอล TLS สมัยใหม่ทั้งหมด
  • ChaCha20-Poly1305 — การเข้ารหัสแบบสตรีมสมมาตรที่พัฒนาโดย Daniel Bernstein ให้ความปลอดภัยระดับเดียวกับ AES-256 แต่ทำงานได้เร็วกว่าบนอุปกรณ์ที่ไม่มีการเร่งความเร็ว AES ระดับฮาร์ดแวร์ (โดยทั่วไปในสมาร์ทโฟน Android ราคาประหยัด) ChaCha20 ใช้ใน TLS 1.3 เป็นทางเลือกแทน AES-GCM และเป็นการเข้ารหัสหลักใน Signal Protocol
  • RSA (Rivest-Shamir-Adleman) — อัลกอริทึมแบบไม่สมมาตรที่ใช้สำหรับการเข้ารหัสคีย์และลายเซ็นดิจิทัล ขนาดคีย์ขั้นต่ำที่แนะนำคือ 2048 บิต RSA ช้ากว่า ECDH ดังนั้นในแอปพลิเคชันมือถือสมัยใหม่จึงถูกแทนที่ด้วยการเข้ารหัสเส้นโค้งวงรี (ECC)
  • ECDH (Elliptic Curve Diffie-Hellman) — โปรโตคอลการแลกเปลี่ยนคีย์แบบไม่สมมาตรบนพื้นฐานเส้นโค้งวงรี ให้ Perfect Forward Secrecy และใช้เป็นค่าเริ่มต้นใน TLS 1.3 เส้นโค้ง Curve25519 (X25519) เป็นเส้นโค้งที่พบมากที่สุดในแอปพลิเคชันมือถือ

การเข้ารหัสปกป้องข้อมูลผู้ใช้อย่างไร

การเข้ารหัส ปกป้องข้อมูลในสามสถานการณ์หลัก: การสูญเสียอุปกรณ์ (การเข้ารหัสดิสก์และคอนเทนเนอร์แอป), การสกัดกั้นการรับส่งข้อมูล (โปรโตคอลเครือข่าย TLS/HTTPS) และการรั่วไหลจากเซิร์ฟเวอร์ (การเข้ารหัสแบบครบวงจร) แต่ละสถานการณ์ต้องการแนวทางและเครื่องมือของตนเอง

ข้อมูลขณะอยู่นิ่งและข้อมูลขณะส่งผ่าน

ข้อมูลขณะอยู่นิ่ง — ข้อมูลบนอุปกรณ์ — ถูกเข้ารหัสผ่าน Android Keystore และ iOS Keychain บน Android ตั้งแต่เวอร์ชัน 7.0 เป็นต้นไป ใช้การเข้ารหัสตามไฟล์ (File-Based Encryption) และแอปสามารถเข้ารหัสข้อมูลเพิ่มเติมได้ผ่าน EncryptedSharedPreferences และ EncryptedFile จากไลบรารี AndroidX Security บน iOS แอปทั้งหมดทำงานโดยค่าเริ่มต้นด้วย Data Protection API ซึ่งเข้ารหัสไฟล์ในระดับระบบไฟล์ด้วยคีย์ที่ผูกกับรหัสผ่านอุปกรณ์ สำหรับ ข้อมูลขณะส่งผ่าน ใช้ TLS 1.2/1.3 ที่มี Certificate Pinning แบบบังคับ

การเข้ารหัสแบบครบวงจร (End-to-End)

การเข้ารหัสแบบครบวงจร (E2E) คือระดับสูงสุดของการปกป้องข้อมูล ซึ่งข้อความจะถูกเข้ารหัสบนอุปกรณ์ของผู้ส่งและถอดรหัสเฉพาะบนอุปกรณ์ของผู้รับเท่านั้น เซิร์ฟเวอร์จัดเก็บและส่งข้อมูลไม่สามารถเข้าถึงเนื้อหาได้ — เซิร์ฟเวอร์จัดการเฉพาะ blob ที่เข้ารหัสแล้ว การใช้งาน E2E ที่รู้จักดีที่สุดสำหรับแอปพลิเคชันมือถือคือ Signal Protocol ซึ่งใช้อัลกอริทึม Double Ratchet ร่วมกับ X3DH (Extended Triple Diffie-Hellman) สำหรับการแลกเปลี่ยนคีย์เริ่มต้น Signal Protocol ให้ Perfect Forward Secrecy และ future secrecy: การโจมตีคีย์เดียวไม่เปิดเผยข้อความก่อนหน้าหรือถัดไป จากการศึกษาของมหาวิทยาลัย Carnegie Mellon (2023) การเข้ารหัส E2E ในแอปส่งข้อความช่วยลดความเสี่ยงของการรั่วไหลของการสื่อสารได้ถึง 99.7% เมื่อเทียบกับการเข้ารหัสแบบ TLS เพียงอย่างเดียว การใช้ E2E เป็นข้อบังคับสำหรับแอปในหมวด Health & Fitness และ Finance ตามข้อกำหนดของ GDPR และ HIPAA ในการใช้งาน E2E ในโครงการของคุณเอง แนะนำให้ใช้ไลบรารี Signal Protocol (Java/Swift) หรือที่ใช้ Olm (Matrix protocol) เมื่อเลือกโซลูชัน E2E ให้ประเมินความเข้ากันได้กับแพลตฟอร์ม: Signal Protocol ต้องการการรองรับการส่งแบบอะซิงโครนัสและการจัดเก็บคีย์บนไคลเอ็นต์ ซึ่งทำให้สถานการณ์หลายอุปกรณ์ซับซ้อน — ในกรณีดังกล่าว Matrix Protocol ที่มีโมเดลห้องอาจเป็นตัวเลือกที่ดีกว่า

การนำการเข้ารหัสไปใช้ในแอปพลิเคชันมือถือ

มาดูตัวอย่างการเข้ารหัสและถอดรหัสข้อมูลบน Android โดยใช้ Jetpack Security (AndroidX Security) ไลบรารีมี EncryptedFile สำหรับการเข้ารหัสไฟล์และ EncryptedSharedPreferences สำหรับการตั้งค่า

kotlin
val masterKey = MasterKey.Builder(context)
    .setKeyScheme(MasterKey.KeyScheme.AES256_GCM)
    .build()

val encryptedFile = EncryptedFile.Builder(
    context,
    File(context.filesDir, "secret.dat"),
    masterKey,
    EncryptedFile.FileEncryptionScheme.AES256_GCM_HKDF_4KB
).build()

encryptedFile.openFileOutput(applicationContext).use { outputStream ->
    outputStream.write("Sensitive user data".toByteArray(Charsets.UTF_8))
}

MasterKey ถูกสร้างขึ้นโดยใช้ AES256-GCM — โหมดการเข้ารหัสแบบสมมาตรที่ปลอดภัยที่สุด คีย์ถูกจัดเก็บใน Android Keystore ซึ่งแยกจากกระบวนการหลัก: แม้แอปจะถูกโจมตี ผู้โจมตีก็ไม่สามารถดึงคีย์ออกมาได้ EncryptedFile ใช้โครงร่าง AES-256-GCM กับ HKDF สำหรับการหาคีย์และขนาดหน้า 4KB ซึ่งให้ความสมดุลที่ดีระหว่างความเร็วและความปลอดภัย ในการอ่านข้อมูล ใช้ openFileInput พร้อมพารามิเตอร์เดียวกัน: ไลบรารีจะถอดรหัสข้อมูลโดยอัตโนมัติเมื่ออ่าน

บน iOS ฟังก์ชันการทำงานที่คล้ายกันมีให้ผ่าน CryptoKit (Swift) โดยใช้ AES.GCM หรือ ChaChaPoly คีย์ถูกจัดเก็บใน Secure Enclave ผ่าน Keychain Services หลักการเหมือนกัน: คีย์ไม่เคยออกจากพื้นที่จัดเก็บฮาร์ดแวร์ที่ปลอดภัย และข้อมูลถูกเข้ารหัสก่อนเขียนลงดิสก์ สถาปัตยกรรมนี้สอดคล้องกับคำแนะนำ OWASP MASVS (Mobile Application Security Verification Standard) ระดับ L2 สำหรับแอปพลิเคชันที่จัดการกับข้อมูลที่ละเอียดอ่อน ในโครงการจริง การรวมกันของ EncryptedSharedPreferences สำหรับโทเค็นและ EncryptedFile สำหรับข้อมูลผู้ใช้ครอบคลุม 100% ของสถานการณ์การเข้ารหัสในเครื่อง นอกจากนี้ สำหรับการทำงานกับคีย์ที่ได้รับจากเซิร์ฟเวอร์ (เช่น คีย์เซสชัน ECDH) จะใช้ Android KeyStore พร้อมพารามิเตอร์ purpose = KeyProperties.PURPOSE_ENCRYPT ซึ่งรับประกันว่าคีย์สามารถใช้ได้เฉพาะสำหรับการดำเนินการเข้ารหัสที่ได้รับอนุญาตเท่านั้น และไม่เคยถูกส่งออกจากพื้นที่จัดเก็บฮาร์ดแวร์ไปยัง RAM ในรูปแบบข้อความธรรมดา

คำถามที่พบบ่อย

การเข้ารหัสแบบใดที่ถือว่าเชื่อถือได้มากที่สุดสำหรับแอปพลิเคชันมือถือ?

AES-256 ในโหมด GCM ที่มีการจัดเก็บคีย์ในพื้นที่จัดเก็บฮาร์ดแวร์ (Android Keystore / iOS Keychain) ถือเป็นมาตรฐานทองคำ สำหรับการรับส่งข้อมูลเครือข่าย — TLS 1.3 พร้อมเส้นโค้งวงรี Curve25519 ChaCha20-Poly1305 ใช้เป็นทางเลือกบนอุปกรณ์ที่ไม่มี AES ระดับฮาร์ดแวร์

AES แตกต่างจาก RSA อย่างไร?

AES เป็นอัลกอริทึมแบบสมมาตร (คีย์เดียว) รวดเร็ว เหมาะสำหรับการเข้ารหัสข้อมูลปริมาณมาก RSA เป็นแบบไม่สมมาตร (คู่คีย์) ช้า ใช้สำหรับการเข้ารหัสคีย์และลายเซ็น ไม่ใช่สำหรับข้อมูล ในแอปพลิเคชันมือถือ AES เข้ารหัสข้อมูล RSA ปกป้องคีย์

จำเป็นต้องเข้ารหัสข้อมูลทั้งหมดในแอปพลิเคชันหรือไม่?

จำเป็นต้องเข้ารหัส ข้อมูลที่เป็นความลับ: โทเค็นการเข้าถึง รหัสผ่าน ข้อมูลส่วนบุคคล ข้อมูลการชำระเงิน บันทึกทางการแพทย์ ข้อมูลสาธารณะ (รูปภาพ เนื้อหา) สามารถไม่เข้ารหัสได้ อย่างไรก็ตาม ควรจัดเก็บไว้ในคอนเทนเนอร์ที่ได้รับการป้องกันของแอป

การเข้ารหัสแบบครบวงจรทำงานอย่างไรบนอุปกรณ์มือถือ?

ด้วย การเข้ารหัสแบบครบวงจร ข้อมูลจะถูกเข้ารหัสบนอุปกรณ์ของผู้ส่งก่อนส่งและถอดรหัสเฉพาะบนอุปกรณ์ของผู้รับเท่านั้น เซิร์ฟเวอร์เห็นเฉพาะข้อมูลที่เข้ารหัสแล้ว โปรโตคอล Double Ratchet ที่ใช้งานใน Signal Protocol เป็นกลไก E2E ที่พบมากที่สุดในแอปส่งข้อความบนมือถือ

สามารถใช้การเข้ารหัสเดียวกันสำหรับข้อมูลบนอุปกรณ์และเครือข่ายได้หรือไม่?

เป็นไปได้ในทางเทคนิค แต่ ไม่แนะนำ สำหรับข้อมูลบนอุปกรณ์ ให้ใช้การเข้ารหัสแบบสมมาตร (AES-GCM) ด้วยคีย์จาก Keystore สำหรับเครือข่าย ให้ใช้ TLS 1.3 พร้อมชุดคีย์แยกต่างหากและ Certificate Pinning การแยกนี้ป้องกันไม่ให้ทั้งสองช่องทางถูกโจมตีเมื่อคีย์เดียวรั่วไหล

สรุป

  • การเข้ารหัส — องค์ประกอบความปลอดภัยที่บังคับสำหรับแอปพลิเคชันมือถือ ปกป้องข้อมูลขณะอยู่นิ่งและขณะส่งผ่าน
  • AES-256 GCM — มาตรฐานการเข้ารหัสแบบสมมาตรที่ NIST แนะนำสำหรับข้อมูลทุกประเภท
  • การเข้ารหัสแบบผสม (ECDH + AES) รวมความเร็วของแนวทางสมมาตรกับความปลอดภัยของแนวทางไม่สมมาตร
  • Android Keystore และ iOS Keychain — ที่เก็บคีย์ฮาร์ดแวร์ที่แยกวัสดุการเข้ารหัสออกจากแอปพลิเคชัน
  • ข้อมูลขณะอยู่นิ่ง ถูกเข้ารหัสผ่าน EncryptedSharedPreferences และ EncryptedFile (Android) หรือ Data Protection API (iOS)
  • ข้อมูลขณะส่งผ่าน ได้รับการปกป้องโดย TLS 1.3 พร้อม Certificate Pinning และ Perfect Forward Secrecy
  • คำแนะนำ: เข้ารหัสข้อมูลที่เป็นความลับทั้งหมดผ่าน Jetpack Security (Android) หรือ CryptoKit (iOS) ด้วยคีย์ในพื้นที่จัดเก็บฮาร์ดแวร์

เราจะพัฒนาแอปพลิเคชันบนมือถือแบบครบวงจร

IT Sectr สร้างแอปพลิเคชัน iOS และ Android สำหรับสตาร์ทอัพและธุรกิจตั้งแต่ปี 2017 เราจะให้คำแนะนำและเสนอวิธีแก้ปัญหาที่ดีที่สุดแก่คุณ

ปรึกษาโครงการ

อ่านเพิ่มเติม