Mbed TLS เป็นไลบรารี C ที่ใช้การเข้ารหัสแบบดั้งเดิม การจัดการใบรับรอง X.509 และโปรโตคอล SSL/TLS และ DTLS รอยโค้ดขนาดเล็กทำให้เหมาะสำหรับระบบฝังตัว
Mbed TLS มีการใช้งานอ้างอิงของ PSA Cryptography API ขณะนี้เป็นเพียงการแสดงตัวอย่างเพื่อวัตถุประสงค์ในการประเมินเท่านั้น
Mbed TLS ควรสร้างแบบสำเร็จรูปบนระบบส่วนใหญ่ ตัวเลือกเฉพาะแพลตฟอร์มบางตัวมีอยู่ในไฟล์การกำหนดค่าที่มีเอกสารครบถ้วน include/mbedtls/mbedtls_config.h
ซึ่งเป็นที่ที่สามารถเลือกคุณสมบัติต่างๆ ได้ ไฟล์นี้สามารถแก้ไขได้ด้วยตนเอง หรือด้วยวิธีทางโปรแกรมเพิ่มเติมโดยใช้สคริปต์ Python 3 scripts/config.py
(ใช้ --help
สำหรับคำแนะนำการใช้งาน)
ตัวเลือกคอมไพเลอร์สามารถตั้งค่าได้โดยใช้ตัวแปรสภาพแวดล้อมทั่วไป เช่น CC
และ CFLAGS
เมื่อใช้ระบบการสร้าง Make และ CMake (ดูด้านล่าง)
เรามีการกำหนดค่าที่ไม่ได้มาตรฐานซึ่งเน้นไปที่กรณีการใช้งานเฉพาะในไดเร็กทอรี configs/
คุณสามารถอ่านเพิ่มเติมเกี่ยวกับสิ่งเหล่านั้นได้ใน configs/README.txt
เอกสารหลักของ Mbed TLS มีอยู่ใน ReadTheDocs
เอกสารประกอบสำหรับ PSA Cryptography API มีอยู่ใน GitHub
หากต้องการสร้างสำเนาเอกสารไลบรารีในเครื่องในรูปแบบ HTML ซึ่งปรับให้เหมาะกับการกำหนดค่าเวลาคอมไพล์ของคุณ:
make apidoc
apidoc/index.html
หรือ apidoc/modules.html
สำหรับเอกสารประกอบแหล่งอื่น โปรดดูเอกสารสนับสนุน
ปัจจุบันมีระบบบิลด์ที่ใช้งานอยู่สามระบบที่ใช้ภายใน Mbed TLS รีลีส:
ระบบหลักที่ใช้ในการพัฒนาคือ CMake และ GNU Make ระบบเหล่านั้นมีความสมบูรณ์และทันสมัยอยู่เสมอ ส่วนอื่นๆ ควรสะท้อนถึงการเปลี่ยนแปลงทั้งหมดที่มีอยู่ในระบบ CMake และ Make แม้ว่าคุณสมบัติต่างๆ อาจไม่ได้รับการย้ายโดยอัตโนมัติ
ระบบการสร้าง Make และ CMake จะสร้างไลบรารีสามไลบรารี: libmbedcrypto/libtfpsacrypto, libmbedx509 และ libmbedtls โปรดทราบว่า libmbedtls ขึ้นอยู่กับ libmbedx509 และ libmbedcrypto/libtfpsacrypto และ libmbedx509 ขึ้นอยู่กับ libmbedcrypto/libtfpsacrypto ด้วยเหตุนี้ ตัวเชื่อมโยงบางตัวจึงคาดว่าแฟล็กจะอยู่ในลำดับเฉพาะ เช่น ตัวเชื่อมโยง GNU ต้องการ -lmbedtls -lmbedx509 -lmbedcrypto
คุณต้องมีเครื่องมือต่อไปนี้เพื่อสร้างไลบรารี่ด้วย makefiles ที่ให้มา:
สาขา development
และสาขาการสนับสนุนระยะยาว mbedtls-3.6
ของ Mbed TLS ใช้โมดูลย่อย Git (เฟรมเวิร์ก) สิ่งนี้ไม่จำเป็นสำหรับการคอมไพล์ไลบรารีที่แท็ก release เท่านั้น ไม่จำเป็นต้องใช้ไฟล์เก็บถาวรรุ่น (zip หรือ tar)
ซอร์สโค้ดของ Mbed TLS ประกอบด้วยไฟล์บางไฟล์ที่สร้างขึ้นโดยอัตโนมัติโดยสคริปต์ และเนื้อหาจะขึ้นอยู่กับแหล่งที่มาของ Mbed TLS เท่านั้น ไม่ใช่บนแพลตฟอร์มหรือในการกำหนดค่าไลบรารี ไฟล์เหล่านี้ไม่รวมอยู่ในสาขาการพัฒนาของ Mbed TLS แต่ไฟล์ที่สร้างขึ้นจะรวมอยู่ในรุ่นอย่างเป็นทางการ ส่วนนี้จะอธิบายวิธีสร้างไฟล์ที่หายไปในสาขาการพัฒนา
จำเป็นต้องมีเครื่องมือต่อไปนี้:
python3 -m pip install --user -r scripts/basic.requirements.txt
python
แทน python3
หากต้องการติดตั้งแพ็คเกจทั้งระบบ ให้ละเว้นตัวเลือก --user
หากคุณกำลังคอมไพล์ข้าม คุณต้องตั้งค่าตัวแปรสภาพแวดล้อม CC
ให้เป็นคอมไพเลอร์ C สำหรับแพลตฟอร์มโฮสต์เมื่อสร้างไฟล์ที่ไม่ขึ้นอยู่กับการกำหนดค่า
วิธีการใดๆ ต่อไปนี้สามารถใช้ได้เพื่อสร้างไฟล์ที่ไม่ขึ้นอยู่กับการกำหนดค่า:
make
กับเป้าหมายใดๆ หรือเพียงแค่ make
จะสร้างไฟล์ที่ต้องการโดยอัตโนมัติmake generated_files
เพื่อสร้างไฟล์ที่ไม่ขึ้นอยู่กับคอนฟิกูเรชันทั้งหมดtests/scripts/check-generated-files.sh -u
เพื่อสร้างไฟล์ที่ไม่ขึ้นอยู่กับการกำหนดค่าทั้งหมดscriptsmake_generated_files.bat
เพื่อสร้างไฟล์ที่ไม่ขึ้นอยู่กับการกำหนดค่าทั้งหมดเราต้องการ GNU Make หากต้องการสร้างไลบรารีและโปรแกรมตัวอย่าง GNU Make และคอมไพเลอร์ C ก็เพียงพอแล้ว เป้าหมายบิลด์ขั้นสูงบางส่วนต้องใช้เครื่องมือ Unix/Linux
เราตั้งใจใช้ฟังก์ชันการทำงานขั้นต่ำใน makefile เท่านั้น เพื่อให้พวกมันเรียบง่ายและเป็นอิสระจาก toolchain ที่แตกต่างกันมากที่สุดเท่าที่จะเป็นไปได้ เพื่อให้ผู้ใช้สามารถย้ายไปมาระหว่างแพลตฟอร์มต่างๆ ได้ง่ายขึ้น ผู้ใช้ที่ต้องการคุณสมบัติเพิ่มเติมแนะนำให้ใช้ CMake
ในการสร้างจากซอร์สโค้ดโดยใช้ GNU Make เพียงป้อนที่บรรทัดคำสั่ง:
make
เพื่อรันการทดสอบ ให้ป้อน:
make check
การทดสอบจำเป็นต้องสร้าง Python และ Perl เพื่อรัน หากคุณไม่ได้ติดตั้งไว้ คุณสามารถข้ามการสร้างการทดสอบด้วย:
make no_test
คุณจะยังคงสามารถดำเนินการทดสอบชุดเล็กๆ น้อยๆ ได้ด้วย:
programs/test/selftest
ในการสร้างสำหรับแพลตฟอร์ม Windows คุณควรใช้ WINDOWS_BUILD=1
หากเป้าหมายคือ Windows แต่สภาพแวดล้อมบิลด์เป็นแบบ Unix (เช่น เมื่อคอมไพล์ข้ามหรือคอมไพล์จากเชลล์ MSYS) และ WINDOWS=1
หาก build สภาพแวดล้อมเป็นเชลล์ Windows (เช่นการใช้ mingw32-make) (ในกรณีนี้บางเป้าหมายจะไม่พร้อมใช้งาน)
การตั้งค่าตัวแปร SHARED
ในสภาพแวดล้อมของคุณจะสร้างไลบรารีแบบแบ่งใช้นอกเหนือจากไลบรารีแบบคงที่ การตั้งค่า DEBUG
ช่วยให้คุณสร้างการดีบักได้ คุณสามารถแทนที่ CFLAGS
และ LDFLAGS
ได้โดยการตั้งค่าในสภาพแวดล้อมของคุณหรือบนบรรทัดคำสั่ง make ตัวเลือกคำเตือนของคอมไพเลอร์อาจถูกแทนที่แยกกันโดยใช้ WARNING_CFLAGS
ตัวเลือกเฉพาะไดเร็กทอรีบางตัว (เช่น คำสั่ง -I
) ยังคงถูกรักษาไว้
โปรดทราบว่าการตั้งค่า CFLAGS
จะแทนที่ค่าเริ่มต้นที่ -O2
และการตั้งค่า WARNING_CFLAGS
จะแทนที่ค่าเริ่มต้น (เริ่มต้นด้วย -Wall -Wextra
) ดังนั้นหากคุณเพียงต้องการเพิ่มตัวเลือกคำเตือนบางอย่างให้กับตัวเลือกเริ่มต้น คุณสามารถทำได้โดยการตั้งค่า CFLAGS=-O2 -Werror
การตั้งค่า WARNING_CFLAGS
จะมีประโยชน์เมื่อคุณต้องการกำจัดเนื้อหาเริ่มต้น (เช่น เนื่องจากคอมไพเลอร์ของคุณไม่ยอมรับ -Wall
เป็นตัวเลือก) ตัวเลือกเฉพาะไดเร็กทอรีไม่สามารถแทนที่ได้จากบรรทัดคำสั่ง
คุณอาจพบปัญหาบางอย่างทั้งนี้ขึ้นอยู่กับแพลตฟอร์มของคุณ โปรดตรวจสอบ Makefiles ใน library/
programs/
และ tests/
เพื่อดูตัวเลือกในการเพิ่มหรือลบด้วยตนเองสำหรับแพลตฟอร์มเฉพาะ คุณยังสามารถตรวจสอบฐานความรู้ Mbed TLS เพื่อดูบทความเกี่ยวกับแพลตฟอร์มหรือปัญหาของคุณ
ในกรณีที่คุณพบว่าคุณจำเป็นต้องทำอย่างอื่นด้วย โปรดแจ้งให้เราทราบ เพื่อที่เราจะได้เพิ่มลงในฐานความรู้ Mbed TLS
ในการสร้างแหล่งที่มาโดยใช้ CMake ในไดเร็กทอรีแยกต่างหาก (แนะนำ) เพียงป้อนที่บรรทัดคำสั่ง:
mkdir /path/to/build_dir && cd /path/to/build_dir
cmake /path/to/mbedtls_source
cmake --build .
เพื่อรันการทดสอบ ให้ป้อน:
ctest
ชุดทดสอบจำเป็นต้องสร้าง Python และ Perl เพื่อดำเนินการ หากคุณไม่ได้ติดตั้งไว้ คุณจะต้องปิดการใช้งานชุดการทดสอบด้วย:
cmake -DENABLE_TESTING=Off /path/to/mbedtls_source
หากคุณปิดการใช้งานชุดการทดสอบ แต่ยังคงเปิดใช้งานโปรแกรมต่อไป คุณยังคงสามารถเรียกใช้ชุดการทดสอบที่มีขนาดเล็กกว่ามากได้ด้วย:
programs/test/selftest
หากต้องการกำหนดค่า CMake สำหรับการสร้างไลบรารีที่ใช้ร่วมกัน ให้ใช้:
cmake -DUSE_SHARED_MBEDTLS_LIBRARY=On /path/to/mbedtls_source
มีโหมดบิลด์ที่แตกต่างกันมากมายที่พร้อมใช้งานภายในระบบบิลด์ CMake ส่วนใหญ่พร้อมใช้งานสำหรับ gcc และ clang แม้ว่าบางอันจะเป็นเฉพาะคอมไพเลอร์:
Release
. สิ่งนี้จะสร้างรหัสเริ่มต้นโดยไม่มีข้อมูลที่ไม่จำเป็นในไฟล์ไบนารีDebug
สิ่งนี้จะสร้างข้อมูลการดีบักและปิดใช้งานการปรับให้เหมาะสมของโค้ดCoverage
สิ่งนี้จะสร้างข้อมูลการครอบคลุมโค้ดนอกเหนือจากข้อมูลการดีบักASan
. เครื่องมือนี้ใช้โค้ดกับ AddressSanitizer เพื่อตรวจสอบข้อผิดพลาดของหน่วยความจำ (ซึ่งรวมถึง LeakSanitizer ที่มี gcc และ clang เวอร์ชันล่าสุด) (สำหรับ clang เวอร์ชันล่าสุด โหมดนี้ยังใช้โค้ดด้วย Undefinitizer เพื่อตรวจสอบพฤติกรรมที่ไม่ได้กำหนดไว้)ASanDbg
. เช่นเดียวกับ ASan แต่ช้ากว่าพร้อมข้อมูลการดีบักและการติดตามสแต็กที่ดีกว่าMemSan
. เครื่องมือนี้จะวัดโค้ดด้วย MemorySanitizer เพื่อตรวจสอบการอ่านหน่วยความจำที่ไม่ได้กำหนดค่าเริ่มต้น ทดลอง ต้องการเสียงดังกราวล่าสุดบน Linux/x86_64MemSanDbg
. เช่นเดียวกับ MemSan แต่ช้ากว่าพร้อมข้อมูลการดีบัก การติดตามสแต็กที่ดีขึ้น และการติดตามต้นกำเนิดCheck
. ซึ่งจะเปิดใช้งานคำเตือนของคอมไพลเลอร์ที่ขึ้นอยู่กับการปรับให้เหมาะสมที่สุด และถือว่าคำเตือนทั้งหมดเป็นข้อผิดพลาดการสลับโหมดบิลด์ใน CMake นั้นง่ายดาย สำหรับโหมดแก้ไขข้อบกพร่อง ให้ป้อนที่บรรทัดคำสั่ง:
cmake -D CMAKE_BUILD_TYPE=Debug /path/to/mbedtls_source
หากต้องการแสดงรายการตัวเลือก CMake อื่นๆ ที่พร้อมใช้งาน ให้ใช้:
cmake -LH
โปรดทราบว่าด้วย CMake คุณไม่สามารถปรับคอมไพลเลอร์หรือแฟล็กได้หลังจากการเรียกใช้ cmake เริ่มต้น ซึ่งหมายความว่า CC=your_cc make
และ make CC=your_cc
จะ ไม่ ทำงาน (คล้ายกับ CFLAGS
และตัวแปรอื่นๆ) จำเป็นต้องปรับตัวแปรเหล่านี้เมื่อเรียกใช้ cmake เป็นครั้งแรก ตัวอย่างเช่น:
CC=your_cc cmake /path/to/mbedtls_source
หากคุณเรียกใช้ cmake แล้วและต้องการเปลี่ยนการตั้งค่าเหล่านั้น คุณจะต้องลบไดเร็กทอรี build และสร้างใหม่อีกครั้ง
โปรดทราบว่าคุณสามารถสร้างแบบแทนที่ได้ อย่างไรก็ตาม สิ่งนี้จะเขียนทับ Makefiles ที่ให้มา (ดู scripts/tmp_ignore_makefiles.sh
หากคุณต้องการป้องกันไม่ให้ git status
แสดงว่ามีการแก้ไข) ในการดำเนินการดังกล่าว จากไดเร็กทอรีต้นทางของ Mbed TLS ให้ใช้:
cmake .
make
หากคุณต้องการเปลี่ยน CC
หรือ CFLAGS
ในภายหลัง คุณจะต้องลบแคช CMake ออก ซึ่งสามารถทำได้ด้วยคำสั่งต่อไปนี้โดยใช้ GNU find:
find . -iname '*cmake*' -not -name CMakeLists.txt -exec rm -rf {} +
ตอนนี้คุณสามารถทำการเปลี่ยนแปลงที่ต้องการได้:
CC=your_cc cmake .
make
ในส่วนของตัวแปร โปรดทราบว่าหากคุณตั้งค่า CFLAGS เมื่อเรียกใช้ cmake ค่า CFLAGS ของคุณจะไม่แทนที่เนื้อหาที่ cmake มอบให้ (ขึ้นอยู่กับโหมดบิลด์ดังที่เห็นด้านบน) ค่าดังกล่าวเป็นเพียงการเติมไว้ข้างหน้าเท่านั้น
Mbed TLS จัดเตรียมไฟล์กำหนดค่าแพ็คเกจเพื่อใช้เป็นการพึ่งพาในโปรเจ็กต์ CMake อื่นๆ คุณสามารถรวมเป้าหมาย CMake ของ Mbed TLS ด้วยตัวเองด้วย:
find_package(MbedTLS)
หากได้รับแจ้ง ให้ตั้งค่า MbedTLS_DIR
เป็น ${YOUR_MBEDTLS_INSTALL_DIR}/cmake
สิ่งนี้จะสร้างเป้าหมายต่อไปนี้:
MbedTLS::tfpsacrypto
(ไลบรารี Crypto)MbedTLS::mbedtls
(ไลบรารี TLS)MbedTLS::mbedx509
(ไลบรารี X509) จากนั้นคุณสามารถใช้สิ่งเหล่านี้ได้โดยตรงผ่าน target_link_libraries()
:
add_executable(xyz)
target_link_libraries(xyz
PUBLIC MbedTLS::mbedtls
MbedTLS::tfpsacrypto
MbedTLS::mbedx509)
สิ่งนี้จะเชื่อมโยงไลบรารี Mbed TLS กับไลบรารีหรือแอปพลิเคชันของคุณ และเพิ่มไดเร็กทอรีรวมไปยังเป้าหมายของคุณ (แบบสกรรมกริยา ในกรณีของไลบรารีลิงก์ PUBLIC
หรือ INTERFACE
)
Mbed TLS รองรับการสร้างเป็นโปรเจ็กต์ย่อย CMake สามารถใช้ add_subdirectory()
จากโปรเจ็กต์ CMake หลักเพื่อรวม Mbed TLS เป็นโปรเจ็กต์ย่อย
ไฟล์บิลด์สำหรับ Microsoft Visual Studio ถูกสร้างขึ้นสำหรับ Visual Studio 2017
ไฟล์โซลูชัน mbedTLS.sln
มีโปรเจ็กต์พื้นฐานทั้งหมดที่จำเป็นในการสร้างไลบรารีและโปรแกรมทั้งหมด ไฟล์ในการทดสอบไม่ได้ถูกสร้างและคอมไพล์ เนื่องจากไฟล์เหล่านี้ต้องการสภาพแวดล้อม Python และ Perl เช่นกัน อย่างไรก็ตาม โปรแกรมทดสอบตัวเองใน programs/test/
ยังคงมีอยู่
ในสาขาการพัฒนาของ Mbed TLS จะต้องสร้างไฟล์โซลูชัน Visual Studio ก่อนตามที่อธิบายไว้ใน “ไฟล์ต้นฉบับที่สร้างขึ้นในสาขาการพัฒนา”
เราได้รวมโปรแกรมตัวอย่างสำหรับคุณลักษณะและการใช้งานต่างๆ มากมายใน programs/
โปรดทราบว่าเป้าหมายของโปรแกรมตัวอย่างเหล่านี้คือการสาธิตคุณลักษณะเฉพาะของไลบรารี และอาจจำเป็นต้องปรับโค้ดเพื่อสร้างแอปพลิเคชันในโลกแห่งความเป็นจริง
Mbed TLS มีชุดการทดสอบที่ซับซ้อนใน tests/
ซึ่งเริ่มแรกต้องใช้ Python เพื่อสร้างไฟล์การทดสอบ (เช่น test_suite_ssl.c
) ไฟล์เหล่านี้สร้างจาก function file
(เช่น suites/test_suite_ssl.function
) และ data file
(เช่น suites/test_suite_ssl.data
) function file
ประกอบด้วยฟังก์ชันการทดสอบ data file
ประกอบด้วยกรณีการทดสอบ ที่ระบุเป็นพารามิเตอร์ที่จะถูกส่งไปยังฟังก์ชันการทดสอบ
สำหรับเครื่องที่ติดตั้ง Unix Shell และ OpenSSL (และอาจเป็นทางเลือก GnuTLS) จะมีสคริปต์ทดสอบเพิ่มเติมให้ใช้งาน:
tests/ssl-opt.sh
รันการทดสอบการรวมสำหรับตัวเลือก TLS ต่างๆ (การเจรจาต่อรอง การเริ่มต้นใหม่ ฯลฯ) และทดสอบการทำงานร่วมกันของตัวเลือกเหล่านี้กับการใช้งานอื่น ๆtests/compat.sh
ทดสอบการทำงานร่วมกันของชุดการเข้ารหัสทุกตัวกับการใช้งานอื่น ๆtests/scripts/test-ref-configs.pl
การทดสอบบิลด์ในการกำหนดค่าที่ลดลงต่างๆtests/scripts/depends.py
การทดสอบสร้างขึ้นในการกำหนดค่าด้วยเส้นโค้งเดียว การแลกเปลี่ยนคีย์ แฮช การเข้ารหัส หรือ pkalgtests/scripts/all.sh
รันการทดสอบข้างต้นร่วมกับการทดสอบอื่นๆ ด้วยตัวเลือกบิลด์ต่างๆ (เช่น ASan, full mbedtls_config.h
ฯลฯ)แทนที่จะติดตั้งเครื่องมือทั้งหมดที่จำเป็นสำหรับการทดสอบในเวอร์ชันที่จำเป็นด้วยตนเอง คุณสามารถใช้อิมเมจ Docker จากระบบ CI ของเราได้ ตามที่อธิบายไว้ในพื้นที่เก็บข้อมูลโครงสร้างพื้นฐานการทดสอบของเรา
Mbed TLS สามารถย้ายไปยังสถาปัตยกรรม ระบบปฏิบัติการ และแพลตฟอร์มต่างๆ ได้มากมาย ก่อนที่จะเริ่มพอร์ต คุณอาจพบว่าบทความฐานความรู้ต่อไปนี้มีประโยชน์:
Mbed TLS ส่วนใหญ่เขียนด้วย C99 แบบพกพา; อย่างไรก็ตาม มีข้อกำหนดแพลตฟอร์มบางประการที่เกินกว่ามาตรฐาน แต่สถาปัตยกรรมสมัยใหม่ส่วนใหญ่ตรงตามข้อกำหนด:
int
และ size_t
ต้องมีความกว้างอย่างน้อย 32 บิตuint8_t
, uint16_t
, uint32_t
และรายการเทียบเท่าที่ลงนามจะต้องพร้อมใช้งานสถาปัตยกรรมความปลอดภัยของแพลตฟอร์มของ Arm (PSA) เป็นชุดรูปแบบภัยคุกคามแบบองค์รวม การวิเคราะห์ความปลอดภัย ข้อกำหนดสถาปัตยกรรมฮาร์ดแวร์และเฟิร์มแวร์ และการใช้งานอ้างอิงเฟิร์มแวร์แบบโอเพ่นซอร์ส PSA จัดทำสูตรตามแนวทางปฏิบัติที่ดีที่สุดในอุตสาหกรรม ซึ่งช่วยให้สามารถออกแบบการรักษาความปลอดภัยได้อย่างสม่ำเสมอ ทั้งในระดับฮาร์ดแวร์และเฟิร์มแวร์
API การเข้ารหัส PSA ให้การเข้าถึงชุดของการเข้ารหัสพื้นฐาน มันมีจุดประสงค์สองประการ ประการแรก สามารถใช้ในแพลตฟอร์มที่สอดคล้องกับ PSA เพื่อสร้างบริการ เช่น การบูตที่ปลอดภัย พื้นที่เก็บข้อมูลที่ปลอดภัย และการสื่อสารที่ปลอดภัย ประการที่สอง ยังสามารถใช้งานได้โดยแยกจากส่วนประกอบ PSA อื่นๆ บนแพลตฟอร์มใดก็ได้
เป้าหมายการออกแบบของ PSA การเข้ารหัส API ประกอบด้วย:
Arm ยินดีรับฟังความคิดเห็นเกี่ยวกับการออกแบบ API หากคุณคิดว่ามีบางอย่างสามารถปรับปรุงได้ โปรดเปิดปัญหาบนพื้นที่เก็บข้อมูล Github ของเรา หรือหากคุณต้องการแสดงความคิดเห็นเป็นการส่วนตัว โปรดส่งอีเมลถึงเราที่ [email protected]
ความคิดเห็นทั้งหมดที่ได้รับทางอีเมลจะถือเป็นความลับ
Mbed TLS มีการใช้งานอ้างอิงของ PSA Cryptography API อย่างไรก็ตาม ไม่ได้มีจุดมุ่งหมายที่จะใช้ข้อกำหนดทั้งหมด โดยเฉพาะอย่างยิ่งไม่ได้ใช้อัลกอริธึมทั้งหมด
รหัส X.509 และ TLS สามารถใช้การเข้ารหัส PSA สำหรับการดำเนินการส่วนใหญ่ หากต้องการเปิดใช้งานการสนับสนุนนี้ ให้เปิดใช้งานตัวเลือกการคอมไพล์ MBEDTLS_USE_PSA_CRYPTO
ใน mbedtls_config.h
โปรดทราบว่า TLS 1.3 ใช้การเข้ารหัส PSA สำหรับการดำเนินการส่วนใหญ่โดยไม่คำนึงถึงตัวเลือกนี้ ดู docs/use-psa-crypto.md
สำหรับรายละเอียด
Mbed TLS รองรับไดรเวอร์สำหรับตัวเร่งความเร็วการเข้ารหัส องค์ประกอบความปลอดภัย และเครื่องกำเนิดไฟฟ้าแบบสุ่ม นี่คืองานระหว่างดำเนินการ โปรดทราบว่าอินเทอร์เฟซของไดรเวอร์ยังไม่เสถียรอย่างสมบูรณ์และอาจเปลี่ยนแปลงได้โดยไม่ต้องแจ้งให้ทราบ เราตั้งใจที่จะรักษาความเข้ากันได้แบบย้อนหลังสำหรับโค้ดแอปพลิเคชัน (โดยใช้ PSA Crypto API) แต่โค้ดของไดรเวอร์อาจต้องเปลี่ยนแปลงใน Mbed TLS รุ่นรองในอนาคต
โปรดดูตัวอย่างไดรเวอร์ PSA และคำแนะนำสำหรับข้อมูลเกี่ยวกับการเขียนไดรเวอร์
เมื่อใช้ไดรเวอร์ โดยทั่วไปคุณจะต้องเปิดใช้งานตัวเลือกการคอมไพล์สองตัวเลือก (ดูคู่มืออ้างอิงสำหรับข้อมูลเพิ่มเติม):
MBEDTLS_USE_PSA_CRYPTO
จำเป็นเพื่อให้โค้ด X.509 และ TLS เรียกไดรเวอร์ PSA แทนที่จะเรียกใช้ซอฟต์แวร์ในตัวMBEDTLS_PSA_CRYPTO_CONFIG
ช่วยให้คุณสามารถเปิดใช้งานกลไกการเข้ารหัส PSA โดยไม่ต้องรวมโค้ดของการใช้งานซอฟต์แวร์ที่เกี่ยวข้อง ยังไม่รองรับกลไกทั้งหมด เว้นแต่จะระบุไว้เป็นอย่างอื่นในไฟล์โดยเฉพาะ ไฟล์ Mbed TLS ได้รับการจัดเตรียมภายใต้ลิขสิทธิ์ Apache-2.0 หรือ GPL-2.0 หรือใหม่กว่า ดูไฟล์ใบอนุญาตสำหรับข้อความฉบับเต็มของใบอนุญาตเหล่านี้ และส่วน 'ใบอนุญาตและลิขสิทธิ์' ในแนวทางปฏิบัติสำหรับข้อมูลเพิ่มเติม
โปรเจ็กต์นี้มีโค้ดจากโปรเจ็กต์อื่น รหัสนี้อยู่ภายในไดเร็กทอรี tf-psa-crypto/drivers/
ข้อความลิขสิทธิ์ต้นฉบับจะรวมอยู่ในไดเรกทอรีย่อยของโครงการ ซึ่งแตกต่างจากใบอนุญาต Mbed TLS ปกติ และ/หรือในไฟล์ต้นฉบับ โครงการต่างๆ มีดังต่อไปนี้:
drivers/everest/
: ไฟล์มาจาก Project Everest และเผยแพร่ภายใต้ลิขสิทธิ์ Apache 2.0drivers/p256-m/p256-m/
: ไฟล์ถูกนำมาจากที่เก็บ p256-m รหัสในพื้นที่เก็บข้อมูลดั้งเดิมได้รับการเผยแพร่ภายใต้ลิขสิทธิ์ Apache 2.0 มีการเผยแพร่ใน Mbed TLS ภายใต้ลิขสิทธิ์ Apache-2.0 หรือ GPL-2.0 หรือใหม่กว่าโดยได้รับอนุญาตจากผู้เขียน เรายินดียอมรับรายงานข้อผิดพลาดและการมีส่วนร่วมจากชุมชน โปรดดูหลักเกณฑ์การมีส่วนร่วมสำหรับรายละเอียดเกี่ยวกับวิธีการทำเช่นนี้
SECURITY.md
SUPPORT.md
สำหรับช่องทางอื่นๆ สำหรับการสนทนาและการสนับสนุนเกี่ยวกับ Mbed TLS