MSITBlog

3 minutes reading time (653 words)

ศึกษาการทำงานของเว็บไซต์ Shoope

 

     (ภาพประกอบ : https://th.wikipedia.org/wiki/ช็อปปี้)        

 

 

 

What is Shopee ?

Shopee เป็นตลาดซื้อขายบนโซเชียล ที่เน้นการใช้งานผ่านโทรศัพท์มือถือมาผสมผสานกันเป็น Marketplace ให้สามารถเลือกดู ซื้อ ขายสินค้าได้ทุกที่ทุกเวลา และยังมีการสนับสนุนด้านโลจิสติกส์ แพลตฟอร์มการชำระเงิน เพื่ออำนวยความสะดวกในการช็อปปิ้งออนไลน์ได้ง่าย และปลอดภัยแก่ผู้ขายและผู้ซื้อ

 

 

Sniffer packet in this application

 

        จากการใช้โปรแกรม wireshark ดักจับการสื่อสารระหว่างกันบนแอพพลิเคชั่นShoopee สามารถตรวจจับโปรโตคอลได้ดังนี้ TCP, HTTP2,TLSv1.2

 

 

-      TCP (Transmission Control Protocol)

·      Source Port Number (16 bits each) คือ หมายเลขพอร์ตต้นทาง

·      Destination Port Number (16 bits each) คือ หมายเลขพอร์ตปลายทาง

·      Sequence Number (32 bits) คือ ฟิลด์ที่ระบุหมายเลขลำดับอ้างอิงในการสื่อสารข้อมูลแต่ละครั้ง เพื่อใช้ในการแยกแยะว่าเป็นข้อมูลของชุดใด และนำมาจัดลำดับได้ถูกต้อง

·      Acknowledgement Number (32 bits) คือ หมายเลขที่ใช้อ้างอิงในการตอบรับนี้ ปกติค่าทั้งใน Sequence Number จะต้องพิจารณาประกอบกับ Flag จึงจะสามารถแปลความหมายของ TCP Segment ได้อย่างสมบูรณ์

·      Header Length (4 bits) โดยปกติความยาวของ TCP Header จะเท่ากับ 20 ไบต์ แต่ถ้าหากมีการใช้ Option อาจจะทำให้ ขนาดของเฮดเดอร์ยาวขึ้นตามข้อมูลที่ต้องเพิ่มมาจาก Option นั้น แต่ทั้งหมดแล้วจะไม่เกิน 60 ไบต์

·      Flags (6 bits) เป็นข้อมูลระดับบิตที่อยู่ในเฮดเดอร์ TCP โดยใช้เป็นตัวบอกคุณสมบัติของแพ็กเก็ต TCP ขณะนั้นๆ และใช้เป็นตัวควบคุมจังหวะการรับส่งข้อมูลด้วย ซึ่ง Flag มีอยู่ทั้งหมด 6 บิต แบ่งได้ดังนี้

§  URG—ใช้บอกความหมายว่าเป็นข้อมูลด่วน และมีข้อมูลพิเศษมาด้วย อยู่ใน (Urgent Pointer)

§  ACK—แสดงว่าข้อมูลในฟิลด์ Acknowledge Number นำมาใช้งานได้

§  PSH—เป็นการแจ้งให้ผู้รับข้อมูลทราบว่าควรจะส่งข้อมูล Segment นี้ไปยัง Application ที่กำลังรออยู่โดยเร็ว

§  RST—ยกเลิกการติดต่อ เนื่องจากในกรณีที่เกิดการสับสนขึ้นด้วยเหตุผลต่างๆ เช่นโฮสต์มีปัญหา ให้เริ่มสื่อสารใหม่

§  SYN—ใช้ในการเริ่มต้นขอติดต่อกับปลายทาง

§  FIN—ใช้ส่งเพื่อแจ้งให้ปลายทางทราบว่ายุติการติดต่อ

·      Window field (16 bits) คือ ขนาดของการรับ - ส่งข้อมูลในแต่ละครั้งที่ทางฝ่ายผู้รับจะสามารถรับได้ เนื่องจากในการรับข้อมูลนั้น ทางผู้รับจะต้องจัดเตรียมหน่วยความจำในการพักข้อมูลที่มาจาก TCP และทำการ Demultiplex ออกมาหากไม่มีการตกลงถึงขนาดที่ทางฝ่ายรับสามารถรับได้ ก็จะทำให้การสื่อสารข้อมูลไม่สมดุล และฝ่ายรับอาจจะประมวลผลไม่ทันซึ่งส่งผลให้ต้องส่งข้อมูลหลายครั้ง

·      Checksum field (16 bits) คือ ฟิลด์ที่ใช้ในการตรวจสอบความถูกต้องของข้อมูลใน TCP เซกเมนต์

 

·      Urgent pointer field (16 bits) คือ ฟิลด์ใช้ระบุหมายเลข Sequence Number ของ TCP Segment ล่าสุดที่อยู่ในโหมด

 

     (ภาพประกอบ : https://www.tutorialspoint.com/security_testing/security_testing_discussion.htm)   

 

 

     (ภาพประกอบ : https://medium.com/@rebeccahezhang/restful-api-interview-questions-d7e3eaa3d246    )    

HTTP (Hyper Text Transfer Protocol)

HTTP/1.1

การทำงานจะแบ่งออกเป็น 2 ฝั่ง คือ Client กับ Server ซึ่งการส่งข้อมูลไปมาระหว่าง Client กับ Server นี้จะใช้ Protocol ที่ชื่อว่า HTTP เป็นข้อกำหนดในการส่ง และใช้ port 80 เป็น Default โดยฝ่าย Client จะต้องส่งข้อมูลไปหา Server ก่อนเสมอ ซึ่งการส่งข้อมูลนั้นจะเรียกว่า “Request” (การร้องขอ) และเมื่อ Server ได้รับ Request จะส่งข้อมูลกลับไปยัง Client เรียกว่า “Response” (การตอบสนอง)

·      HTTP Request  การ Request เป็นการที่ Client ร้องขอข้อมูลจาก Server ซึ่งเราจะเรียกข้อมูลนั่นว่า HTTP Request message โดย HTTP Request message ดังกล่าวจะประกอบไปด้วย 3 ส่วนหลักๆคือ Request Line, Header Line, และ Message body

·      HTTP Response  การ Response เป็นการที่ Server ตอบรับ Request จาก Client ซึ่งเราจะเรียกข้อความที่ตอบรับนั้นว่า HTTP Response message โดย HTTP Response message ดังกล่าวจะประกอบไปด้วย 3 ส่วนหลักๆคือ Status Line, Response Headers, และ Message body

 

     (ภาพประกอบ : https://medium.com/@thanwa/http-2-%E0%B8%84%E0%B8%B7%E0%B8%AD%E0%B8%AD%E0%B8%B0%E0%B9%84%E0%B8%A3-%E0%B9%81%E0%B8%95%E0%B8%81%E0%B8%95%E0%B9%88%E0%B8%B2%E0%B8%87%E0%B8%88%E0%B8%B2%E0%B8%81-http-1-1-%E0%B8%AD%E0%B8%A2%E0%B9%88%E0%B8%B2%E0%B8%87%E0%B9%84%E0%B8%A3-5dfb14e46ae4)        

 

HTTP/2

1. Header compression เป็นการลดขนาดของ Header โดยทำการบีบอัดข้อมูลต่าง ๆ ด้วยวิธี HPACK(RFC 7541)

        2. Binary Protocol เป็นการส่งข้อมูลระหว่าง Client กับ Server ด้วยข้อมูลชุดไบนารี่ ซึ่งต่างจาก HTTP/1.1 ที่เป็น text protocol ซึ่งหมายความว่าเวอร์ชั่นใหม่จะมีประสิทธิภาพในการรับส่งข้อมูลดีกว่าแต่ก็แลกมากับการที่เราไม่สามารถอ่านด้วยตาเปล่าได้ ต้องใช้เครื่องมือ decode ข้อมูลไบนารี่นี้อีกขั้นตอนนึงซึ่งก็คิดว่าไม่นานก็น่าจะมีเครื่องมือพวกนี้มาให้ใช้กันแพร่หลาย

        3. Multiplexing เป็นการทำ Streams หลายๆแบบ ในการเชื่อมต่อเพียงครั้งเดียว หมายความว่าเครื่อง Client สามารถส่งคำขอไปหลายๆ ครั้งได้ในการสร้างการเชื่อมครั้งเดียวกัน และขณะเดียวกัน server ก็สามารถตอบกลับการร้องขอนั้น ๆ ในลำดับใด ๆ ก็ได้เมื่อ Server อยู่ในสถานะพร้อมตอบกลับ (Asynchronous)

        4. Request prioritization คือ เมื่อมีการร้องขอจากฝั่ง Client ทำให้ Server สามารถตัดสินใจได้ว่าควรจะจัดการกับข้อมูลเพื่อเตรียมการส่งกลับไปตามลำดับแบบใด Server สามารถตัดสินใจได้ว่าควรใช้ CPU memory หรือแบนวิชเท่าไหร่ในการจัดการชุดข้อมูลกลุ่มๆนี้เพื่อจัดเรียงกลับไปหา Client ได้อย่างเหมาะสมและ Utilize มากที่สุด

 

        5. Server push: Server สามารถส่ง resources ไปหา client ได้โดยที่ client ยังไม่ได้ request ไป เช่น Client request Cat ไปแทนที่ server จะคืนมาแค่ cat แต่ server ฉลาดรู้ว่าอีกแป๊บ client จะต้อง request dog แน่ ๆ ก็ทำการส่ง dog ไปก่อนเลย

 

     (ภาพประกอบ : https://medium.com/@teivah/ssl-tls-main-concepts-c368d411c687)        

TLS (Transport Layer Security)

คือกระบวนการเข้ารหัส protocol ช่วยให้เกิดความปลอดภัยบนเครือข่ายที่ติดต่อกันแบบ end-to-end และใช้กันอย่างแพร่หลายสำหรับการทำสื่อสารกันทางอินเตอร์เน็ตหรือการทำ online-transection  โดย tls เป็นมาตรฐานของ IETF ที่ใช้ในการป้องการดักหรือปลอมแปลงข้อความที่ใช้ในการติดต่อสื่อสาร

 

        Application ที่ใช้ก็จะมี voIP หรือ e-mail โดยที่หลายๆธุรกิจใช้ tls เพื่อความปลอดภัยระหว่าง web server กับ browser (front-end) โดยไม่คำนึงว่ามีการส่งข้อมูลที่ละเอียดอ่อนหรือไม่

 

     (ภาพประกอบ : https://hpbn.co/transport-layer-security-tls/)        

·      ก่อนที่จะ client และ server จะทำการแลกเปลี่ยนข้อมูลกันบน TLS จะมีการระบุ version ที่จะใช้กันก่อนระหว่าง client กับ server และ list ของชุดรหัสที่สนับสนุนและ tls option ที่ต้องการจะใช้

·      Server จะเลือก version ที่จะใช้ในการติดต่อกันและพิจารณาจากชุดรหัสจาก client โดยทำการแนบ certificate ไปด้วยในการส่งกลับหา client

·      เมื่อทั้งคู่สามารถติดต่อกันได้แล้ว client จะทำการแลกเปลี่ยน key RSA หรือ  the Diffie-Hellman เพื่อใช้ในการสร้าง symmetric key ใน session ที่จะตาม

·      Server จะทำการประมวลผล key ที่ส่งมาโดย client ตรวจสอบความสมบูรณ์ของ massage ด้วยการตรวจสอบ MAC และส่ง message finish ที่เข้ารหัสกลับไปที่ client

·      Client จะทำการ decrypts message ด้วย symmetric key ตรวจสอบ mac ถ้าผ่านจะทำการสร้างช่องทางในการส่ง application data

 

 

TLSv1.1 vs TLSv1.2

·      V 1.2 จะมีการรวม md5/sha-1 ใน pseudorandom function (PRF)

·      V 1.2 จะมีการรวม md5/sha-1 ใน digitally-signed element

·      มีการปรับปรุงความสามารถของ client และ server ให้สามารถระบุ hash และ signature algorithm

·      ลองรับการ authenticated encryption

·      มีการเพิ่ม tls extension และการเข้ารหัส AES

 

     (ภาพประกอบ : https://netway.co.th/kb/blog/SSL/360015747251-Encryption%20Protocol%20TLS%201.3%20Released)        

TLS 1.3 vs TLS 1.2

·                  ปรับปรุงกระบวนการ handshake ให้ไว้ขึ้นและลดขั้นตอนลง

·                  ปรับแต่ง list support symmetric encryption algorithms จากของเก่า

·                  ฟังชั่นจะได้รับการออกแบบใหม่

·                  Elliptic curve algorithms จะถูกเพิ่มเข้ามาเป็น signature algorithms ใหม่

 

 

จัดทำโดย

Purntipa  Wannasuth 6217680006

Sirirat Matnote 6217680012

Adul Abdullagasim 6217680015

Watanyou Yodthong 6217710001

 

 

เอกสารอ้างอิง

-          https://careers.shopee.sg/about/

-          https://www.sanook.com/money/524013/

-          https://th.wikipedia.org/wiki/ช้อปปี้

-          https://help.shopee.co.th/th/s/article

-          https://tools.ietf.org/html/rfc8446#page-8

-          https://tools.ietf.org/html/rfc5246#section-1.2

-          https://hpbn.co/transport-layer-security-tls/

-          https://www.networkworld.com/article/2303073/lan-wan-what-is-transport-layer-security-protocol.html

-          https://netway.co.th/kb/blog/SSL/360015747251-Encryption%20Protocol%20TLS%201.3%20Released

 

 

-          https://help.shopee.co.th/th/s/article

 

 

ระบบ GPS Tracking Cloud System
Mobile Banking Application: KTC Mobile

Related Posts

 

Comments

No comments made yet. Be the first to submit a comment
Already Registered? Login Here
Guest
Saturday, 04 April 2020