Concept of Communication โดย อาจารย์อัครเดช วัชระภูพงษ์ สาขาวิศวกรรมคอมพิวเตอร์ คณะวิศวกรรมศาสตร์ สถานบันเทคโนโลยีพระจอมเกล้าเจ้าคุณทหารลาดกระบัง
HTTP HTTP: Hypertext Transfer Protocol - Web’s application layer protocol - Client/Server Model - Client : browser that requests, receives, “displays” Web objects - Server : Web server sends objects in response to requests
HTTP(CONTINUED) USES TCP - Client initiates TCP connection (creates socket) to server, port 80 - Server accepts TCP connection from client - HTTP messages (application layer protocol messages) exchanged between browser (HTTP client) and Web server (HTTP server) - TCP connection closed HTTP is “stateless” - Server maintains no information about past client requests
HTTP REQUEST MESSAGE - Two types of HTTP message: request, response - ASCII (human-readable format)
HTTP REQUEST MESSAGE(CONTINUED)
HTTP METHOD TYPES - Get : retrieve data identified by request URL, submit form data to server - Post : send data to the server - Head : like Get method but server returns only header - Put : uploads file in entity body to path specified in URL field - Delete : deletes file specified in the URL field
HTTP RESPONSE MESSAGE
HTTP METHOD TYPES(CONTINUED) HTTP VERSION 1.0 - GET - POST - HEAD HTTP VERSION 1.1 - GET - POST - HEAD - PUT - DELETE
Web API Web Application Programming Interface a defined set of HTTP request messages along with a definition of the structure of response messages, typically expressed in JSON or XML While "web API" is sometimes considered a synonym for web service, the Web 2.0 applications typically have moved away from SOAP-based web services towards more direct REST-style communications.
REST REpresentational State Transfer a style of software architecture for distributed systems
Key goals Scalability of component interactions Generality of interfaces Independent deployment of components Intermediary components to reduce latency, enforce security and encapsulate legacy systems
Constraints The REST architectural style describes the following six constraints applied to the architecture, while leaving the implementation of the individual components free to design
Constraints Client-server Stateless Cacheable Layered System Code on demand (optional) Uniform interface
It is a collection of resources, with four defined aspects: RESTful Web APIs a web API implemented using HTTP and the principles of REST. It is a collection of resources, with four defined aspects:
the base URI for the web service, such as http://example.com/resources/the Internet media type of the data supported by the web service. This is often XML but can be any other valid Internet media type providing that it is a valid hypertext standard. the set of operations supported by the web service using HTTP methods (e.g., GET, PUT, POST, or DELETE). The API must be hypertext driven.
RESTful Web Service HTTP methods Resource GET PUT POST DELETE Collection URI, such as http://example.com/resources/ List the URIs and perhaps other details of the collection's members. Replace the entire collection with another collection. Create a new entry in the collection. The new entry's URL is assigned automatically and is usually returned by the operation. Delete the entire collection. Element URI, such ashttp://example.com/resources/item17 Retrieve a representation of the addressed member of the collection, expressed in an appropriate Internet media type. Replace the addressed member of the collection, or if it doesn't exist,create it. Treat the addressed member as a collection in its own right and create a new entry in it. Delete the addressed member of the collection.
JSON JavaScript Object Notation a text-based open standard designed for human-readable data interchange
MIME Type "application/json"
Data types, syntax and example Number (double precision floating-point format String (double-quoted Unicode, with backslash escaping) Boolean (true or false) Array (an ordered sequence of values, comma-separated and enclosed in square brackets
Object (an unordered collection of key:value pairs with the ':' character separating the key and the value, comma-separated and enclosed in curly braces; the keys must be strings and should be distinct from each other) null (empty)
Example { "firstName": "John", "lastName": "Smith", "age": 25, "address": { "streetAddress": "21 2nd Street", "city": "New York", "state": "NY", "postalCode": "10021" },
Example (cont.) "phoneNumber": [ { "type": "home", }, "type": "fax", "number": "646 555-4567" } ]
Rivest, Shamir and Adelman RSA Algorithm Rivest, Shamir and Adelman
. Math Behind RSA
Prime Numbers ... จำนวนเฉพาะคือจำนวนที่นำตัวเลขมาหารได้ลงตัวคือ 1 และตัวมันเอง เท่านั้น เช่น 10 ไม่ใช่จำนวนเฉพาะ เพราะมีตัวเลขที่นำมาหารลงตัวได้คือ 1, 2, 5 and 10 11 เป็นจำนวนเฉพาะ เพราะมีเพียง 1 และ 11 เท่านั้นที่นำมาหารลงตัวได้ ตัวเลขที่นำมาหารลงตัวเรียกว่า ตัวประกอบ (factors) กระบวนการหาตัวประกอบ เรียกว่า Factoring
กระบวนการ Factoring การหาตัวประกอบของ 15 สามารถทำได้โดยง่ายคือ 3 * 5. แต่การหาตัวประกอบของตัวเลขมากๆ เช่น 6,320,491,217 หรือตัวเลขที่มีขนาด มากกว่า 200 digits จะทำอย่างไร ? สำหรับตัวเลขที่มีจำนวนมากๆ จะใช้เวลาในการแยกตัวประกอบนาน
Modular Math Modular math หมายถึงตัวเลขที่เป็นจำนวนเต็มที่ไม่ติดลบ ที่มีค่าน้อยกว่า ตัวหาร ในกรณีของการ mod n, ผลลัพธ์ที่ได้จะมีค่าอยู่ในช่วง 0 ถึง (n - 1)
Modular Arithmetic a = b mod (m) หมายถึง a หารด้วย m แล้วเหลือเศษคือ b. เช่น 11 = 1 mod (5) 20 = 2 mod (6)
Modular Inverse Modular Inverse ของ b mod (m) คือค่า b-1 เมื่อ bb-1 = 1 mod (m) เช่น 7 กับ 343 ในการ mod (2400) 7 * 343 = 2401 7 * 343 = 1 mod (2400)
Relatively Prime ตัวเลข 2 ตัวเป็น relatively prime เมื่อตัวเลขทั้งสองตัวมีตัวประกอบร่วมคือ 1 เช่น 10 กับ 21 เป็น relatively prime รายการตัวประกอบของ 10 คือ 1, 2, 5 และ 10 รายการตัวประกอบของ 21 คือ 1, 3, 7 และ 21 10 และ 21 มีตัวประกอบร่วมคือ 1
เมื่อ p เป็นจำนวนเฉพาะ j(p) = (p ‑ 1). Euler’s phi-function ฟังก์ชั่น j(n) คือจำนวน relatively prime ของตัวเลขที่น้อยกว่า n กับค่า n เช่น j(6) = 2 โดย ตัวเลขที่น้อยกว่า 6 คือ (1, 2, 3, 4 and 5) มีเพียง 1 และ 5 เท่านั้นที่เป็น relatively prime กับ 6 ในกรณีของ j(7) เมื่อ 7 เป็นจำนวนเฉพาะจำนวนที่น้อยกว่า 7 ทุกตัวจึงเป็น relatively prime กับ 7 ดังนั้น j(7) = 6. ในกรณีของจำนวนเฉพาะอื่นๆ จะได้ เมื่อ p เป็นจำนวนเฉพาะ j(p) = (p ‑ 1).
Exponentiation Exponentiation = เลขยกกำลัง 23 = 2 * 2 * 2 = 8. (2 = base, 3 = exponent.) (bx) * (by) = bx+y (bx)y = bxy
Exponential Period modulo n j(n) มีคุณสมบัติเป็น "exponential period" modulo n สำหรับตัวเลขที่เป็น relatively prime กับ n. สำหรับตัวเลข a < n ถ้า a เป็น relatively prime กับ n แล้ว a j(n) mod n = 1. ดังนั้น a j(n) *a = a j(n)+1 mod n = a. เช่น n=5 จะได้ j(5) = 4. กำหนดให้ a = 3 a j(n) mod n = 34 = 3 * 3 * 3 * 3 mod 5 = 1
build our Public Key Cryptosystem กำหนดให้ c = me mod p หลังจากนั้น คำนวณค่า cd mod p จะมีค่าเท่ากับ (me)d mod p ซึ่งเทียบเท่า med mod p สมการดังกล่าวจะนำมาใช้ในกระบวนการเข้ารหัสต่อไป
Using it to build our PK Cryptosystem กรณีที่ 1 : หากมีการกำหนดค่า c, e และ p โดย c = me mod p. ให้หาค่า d ซึ่ง cd mod p = 1.” จะสามารถทำได้โดยง่ายโดยการหา d ที่ทำให้ e * d = j(p). เพราะ cd mod p = (me)d = med = mj(p) = 1 mod p กรณีที่ 2 : หากกำหนดค่า c, e and p โดย c = me mod p โดยให้หาค่า d ซึ่ง cd mod p = m จะสามารถทำได้โดยง่ายโดยการหาe * d = j(p) + 1. เพราะ cd mod p = (me)d = med = mj(p)+1 = m mod p
Using it to build our PK Cryptosystem จากสมการที่ผ่านมา จึงสามารถกำหนดค่าจำนวนเฉพาะ p และเลือก public exponent e เป็น Public Key จาก Euclidian algorithm สามารถกำหนดค่า d ซึ่งเป็น inverse ของ e เมื่อ modulo j(p) คือ (p ‑ 1). และเก็บ d ไว้เป็น private key เมื่อต้องการส่งข้อมูล m สามารถเข้ารหัสข้อมูล c โดย c = me mod p. เมื่อต้องการถอดรหัสหา m สามารถคำนวณโดย m = cd mod p.
One Change ... แต่กระบวนการดังกล่าวมีปัญหาบางอย่างคือ private key (d) ได้จากการคำนวณ (p ‑ 1) เมื่อ p เป็น public ทุกคนจึง สามารถคำนวณ private key ได้. RSA algorithm แก้ปัญหาดังกล่าวโดยใช้คุณสมบัติการคูณของ Euler’s phi‑function. โดย เมื่อ p และ q เป็น relatively primeจะได้ j(pq) = j(p)j(q) ดังนั้นถ้า p และ q เป็นจำนวนเฉพาะ และ n = pq จะได้ j(n) = (p ‑ 1)(q ‑ 1)
Coming to RSA ... กระบวนการก่อนที่จะเป็น RSA เราจะใช้จำนวนเฉพาะ p เป็นตัว modulus. สำหรับ RSA จะหาตัวเลขจำนวนเฉพาะขนาดใหญ่สองตัว (p,q) และใช้ผล คูณของตัวเลขทั้งสอง n=pq เป็น modulus ถึงแม้ว่ารูปสมการจะเปลี่ยนไป แต่ยังสามารถใช้ขั้นตอนเดิมคือ เลือก public exponent e และใช้ extended Euclidian algorithm เพื่อหา d โดย กระบวนการหา inverse ของ e เมื่อ modulo j(n) ซึ่งจะได้ความสัมพันธ์คือ e * d = 1 mod (p ‑ 1)(q ‑ 1) โดยคู่ของ (n, e) จะใช้เป็น public key และ d จะใช้เป็น private key ข้อมูลจำนวนเฉพาะ p และ q ต้องเก็บเป็นความลับหรือทำลายทิ้ง
cd mod n = (me)d = med = m1 = m mod n Coming to RSA ... เมื่อ m คือข้อมูล และ c คือ ciphertext จะได้ c = me mod n m = cd mod n ซึ่งต้องทราบ d จึงถอดรหัสได้ ความสัมพันธ์ของค่าต่างๆ คือ cd mod n = (me)d = med = m1 = m mod n
Coming to RSA ... หากต้องการทราบ private key ต้องทราบ ค่า j(n) แต่การจะทราบ j(n) ได้ต้องทราบ p และ q เมื่อ p และ q เป็นจำนวนเฉพาะขนาดใหญ่มาก ค่าย้อนกลับจึงทำได้ยากมาก
Coming to RSA ... ค่า e จึงต้องเป็น relatively prime กับ (p ‑ 1)(q ‑ 1) เนื่องจากหากไม่ เป็นจะหาค่า modular inverse ไม่ได้ ไม่มีการกำหนดกระบวนการตายตัวสำหรับการหาค่า e ในการทำงานจริง ค่า e ที่นิยมใช้งานคือ 3 และ 65,537
RSA Algorithm เลือกจำนวนเฉพาะขนาดใหญ่ p และ q และคำนวณผลคูณ n คำนวณ z = (p-1)(q-1) เลือก e ที่เป็น relative prime กับ z ซึ่งจะใช้เป็นส่วนของ key. คำนวณค่า d โดยผลคูณของ e และ d จะ สอดคล้องกับ e * d = 1 mod (p ‑ 1)(q ‑ 1)
RSA Algorithm โดยการคาดการณ์ว่า d จะสามารถหาได้จากการทราบ p และ q เท่านั้น และ d ไม่สามารถหาได้จากค่า e ทำให้สรุปได้ว่าค่า private key จะคาดเดา หรือค้นหาได้ยาก แต่ยังคงเป็นการคาดการณ์ที่ต้องหาข้อสรุปในระยะยาว e และ n ถูกใช้เป็น public key ส่วน d และ n ถูกใช้เป็น private key.
RSA Algorithm
RSA Example p = 3 q = 11 n = p X q = 33 -- This is the modulus z = (p-1) X (q -1) = 20 -- This is the totient function (n). There are 20 relative primes to 33. What are they? 1, 2, 4, 5, 7, 8, 10, 13, 14, 16, 17, 19, 20, 23, 25, 26, 28, 29, 31, 32 d = 7 -- 7 and 20 have no common factors but 1 7e = 1 mod 20 e = 3 C = Pe (mod n) P = Cd (mod n)
RSA Example
jQuery JavaScript Library The Write Less, Do More
jQuery a fast and concise JavaScript Library that simplifies HTML document traversing, event handling, animating, and Ajax interactions for rapid web development.
jQuery UI a curated set of user interface interactions, effects, widgets, and themes built on top of the jQuery JavaScript Library. Whether you're building highly interactive web applications or you just need to add a date picker to a form control, jQuery UI is the perfect choice.