ประสบการณ์ในการใช้เทคโนโลยี Rutoken ในการลงทะเบียนและอนุญาตผู้ใช้ในระบบ (ตอนที่ 1)

สวัสดีตอนบ่าย ฉันต้องการแบ่งปันประสบการณ์ของฉันในหัวข้อนี้

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

ในตัวอย่างนี้ จะใช้ Rutoken EDS 2.0

คุณต้องการทำงานกับ Rutoken นี้ ติดตั้งไดรเวอร์บน windows.

สำหรับ Windows การติดตั้งไดรเวอร์เพียงตัวเดียวช่วยให้มั่นใจได้ว่าทุกสิ่งที่จำเป็นได้รับการติดตั้งเพื่อให้ระบบปฏิบัติการเห็น Rutoken ของคุณและสามารถทำงานได้

คุณสามารถโต้ตอบกับ Rutoken ได้หลายวิธี คุณสามารถเข้าถึงได้จากฝั่งเซิร์ฟเวอร์ของแอปพลิเคชัน หรือโดยตรงจากฝั่งไคลเอ็นต์ ตัวอย่างนี้จะดูการโต้ตอบกับ Rutoken จากฝั่งไคลเอ็นต์ของแอปพลิเคชัน

ส่วนไคลเอ็นต์ของแอปพลิเคชันโต้ตอบกับ rutoken ผ่านปลั๊กอิน rutoken นี่คือโปรแกรมที่ติดตั้งแยกกันในแต่ละเบราว์เซอร์ สำหรับ Windows คุณเพียงแค่ต้องดาวน์โหลดและติดตั้งปลั๊กอิน อยู่ที่ลิงค์นี้.

เพียงเท่านี้เราก็สามารถโต้ตอบกับ Rutoken ได้จากฝั่งไคลเอ็นต์ของแอปพลิเคชันได้แล้ว

ตัวอย่างนี้กล่าวถึงแนวคิดในการใช้อัลกอริธึมการอนุญาตผู้ใช้ในระบบโดยใช้รูปแบบการตอบสนองต่อความท้าทาย

สาระสำคัญของความคิดมีดังนี้:

  1. ลูกค้าส่งคำขอการอนุญาตไปยังเซิร์ฟเวอร์
  2. เซิร์ฟเวอร์ตอบสนองต่อคำขอจากไคลเอนต์โดยการส่งสตริงแบบสุ่ม
  3. ไคลเอนต์แพดสตริงนี้ด้วยการสุ่ม 32 บิต
  4. ลูกค้าลงนามในสตริงที่ได้รับพร้อมใบรับรอง
  5. ลูกค้าส่งข้อความที่เข้ารหัสที่ได้รับไปยังเซิร์ฟเวอร์
  6. เซิร์ฟเวอร์ตรวจสอบลายเซ็นโดยรับข้อความต้นฉบับที่ไม่ได้เข้ารหัส
  7. เซิร์ฟเวอร์จะตัด 32 บิตสุดท้ายออกจากข้อความที่ไม่ได้เข้ารหัสที่ได้รับ
  8. เซิร์ฟเวอร์จะเปรียบเทียบผลลัพธ์ที่ได้รับกับข้อความที่ส่งเมื่อขออนุญาต
  9. หากข้อความเหมือนกัน ถือว่าการอนุญาตสำเร็จ

ในอัลกอริธึมข้างต้นมีสิ่งเช่นใบรับรอง สำหรับตัวอย่างนี้ คุณต้องเข้าใจทฤษฎีการเข้ารหัสบางอย่าง ที่ฮาเบรก็มี บทความที่ดีในหัวข้อนี้.

ในตัวอย่างนี้ เราจะใช้อัลกอริธึมการเข้ารหัสแบบอสมมาตร หากต้องการใช้อัลกอริธึมแบบอสมมาตร คุณต้องมีคู่คีย์และใบรับรอง

คู่คีย์ประกอบด้วยสองส่วน: คีย์ส่วนตัวและคีย์สาธารณะ คีย์ส่วนตัวตามชื่อของมันจะต้องเป็นความลับ เราใช้มันเพื่อถอดรหัสข้อมูล กุญแจสาธารณะสามารถแจกจ่ายให้กับใครก็ได้ คีย์นี้ใช้ในการเข้ารหัสข้อมูล ดังนั้นผู้ใช้สามารถเข้ารหัสข้อมูลโดยใช้กุญแจสาธารณะได้ แต่มีเพียงเจ้าของกุญแจส่วนตัวเท่านั้นที่สามารถถอดรหัสข้อมูลนี้ได้

ใบรับรองคือเอกสารอิเล็กทรอนิกส์ที่มีข้อมูลเกี่ยวกับผู้ใช้ที่เป็นเจ้าของใบรับรอง รวมถึงคีย์สาธารณะ ด้วยใบรับรอง ผู้ใช้สามารถลงนามข้อมูลใดๆ และส่งไปยังเซิร์ฟเวอร์ ซึ่งสามารถตรวจสอบลายเซ็นและถอดรหัสข้อมูลได้

หากต้องการลงนามข้อความด้วยใบรับรองอย่างถูกต้อง คุณต้องสร้างใบรับรองอย่างถูกต้อง ในการดำเนินการนี้ คู่คีย์จะถูกสร้างขึ้นครั้งแรกบน Rutoken จากนั้นจะต้องลิงก์ใบรับรองกับคีย์สาธารณะของคู่คีย์นี้ ใบรับรองต้องมีรหัสสาธารณะที่อยู่บน Rutoken ทุกประการ นี่เป็นสิ่งสำคัญ หากเราเพียงสร้างคู่คีย์และใบรับรองทันทีบนฝั่งไคลเอ็นต์ของแอปพลิเคชัน แล้วเซิร์ฟเวอร์จะถอดรหัสข้อความที่เข้ารหัสนี้ได้อย่างไร ท้ายที่สุดแล้ว เขาไม่รู้อะไรเลยเกี่ยวกับคู่กุญแจหรือใบรับรองเลย

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

ถ้าเรากลับมาที่ปัญหาของเราอีกครั้ง วิธีแก้ปัญหาก็ดูชัดเจน คุณต้องสร้างศูนย์รับรองของคุณเอง แต่ก่อนหน้านั้น คุณต้องพิจารณาว่าศูนย์ออกใบรับรองควรออกใบรับรองให้กับผู้ใช้ตามหลักเกณฑ์ใด เพราะเขาไม่รู้อะไรเลย (เช่น ชื่อ นามสกุล ฯลฯ) มีสิ่งที่เรียกว่าขอใบรับรอง ข้อมูลเพิ่มเติมเกี่ยวกับมาตรฐานนี้สามารถพบได้ใน Wikipedia ru.wikipedia.org/wiki/PKCS
เราจะใช้เวอร์ชัน 1.7 - PKCS#10

ให้เราอธิบายอัลกอริทึมสำหรับการสร้างใบรับรองบน ​​Rutoken (แหล่งที่มาดั้งเดิม: เอกสาร):

  1. เราสร้างคู่คีย์บนไคลเอนต์และบันทึกไว้ใน Rutoken (การบันทึกเกิดขึ้นโดยอัตโนมัติ)
  2. เราสร้างคำขอใบรับรองบนไคลเอนต์
  3. จากลูกค้าเราส่งคำขอนี้ไปยังเซิร์ฟเวอร์
  4. เมื่อเราได้รับคำขอใบรับรองบนเซิร์ฟเวอร์ เราจะออกใบรับรองจากหน่วยงานออกใบรับรองของเรา
  5. เราส่งใบรับรองนี้ให้กับลูกค้า
  6. เราบันทึกใบรับรอง Rutoken บนไคลเอนต์
  7. ใบรับรองจะต้องเชื่อมโยงกับคู่คีย์ที่สร้างขึ้นในขั้นตอนแรก

ตอนนี้เป็นที่ชัดเจนว่าเซิร์ฟเวอร์จะสามารถถอดรหัสลายเซ็นของลูกค้าได้อย่างไร เนื่องจากเซิร์ฟเวอร์ได้ออกใบรับรองให้เขาเอง

ในส่วนถัดไป เราจะมาดูวิธีตั้งค่าผู้ออกใบรับรองของคุณโดยอิงตาม openSSL ไลบรารีการเข้ารหัสโอเพ่นซอร์สที่มีคุณสมบัติครบถ้วน

ที่มา: will.com

เพิ่มความคิดเห็น