More fixes
This commit is contained in:
@@ -4,6 +4,8 @@
|
||||
|
||||
#i ผู้จัดทำขอขอบคุณครูที่ปรึกษาและครูที่ปรึกษาร่วม นายภาคิน เหรียญทอง และนายวสันต์ สารคำ ที่ได้ให้คำปรึกษาและคำแนะนำวิธีการในการจัดทำโครงงานให้แก่กลุ่มของข้าพเจ้า ช่วยให้ชิ้นงานสำเร็จลุล่วงตามจุดประสงค์ที่ได้ตั้งไว้อย่างราบรื่น และขอขอบคุณวิทยาลัยเทคนิคหนองคายที่ได้ให้โอกาศแก่กลุ่มของข้าพเจ้าในการประดิษฐ์เครื่องยืนยันตัวตนด้วยระบบ NFC นี้ขึ้นมา
|
||||
|
||||
#v(1em)
|
||||
|
||||
#align(right, grid(
|
||||
columns: 2,
|
||||
column-gutter: 1em,
|
||||
|
||||
+7
-7
@@ -55,16 +55,16 @@ Foundation; EFF) ด้วยการสนับสนุนจากนัก
|
||||
|
||||
#[
|
||||
#set enum(indent: 6em)
|
||||
+ ผู้ใช้เชื่อมั่นว่าอุปกรณ์ของตน โฮสต์เบราว์เซอร์ และวิธีการเข้าถึงเบราว์เซอร์นั้นไม่ถูกบุกรุก (กล่าวคือ
|
||||
1. ผู้ใช้เชื่อมั่นว่าอุปกรณ์ของตน โฮสต์เบราว์เซอร์ และวิธีการเข้าถึงเบราว์เซอร์นั้นไม่ถูกบุกรุก (กล่าวคือ
|
||||
ไม่มีการโจมตีซัพพลายเชน)
|
||||
+ ผู้ใช้เชื่อมั่นว่าซอฟต์แวร์เบราว์เซอร์ใช้งาน HTTPS
|
||||
2. ผู้ใช้เชื่อมั่นว่าซอฟต์แวร์เบราว์เซอร์ใช้งาน HTTPS
|
||||
ได้อย่างถูกต้องพร้อมกับผู้ให้บริการออกใบรับรองที่ติดตั้งไว้ล่วงหน้าอย่างถูกต้อง
|
||||
+ ผู้ใช้เชื่อมั่นว่าผู้ให้บริการออกใบรับรองจะรับรองเฉพาะเว็บไซต์ที่ถูกต้องตามกฎหมายเท่านั้น (กล่าวคือ
|
||||
3. ผู้ใช้เชื่อมั่นว่าผู้ให้บริการออกใบรับรองจะรับรองเฉพาะเว็บไซต์ที่ถูกต้องตามกฎหมายเท่านั้น (กล่าวคือ
|
||||
ผู้ให้บริการออกใบรับรองจะไม่ถูกบุกรุกและไม่มีการออกใบรับรองที่ผิดพลาด)
|
||||
+ เว็บไซต์มีใบรับรองที่ถูกต้อง ซึ่งหมายความว่าได้รับการลงนามโดยผู้ให้บริการที่เชื่อถือได้
|
||||
+ ใบรับรองระบุเว็บไซต์ได้อย่างถูกต้อง (เช่น เมื่อเบราว์เซอร์เข้าชม https://example.com
|
||||
4. เว็บไซต์มีใบรับรองที่ถูกต้อง ซึ่งหมายความว่าได้รับการลงนามโดยผู้ให้บริการที่เชื่อถือได้
|
||||
5. ใบรับรองระบุเว็บไซต์ได้อย่างถูกต้อง (เช่น เมื่อเบราว์เซอร์เข้าชม https://example.com
|
||||
ใบรับรองที่ได้รับนั้นถูกต้องสำหรับ example.com และไม่ใช่ของหน่วยงานอื่น)
|
||||
+ ผู้ใช้เชื่อมั่นว่าเลเยอร์การเข้ารหัสของโปรโตคอล (SSL/TLS) มีความปลอดภัยเพียงพอจากการดักฟัง
|
||||
6. ผู้ใช้เชื่อมั่นว่าเลเยอร์การเข้ารหัสของโปรโตคอล (SSL/TLS) มีความปลอดภัยเพียงพอจากการดักฟัง
|
||||
]
|
||||
|
||||
#iii HTTPS มีความสำคัญอย่างยิ่งต่อเครือข่ายที่ไม่ปลอดภัยและเครือข่ายที่อาจถูกแทรกแซง
|
||||
@@ -151,7 +151,7 @@ HTTP เริ่มต้นด้วย "http://" และใช้พอร
|
||||
#iiiii มีผู้ให้บริการออกใบรับรองเชิงพาณิชย์จำนวนหนึ่งที่เสนอใบรับรอง SSL/TLS
|
||||
แบบชำระเงินหลายประเภท รวมถึงใบรับรองการตรวจสอบขยาย
|
||||
|
||||
#iiiii Let's Encrypt เปิดตัวในเดือนเมษายน 2559 ให้บริการใบรับรอง SSL/TLS
|
||||
#iiiii Let's Encrypt เปิดตัวในเดือนเมษายน 2559 ให้บริการใบรับรอง#jb SSL/TLS
|
||||
พื้นฐานแบบอัตโนมัติฟรีแก่เว็บไซต์ มูลนิธิ Electronic Frontier Foundation ระบุว่า Let's Encrypt
|
||||
จะทำให้การเปลี่ยนจาก HTTP เป็น HTTPS "ง่ายดายเพียงแค่ออกคำสั่งหรือคลิกปุ่ม"
|
||||
ปัจจุบันผู้ให้บริการเว็บโฮสต์และผู้ให้บริการคลาวด์ส่วนใหญ่ใช้ประโยชน์จาก Let's Encrypt
|
||||
|
||||
@@ -163,33 +163,34 @@ IBM อ้างสิทธิ์ก่อนหน้านี้ คอมพ
|
||||
|
||||
#iii ณ ปี 2008 มีผู้ขายและสถาปัตยกรรมไมโครคอนโทรลเลอร์จำนวนมาก รวมไปถึง:#jb
|
||||
|
||||
#block(inset: (left: 5.5em))[
|
||||
+ หน่วยประมวลผล ARM core โดยเฉพาะคอร์ประเภท ARM Cortex-M
|
||||
+ Microchip Technology Atmel AVR (8 บิต), AVR32 (32 บิต), และ AT91SAM (32 บิต)
|
||||
+ คอร์ M8C ของ Cypress Semiconductor's ที่ถูกใช้ใน Cypress PSoC ของพวกเขา
|
||||
+ Freescale ColdFire (32 บิต) และ S08 (8 บิต)
|
||||
+ Freescale 68HC11 (8 บิต) และอื่น ๆ ที่มีรากฐานมาจากครอบครัว Motorola 6800
|
||||
+ Intel 8051, ซึ่งนอกจาก Intel ก็ถูกผลิตโดย NXP Semiconductors, Infineon, และอื่น ๆ
|
||||
#[
|
||||
#set enum(indent: 5.5em)
|
||||
1. หน่วยประมวลผล ARM core โดยเฉพาะคอร์ประเภท ARM Cortex-M
|
||||
2. Microchip Technology Atmel AVR (8 บิต), AVR32 (32 บิต), และ AT91SAM (32 บิต)
|
||||
3. คอร์ M8C ของ Cypress Semiconductor's ที่ถูกใช้ใน Cypress PSoC ของพวกเขา
|
||||
4. Freescale ColdFire (32 บิต) และ S08 (8 บิต)
|
||||
5. Freescale 68HC11 (8 บิต) และอื่น ๆ ที่มีรากฐานมาจากครอบครัว Motorola 6800
|
||||
6. Intel 8051, ซึ่งนอกจาก Intel ก็ถูกผลิตโดย NXP Semiconductors, Infineon, และอื่น ๆ
|
||||
หลายรายการ
|
||||
+ Infineon: 8 บิต XC800, 16 บิต XE166, 32 บิต XMC4000 (ARM based Cortex M4F), 32
|
||||
7. Infineon: 8 บิต XC800, 16 บิต XE166, 32 บิต XMC4000 (ARM based Cortex M4F), 32
|
||||
บิต TriCore, และ 32 บิต Aurix Tricore Bit microcontrollers
|
||||
+ Maxim Integrated MAX32600, MAX32620, MAX32625, MAX32630, MAX32650, MAX32640
|
||||
+ MIPS
|
||||
+ Microchip Technology PIC, (8 บิต PIC16, PIC18, 16 บิต dsPIC33 / PIC24), (32 บิต
|
||||
PIC32)
|
||||
+ NXP Semiconductors LPC1000, LPC2000, LPC3000, LPC4000 (32 บิต), LPC900,
|
||||
8. Maxim Integrated MAX32600, MAX32620, MAX32625, MAX32630, MAX32650, MAX32640
|
||||
9. MIPS
|
||||
10. Microchip Technology PIC, (8 บิต PIC16, PIC18, 16 บิต dsPIC33 / PIC24), (32
|
||||
บิต PIC32)
|
||||
11. NXP Semiconductors LPC1000, LPC2000, LPC3000, LPC4000 (32 บิต), LPC900,
|
||||
LPC700 (8 บิต)
|
||||
+ Parallax Propeller
|
||||
+ PowerPC ISE
|
||||
+ Rabbit 2000 (8 บิต)
|
||||
+ Renesas Electronics: RL78 16 บิต MCU; RX 32 บิต MCU; SuperH; V850 32 บิต MCU;
|
||||
12. Parallax Propeller
|
||||
13. PowerPC ISE
|
||||
14. Rabbit 2000 (8 บิต)
|
||||
15. Renesas Electronics: RL78 16 บิต MCU; RX 32 บิต MCU; SuperH; V850 32 บิต MCU;
|
||||
H8; R8C 16 บิต MCU
|
||||
+ Silicon Laboratories ไมโครคอนโทรลเลอร์ Pipelined 8 บิต 8051
|
||||
16. Silicon Laboratories ไมโครคอนโทรลเลอร์ Pipelined 8 บิต 8051
|
||||
และไมโครคอนโทรลเลอร์แบบ ARM-based 32 บิต สัญญาณผสม
|
||||
+ STMicroelectronics STM8 (8 บิต), ST10 (16 บิต), STM32 (32 บิต), SPC5
|
||||
17. STMicroelectronics STM8 (8 บิต), ST10 (16 บิต), STM32 (32 บิต), SPC5
|
||||
(automotive 32 บิต)
|
||||
+ Texas Instruments TI MSP430 (16 บิต), MSP432 (32 บิต), C2000 (32 บิต)
|
||||
+ Toshiba TLCS-870 (8 บิต/16 บิต)
|
||||
18. Texas Instruments TI MSP430 (16 บิต), MSP432 (32 บิต), C2000 (32 บิต)
|
||||
19. Toshiba TLCS-870 (8 บิต/16 บิต)
|
||||
]
|
||||
|
||||
#iiii และยังมีอีกมากมาย โดยบางอย่างนั้นถูกใช้ในแอปพลิเคชันที่เจาะจงมาก
|
||||
@@ -206,22 +207,21 @@ dual-core หรือไมโครโปรเซสเซอร์ RISC-V
|
||||
ยังรวมส่วนประกอบที่จำเป็นสำหรับการสื่อสารข้อมูลไร้สาย เช่น สวิตช์เสาอากาศในตัว บาลัน RF
|
||||
เครื่องขยายกำลัง เครื่องรับสัญญาณรบกวนต่ำ ตัวกรอง และโมดูลการจัดการพลังงาน
|
||||
|
||||
#[
|
||||
// #set par(spacing: 0.75em)
|
||||
#afigure(
|
||||
image("Microcontroller/ESP32-C3_RISC-V_NodeMCU_board.jpg", width: 2in),
|
||||
alt: "บอร์ดสีดำ มีพิน GPIO ด้านข้างและมีชิพอยู่บริเวณด้านบนบอร์ด",
|
||||
attr: [Popolon, CC BY-SA 4.0,
|
||||
https://commons.wikimedia.org/w/index.php?curid=112634884],
|
||||
caption: [บอร์ด NodeMCU ที่มี ESP32-C3-32S],
|
||||
)
|
||||
#afigure(
|
||||
image("Microcontroller/ESP32-C3_RISC-V_NodeMCU_board.jpg", width: 2in),
|
||||
alt: "บอร์ดสีดำ มีพิน GPIO ด้านข้างและมีชิพอยู่บริเวณด้านบนบอร์ด",
|
||||
attr: [Popolon, CC BY-SA 4.0,
|
||||
https://commons.wikimedia.org/w/index.php?curid=112634884],
|
||||
caption: [บอร์ด NodeMCU ที่มี ESP32-C3-32S],
|
||||
)
|
||||
|
||||
#iii โดยทั่วไปแล้ว ESP32
|
||||
จะถูกฝังอยู่บนแผงวงจรพิมพ์เฉพาะอุปกรณ์หรือนำเสนอเป็นส่วนหนึ่งของชุดการพัฒนาที่มีพินและตัวเชื่อมต่อ
|
||||
GPIO ที่หลากหลาย โดยมีการกำหนดค่าที่แตกต่างกันไปตามรุ่นและผู้ผลิต ESP32 ได้รับการออกแบบโดย
|
||||
Espressif Systems และผลิตโดย TSMC โดยใช้กระบวนการ 40 นาโนเมตร
|
||||
มันเป็นผู้สืบทอดของไมโครคอนโทรลเลอร์ ESP8266
|
||||
]
|
||||
#v(0.5em)
|
||||
|
||||
#iii โดยทั่วไปแล้ว ESP32
|
||||
จะถูกฝังอยู่บนแผงวงจรพิมพ์เฉพาะอุปกรณ์หรือนำเสนอเป็นส่วนหนึ่งของชุดการพัฒนาที่มีพินและตัวเชื่อมต่อ GPIO
|
||||
ที่หลากหลาย โดยมีการกำหนดค่าที่แตกต่างกันไปตามรุ่นและผู้ผลิต ESP32 ได้รับการออกแบบโดย Espressif
|
||||
Systems และผลิตโดย TSMC โดยใช้กระบวนการ 40 นาโนเมตร มันเป็นผู้สืบทอดของไมโครคอนโทรลเลอร์
|
||||
ESP8266
|
||||
|
||||
=== Espressif Systems
|
||||
|
||||
@@ -259,14 +259,15 @@ things (IoT)
|
||||
|
||||
=== Name
|
||||
|
||||
#iiii Name คือ ชื่อของพาร์ทิชัน ห้ามซ้ำกัน ชื่อนั้นไม่สำคัญต่อระบบและต้องขนาดไม่เกิน 16 ตัวอักษร (ไม่มีอักขระพิเศษ)
|
||||
#iiii Name คือ ชื่อของพาร์ทิชัน ห้ามซ้ำกัน ชื่อนั้นไม่สำคัญต่อระบบและต้องขนาดไม่เกิน 16 ตัวอักษร
|
||||
(ไม่มีอักขระพิเศษ)
|
||||
|
||||
=== Type
|
||||
|
||||
#iiii Type คือ ประเภทของพาร์ทิชัน สามารถเป็น data หรือ app ได้
|
||||
|
||||
#[
|
||||
#set enum(indent: 6em)
|
||||
#set enum(indent: 9.25em)
|
||||
+ app คือพาร์ทิชันที่ใช้ในการเก็บแอปพลิเคชัน
|
||||
+ data คือพาร์ทิชันที่ใช้ในการเก็บข้อมูลทั่วไป
|
||||
]
|
||||
@@ -275,46 +276,55 @@ things (IoT)
|
||||
|
||||
#iiii SubType คือ ประเภทย่อย ระบุการใช้งานของพาร์ทิชัน data และ app
|
||||
|
||||
#block(inset: (left: 6em))[
|
||||
+ data
|
||||
+ ota คือ พาร์ทัชันเก็บข้อมูล OTA (สำหรับการอัพเดททางอากาศ, Over-the-air update)
|
||||
โดยหากไม่ใช้งาน OTA สามารถนำออกได้ โดยขนาดของพาร์ทิชันนี้ควรจะมีขนาดที่แน่นอนอยู่ที่ 8
|
||||
KiB (0x2000 ไบต์)
|
||||
+ nvs คือ พาร์ทิชันเก็บข้อมูลทั่วไปเช่น ข้อมูล Wi-Fi, ข้อมูลการสอบเทียบ PHY ของอุปกรณ์,
|
||||
#[
|
||||
#set enum(indent: 9.25em)
|
||||
1. data
|
||||
#listy(
|
||||
indent: 10.75em,
|
||||
numbering: thai-numbering,
|
||||
[ota คือ พาร์ทัชันเก็บข้อมูล OTA (สำหรับการอัพเดททางอากาศ, Over-the-air update)
|
||||
โดยหากไม่ใช้งาน OTA สามารถนำออกได้ โดยขนาดของพาร์ทิชันนี้ควรจะมีขนาดที่แน่นอนอยู่ที่ 8 KiB
|
||||
(0x2000 ไบต์)],
|
||||
[nvs คือ พาร์ทิชันเก็บข้อมูลทั่วไปเช่น ข้อมูล Wi-Fi, ข้อมูลการสอบเทียบ PHY ของอุปกรณ์,
|
||||
และข้อมูลอื่น ๆ ที่ต้องถูกเก็บบนหน่วยความจำถาวร (Non-volatile memory)
|
||||
โดยพาร์ทิชันประเภทนี้เหมาะสมสำหรับการเก็บข้อมูลการตั้งค่าเล็กน้อย ใบรองรับคลาวด์ ฯลฯ
|
||||
และการใช้งาน NVS อีกอย่างคือการเก็บข้อมูลที่ละเอียดอ่อน เนื่องจาก NVS รองรับการเข้ารหัส
|
||||
และเป็นสิ่งที่แนะนำอย่างมากที่จะมีพาร์ทิชัน NVS ขนาดขั้นต่ำ 12 KiB (0x3000 ไบต์)
|
||||
และหากจำเป็น คุณสามารถขยายขนาดเพิ่มได้ โดยขนาดที่แนะนำนั้นอยู่ระหว่าง 12 KiB และ 64
|
||||
KiB ถึงแม้ว่าคุณจะสามารถขยายให้มันใหญ่กว่านี้ได้ การใช้งานระบบไฟล์เช่น FAT หรือ SPIFFS
|
||||
นั้นจะเหมาะสมสำหรับข้อมูลที่ใหญ่กว่า
|
||||
+ coredump คือ ประเภทพาร์ทิชันย่อยนี้มีหน้าที่ในการเก็บข้อมูล core dump บนหน่วยความจำแฟลช
|
||||
นั้นจะเหมาะสมสำหรับข้อมูลที่ใหญ่กว่า],
|
||||
[coredump คือ ประเภทพาร์ทิชันย่อยนี้มีหน้าที่ในการเก็บข้อมูล core dump บนหน่วยความจำแฟลช
|
||||
โดย core dump
|
||||
นั้นคือข้อมูลที่ถูกใช้งานสำหรับการตรวจสอบข้อผิด-พลาดร้ายแรงเช่นการแครชและแพนิค
|
||||
โดยฟังก์ชันนี้จะต้องถูกเปิดในการตั้งค่าโปรเจกต์และตั้งที่หมายในการแฟลช
|
||||
และพาร์ทิชันนี้มีขนาดที่แนะนำอยู่ที่ 64 KiB (0x10000)
|
||||
+ nvs_keys คือ พาร์ทิชันที่เป็นประเภทย่อยนี้เก็บคีย์การเข้ารหัสของพาร์ทัชัน NVS
|
||||
เมื่อการเข้ารหัสถูกใช้งาน โดยมีขนาดอยู่ที่ 4 KiB (0x1000)
|
||||
+ fat คือ กำหนดพาร์ทิชันสำหรับระบบไฟล์ FAT โดยที่จะเหมาะสมสำหรับข้อมูลใหญ่ ๆ
|
||||
และพาร์ทิชันนี้มีขนาดที่แนะนำอยู่ที่ 64 KiB (0x10000)],
|
||||
[nvs_keys คือ พาร์ทิชันที่เป็นประเภทย่อยนี้เก็บคีย์การเข้ารหัสของพาร์ทัชัน NVS
|
||||
เมื่อการเข้ารหัสถูกใช้งาน โดยมีขนาดอยู่ที่ 4 KiB (0x1000)],
|
||||
[fat คือ กำหนดพาร์ทิชันสำหรับระบบไฟล์ FAT โดยที่จะเหมาะสมสำหรับข้อมูลใหญ่ ๆ
|
||||
และหากข้อมูลนั้นถูกเปลี่ยนแปลงบ่อย โดยระบบไฟล์ FAT สามารถใช้ฟีเจอร์ wear leveling
|
||||
และการเข้ารหัสได้
|
||||
+ spiffs คือ กำหนดพาร์ทิชันสำหรับระบบไฟล์ SPIFFS เหมาะสำหรับไฟล์ใหญ่เช่นกันและรองรับ
|
||||
wear leveling อย่างไรก็ตาม ระบบไฟล์นี้ไม่รองรับการเข้ารหัส
|
||||
+ app
|
||||
+ factory คือ พาร์ทิชันเก็บแอปพลิเคชันเริ่มต้น
|
||||
โปรแกรมบูตโหลดเดอร์จะเลือกพาร์ทิชันนี้เป็นแอปพลิเคชันเริ่มต้นหากไม่มีพาร์ทิชัน OTA
|
||||
หรือพาร์ทิชัน OTA นั้นว่างเปล่า หากมีการใช้พาร์ทิชัน OTA พาร์ทิชัน ota_0
|
||||
สามารถถูกใช้เป็นแอปพลิเคชันเริ่มต้นได้และพาร์ทิชัน factory สามารถถูกนำออกได้
|
||||
+ ota_0 ถึง ota_15 คือ พาร์ทิชัน ota_x นั้นถูกใช้สำหรับอัพเดท OTA โดยฟีเจอร์ OTA
|
||||
และการเข้ารหัสได้],
|
||||
[spiffs คือ กำหนดพาร์ทิชันสำหรับระบบไฟล์ SPIFFS เหมาะสำหรับไฟล์ใหญ่เช่นกันและรองรับ wear
|
||||
leveling อย่างไรก็ตาม ระบบไฟล์นี้ไม่รองรับการเข้ารหัส],
|
||||
)
|
||||
2. app
|
||||
#listy(
|
||||
indent: 10.75em,
|
||||
numbering: thai-numbering,
|
||||
[factory คือ พาร์ทิชันเก็บแอปพลิเคชันเริ่มต้น
|
||||
โปรแกรมบูตโหลดเดอร์จะเลือกพาร์ทิชันนี้เป็นแอปพลิเคชันเริ่มต้นหากไม่มีพาร์ทิชัน OTA หรือพาร์ทิชัน
|
||||
OTA นั้นว่างเปล่า หากมีการใช้พาร์ทิชัน OTA พาร์ทิชัน ota_0
|
||||
สามารถถูกใช้เป็นแอปพลิเคชันเริ่มต้นได้และพาร์ทิชัน factory สามารถถูกนำออกได้],
|
||||
[ota_0 ถึง ota_15 คือ พาร์ทิชัน ota_x นั้นถูกใช้สำหรับอัพเดท OTA โดยฟีเจอร์ OTA
|
||||
นั้นจำเป็นต้องใช้พาร์ทิชัน OTA อย่างน้อย 2 พาร์ทิชัน (โดยปกติคือ ota_0 และ ota_1)
|
||||
และจำเป็นต้องใช้พาร์ทิชัน ota ด้วยเช่นกันในการเก็บข้อมูลเกี่ยวกับ OTA โดยสามารถมีพาร์ทิชัน
|
||||
OTA ได้สูงสุด 16 พาร์ทิชัน แต่ 2 พาร์ทิชันคือจำนวนขั้นต่ำที่ต้องใช้สำหรับฟีเจอร์ OTA แบบเบสิค
|
||||
+ test คือ ใช้สำหรับการทดสอบในโรงงาน
|
||||
OTA ได้สูงสุด 16 พาร์ทิชัน แต่ 2 พาร์ทิชันคือจำนวนขั้นต่ำที่ต้องใช้สำหรับฟีเจอร์ OTA แบบเบสิค],
|
||||
[test คือ ใช้สำหรับการทดสอบในโรงงาน],
|
||||
)
|
||||
]
|
||||
|
||||
=== Offset
|
||||
|
||||
Offset คือ กำหนดพื้นที่ที่พาร์ทิชันนั้น ๆ เริ่มต้น โดย Offset นั้นถูกกำหนดโดยการรวมค่า Offset
|
||||
#iiii Offset คือ กำหนดพื้นที่ที่พาร์ทิชันนั้น ๆ เริ่มต้น โดย Offset นั้นถูกกำหนดโดยการรวมค่า Offset
|
||||
และขนาดของพาร์ทิชันก่อนหน้า 0 อย่างไรก็ตาม Offset จะต้องเป็นทวีคูณของ 4 KiB (0x1000)
|
||||
และพาร์ทิชันแอพจะต้องจัดตำแหน่งให้มีขนาด 64 KiB (0x10000) โดยหากปล่อยให้ว่าง ค่า Offset
|
||||
จะถูกคำนวนโดยอัตโนมัติตามตำแหน่งท้ายของพาร์ทิชันก่อนหน้า รวมถึงการจัดตำแหน่งใด ๆ ที่จำเป็น
|
||||
@@ -323,11 +333,12 @@ Offset คือ กำหนดพื้นที่ที่พาร์ทิ
|
||||
|
||||
=== Size
|
||||
|
||||
Size คือ ขนาดของพาร์ทิชัน โดยค่านี้สามารถเป็นเลขทศนิยม, ตัวเลข Hex (นำหน้าด้วย 0x), หรือใช้ตัวอักษรต่อท้ายเพื่อบ่งบอกหน่วย K (กิโล) หรือ M (เมกา) เช่น 4096 = 4K = 0x1000
|
||||
#iiii Size คือ ขนาดของพาร์ทิชัน โดยค่านี้สามารถเป็นเลขทศนิยม, ตัวเลข Hex (นำหน้าด้วย 0x),
|
||||
หรือใช้ตัวอักษรต่อท้ายเพื่อบ่งบอกหน่วย K (กิโล) หรือ M (เมกา) เช่น 4096 = 4K = 0x1000
|
||||
|
||||
=== Flags
|
||||
|
||||
Flags คือ ในปัจจุบันคอลัมน์นี้ใช้เพียงแค่เพื่อบ่งบอกว่าพาร์ทิชันนั้น ๆ ถูกเข้ารหัสหรือไม่
|
||||
#iiii Flags คือ ในปัจจุบันคอลัมน์นี้ใช้เพียงแค่เพื่อบ่งบอกว่าพาร์ทิชันนั้น ๆ ถูกเข้ารหัสหรือไม่
|
||||
|
||||
|
||||
== littlefs
|
||||
|
||||
+15
-9
@@ -76,12 +76,15 @@ Field) สนามแม่เหล็กไฟฟ้าสลับเป็
|
||||
|
||||
การสื่อสารเกิดขึ้นระหว่างอุปกรณ์ "ตัวเริ่มต้น" ที่ใช้งานอยู่และอุปกรณ์เป้าหมาย ซึ่งอาจเป็น
|
||||
|
||||
+ พาสซีฟ โดยอุปกรณ์ตัวเริ่มต้นจะทำหน้าที่เป็นสนามแม่เหล็กพาหะ
|
||||
#[
|
||||
#set enum(indent: 5.5em)
|
||||
1. พาสซีฟ โดยอุปกรณ์ตัวเริ่มต้นจะทำหน้าที่เป็นสนามแม่เหล็กพาหะ
|
||||
และอุปกรณ์เป้าหมายจะสื่อสารโดยการปรับสนามแม่เหล็กตกกระทบ ในโหมดนี้
|
||||
อุปกรณ์เป้าหมายอาจดึงพลังงานจากสนามแม่เหล็กที่ตัวเริ่มต้นจัดหาให้
|
||||
|
||||
+ คล่องแคล่ว โดยทั้งอุปกรณ์เริ่มต้นและอุปกรณ์เป้าหมายสื่อสารกันโดยการสร้างฟิลด์ของตัวเองสลับกัน
|
||||
อุปกรณ์จะหยุดส่งสัญญาณเพื่อรับข้อมูลจากอีกอุปกรณ์หนึ่ง โหมดนี้กำหนดให้อุปกรณ์ทั้งสองต้องมีแหล่งจ่ายไฟ
|
||||
2. คล่องแคล่ว โดยทั้งอุปกรณ์เริ่มต้นและอุปกรณ์เป้าหมายสื่อสารกันโดยการสร้างฟิลด์ของตัวเองสลับกัน
|
||||
อุปกรณ์จะหยุดส่งสัญญาณเพื่อรับข้อมูลจากอีกอุปกรณ์หนึ่ง โหมดนี้กำหนดให้อุปกรณ์ทั้งสองต้องมีแหล่งจ่ายไฟ
|
||||
]
|
||||
|
||||
#figure(
|
||||
table(
|
||||
@@ -101,12 +104,15 @@ Field) สนามแม่เหล็กไฟฟ้าสลับเป็
|
||||
|
||||
#iii อุปกรณ์ NFC ที่ใช้งานอยู่ทุกเครื่องสามารถทำงานในโหมดใดโหมดหนึ่งหรือหลายโหมดได้
|
||||
|
||||
+ การจำลองการ์ด NFC ช่วยให้อุปกรณ์ที่รองรับ NFC เช่น สมาร์ทโฟน ทำหน้าที่เหมือนสมาร์ทการ์ด
|
||||
ช่วยให้ผู้ใช้ทำธุรกรรมต่างๆ เช่น การชำระเงินหรือการออกตั๋วได้ ดูการจำลองการ์ดโฮสต์
|
||||
+ เครื่องอ่าน/เขียน NFC ช่วยให้อุปกรณ์ที่เปิดใช้งาน NFC สามารถอ่านข้อมูลที่จัดเก็บไว้ในแท็ก NFC
|
||||
ราคาไม่แพงที่ฝังอยู่ในฉลากหรือโปสเตอร์อัจฉริยะได้
|
||||
+ NFC เพียร์ทูเพียร์ ช่วยให้อุปกรณ์ที่เปิดใช้งาน NFC
|
||||
สองเครื่องสามารถสื่อสารกันเพื่อแลกเปลี่ยนข้อมูลในลักษณะ เฉพาะกิจ
|
||||
#[
|
||||
#set enum(indent: 5.5em)
|
||||
+ การจำลองการ์ด NFC ช่วยให้อุปกรณ์ที่รองรับ NFC เช่น สมาร์ทโฟน ทำหน้าที่เหมือนสมาร์ทการ์ด
|
||||
ช่วยให้ผู้ใช้ทำธุรกรรมต่างๆ เช่น การชำระเงินหรือการออกตั๋วได้ ดูการจำลองการ์ดโฮสต์
|
||||
+ เครื่องอ่าน/เขียน NFC ช่วยให้อุปกรณ์ที่เปิดใช้งาน NFC สามารถอ่านข้อมูลที่จัดเก็บไว้ในแท็ก NFC
|
||||
ราคาไม่แพงที่ฝังอยู่ในฉลากหรือโปสเตอร์อัจฉริยะได้
|
||||
+ NFC เพียร์ทูเพียร์ ช่วยให้อุปกรณ์ที่เปิดใช้งาน NFC
|
||||
สองเครื่องสามารถสื่อสารกันเพื่อแลกเปลี่ยนข้อมูลในลักษณะ เฉพาะกิจ
|
||||
]
|
||||
|
||||
แท็ก NFC คือหน่วยเก็บข้อมูลแบบพาสซีฟที่อุปกรณ์ NFC สามารถอ่านและเขียนข้อมูลได้ในบางกรณี#jb
|
||||
โดยทั่วไปจะมีข้อมูล (ณ ปี 2015 มีขนาดระหว่าง 96 ถึง 8,192 ไบต์)
|
||||
|
||||
+3
-6
@@ -38,13 +38,10 @@ IR แบบสร้างภาพ เซ็นเซอร์ PIR มัก
|
||||
โดยปกติแล้วรังสีนี้มองไม่เห็นด้วยตาเปล่าเนื่องจากแผ่รังสีในช่วงความยาวคลื่นอินฟราเรด
|
||||
แต่อุปกรณ์อิเล็กทรอนิกส์ที่ออกแบบมาเพื่อจุดประสงค์นี้ สามารถตรวจจับได้
|
||||
|
||||
#v(1em)
|
||||
|
||||
|
||||
== เครื่องตรวจจับการเคลื่อนไหวแบบ PIR
|
||||
\
|
||||
|
||||
#afigure(
|
||||
image("PIR/Motion_detector.jpg", height: image-height),
|
||||
image("PIR/Motion_detector.jpg", height: 2in),
|
||||
alt: "เครื่องตรวจจับความเคลื่อนไหว ติดตั้งบนเพดาน",
|
||||
attr: [CHG, Public Domain,
|
||||
https://commons.wikimedia.org/w/index.php?curid=6087132],
|
||||
@@ -187,7 +184,7 @@ IR แบบสร้างภาพ เซ็นเซอร์ PIR มัก
|
||||
#iiii บางรุ่นผลิตขึ้นโดยใช้กระจกพาราโบลา แบบแบ่งส่วนภายใน เพื่อรวมพลังงานอินฟราเรด
|
||||
ในกรณีที่ใช้กระจก ฝาครอบกระจกพลาสติกโดยทั่วไปจะไม่มีเลนส์เฟรสเนลหล่อขึ้นรูป
|
||||
|
||||
=== PIR ชนิดกระจกแบ่งส่วน
|
||||
#h(12em) 1) PIR ชนิดกระจกแบ่งส่วน
|
||||
|
||||
#afigure(
|
||||
image("PIR/Front-(mirror_type).jpg", height: 2in),
|
||||
|
||||
+19
-19
@@ -43,21 +43,21 @@ Navigator
|
||||
|
||||
#block(inset: (left: 6em))[
|
||||
+ การจับมือเริ่มต้นเมื่อไคลเอนต์เชื่อมต่อกับเซิร์ฟเวอร์ที่เปิดใช้งาน TLS
|
||||
เพื่อขอการเชื่อมต่อที่ปลอดภัยและไคลเอนต์แสดงรายการชุดรหัสที่รองรับ (รหัสและฟังก์ชันแฮช)
|
||||
+ จากรายการนี้ เซิร์ฟเวอร์จะเลือกฟังก์ชันรหัสและแฮชที่รองรับ และแจ้งให้ไคลเอนต์ทราบถึงการตัดสินใจ
|
||||
+ โดยปกติแล้วเซิร์ฟเวอร์จะระบุตัวตนในรูปแบบของใบรับรองดิจิทัลใบรับรองประกอบด้วยชื่อเซิร์ฟเวอร์ผู้ให้บริการออกใบรับรอง
|
||||
(CA) ที่เชื่อถือได้ซึ่งรับรองความถูกต้องของใบรับรอง และคีย์การเข้ารหัสสาธารณะของเซิร์ฟเวอร์
|
||||
+ ลูกค้าต้องยืนยันความถูกต้องของใบรับรองก่อนดำเนินการต่อ
|
||||
+ ในการสร้างคีย์เซสชันที่ใช้สำหรับการเชื่อมต่อที่ปลอดภัย ไคลเอนต์จะต้องทำดังนี้:
|
||||
+ เข้ารหัสตัวเลขสุ่ม (PreMasterSecret)
|
||||
ด้วยคีย์สาธารณะของเซิร์ฟเวอร์และส่งผลลัพธ์ไปยังเซิร์ฟเวอร์
|
||||
(ซึ่งเฉพาะเซิร์ฟเวอร์เท่านั้นที่จะสามารถถอดรหัสด้วยคีย์ส่วนตัว)
|
||||
จากนั้นทั้งสองฝ่ายใช้ตัวเลขสุ่มเพื่อสร้างคีย์เซสชันเฉพาะสำหรับการเข้ารหัสและถอดรหัสข้อมูลในระหว่างเซสชันในภายหลังหรือ
|
||||
+ ใช้การแลกเปลี่ยนคีย์ Diffie--Hellman (หรือรูปแบบ DH ที่เป็นเส้นโค้งวงรี)
|
||||
เพื่อสร้างคีย์เซสชันแบบสุ่มและไม่ซ้ำกันอย่างปลอดภัยสำหรับการเข้ารหัสและถอดรหัส
|
||||
ซึ่งมีคุณสมบัติเพิ่มเติมของการปกปิดแบบส่งต่อ : หากคีย์ส่วนตัวของเซิร์ฟเวอร์ถูกเปิดเผยในอนาคต
|
||||
จะไม่สามารถใช้คีย์นั้นเพื่อถอดรหัสเซสชันปัจจุบันได้
|
||||
แม้ว่าเซสชันนั้นจะถูกดักจับและบันทึกโดยบุคคลที่สามก็ตาม
|
||||
เพื่อขอการเชื่อมต่อที่ปลอดภัยและไคลเอนต์แสดงรายการชุดรหัสที่รองรับ (รหัสและฟังก์ชันแฮช)
|
||||
+ จากรายการนี้ เซิร์ฟเวอร์จะเลือกฟังก์ชันรหัสและแฮชที่รองรับ และแจ้งให้ไคลเอนต์ทราบถึงการตัดสินใจ
|
||||
+ โดยปกติแล้วเซิร์ฟเวอร์จะระบุตัวตนในรูปแบบของใบรับรองดิจิทัลใบรับรองประกอบด้วยชื่อเซิร์ฟเวอร์ผู้ให้บริการออกใบรับรอง
|
||||
(CA) ที่เชื่อถือได้ซึ่งรับรองความถูกต้องของใบรับรอง และคีย์การเข้ารหัสสาธารณะของเซิร์ฟเวอร์
|
||||
+ ลูกค้าต้องยืนยันความถูกต้องของใบรับรองก่อนดำเนินการต่อ
|
||||
+ ในการสร้างคีย์เซสชันที่ใช้สำหรับการเชื่อมต่อที่ปลอดภัย ไคลเอนต์จะต้องทำดังนี้
|
||||
+ เข้ารหัสตัวเลขสุ่ม (PreMasterSecret)
|
||||
ด้วยคีย์สาธารณะของเซิร์ฟเวอร์และส่งผลลัพธ์ไปยังเซิร์ฟเวอร์
|
||||
(ซึ่งเฉพาะเซิร์ฟเวอร์เท่านั้นที่จะสามารถถอดรหัสด้วยคีย์ส่วนตัว)
|
||||
จากนั้นทั้งสองฝ่ายใช้ตัวเลขสุ่มเพื่อสร้างคีย์เซสชันเฉพาะสำหรับการเข้ารหัสและถอดรหัสข้อมูลในระหว่างเซสชันในภายหลังหรือ
|
||||
+ ใช้การแลกเปลี่ยนคีย์ Diffie--Hellman (หรือรูปแบบ DH ที่เป็นเส้นโค้งวงรี)
|
||||
เพื่อสร้างคีย์เซสชันแบบสุ่มและไม่ซ้ำกันอย่างปลอดภัยสำหรับการเข้ารหัสและถอดรหัส
|
||||
ซึ่งมีคุณสมบัติเพิ่มเติมของการปกปิดแบบส่งต่อ โดยหากคีย์ส่วนตัวของเซิร์ฟเวอร์ถูกเปิดเผยในอนาคต
|
||||
จะไม่สามารถใช้คีย์นั้นเพื่อถอดรหัสเซสชันปัจจุบันได้
|
||||
แม้ว่าเซสชันนั้นจะถูกดักจับและบันทึกโดยบุคคลที่สามก็ตาม
|
||||
]
|
||||
|
||||
#iii
|
||||
@@ -76,7 +76,7 @@ TLS จะล้มเหลวและการเชื่อมต่อจ
|
||||
|
||||
#[
|
||||
#set enum(indent: 6em)
|
||||
+ การเชื่อมต่อเป็นแบบส่วนตัว (หรือมีความลับ) เนื่องจาก มีการใช้
|
||||
1. การเชื่อมต่อเป็นแบบส่วนตัว (หรือมีความลับ) เนื่องจาก มีการใช้
|
||||
อัลกอริทึมคีย์แบบสมมาตรในการเข้ารหัสข้อมูลที่ส่ง
|
||||
คีย์สำหรับการเข้ารหัสแบบสมมาตรนี้จะถูกสร้างขึ้นอย่างเฉพาะเจาะจงสำหรับแต่ละการเชื่อมต่อ
|
||||
และอิงจากความลับร่วมที่เจรจากันไว้เมื่อเริ่มต้นเซสชัน
|
||||
@@ -85,9 +85,9 @@ TLS จะล้มเหลวและการเชื่อมต่อจ
|
||||
(ความลับที่เจรจากันไว้จะไม่สามารถเข้าถึงได้โดยผู้ดักฟังและไม่สามารถได้รับ
|
||||
แม้แต่โดยผู้โจมตีที่วางตัวเองอยู่ตรงกลางการเชื่อมต่อ) และเชื่อถือได้
|
||||
(ไม่มีผู้โจมตีคนใดสามารถแก้ไขการสื่อสารระหว่างการเจรจาโดยไม่ถูกตรวจพบ)
|
||||
+ การยืนยันตัวตนของฝ่ายที่สื่อสารสามารถยืนยันได้โดยใช้การเข้ารหัสด้วยคีย์สาธารณะการยืนยันตัวตนนี้จำเป็นสำหรับเซิร์ฟเวอร์และเป็นทางเลือกสำหรับไคลเอนต์
|
||||
+ การเชื่อมต่อมีความน่าเชื่อถือ (หรือมีความสมบูรณ์)
|
||||
เนื่องจากข้อความแต่ละข้อความที่ส่งออกจะมีการตรวจสอบความสมบูรณ์ของข้อความโดยใช้รหัสยืนยันข้อความเพื่อป้องกันการสูญหายหรือการเปลี่ยนแปลงข้อมูลที่ไม่ถูกตรวจพบระหว่างการส่งข้อมูล
|
||||
2. การยืนยันตัวตนของฝ่ายที่สื่อสารสามารถยืนยันได้โดยใช้การเข้ารหัสด้วยคีย์สาธารณะการยืนยันตัวตนนี้จำเป็นสำหรับเซิร์ฟเวอร์และเป็นทางเลือกสำหรับไคลเอนต์
|
||||
3. การเชื่อมต่อมีความน่าเชื่อถือ (หรือมีความสมบูรณ์)
|
||||
เนื่องจากข้อความแต่ละข้อความที่ส่งออกจะมีการตรวจสอบความสมบูรณ์ของข้อความโดยใช้รหัสยืนยันข้อความเพื่อป้องกันการสูญหายหรือการเปลี่ยนแปลงข้อมูลที่ไม่ถูกตรวจพบระหว่างการส่งข้อมูล
|
||||
]
|
||||
|
||||
#iii TLS รองรับวิธีการที่หลากหลายสำหรับการแลกเปลี่ยนคีย์ การเข้ารหัสข้อมูล
|
||||
|
||||
+49
-46
@@ -16,7 +16,7 @@ TLS/SSL ซึ่งเป็นพื้นฐานของ HTTPS โปร
|
||||
#iii X.509
|
||||
ยังกำหนดรายการเพิกถอนใบรับรองซึ่งเป็นวิธีการแจกจ่ายข้อมูลเกี่ยวกับใบรับรองที่ถือว่าไม่ถูกต้องโดยผู้มีอำนาจลงนาม
|
||||
ตลอดจนอัลกอริทึมการตรวจสอบเส้นทางการรับรองซึ่งช่วยให้ใบรับรองได้รับการลงนามโดยใบรับรอง CA
|
||||
ตัวกลาง ซึ่งใบรับรองเหล่านี้จะได้รับการลงนามโดยใบรับรองอื่นๆ ต่อไปจนไปถึงจุดยึดที่เชื่อถือได้ในที่สุด
|
||||
ตัวกลาง ซึ่งใบรับรองเหล่านี้จะได้รับการลงนามโดยใบรับรองอื่น ๆ ต่อไปจนไปถึงจุดยึดที่เชื่อถือได้ในที่สุด
|
||||
|
||||
#iii X.509 ถูกกำหนดโดย "Standardization Sector" ของ ITU (SG17 ของ ITU-T) ใน ITU-T
|
||||
Study Group 17 และมีพื้นฐานมาจาก Abstract Syntax Notation One (ASN.1)
|
||||
@@ -28,18 +28,20 @@ Notation One (ASN.1)
|
||||
|
||||
#iiii โครงสร้างของใบรับรองดิจิทัล X.509 v3 มีดังนี้
|
||||
|
||||
+ ใบรับรอง
|
||||
+ หมายเลขเวอร์ชัน
|
||||
+ หมายเลขซีเรียล
|
||||
+ รหัสอัลกอริทึมลายเซ็น
|
||||
+ ชื่อผู้ออก
|
||||
+ ระยะเวลาใช้งานไม่ก่อนหรือไม่หลังจากนั้น
|
||||
+ ชื่อเรื่อง
|
||||
+ ข้อมูลคีย์สาธารณะของเรื่องได้แก่อัลกอริทึมคีย์สาธารณะ
|
||||
คีย์สาธารณะของเรื่องเช่นรหัสประจำตัวผู้ออก (ไม่จำเป็น)
|
||||
รหัสประจำตัวเฉพาะเรื่อง (ไม่จำเป็น) ส่วนขยาย (ไม่จำเป็น)
|
||||
+ อัลกอริทึมลายเซ็นใบรับรอง
|
||||
+ ลายเซ็นใบรับรอง
|
||||
#block(inset: (left: 9.25em))[
|
||||
+ ใบรับรอง
|
||||
+ หมายเลขเวอร์ชัน
|
||||
+ หมายเลขซีเรียล
|
||||
+ รหัสอัลกอริทึมลายเซ็น
|
||||
+ ชื่อผู้ออก
|
||||
+ ระยะเวลาใช้งาน โดยระบุเวลาไม่ก่อนและไม่หลังจากนั้น
|
||||
+ ชื่อเรื่อง
|
||||
+ ข้อมูลคีย์สาธารณะของเรื่อง ได้แก่ อัลกอริทึมคีย์สาธารณะ
|
||||
คีย์สาธารณะของเรื่องเช่นรหัสประจำตัวผู้ออก (ไม่จำเป็น) รหัสประจำตัวเฉพาะเรื่อง (ไม่จำเป็น)
|
||||
ส่วนขยาย (ไม่จำเป็น)
|
||||
+ อัลกอริทึมลายเซ็นใบรับรอง
|
||||
+ ลายเซ็นใบรับรอง
|
||||
]
|
||||
|
||||
#iiii ฟิลด์ส่วนขยาย (ถ้ามี) จะเป็นลำดับของส่วนขยายใบรับรองอย่างน้อยหนึ่งรายการ
|
||||
แต่ละส่วนขยายมีรหัสประจำตัวเฉพาะของตัวเอง ซึ่งแสดงเป็นตัวระบุวัตถุ (OID)
|
||||
@@ -71,39 +73,40 @@ Notation One (ASN.1)
|
||||
มีหลายประเภทนามสกุลไฟล์เหล่านี้ยังใช้สำหรับข้อมูลอื่น ๆ เช่น คีย์ส่วนตัวด้วย
|
||||
|
||||
#[
|
||||
#set enum(indent: 9.75em)
|
||||
+ `.pem` -- (อีเมลอิเล็กทรอนิกส์ที่เพิ่มความเป็นส่วนตัว) ใบรับรอง DER ที่เข้ารหัส Base64
|
||||
แนบระหว่าง `-----BEGIN CERTIFICATE-----` และ `-----END CERTIFICATE-----`
|
||||
+ `.cer`, `.crt`, `.der` -- โดยปกติจะอยู่ในรูปแบบไบนารี DER แต่ใบรับรองที่เข้ารหัส Base64
|
||||
ก็เป็นเรื่องปกติเช่นกัน (ดู `.pem` ด้านบน)
|
||||
+ `.p8`, `.p8e`, `.pk8` -- คีย์ส่วนตัวที่ส่งออกตามที่ระบุไว้ใน PKCS\#8 อาจอยู่ในรูปแบบ DER หรือ
|
||||
PEM ที่ขึ้นต้นด้วย `-----BEGIN PRIVATE KEY-----` คีย์ที่เข้ารหัสจะขึ้นต้นด้วย
|
||||
`-----BEGIN ENCRYPTED PRIVATE KEY-----` และอาจมี `.p8e` เป็นนามสกุลไฟล์
|
||||
+ `.p10`, `.csr` -- PKCS\#10 เป็นคำขอลงนามใบรับรอง (CSR) ในรูปแบบ PEM ขึ้นต้นด้วย
|
||||
`-----BEGIN CERTIFICATE REQUEST-----` แบบฟอร์มเหล่านี้สร้างขึ้นเพื่อส่งไปยังผู้ออกใบรับรอง
|
||||
(CA) แบบฟอร์มประกอบด้วยรายละเอียดสำคัญของใบรับรองที่ร้องขอ เช่น ชื่อสามัญ (/CN), หัวเรื่อง,
|
||||
องค์กร, รัฐ, ประเทศ รวมถึงคีย์สาธารณะของใบรับรองที่ต้องการให้ลงนาม
|
||||
คีย์เหล่านี้จะได้รับการลงนามโดย CA และใบรับรองจะถูกส่งกลับคืน ใบรับรองที่ส่งคืนคือใบรับรอง
|
||||
สาธารณะ (ซึ่งมีคีย์สาธารณะแต่ไม่มีคีย์ส่วนตัว) ซึ่งตัวใบรับรองเองสามารถอยู่ในรูปแบบต่างๆ
|
||||
ได้หลายรูปแบบ แต่โดยปกติจะเป็น `.p7r`
|
||||
+ `.p7r` -- คำตอบ ของ PKCS\#7 ต่อ CSR ประกอบด้วยใบรับรองที่เพิ่งลงนาม และใบรับรองของ CA
|
||||
เอง
|
||||
+ `.p7s` -- ลายเซ็นดิจิทัล PKCS\#7 อาจมีไฟล์หรือข้อความที่ลงนามต้นฉบับ ใช้ใน S/MIME
|
||||
สำหรับการลงนามในอีเมลกำหนดไว้ใน RFC 2311
|
||||
+ `.p7m` -- PKCS\#7 (SignedData, EnvelopedData) ข้อความ เช่น ไฟล์ที่เข้ารหัส
|
||||
("enveloped") ข้อความ หรือจดหมายอีเมล MIME กำหนดไว้ใน RFC 2311
|
||||
+ `.p7c` -- โครงสร้าง SignedData แบบ "certs-only" ของ PKCS\#7 ที่เสื่อมลง
|
||||
โดยไม่มีข้อมูลใดๆ ให้ลงนาม กำหนดไว้ใน RFC 2311
|
||||
+ `.p7b` -- โครงสร้าง SignedData ของ PKCS\#7 ที่ไม่มีข้อมูล มีเพียงใบรับรองแบบบันเดิลหรือ CRL
|
||||
(ไม่ค่อยเกิดขึ้น) แต่ไม่มีคีย์ส่วนตัว ใช้รูปแบบ DER หรือ BER หรือ PEM ที่ขึ้นต้นด้วย
|
||||
`-----BEGIN PKCS7-----` รูปแบบที่ Windows ใช้สำหรับการแลกเปลี่ยนใบรับรอง รองรับโดย Java
|
||||
แต่มักใช้นามสกุล `.keystore` แทน ซึ่งแตกต่างจากใบรับรองแบบ `.pem`
|
||||
รูปแบบนี้มีวิธีที่กำหนดไว้สำหรับการรวมใบรับรองเส้นทางการรับรอง
|
||||
+ `.p12`, `.pfx`, `.pkcs12` -- PKCS\#12 อาจมีใบรับรอง (สาธารณะ) และคีย์ส่วนตัว
|
||||
(ป้องกันด้วยรหัสผ่าน) ในไฟล์เดียว `.pfx` - _Personal Information eXchange_ PFX
|
||||
ซึ่งเป็นรุ่นก่อนของ PKCS\#12 (โดยปกติจะมีข้อมูลในรูปแบบ PKCS\#12 เช่น ไฟล์ PFX ที่สร้างใน IIS)
|
||||
+ `.crl` -- รายการเพิกถอนใบรับรอง (CRL)
|
||||
หน่วยงานที่ออกใบรับรองจะจัดทำรายการเหล่านี้ขึ้นเพื่อใช้ในการเพิกถอนใบรับรองก่อนหมดอายุ
|
||||
#set enum(indent: 9.25em)
|
||||
1. `.pem` -- (อีเมลอิเล็กทรอนิกส์ที่เพิ่มความเป็นส่วนตัว) ใบรับรอง DER ที่เข้ารหัส Base64
|
||||
แนบระหว่าง `-----BEGIN CERTIFICATE-----` และ `-----END CERTIFICATE-----`
|
||||
2. `.cer`, `.crt`, `.der` -- โดยปกติจะอยู่ในรูปแบบไบนารี DER แต่ใบรับรองที่เข้ารหัส
|
||||
Base64 ก็เป็นเรื่องปกติเช่นกัน (ดู `.pem` ด้านบน)
|
||||
3. `.p8`, `.p8e`, `.pk8` -- คีย์ส่วนตัวที่ส่งออกตามที่ระบุไว้ใน PKCS\#8 อาจอยู่ในรูปแบบ DER
|
||||
หรือ PEM ที่ขึ้นต้นด้วย `-----BEGIN PRIVATE KEY-----` คีย์ที่เข้ารหัสจะขึ้นต้นด้วย
|
||||
`-----BEGIN ENCRYPTED PRIVATE KEY-----` และอาจมี `.p8e` เป็นนามสกุลไฟล์
|
||||
4. `.p10`, `.csr` -- PKCS\#10 เป็นคำขอลงนามใบรับรอง (CSR) ในรูปแบบ PEM ขึ้นต้นด้วย
|
||||
`-----BEGIN CERTIFICATE REQUEST-----` แบบฟอร์มเหล่านี้สร้างขึ้นเพื่อส่งไปยังผู้ออกใบรับรอง
|
||||
(CA) แบบฟอร์มประกอบด้วยรายละเอียดสำคัญของใบรับรองที่ร้องขอ เช่น ชื่อสามัญ (/CN), หัวเรื่อง,
|
||||
องค์กร, รัฐ, ประเทศ รวมถึงคีย์สาธารณะของใบรับรองที่ต้องการให้ลงนาม
|
||||
คีย์เหล่านี้จะได้รับการลงนามโดย CA และใบรับรองจะถูกส่งกลับคืน ใบรับรองที่ส่งคืนคือใบรับรอง
|
||||
สาธารณะ (ซึ่งมีคีย์สาธารณะแต่ไม่มีคีย์ส่วนตัว) ซึ่งตัวใบรับรองเองสามารถอยู่ในรูปแบบต่างๆ
|
||||
ได้หลายรูปแบบ แต่โดยปกติจะเป็น `.p7r`
|
||||
5. `.p7r` -- คำตอบ ของ PKCS\#7 ต่อ CSR ประกอบด้วยใบรับรองที่เพิ่งลงนาม และใบรับรองของ
|
||||
CA เอง
|
||||
6. `.p7s` -- ลายเซ็นดิจิทัล PKCS\#7 อาจมีไฟล์หรือข้อความที่ลงนามต้นฉบับ ใช้ใน S/MIME
|
||||
สำหรับการลงนามในอีเมลกำหนดไว้ใน RFC 2311
|
||||
7. `.p7m` -- PKCS\#7 (SignedData, EnvelopedData) ข้อความ เช่น ไฟล์ที่เข้ารหัส
|
||||
("enveloped") ข้อความ หรือจดหมายอีเมล MIME กำหนดไว้ใน RFC 2311
|
||||
8. `.p7c` -- โครงสร้าง SignedData แบบ "certs-only" ของ PKCS\#7 ที่เสื่อมลง
|
||||
โดยไม่มีข้อมูลใดๆ ให้ลงนาม กำหนดไว้ใน RFC 2311
|
||||
9. `.p7b` -- โครงสร้าง SignedData ของ PKCS\#7 ที่ไม่มีข้อมูล มีเพียงใบรับรองแบบบันเดิลหรือ
|
||||
CRL (ไม่ค่อยเกิดขึ้น) แต่ไม่มีคีย์ส่วนตัว ใช้รูปแบบ DER หรือ BER หรือ PEM ที่ขึ้นต้นด้วย
|
||||
`-----BEGIN PKCS7-----` รูปแบบที่ Windows ใช้สำหรับการแลกเปลี่ยนใบรับรอง รองรับโดย
|
||||
Java แต่มักใช้นามสกุล `.keystore` แทน ซึ่งแตกต่างจากใบรับรองแบบ `.pem`
|
||||
รูปแบบนี้มีวิธีที่กำหนดไว้สำหรับการรวมใบรับรองเส้นทางการรับรอง
|
||||
10. `.p12`, `.pfx`, `.pkcs12` -- PKCS\#12 อาจมีใบรับรอง (สาธารณะ) และคีย์ส่วนตัว
|
||||
(ป้องกันด้วยรหัสผ่าน) ในไฟล์เดียว `.pfx` - _Personal Information eXchange_ PFX
|
||||
ซึ่งเป็นรุ่นก่อนของ PKCS\#12 (โดยปกติจะมีข้อมูลในรูปแบบ PKCS\#12 เช่น ไฟล์ PFX ที่สร้างใน
|
||||
IIS)
|
||||
11. `.crl` -- รายการเพิกถอนใบรับรอง (CRL)
|
||||
หน่วยงานที่ออกใบรับรองจะจัดทำรายการเหล่านี้ขึ้นเพื่อใช้ในการเพิกถอนใบรับรองก่อนหมดอายุ
|
||||
]
|
||||
|
||||
#iiii PKCS\#7 เป็นมาตรฐานสำหรับการลงนามหรือเข้ารหัสข้อมูล (เรียกอย่างเป็นทางการว่า
|
||||
|
||||
@@ -24,14 +24,3 @@ ASN.1 เช่นเดียวกับ CER การเข้ารหัส
|
||||
ในการเข้ารหัสลับและช่วยให้มั่นใจว่าโครงสร้างข้อมูลที่จำเป็นต้องมีการลงนามดิจิทัลจะสร้างการแสดงแบบอนุกรมที่ไม่ซ้ำกัน
|
||||
DER ถือเป็นรูปแบบมาตรฐานของ BER ตัวอย่างเช่นใน BER ค่าบูลีน true
|
||||
สามารถเข้ารหัสเป็นค่าไบต์ที่ไม่ใช่ศูนย์ 255 ค่า ในขณะที่ DER มีวิธีการเข้ารหัสค่าบูลีน true เพียงวิธีเดียว
|
||||
|
||||
#pagebreak()
|
||||
|
||||
ข้อจำกัดการเข้ารหัส DER ที่สำคัญที่สุดคือ:
|
||||
|
||||
1. การเข้ารหัสความยาวจะต้องใช้รูปแบบที่แน่นอน
|
||||
- นอกจากนี้ จะต้องใช้การเข้ารหัสที่มีความยาวสั้นที่สุดเท่าที่จะเป็นไปได้
|
||||
2. บิตสตริง อ็อกเท็ตสตริง และสตริงอักขระที่จำกัดต้องใช้การเข้ารหัสแบบดั้งเดิม
|
||||
3. องค์ประกอบของชุดจะถูกเข้ารหัสตามลำดับการเรียงลำดับตามค่าแท็ก
|
||||
|
||||
DER ถูกใช้กันอย่างแพร่หลายสำหรับใบรับรอง ดิจิทัลเช่น X.509
|
||||
|
||||
+24
-39
@@ -47,8 +47,11 @@
|
||||
|
||||
=== แผนขั้นตอนและวิธีการดำเนินงาน
|
||||
|
||||
ตาราง 3.1 ระยะเวลาการดำเนินงาน
|
||||
#v(0.5em, weak: true)
|
||||
|
||||
#table(
|
||||
columns: 12,
|
||||
columns: (2fr, 1fr, 1fr, 1fr, 1fr, 1fr),
|
||||
align: (
|
||||
left + horizon,
|
||||
center,
|
||||
@@ -56,16 +59,10 @@
|
||||
center,
|
||||
center,
|
||||
center,
|
||||
center,
|
||||
center,
|
||||
center,
|
||||
center,
|
||||
center,
|
||||
center,
|
||||
),
|
||||
table.header(
|
||||
table.cell(
|
||||
[ขั้นตอนการ\ ดำเนินการ],
|
||||
[ขั้นตอนการดำเนินการ],
|
||||
rowspan: 2,
|
||||
),
|
||||
table.cell(
|
||||
@@ -74,48 +71,30 @@
|
||||
),
|
||||
table.cell(
|
||||
[พ.ศ.2569],
|
||||
colspan: 8,
|
||||
colspan: 2,
|
||||
),
|
||||
[ต.ค.],
|
||||
[พ.ย.],
|
||||
[ธ.ค.],
|
||||
[ม.ค.],
|
||||
[ก.พ.],
|
||||
[มี.ค],
|
||||
[เม.ย],
|
||||
[พ.ค.],
|
||||
[มิ.ย.],
|
||||
[ก.ค.],
|
||||
[ส.ค.],
|
||||
),
|
||||
[ศึกษาค้นคว้าข้อมูล],
|
||||
table.cell(arrow, colspan: 3),
|
||||
[],
|
||||
[],
|
||||
[],
|
||||
[],
|
||||
[],
|
||||
[],
|
||||
[],
|
||||
[],
|
||||
[เสนอหัวข้อ], arrow, [], [], [], [], [], [], [], [], [], [],
|
||||
[เสนอครั้งที่ 1], [], arrow, [], [], [], [], [], [], [], [], [],
|
||||
[ออกแบบและสร้าง], [], table.cell(arrow, colspan: 5), [], [], [], [], [],
|
||||
[เสนอหัวข้อ], arrow, [], [], [], [],
|
||||
[เสนอครั้งที่ 1], [], arrow, [], [], [],
|
||||
[ออกแบบและสร้าง], [], table.cell(arrow, colspan: 3), [],
|
||||
[จัดซื้ออุปกรณ์ทดลอง],
|
||||
[],
|
||||
table.cell(arrow, colspan: 3),
|
||||
[],
|
||||
[],
|
||||
[],
|
||||
[],
|
||||
[],
|
||||
[],
|
||||
[],
|
||||
[ทดลองการทำงาน], [], [], table.cell(arrow, colspan: 4), [], [], [], [], [],
|
||||
[ปรับปรุงแก้ไข], [], [], [], [], table.cell(arrow, colspan: 5), [], [],
|
||||
[เสนอครั้งที่ 2], [], [], [], arrow, [], [], [], [], [], [], [],
|
||||
[จัดทำรูปเล่ม], table.cell(arrow, colspan: 11),
|
||||
[นำเสนอโครงงาน], [], [], [], [], [], [], [], [], [], [], [],
|
||||
[ทดลองการทำงาน], [], [], table.cell(arrow, colspan: 2), [],
|
||||
[ปรับปรุงแก้ไข], [], [], [], [], arrow,
|
||||
[เสนอครั้งที่ 2], [], [], [], arrow, [],
|
||||
[จัดทำรูปเล่ม], table.cell(arrow, colspan: 5),
|
||||
[นำเสนอโครงงาน], [], [], [], [], [],
|
||||
)
|
||||
|
||||
#show: page-theme
|
||||
@@ -146,6 +125,8 @@
|
||||
|
||||
== ขั้นตอนการประกอบ
|
||||
|
||||
=== การติดตั้งอุปกรณ์
|
||||
|
||||
โครงงานแบ่งออกเป็น 3 โมดูล
|
||||
|
||||
+ โมดูลเซนเซอร์ NFC ขาเข้าและบอร์ด ESP32
|
||||
@@ -163,12 +144,16 @@
|
||||
}
|
||||
}
|
||||
|
||||
=== โมดูลเซนเซอร์ NFC ขาออก
|
||||
==== โมดูลเซนเซอร์ NFC ขาเข้าและบอร์ด ESP32
|
||||
|
||||
#i ดำเนินการเจาะรูบริเวณตัวกล่องเพื่อใช้เป็นช่องสำหรับสายไฟ
|
||||
จากนั้นนำสายไฟร้อยผ่านช่องดังกล่าวและต่อเข้ากับเซนเซอร์ NFC ให้เรียบร้อยตามขั้นตอน
|
||||
#iiii ทำการเจาะรู
|
||||
|
||||
=== การติดตั้งอุปกรณ์
|
||||
==== โมดูลเซนเซอร์ NFC ขาออก
|
||||
|
||||
#iiii ดำเนินการเจาะรูบริเวณตัวกล่องเพื่อใช้เป็นช่องสำหรับสายไฟ
|
||||
จากนั้นนำสายไฟร้อยผ่านช่องดังกล่าวและต่อเข้ากับเซนเซอร์ NFC ให้เรียบร้อย
|
||||
|
||||
==== โมดูลเซนเซอร์ PIR
|
||||
|
||||
=== การเขียนเฟิร์มแวร์ <writingFirmware>
|
||||
|
||||
|
||||
+79
-10
@@ -1,3 +1,12 @@
|
||||
#let page-numbering(n) = {
|
||||
let chars = ("ก", "ข", "ค", "ง", "จ", "ฉ", "ช")
|
||||
if n <= chars.len() {
|
||||
chars.at(n - 1)
|
||||
} else {
|
||||
str(n - chars.len()) // fallback to numbers if exceeds available characters
|
||||
}
|
||||
}
|
||||
|
||||
#let thai-numbering(n) = {
|
||||
let chars = ("ก", "ข", "ค", "ง", "จ", "ฉ", "ช")
|
||||
if n <= chars.len() {
|
||||
@@ -5,6 +14,7 @@
|
||||
} else {
|
||||
str(n - chars.len()) // fallback to numbers if exceeds available characters
|
||||
}
|
||||
[)]
|
||||
}
|
||||
|
||||
#let chapter-page(doc) = {
|
||||
@@ -38,6 +48,26 @@
|
||||
|
||||
#let iiiiii = h(16.85em)
|
||||
|
||||
#let listy(
|
||||
numbering: "1)",
|
||||
indent: 1em,
|
||||
hanging-indent: 0em,
|
||||
body-spacing: .3em,
|
||||
..items,
|
||||
) = context {
|
||||
let nums = range(1, items.pos().len() + 1)
|
||||
let fnums = nums.map(std.numbering.with(numbering))
|
||||
let numwidth = calc.max(..fnums.map(it => measure(it).width))
|
||||
for (num, item) in fnums.zip(items.pos()) {
|
||||
block(inset: (left: hanging-indent), {
|
||||
h(indent - hanging-indent)
|
||||
box(width: numwidth + body-spacing, stroke: none, num)
|
||||
item
|
||||
})
|
||||
v(1em, weak: true)
|
||||
}
|
||||
}
|
||||
|
||||
#let page-theme(doc) = {
|
||||
set page(
|
||||
paper: "a4",
|
||||
@@ -49,7 +79,7 @@
|
||||
),
|
||||
header: context [
|
||||
#h(1fr)
|
||||
#counter(page).display(thai-numbering)
|
||||
#counter(page).display(page-numbering)
|
||||
],
|
||||
)
|
||||
set text(
|
||||
@@ -101,18 +131,57 @@
|
||||
}
|
||||
show figure.where(kind: "i-figured-table"): set align(start)
|
||||
show figure.where(kind: table): set figure.caption(position: top)
|
||||
show figure.caption: it => {
|
||||
text(weight: "bold")[
|
||||
#it.supplement
|
||||
#it.counter.display(it.numbering)
|
||||
]
|
||||
it.body
|
||||
show figure.where(kind: table): t => {
|
||||
show figure.caption: it => {
|
||||
it.supplement
|
||||
" "
|
||||
it.counter.display(it.numbering)
|
||||
" "
|
||||
it.body
|
||||
}
|
||||
it
|
||||
}
|
||||
show figure.caption.where(position: bottom): it => place(center, it, dy: 2em)
|
||||
set figure.caption(separator: "")
|
||||
// show figure.where(kind: image): set figure(gap: 2em)
|
||||
show figure.where(kind: "i-figured-image"): i => {
|
||||
show figure.caption: it => {
|
||||
place(
|
||||
center,
|
||||
[
|
||||
#text(weight: "bold")[
|
||||
#it.supplement
|
||||
#it.counter.display(it.numbering)
|
||||
]
|
||||
#it.body
|
||||
],
|
||||
dy: 2em,
|
||||
)
|
||||
}
|
||||
i
|
||||
}
|
||||
set figure.caption(separator: " ")
|
||||
show figure.where(kind: image): set block(below: 2.5em)
|
||||
set enum(number-align: start + top)
|
||||
show enum.item: it => context {
|
||||
if (it.number == auto) {
|
||||
return it
|
||||
}
|
||||
|
||||
let spacing = enum.indent
|
||||
if spacing == auto {
|
||||
if enum.tight {
|
||||
spacing = par.leading
|
||||
} else {
|
||||
spacing = par.spacing
|
||||
}
|
||||
}
|
||||
(
|
||||
h(spacing)
|
||||
+ [#{ str(it.number) + ")" }]
|
||||
+ h(enum.body-indent)
|
||||
+ it.body
|
||||
+ linebreak()
|
||||
)
|
||||
}
|
||||
set ref(supplement: "หัวข้อ")
|
||||
doc
|
||||
}
|
||||
@@ -132,7 +201,7 @@
|
||||
),
|
||||
header: context [
|
||||
#h(1fr)
|
||||
#counter(page).display(thai-numbering)
|
||||
#counter(page).display(page-numbering)
|
||||
],
|
||||
)
|
||||
set text(
|
||||
|
||||
Reference in New Issue
Block a user