ProtonMail เขียนอีเมลใหม่ให้เอง
(jfloren.net)- แอป ProtonMail บน Android มีปัญหาส่งอีเมลออกไปเพียงบางส่วนเมื่อกดส่งทันทีหลังเขียนเสร็จ ทำให้ผู้ใช้เลี่ยงปัญหาด้วยการต่อไคลเอนต์อีเมลตัวอื่นผ่าน Proton Bridge
- ผู้ใช้รัน Bridge บน VM ของ NAS แล้วเปิดการเข้าถึง IMAP/SMTP ด้วย rinetd และ Tailscale เพื่อใช้บัญชีเดียวกันทั้งบน FairEmail ของ Android และ Claws บน Linux
- ผู้ใช้ตั้งค่า ลายเซ็น PGP/MIME บน FairEmail+OpenKeyring และ Claws แต่เมลทดสอบกลับไม่ถูกมองว่าเป็นอีเมลที่มีลายเซ็นจากทั้งสองไคลเอนต์
- ผู้ดูแล Claws มองว่าโครงสร้าง MIME พัง และ issue เดิมของ Proton Bridge ก็ชี้ว่าการจัดการ PGP อัตโนมัติของ Proton ชนกับลายเซ็นที่ผู้ใช้ใส่เอง
- แกนของปัญหาคือ Proton ดัดแปลงอีเมลแบบเงียบ ๆ แต่ไม่มีตัวเลือกให้คง
multipart/signedหรือmultipart/encryptedไว้ตามเดิม
ปัญหาในแอป Android และการเลี่ยงด้วย Proton Bridge
- หลังไม่พอใจกับ Google ผู้ใช้จึงย้ายมา ProtonMail เมื่อหลายปีก่อน และโดยรวมก็ยังพอใช้งานได้ แต่ไม่กี่เดือนก่อน ไคลเอนต์ Android เริ่ม ทำให้อีเมลเสียหาย
- ถ้าพิมพ์เสร็จแล้วกด
sendเร็วเกินไป จะส่งออกไปแค่บางส่วนของข้อความที่เขียนไว้ - ถ้าจะให้ส่งครบ ต้องรอราว 10 วินาทีหลังพิมพ์เสร็จ
- ถ้าพิมพ์เสร็จแล้วกด
- ผู้ใช้จึงเปลี่ยนไปตั้งค่า Proton Bridge บน VM ใน NAS เพื่อใช้ไคลเอนต์ตัวอื่นแทนแอป Proton
- Proton Bridge ฟังพอร์ตอยู่แค่บน
127.0.0.1 - ใช้ rinetd ส่งต่อการเชื่อมต่อขาเข้าของพอร์ต IMAP และ SMTP ไปยัง Bridge
- ตั้งค่า Tailscale บนเครื่องดังกล่าวและบนมือถือ เพื่อเชื่อมไคลเอนต์อีเมล Android เข้ากับบัญชี Proton
- Proton Bridge ฟังพอร์ตอยู่แค่บน
- บน Android ใช้ FairEmail และบน Linux ใช้ Claws
กระบวนการที่ลายเซ็น PGP/MIME พัง
- หลังจากนั้นผู้ใช้เพิ่มการตั้งค่าเพื่อใส่ ลายเซ็น PGP ให้กับข้อความขาออก
- ส่งออกซับคีย์สำหรับการเซ็นโดยเฉพาะไปยังอุปกรณ์ Android
- ตั้งค่า FairEmail+OpenKeyring
- ตั้งค่า Claws บน Linux สำหรับ PGP/MIME ด้วย
- แต่ข้อความทดสอบที่ส่งถึงตัวเองกลับไม่ถูกมองว่าเป็นเมลที่มีลายเซ็นทั้งใน Claws และ FairEmail
- ถ้าเปลี่ยนเป็น PGP inline จะใช้งานได้
- ผู้ดูแล Claws ตอบว่าโครงสร้าง MIME พัง
- เมลที่มีลายเซ็นซึ่งผู้ดูแลส่งมานั้นตรวจสอบได้ตามปกติใน Claws
- มีการยก proton-bridge issue #26 และ issue #320 เป็นกรณีที่เกี่ยวข้อง ซึ่งชี้ว่า Proton ทำให้ลายเซ็น PGP ขาออกพังมาตั้งแต่แรก
- พฤติกรรมของฝั่ง Proton ที่สรุปได้มีดังนี้
- เมื่อส่งอีเมลทั่วไปผ่าน Proton ไปยังไคลเอนต์ Proton อีกตัว Proton จะทำ การเซ็นและเข้ารหัส PGP ให้อัตโนมัติ
- การเซ็นและเข้ารหัสอัตโนมัตินี้ไม่สามารถอยู่ร่วมกับลายเซ็นที่ผู้ใช้ใส่เองได้
- ผลลัพธ์คือลายเซ็นที่ผู้ใช้ใส่เองเสียหาย
- ผู้ใช้มองว่าปัญหาสำคัญคือ Proton ไม่มีตัวเลือกให้สั่งคงข้อความ
multipart/signedหรือmultipart/encryptedไว้ตามเดิม - แม้จะยอมรับว่า PGP ไม่ได้ถูกใช้อย่างแพร่หลาย แต่ผู้ใช้มองว่า Proton แก้ไขอีเมลแบบเงียบ ๆ และมีท่าทีต่อคำร้องเรียนของผู้ใช้ในเชิงว่า “เรารู้ดีกว่า” จึงกำลังพิจารณาผู้ให้บริการอีเมลรายอื่น
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
ถ้าเห็นแค่พาดหัวแล้วคิดจะเลิกใช้ ProtonMail สิ่งที่คำว่า “เขียนอีเมลใหม่อีกครั้ง” หมายถึงในที่นี้ ใกล้เคียงกับการที่ ProtonMail ไม่รองรับลายเซ็น PGP ที่ผู้ใช้ใส่เอง เพราะวิธีที่พวกเขาออกแบบระบบลายเซ็นอัตโนมัติและการเข้ารหัส
ไม่ได้หมายความว่ามันแก้ไขเนื้อหาอีเมลขาออกตามอำเภอใจในความหมายที่คนทั่วไปนึกถึง
ถ้าคุณอยู่ใน 99.9% ที่ไม่ได้เซ็นอีเมลหรือไม่ได้ตรวจสอบลายเซ็น เรื่องนี้อาจไม่ใช่ปัญหาใหญ่ในทางปฏิบัติ แต่ถึงอย่างนั้นการตอบสนองของ Proton ต่อประเด็นนี้ก็ดูเหมือนเรื่องล้อเล่น
https://github.com/ProtonMail/proton-bridge/issues/26
ถ้าแม้แต่เรื่องพื้นฐานอย่าง PGP ยังจัดการไม่ดี ก็อดสงสัยไม่ได้ว่าจะเชื่อถือส่วนอื่นของซอฟต์แวร์ได้อย่างไร โดยเฉพาะเมื่อบริษัทนิยามตัวเองว่าเป็นบริษัท “Privacy-first”
ทุกวันนี้คำว่า “Privacy” ดูจะกลายเป็นแค่คำทางการตลาดไปแล้ว
“ดูเหมือนจะเกี่ยวกับพฤติกรรมของ ProtonMail ที่ทิ้งอีเมล plain text ทั้งหมด ถ้ามีพาร์ตที่เข้ารหัสแบบ mime”
https://github.com/ProtonMail/proton-bridge/issues/26#issuec...
ที่น่าตกใจกว่าคือถ้ามีพาร์ตที่เข้ารหัสแบบ mime อย่าง HTML มันกลับ ทิ้งพาร์ต plain text
พอตรวจดูแล้วพบว่าอีเมลที่ดึงมาจาก GMail และอีเมลใหม่ที่รับใน ProtonMail ตอนนี้เหลือแค่พาร์ต HTML เท่านั้น ทั้งที่ในหน้าดูต้นฉบับของ GMail ยังเห็นทั้งพาร์ต HTML และ plain text
เท่ากับว่าถ้าภายหลังอยากอ่านด้วยไคลเอนต์แบบข้อความล้วนก็ทำไม่ได้ ทั้งที่ไม่ได้ช่วยประหยัดพื้นที่จัดเก็บอะไรเลย จึงไม่เข้าใจจริง ๆ ว่าคิดได้อย่างไรว่าทำพังแบบนี้ได้
พื้นที่จัดเก็บนั้นฉันเป็นคนจ่ายเงินเอง
จากมุมมองของผู้ให้บริการรายใหญ่ ดูเหมือนว่าเมื่ออีเมลเข้ามาอยู่ในระบบของตัวเองแล้ว มันก็ไม่ใช่อีเมลในความหมายดั้งเดิมอีกต่อไป แต่กลายเป็น อ็อบเจ็กต์ของพวกเขาเอง
ตอนนี้อาจเป็นแค่การใจดีพอจะประกอบกลับให้บางส่วนเท่านั้น
เหมือนกำลังทำให้ผลิตภัณฑ์แย่ลง ขณะเดียวกันก็ประหยัดต้นทุนอยู่ที่ไหนสักแห่ง และหวังว่าลูกค้าจำนวนมากพอจะไม่สังเกตเห็น
ดีใจที่มีคนชี้ตรง ๆ ว่าผู้คนไม่ชอบท่าทีแบบเจ้าเล่ห์ประมาณว่า “เรารู้ดีกว่า” ตอนที่คนมาบ่น
อย่ามาอธิบายว่าฉันจับผิด อย่างน้อยควรยอมรับก่อนว่าเป็นเพราะ ข้อจำกัดของผลิตภัณฑ์ จึงทำสิ่งที่ฉันต้องการไม่ได้ แล้วค่อยคิดว่าจะเปลี่ยนได้ไหม
ปกติแล้วมันหมายถึง ใช้ตามวิธีของเรา ไม่งั้นก็ไปซะ
ค่อนข้างเหลือเชื่อ
ProtonMail แย่มากจริง ๆ
ทุกครั้งที่มีเธรดแบบนี้โผล่มา ฉันก็มักจะเล่าเรื่องที่เคยเจอตอนพยายามใช้ ProtonMail สำหรับธุรกิจ
ProtonMail คิดเงินตามจำนวนบัญชี ไม่ว่าบัญชีนั้นจะ active อยู่หรือไม่ และเมื่อพนักงานลาออก เราอยากปิดการใช้งานที่อยู่อีเมลนั้น แต่ยังเก็บประวัติอีเมลไว้
แต่การ export อีเมลออกจาก ProtonMail นั้นยากถึงขั้นต้องให้วิศวกรมาช่วย
เลยถามไปว่า “ช่วยเพิ่มฟีเจอร์ปิดใช้งานที่อยู่อีเมลแบบถาวรโดยไม่คิดเงินต่อได้ไหม” แล้วก็ได้รับคำตอบเลี่ยงประเด็นสไตล์ ProtonMail ตามสูตร
ระบบค้นหาก็แย่ยิ่งกว่าการค้นหา substring ธรรมดาอยู่แล้ว เลยยิ่งไม่พอใจหนักเข้าไปอีก และเมื่อใช้เพื่อการทำงานมาหลายปี สุดท้ายก็ต้องมีวันที่ต้องค้นหาบทสนทนาเก่า ๆ
สุดท้ายฉันยกเลิกบัญชีและปิดบัตร privacy.com
หนึ่งปีต่อมาเห็นว่ายังมีการเรียกเก็บเงินรายเดือนกับบัตรที่ปิดไปแล้ว จึงพยายามล็อกอินเข้าบัญชีเก่า แต่รหัสผ่านที่เก็บไว้ในตัวจัดการรหัสผ่านกลับใช้ไม่ได้
ฉันส่งอีเมลไปว่าดูเหมือนจะมีบั๊ก แล้วเจ้าหน้าที่ซัพพอร์ตก็เถียงวนไปวนมาอยู่พักใหญ่ ก่อนจะขอข้อมูลบัตรเครดิตเพื่อหยุดการชำระเงิน
บัตรนั้นฉันปิดไปตั้งแต่ปีที่แล้วแล้ว จึงไม่มีข้อมูล และหลังจากนั้นก็เลิกตอบกลับไป
การฝาก ข้อมูลส่วนตัว ไว้กับคนที่ปฏิบัติต่อลูกค้าที่จ่ายเงินและตั้งคำถามอย่างสมเหตุสมผลอย่างเป็นปฏิปักษ์แบบนี้ ถือเป็นสัญญาณอันตรายอย่างมาก
Proton ดูจะเป็นบริการที่เน้นทำให้การสนทนาระหว่างผู้รับยังคงเป็นส่วนตัวอย่างสมบูรณ์มากกว่า และที่น่าประหลาดใจกว่าคือคุณยังเข้าถึงอีเมลของพนักงานที่ลาออกแล้วได้
ถ้าใช้ส่วนตัว คุณแนะนำอะไร?
ตอนนี้เป็นอย่างไรบ้าง? คุณได้ลองใช้ Import-Export app ของ ProtonMail แล้วหรือยัง และได้ลองใช้ระบบค้นหาเวอร์ชันปัจจุบันอีกครั้งหรือยัง?
น่าตกใจที่ไม่ใช่มีแค่ฉันคนเดียวที่เจอบั๊กบนไคลเอนต์ Android ซึ่งถ้ากด “ส่ง” เร็วเกินไป จะส่งออกไปแค่บางส่วนของข้อความที่เขียน
อีเมลที่ส่งให้หมอกับที่ปรึกษาการเงินของฉันโดนตัดแบบนี้หลายครั้ง และเพราะฉันจำได้ชัดว่าใส่เนื้อหาครบแล้ว เลยเคยสงสัยอย่างจริงจังว่ายาที่กินรักษามะเร็งอาจทำให้เกิดอาการหลอนสั้น ๆ หรือเปล่า
จริง ๆ แล้วเรากำลังเขียนแอป Android ใหม่ทั้งหมดด้วย จึงน่าจะเสถียรกว่าและใช้งานเขียนอีเมลได้ง่ายขึ้น โดยน่าจะออกมาช่วงปลายปีนี้
ระหว่างนี้ถ้าเจอปัญหาการส่งซ้ำ ๆ บนแอป Proton Mail สำหรับ Android ก็สามารถใช้เว็บแอป(https://mail.proton.me) ได้จากทุกอุปกรณ์
ถ้าเป็นบริการอีเมลที่ส่งอีเมลได้ไม่ถูกต้อง แล้วมันจะมีความหมายอะไร?
ฉันเคยเจอบั๊กนี้ในช่วงเวลาสำคัญ และอดคิดไม่ได้ว่าถ้าผู้รับไม่บอกว่าเป็นอีเมลว่างแล้วปล่อยผ่านไปจะเป็นอย่างไร
ตอนนี้กำลังมองหาผู้ให้บริการที่น่าเชื่อถือกว่า ที่ทำ IMAP/SMTP ได้ถูกต้องและให้ใช้ไคลเอนต์อีเมลจริง ๆ ที่จัดการ GPG ได้
นี่คือ regression กับบั๊กในการพัฒนาแอปพลิเคชัน หรือไม่ก็การสร้างผลิตภัณฑ์ที่ดีมันอาจไม่น่าสนใจพอสำหรับ Proton
ยังน่าแปลกใจอยู่ดีที่ Apple ยังไม่เคยพยายามทำให้กระบวนการ PGPลื่นไหล
ฉันเคยจินตนาการว่าจะเป็นแบบสร้างคีย์บนอุปกรณ์ ซิงก์ผ่าน iCloud แล้วเผยแพร่ public key
Apple ชูเรื่องความเป็นส่วนตัวมาก เลยหวังว่าสิ่งนี้จะทำให้ Gmail, Outlook และที่อื่น ๆ หันมารองรับ PGP แบบเนทีฟด้วย แต่ดูเหมือนจะเป็นแค่ความหวัง
มันถูกผลักไปอยู่ในขอบเขตของผู้ใช้เฉพาะกลุ่มและสายฮาร์ดคอร์ และมีปัญหาเยอะจนควรใช้แพลตฟอร์มส่งข้อความทางเลือกอย่าง Signal ที่ออกแบบมาโดยคำนึงถึงการเข้ารหัสตั้งแต่ต้นจะดีกว่า
ตัวอย่างเช่น ถ้าส่งอีเมลเข้ารหัสไปแล้วผู้รับ forward ต่อ จะเกิดอะไรขึ้น?
ตอนผู้รับตอบกลับ อีเมลต้นฉบับจะถูกแนบมาในสภาพที่ยังเข้ารหัสอยู่หรือถูกถอดรหัสแล้ว? ปกติมักเป็นอย่างหลัง ทำให้มี plaintext เดียวกันอยู่ในสองข้อความ
ถ้าส่งอีเมลถึงหลายคน แล้วใครจะเป็นคนจัดการการเข้ารหัสแยกตามผู้รับแต่ละราย?
ถ้ามีผู้รับบางคนเท่านั้นที่รองรับการเข้ารหัส สุดท้ายก็ต้องส่งแบบ plaintext ให้บางคนอยู่ดี แล้วการเข้ารหัสจะมีความหมายอะไร?
ถ้าจะส่งเข้า mailing list ที่ไม่รู้ว่าใครบ้างเป็นผู้เข้าร่วมจะทำอย่างไร?
อะไรบ้างที่ควรถูกเข้ารหัสเป็นมาตรฐาน? แค่เนื้อความ? แล้ว header ของอีเมลอย่าง subject ล่ะ? header อื่น ๆ ล่ะ?
ต่อให้ต้องการแค่ลายเซ็น ก็ควรเซ็นอะไรเป็นมาตรฐาน? ในระหว่างสนทนาที่ข้อความผ่านการแปลงหลายรอบ ลายเซ็นนั้นจะอยู่รอดได้อย่างไร?
ผู้ใช้อาจพิมพ์ที่อยู่ผู้รับ จากนั้นเซิร์ฟเวอร์ตรวจสอบที่อยู่นั้น ขอคีย์เข้ารหัสจากเมลโฮสต์ เมลโฮสต์ส่งคีย์กลับมา แล้วผู้ใช้ก็เขียนอีเมลต่อไปได้
ให้อารมณ์คล้าย HTTPS บนพื้นฐาน UDP
อีเมลเข้ารหัสมันใช้งานไม่ได้ดีจริง
https://latacora.micro.blog/2020/02/19/stop-using-encrypted....
https://support.google.com/a/answer/10741897
https://security.googleblog.com/2023/06/gmail-client-side-en...
ถ้าบริษัทอีเมลถือ private key ไว้เอง แล้ว PGP จะยังมีความหมายอะไร?
หรือจะเหลือแค่ความปลอดภัยระหว่างที่อีเมลถูกส่งผ่านเครือข่ายกับการตรวจสอบลายเซ็นเท่านั้น?
การแชร์ private keyดูเป็นวิธีรักษาความลับที่แปลกมาก
แต่เกิดปัญหาว่าเขาดาวน์โหลดบางไฟล์ไม่ได้
หลังจากทดสอบและส่งบั๊กไป ProtonMail ตอบมาว่ามันพยายามถอดรหัสโดยสมมติว่าไฟล์แนบถูกเข้ารหัสด้วยคีย์ของที่อยู่ผู้ใช้
ระหว่างกระบวนการกู้คืนหรือสร้างชื่อไฟล์เดิมขึ้นมาใหม่ มันจะลบนามสกุล .gpg ออก
สิ่งที่น่าตกใจที่สุดคือ ProtonMail เสนอเป็นทางแก้ว่าควรนำเข้าprivate keyที่ตรงกับ public key ของไฟล์แนบ และเพื่อนฉันก็ไม่ยอม
มันเก็บ private key ที่ถูกเข้ารหัสด้วยรหัสผ่านของผู้ใช้ไว้ และเราก็ไม่รู้รหัสผ่านนั้น
ยังมี issue ที่ค้างมา 2 ปี
https://github.com/ProtonMail/proton-bridge/issues/180
Proton ทำให้นักพัฒนาซอฟต์แวร์โอเพนซอร์สส่งแพตช์ได้ยาก และดูเหมือนไม่ได้ใส่ใจ
https://git-send-email.io/#step-2
ที่นั่นยังมีข้อความว่า “Protonmail โดยทั่วไปขึ้นชื่อว่าเป็นโฮสต์อีเมลที่ค่อนข้างแย่ มันทำให้อีเมลขาออกเสียหายจนแพตช์อาจถูกนำไปใช้ฝั่งปลายทางไม่ได้ ยังไม่รวมถึงการปฏิบัติต่อโอเพนซอร์สอย่างไม่เป็นธรรมและคำมั่นด้านความปลอดภัยที่เกินจริง ควรพิจารณาผู้ให้บริการอีเมลรายอื่น”
โชคดีที่ฉันย้ายค่ายภายในหนึ่งสัปดาห์และได้เงินคืนเต็มจำนวน
มีความย้อนแย้งที่ฉันเพิ่งนึกได้ว่าตัวเองส่งลิงก์ httpไปในโพสต์ที่กำลังบ่นเรื่องความปลอดภัย
การตั้งค่าแบบที่รัน Proton Bridge บน VM ของ NAS แล้วใช้
rinetdส่งต่อการเชื่อมต่อขาเข้าของพอร์ต IMAP/SMTP ไปยังบริดจ์ที่ฟังเฉพาะบน127.0.0.1พร้อมทั้งตั้งค่า Tailscale บนเครื่องนั้นและบนโทรศัพท์ เพื่อให้ไคลเอนต์อีเมลบน Android (ชอบ FairEmail) และ Claws บน Linux เข้าถึงบัญชี Proton ได้ ฟังดูคล้ายกับความซับซ้อนส่วนใหญ่ของการ โฮสต์เอง พอสมควรฉันไม่รู้จากประสบการณ์ตรง แต่เป็นประเด็นที่ถูกพูดซ้ำอยู่เรื่อย ๆ