คอมพิวเตอร์ หน้าต่าง อินเทอร์เน็ต

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

ML หรือ eXtensible Markup Language กำลังกลายเป็นวิธีมาตรฐานในการขนส่งข้อมูลบนเว็บ (และอื่นๆ) นอกจากนี้ ยังมีส่วนเสริมที่ใช้ไวยากรณ์ XML (แอปพลิเคชัน XML) เพิ่มมากขึ้นเรื่อยๆ ตัวอย่างเช่น สิ่งเหล่านี้รวมถึง SOAP โปรโตคอลการเข้าถึงวัตถุแบบง่าย (Simple Object Access Protocol) ซึ่ง XML ทำหน้าที่เป็นวิธีการสากลในการแสดงพารามิเตอร์สำหรับการเรียกขั้นตอนระยะไกล RPC (การเรียกขั้นตอนระยะไกล) อีกตัวอย่างหนึ่งของปลั๊กอินคือเฟรมเวิร์ก RDF (Resource Description Framework) คุณสามารถดู World Wide Web Consortium (W3C) ซึ่งพัฒนามาตรฐานในด้านนี้ (http://www.w3.org/) และเห็นว่า XML ได้รับความสนใจเพิ่มขึ้นอย่างแน่นอน

ขอให้เราระลึกว่าวัตถุประสงค์หลักของ XML คือการอธิบายโครงสร้างและความหมายของเอกสาร ข้อได้เปรียบหลักของ XML เมื่อเปรียบเทียบกับรูปแบบเอกสารอิเล็กทรอนิกส์อื่น ๆ คือแยกคำอธิบายของการนำเสนอภายนอกของเอกสารออกจากโครงสร้างของเอกสารและเนื้อหา XML เป็นภาษาที่ยืดหยุ่นซึ่งสามารถใช้เพื่อวัตถุประสงค์ที่หลากหลายและสามารถเชื่อมต่อกับระบบและฐานข้อมูลจำนวนมาก ดังนั้นในปัจจุบัน XML จึงถูกใช้ในระบบข้อมูลหลายแห่งเป็นรูปแบบการแลกเปลี่ยนข้อมูลหลัก นอกจากนี้ ผู้ผลิตระบบการจัดการฐานข้อมูลยังได้ก้าวไปสู่ ​​XML อย่างมีประสิทธิภาพ ตัวอย่างเช่น Oracle ได้เปิดตัว XSU (XML-SQL Utility) ซึ่งเป็นส่วนเสริมของ JDBC ที่ให้คุณจัดเก็บและดึงข้อมูล XML ในฐานข้อมูล (http://otn.oracle.com/tech/xml/ xdk_java/content .html) XSU คือลำดับชั้นของคลาส Java ที่ออกแบบมาเพื่อแปลงข้อมูลจากตารางฐานข้อมูลเชิงวัตถุเชิงสัมพันธ์และมุมมองเป็นรูปแบบ XML แทรกข้อมูลจากเอกสาร XML ลงในตารางและมุมมอง และการดำเนินการที่เป็นประโยชน์อื่นๆ

ความจำเป็นในการปกป้องเอกสาร XML

ML เป็นเครื่องมืออันทรงพลังที่มักใช้ในการแลกเปลี่ยนข้อมูลทางอินเทอร์เน็ต แต่น่าเสียดายที่ตัวมันเองไม่ได้ให้การป้องกันที่จำเป็นสำหรับข้อมูลที่ "ขนส่ง" กล่าวอีกนัยหนึ่งมีปัญหาด้านความปลอดภัยที่ร้ายแรงเมื่อใช้รูปแบบ XML (เช่นเดียวกับเมื่อใช้รูปแบบอื่น)

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

  • การรับรองความถูกต้องของฝ่ายที่มีปฏิสัมพันธ์
  • การยืนยันความถูกต้องและความสมบูรณ์ของข้อมูล
  • การปิดการเข้ารหัสข้อมูลที่ส่ง

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

ข้อมูลทั่วไปเกี่ยวกับลายเซ็นดิจิทัลอิเล็กทรอนิกส์

EDS และความเป็นไปได้ของการปลอมแปลง

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

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

ความเป็นไปไม่ได้ของการปลอมลายเซ็นดิจิทัลอิเล็กทรอนิกส์นั้นทำได้โดยใช้การคำนวณทางคณิตศาสตร์จำนวนมาก (ตัวอย่างเช่นความเป็นไปไม่ได้ของการปลอมลายเซ็นอาจเนื่องมาจากความซับซ้อนในการแก้ปัญหาลอการิทึมแบบไม่ต่อเนื่องในสาขาองค์ประกอบ p El-Gamal โครงการลายเซ็น) การวางลายเซ็นบนเอกสารจะไม่เปลี่ยนแปลงตัวเอกสาร แต่เพียงทำให้สามารถตรวจสอบความถูกต้องและความเป็นเจ้าของข้อมูลที่ได้รับ (นั่นคือบล็อกข้อมูลถูกเพิ่มลงในเอกสารเองหรือแยกจากกัน - ลายเซ็นดิจิทัลของ เอกสารนี้).

ผู้ออกใบรับรอง

ข้างต้นเราได้กล่าวถึงคำว่า "คีย์ส่วนตัว" และ "คีย์สาธารณะ" กุญแจเหล่านี้มาจากไหน? สร้างขึ้นโดยหน่วยงานออกใบรับรอง - โครงสร้างบางอย่าง (องค์กร) ที่จัดการใบรับรอง ใบรับรองคีย์สาธารณะ/ส่วนตัวแสดงถึงชุดข้อมูลต่อไปนี้:

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

ตัวอย่างเช่น ใบรับรองคีย์ส่วนตัวประกอบด้วยคีย์ส่วนตัวและข้อมูลเพิ่มเติมเกี่ยวกับใบรับรองดังกล่าว

สำหรับผู้ใช้ระบบข้อมูลที่ลงทะเบียนแต่ละราย ศูนย์ออกใบรับรอง (CA) จะสร้างใบรับรองสองใบ: ใบรับรองคีย์ส่วนตัวและใบรับรองคีย์สาธารณะ ในกรณีนี้ SO แรกจะออกให้กับผู้ใช้ที่ลงทะเบียนเป็นการส่วนตัว (เช่นบนฟล็อปปี้ดิสก์) และไม่มีใครอื่น - นี่คือ "ลายเซ็น" ใบรับรองใบที่สองที่เปิดอยู่ ได้รับการเผยแพร่โดย CA ในพื้นที่เก็บข้อมูลสาธารณะ เพื่อให้ทุกคนที่สนใจสามารถค้นหาได้อย่างง่ายดาย

การสร้างและการตรวจสอบลายเซ็นดิจิทัล

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

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

ฟังก์ชันแฮช

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

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

  • ข้อความหลังจากใช้ฟังก์ชันแฮชจะต้องขึ้นอยู่กับแต่ละบิตของข้อความต้นฉบับและตามลำดับ
  • การใช้ข้อความเวอร์ชันแฮชจะทำให้ไม่มีทางสร้างข้อความขึ้นมาใหม่ได้

ทำความเข้าใจกับการเข้ารหัส

การเข้ารหัสข้อมูลและความแตกต่างจากลายเซ็นดิจิทัล

การเข้ารหัสข้อมูลเป็นการแปลงทางคณิตศาสตร์แบบตัวต่อตัว (การเข้ารหัส) ขึ้นอยู่กับคีย์ (พารามิเตอร์การแปลงความลับ) ซึ่งจับคู่บล็อกข้อมูลเปิดซึ่งนำเสนอในการเข้ารหัสดิจิทัลบางส่วน กับบล็อกข้อมูลที่เข้ารหัสซึ่งนำเสนอในรูปแบบดิจิทัลเช่นกัน การเข้ารหัส การเข้ารหัสประกอบด้วยสองกระบวนการ: การเข้ารหัสและการถอดรหัสข้อมูล (รูปที่ 2)

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

แตก

ตามทฤษฎีแล้ว อัลกอริธึมการเข้ารหัสใดๆ ที่ใช้คีย์สามารถใช้งานไม่ได้โดยการค้นหาค่าคีย์ทั้งหมด หากเลือกคีย์ พลังงานคอมพิวเตอร์ที่ต้องการจะเพิ่มขึ้นแบบทวีคูณตามความยาวของคีย์ คีย์ 32 บิตต้องใช้ขั้นตอน 232 (ประมาณ 109) งานนี้สามารถทำได้โดยมือสมัครเล่นคนใดก็ได้และสามารถแก้ไขได้บนคอมพิวเตอร์ที่บ้าน ระบบที่มีคีย์ 40 บิต (เช่น อัลกอริธึม RC4 เวอร์ชันอเมริกาที่ส่งออก) ต้องใช้ 240 ขั้นตอน พลังงานคอมพิวเตอร์ดังกล่าวมีอยู่ในบริษัทขนาดเล็กส่วนใหญ่ ระบบที่มีคีย์ 56 บิต (DES) ต้องใช้ความพยายามอย่างมากในการเปิด แต่สามารถเปิดได้อย่างง่ายดายโดยใช้อุปกรณ์พิเศษ ราคาของอุปกรณ์ดังกล่าวมีความสำคัญ แต่ก็มีราคาไม่แพงสำหรับมาเฟีย บริษัทขนาดใหญ่ และรัฐบาล ปัจจุบันรัฐขนาดใหญ่สามารถเปิดคีย์ที่มีความยาว 64 บิตได้ และในอีกไม่กี่ปีข้างหน้าพวกเขาจะเปิดให้เปิดโดยองค์กรอาชญากรรม บริษัทขนาดใหญ่ และรัฐขนาดเล็ก คีย์ 80 บิตอาจมีช่องโหว่ในอนาคต คีย์ที่มีความยาว 128 บิตมีแนวโน้มที่จะไม่สามารถแตกหักได้โดยใช้กำลังอันดุร้ายในอนาคตอันใกล้ สามารถใช้ปุ่มที่ยาวขึ้นได้

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

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

ลายเซ็นดิจิทัลอิเล็กทรอนิกส์ของเอกสาร XML

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

ข้อมูลจำเพาะสำหรับลายเซ็นดิจิทัล XML จาก W3C

ขณะนี้ W3C กำลังพัฒนาข้อกำหนดไวยากรณ์และการประมวลผลลายเซ็น XML และเอกสารอื่นๆ ที่เกี่ยวข้อง สำหรับตอนนี้มีสถานะเป็นคำแนะนำแล้ว (http://www.w3.org/TR/xmldsig-core/) เอกสารนี้จัดให้มีการลงนามทั้งเอกสาร XML ทั้งหมดและบางส่วน เพื่อให้กระบวนการลงนาม XML ไม่ซ้ำกัน แนวคิดของการแสดงข้อมูล XML ตามรูปแบบบัญญัติจึงถูกกำหนดไว้ ตัวอย่างเช่น ในเอกสาร XML แท็กที่อยู่ในระดับเดียวกันในแผนผังลำดับชั้นอาจถูกผสมเข้าด้วยกัน ซึ่งทำให้เกิดความคลุมเครือสำหรับกระบวนการลงนาม การแสดง XML ตามรูปแบบบัญญัติเป็นการจัดเรียงประเภทหนึ่ง (หรือค่อนข้างจะเป็นการลดให้เป็นรูปแบบที่ง่ายที่สุด) ที่ไม่อนุญาตให้มีเสรีภาพดังกล่าว วิธีการและกฎการกำหนดมาตรฐาน XML มีการอธิบายไว้ในเอกสารแยกต่างหาก “Canonical XML” (http://www.w3.org/TR/xml-c14n) ซึ่งมีสถานะเป็นคำแนะนำด้วย เอกสารอื่นๆ ที่เกี่ยวข้องกับการลงนามเอกสาร XML มีอยู่ที่: http://www.w3.org/Signature/

แท็ก ลายเซ็น XML

คำแนะนำ "ไวยากรณ์และการประมวลผลลายเซ็น XML" ระบุว่าลายเซ็นและข้อมูลเกี่ยวกับลายเซ็นควรมีอยู่ในแท็ก ซึ่งมีส่วนต่างๆ ดังต่อไปนี้ (ส่วนใหญ่จำเป็นสำหรับการตรวจสอบลายเซ็น):

  • CanonicalizationMethod กำหนดชุดกฎเฉพาะเพื่อลดความซับซ้อนและจัดโครงสร้างอินสแตนซ์ XML ก่อนที่จะลงนาม ข้อมูลนี้ช่วยให้แน่ใจว่าข้อมูลที่ลงนามอยู่ในรูปแบบที่ถูกต้อง ดังนั้นอัลกอริธึมการตรวจสอบจะให้ผลลัพธ์ที่เป็นบวกหากข้อมูลเนื้อหาไม่เปลี่ยนแปลง
  • วิธีการลายเซ็น (SignatureMethod) กำหนดอัลกอริทึมลายเซ็นการแยกข้อความ การแยกข้อความเป็นสตริงอักขระเฉพาะที่มีขนาดคงที่ ซึ่งเป็นผลมาจากการประมวลผลข้อมูลโดยใช้ฟังก์ชันแฮชทางเดียวที่ระบุโดยวิธีการสรุป
  • วิธีแยกย่อย (DigestMethod) อัลกอริธึมสำหรับรวบรวมสรุปข้อความที่เซ็นชื่อโดยใช้วิธีลายเซ็นที่กำหนด การระบุวิธีการแยกย่อยเฉพาะทำให้แน่ใจได้ว่าข้อมูลได้รับการประมวลผลในลักษณะเดียวกัน
  • ค่าการแยกย่อย (DigestValue) ข้อความแยกย่อยเอง นั่นคือ สตริงที่มีความยาวคงที่ซึ่งสร้างขึ้นอันเป็นผลมาจากการประมวลผลข้อมูลโดยใช้อัลกอริธึมการแยกย่อย สตริงดังกล่าวมีเอกลักษณ์เฉพาะและไม่สามารถย้อนกลับได้: แทบจะเป็นไปไม่ได้เลยที่จะได้รับจากเนื้อหาอื่น และไม่สามารถสร้างข้อมูลต้นฉบับขึ้นมาใหม่ได้ มันเหมือนกับลายนิ้วมือสำหรับข้อมูลที่ลงนาม การเปรียบเทียบค่าการแยกย่อยเชิงบวกรับประกันความสมบูรณ์ของเนื้อหา
  • ลายเซ็นนั้นเอง (SignatureValue) นี่คือข้อมูลที่ได้รับหลังจากการประมวลผลโดยวิธีลายเซ็น
  • ข้อมูลเกี่ยวกับคีย์สาธารณะ (KeyInfo) สำหรับการตรวจสอบลายเซ็นดิจิทัล แม่นยำยิ่งขึ้นไม่ใช่คีย์ แต่เป็นใบรับรองเพราะนอกเหนือจากตัวคีย์แล้วยังสามารถระบุชื่อเจ้าของและอัลกอริธึมลายเซ็นดิจิทัลได้

โดยปกติแล้ว นี่ไม่ใช่ข้อมูลที่ครบถ้วนสมบูรณ์เกี่ยวกับสิ่งที่อาจมีอยู่ในแท็ก . นี่คือตัวอย่างที่ง่ายที่สุดของลายเซ็นดังกล่าว (รายการ 1)

การก่อตัวของ XML ลายเซ็นดิจิทัล

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

การตรวจสอบลายเซ็นดิจิทัล XML

ในการตรวจสอบลายเซ็น คุณต้องดำเนินการสองขั้นตอน: การตรวจสอบลายเซ็นและการตรวจสอบค่าสรุป

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

การเข้ารหัสเอกสาร XML

ข้อมูลจำเพาะ W3C เกี่ยวกับการเข้ารหัส XML

มาดูการเข้ารหัสกันดีกว่าซึ่งช่วยให้เราสามารถปิด (นั่นคือแปลงเป็นรูปแบบที่ความหมายไม่ชัดเจน) ข้อมูลที่ส่งและกู้คืนที่ฝั่งรับ สมาคม W3C ได้สร้างคณะทำงาน (http://www.w3.org/Encryption/2001/) ที่เกี่ยวข้องกับปัญหาการเข้ารหัสข้อมูล XML โดยเฉพาะ ข้อมูลจำเพาะไวยากรณ์การเข้ารหัส XML และการประมวลผลในขณะนี้เป็นคำแนะนำและมีอยู่ที่: http://www.w3.org/TR/xmlenc-core/

แท็ก

  • วิธีการเข้ารหัส (EncryptionMethod) อธิบายอัลกอริทึมการเข้ารหัสข้อมูล หากไม่มีแท็กนี้ จะต้องทราบอัลกอริธึมการเข้ารหัสในฝั่งรับ ไม่เช่นนั้นการถอดรหัสข้อความจะเป็นไปไม่ได้
  • ข้อมูลที่เข้ารหัส (CipherData) ข้อมูลที่เข้ารหัสจริงหรือลิงก์ไปยังตำแหน่งของข้อมูล ประเภทของข้อมูลที่หลากหลายที่จะเข้ารหัสและวิธีการขององค์กรเชิงตรรกะนั้นแทบจะไร้ขีดจำกัด
  • ข้อมูลเกี่ยวกับคีย์ (KeyInfo) ข้อมูลเกี่ยวกับคีย์ที่ใช้การเข้ารหัสและดำเนินการถอดรหัสตามลำดับ สามารถจัดเก็บไว้ที่อื่นและแทนที่ในอินสแตนซ์ XML ด้วยลิงก์ URL
  • ข้อมูลอื่นๆ (เช่น เกี่ยวกับผู้รับที่ต้องการ)

ตัวอย่างแท็ก ปรากฏในรายการ 2

กระบวนการเข้ารหัสและถอดรหัส

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

การใช้การป้องกันเอกสาร XML

เราได้ตรวจสอบหลักการทั่วไปของการทำงานของลายเซ็นดิจิทัลอิเล็กทรอนิกส์และข้อกำหนดที่กลุ่ม W3C ได้พัฒนาขึ้นในพื้นที่นี้ ทั้งหมดนี้เป็นสิ่งที่ดี แต่จะเกิดอะไรขึ้นหากมีความจำเป็นต้องดำเนินการตามแผนการป้องกันข้อมูล XML ที่อธิบายไว้จริง ๆ

ทุกวันนี้แม้ว่ามาตรฐาน W3C จะปรากฏขึ้นเมื่อเร็ว ๆ นี้ แต่บาง บริษัท ได้ประกาศเปิดตัวแพ็คเกจ (คลาสไลบรารี) ที่ใช้ทั้งลายเซ็นดิจิทัลและการเข้ารหัส มาดูความสามารถของบางส่วนกัน

ชุดความปลอดภัย XML (IBM)

แพ็คเกจนี้ซึ่งใช้ภาษาการเขียนโปรแกรม Java มีอยู่ที่ http://www.alphaworks.ibm.com/tech/xmlsecuritysuite XML Security Suite เป็นเครื่องมือที่มีคุณสมบัติด้านความปลอดภัย เช่น การเซ็นชื่อดิจิทัล การเข้ารหัส และการควบคุมการเข้าถึงเอกสาร XML ด้วยความช่วยเหลือนี้ คุณจะประสบความสำเร็จได้มากกว่าการใช้ความสามารถของโปรโตคอลความปลอดภัยของเลเยอร์การขนส่ง (เช่น Secure Sockets Layer, SSL)

แพ็คเกจนี้ใช้เทคโนโลยีสามอย่าง:

  • ลายเซ็นดิจิทัลจะขึ้นอยู่กับข้อกำหนด "XML Signature Syntax and Processing" จาก W3C และ IETF (และตามข้อกำหนด "Canonical XML")
  • การเข้ารหัสถูกนำไปใช้ตามข้อกำหนด "ไวยากรณ์การเข้ารหัส XML และการประมวลผล" จาก W3C
  • การควบคุมการเข้าถึงเอกสาร XML (XML Access Control Language)

XML Security Suite เป็นหนึ่งในเครื่องมือสมัยใหม่ที่ดีที่สุดในการปกป้องเอกสาร XML นอกเหนือจากไฟล์เก็บถาวร (JAR) ที่มีไลบรารีคลาสแล้ว ยังมีเอกสารประกอบโดยละเอียดและตัวอย่างที่ช่วยให้คุณสามารถนำทางในลำดับชั้นของคลาสได้อย่างรวดเร็ว

ความปลอดภัยของ XML (Apache)

การปกป้องข้อมูลแบบ XML

ภาษามาร์กอัปเพื่อยืนยันความปลอดภัย (SAML)

พื้นที่ที่แตกต่างจากการปกป้องข้อมูล XML แต่เกี่ยวข้องอย่างใกล้ชิดคือการปรับปรุงความปลอดภัยและการรักษาความปลอดภัยของระบบที่ใช้ XML (โปรโตคอล) ในกรณีนี้ เอกสาร/ระบบ/แอปพลิเคชันอื่นๆ ได้รับการปกป้องโดยใช้ XML ปัจจุบัน คณะกรรมการความปลอดภัยขององค์การเพื่อความก้าวหน้าของมาตรฐานข้อมูลที่มีโครงสร้าง (OASIS) กำลังพัฒนาภาษามาร์กอัปเพื่อยืนยันความปลอดภัย (SAML)

กฎหมายของรัฐบาลกลาง “ในลายเซ็นดิจิทัลอิเล็กทรอนิกส์”

เป้าหมาย

พักสมองจากผู้บัญญัติกฎหมายในแวดวงเว็บสักหน่อยแล้วพิจารณากฎหมายของรัฐบาลกลาง "เกี่ยวกับลายเซ็นดิจิทัลอิเล็กทรอนิกส์" ซึ่งได้รับการอนุมัติโดยประธานาธิบดีแห่งสหพันธรัฐรัสเซียเมื่อวันที่ 10 มกราคม 2545 (http://www.internet-law .ru/intlaw/laws/ecp.htm) การนำกฎหมายนี้มาใช้กำหนดเงื่อนไขทางกฎหมายสำหรับการใช้ลายเซ็นดิจิทัลอิเล็กทรอนิกส์ในเอกสารอิเล็กทรอนิกส์ โดยที่ลายเซ็นดิจิทัลอิเล็กทรอนิกส์ในเอกสารอิเล็กทรอนิกส์จะได้รับการยอมรับว่าเทียบเท่ากับลายเซ็นที่เขียนด้วยลายมือในเอกสารกระดาษ จึงมีการวางรากฐานสำหรับการสร้างการจัดการเอกสารอิเล็กทรอนิกส์ที่มีความสำคัญทางกฎหมาย

เงื่อนไขการเทียบเท่าลายเซ็นอิเล็กทรอนิกส์และลายเซ็นปกติ

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

ใบรับรองและหน่วยงานออกใบรับรอง

กฎหมายอธิบายรายละเอียดว่าใบรับรองคีย์ลายเซ็นประกอบด้วยอะไรบ้าง (หมายเลขทะเบียนที่ไม่ซ้ำกัน ชื่อเต็มของเจ้าของ คีย์ลายเซ็นดิจิทัลสาธารณะ ชื่อและที่ตั้งของศูนย์ออกใบรับรอง ฯลฯ) ข้อกำหนดและขั้นตอนการจัดเก็บใบรับรองไว้ในศูนย์รับรอง ดังนั้นระยะเวลาการจัดเก็บใบรับรองกุญแจลายเซ็นในรูปแบบของเอกสารอิเล็กทรอนิกส์ในศูนย์รับรองจะถูกกำหนดโดยข้อตกลงระหว่างศูนย์รับรองและเจ้าของใบรับรองกุญแจลายเซ็น ในส่วนของการจัดเก็บนั้นจะถูกกำหนดโดยกฎหมายของสหพันธรัฐรัสเซียว่าด้วยเอกสารสำคัญและเอกสารสำคัญ

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

กุญแจส่วนตัว (ความลับ)

ลายเซ็นดิจิทัลอิเล็กทรอนิกส์สามารถทำงานได้เฉพาะในกรณีที่ผู้ลงนามมีข้อมูลบางอย่างที่ไม่สามารถเข้าถึงได้โดยคนแปลกหน้า ข้อมูลนี้คล้ายกับคีย์เข้ารหัสและจึงเรียกว่า "คีย์ส่วนตัวของลายเซ็นดิจิทัลอิเล็กทรอนิกส์" (ก่อนหน้านี้ใช้คำว่า "คีย์ลับ" ที่คล้ายกัน) จำเป็นต้องเก็บทั้งคีย์ส่วนตัวและคีย์เข้ารหัสไว้เป็นความลับ เนื่องจากความรู้เกี่ยวกับคีย์ลงนามส่วนตัวนั้นสอดคล้องกับกระดาษเปล่าที่มีลายเซ็นของเจ้าของคีย์ส่วนตัว ซึ่งผู้โจมตีสามารถเขียนข้อความใด ๆ ที่จะ ถือว่าเป็นเจ้าของคีย์ส่วนตัวที่แท้จริง ศิลปะ. กฎหมายมาตรา 12 ระบุโดยตรงถึงภาระหน้าที่ของเจ้าของใบรับรองคีย์ลายเซ็นในการรักษาความลับของคีย์ส่วนตัว และเรียกร้องให้ระงับใบรับรองคีย์ลายเซ็นทันที หากมีเหตุผลให้เชื่อได้ว่าความลับของคีย์ลายเซ็นส่วนตัวถูกละเมิด

ศิลปะ. กฎหมายฉบับที่ 5 กำหนดขั้นตอนในการสร้างคีย์ลายเซ็นส่วนตัวโดยคำนึงถึงการปฏิบัติตามความลับในการสร้างอย่างเคร่งครัด ศิลปะ ยังชี้ให้เห็นถึงสถานการณ์เดียวกัน มาตรา 9 ของกฎหมายที่เกี่ยวข้องกับกิจกรรมของศูนย์รับรอง ในโครงสร้างข้อมูลองค์กร ปัญหาของการผลิตและจำหน่ายคีย์ส่วนตัว EDS สามารถแก้ไขได้โดยใช้วิธีการของตนเอง อย่างไรก็ตาม ผู้ใช้ EDS จะต้องตระหนักถึงผลที่ตามมาที่อาจเกิดขึ้นขององค์กรดังกล่าวในการทำงานของ EDS ค่อนข้างเป็นไปได้ที่ลำดับปกติบางลำดับจะถูกใช้เป็นคีย์ส่วนตัว เช่นเดียวกับที่เกิดขึ้นเมื่อใช้ระบบรหัสผ่าน

มาตรฐานภายในประเทศสำหรับอัลกอริธึมลายเซ็นดิจิทัล

โครงการเอล กามาล

ในปี 1994 มาตรฐานในประเทศฉบับแรกในด้านลายเซ็นดิจิทัลได้รับการรับรอง GOST R34.10 94 “เทคโนโลยีสารสนเทศ การปกป้องข้อมูลการเข้ารหัส ขั้นตอนการพัฒนาและตรวจสอบลายเซ็นดิจิทัลอิเล็กทรอนิกส์โดยใช้อัลกอริธึมการเข้ารหัสแบบอสมมาตร” กำหนดขั้นตอนการทำงานกับลายเซ็นดิจิทัลตามรูปแบบ ElGamal ความเป็นไปไม่ได้ของการปลอมลายเซ็นนั้นเกิดจากความซับซ้อนในการแก้ปัญหาลอการิทึมแบบไม่ต่อเนื่องในสาขาขององค์ประกอบ p หรือความซับซ้อนในการกำหนดตัวเลข x ที่มอบให้กับจำนวนเฉพาะจำนวนมาก p และตัวเลข a, b จากช่วงเวลาตั้งแต่ 2 ถึง p-1 ซึ่งดำเนินการโดยการเปรียบเทียบ:

ขวาน==bmodp.

อย่างไรก็ตาม นักคณิตศาสตร์ไม่หยุดนิ่ง และเมื่อเร็วๆ นี้ มีความก้าวหน้าอย่างมากในการพัฒนาวิธีการแก้ปัญหาลอการิทึมแบบไม่ต่อเนื่องในสาขาองค์ประกอบ p เมื่อเร็ว ๆ นี้วิธีการตะแกรงฟิลด์ตัวเลขที่เรียกว่าถูกสร้างขึ้น ด้วยความช่วยเหลือนี้ คุณสามารถแฮ็กลายเซ็นดิจิทัลที่สร้างโดยวิธีการข้างต้นได้ (อย่างน้อยก็ในกรณีของโมดูล 512 บิต p)

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

เส้นโค้งรูปไข่

ในที่สุดนักวิทยาศาสตร์ชาวรัสเซียก็สรุปได้ว่ามีความเป็นไปได้ที่จะทำให้โครงการ El-Gamal ซับซ้อนขึ้นเล็กน้อย ดังนั้นจึงเพิ่มความซับซ้อนของการปลอมลายเซ็นดิจิทัลหลายพันครั้งโดยไม่ต้องเสียค่าใช้จ่ายในการคำนวณเพิ่มเติม รูปแบบ ElGamal เวอร์ชันใหม่ใช้เครื่องมือของเส้นโค้งรูปไข่บนสนามอันจำกัดขององค์ประกอบ p ซึ่งถูกกำหนดให้เป็นชุดของคู่ตัวเลข (x, y) (แต่ละคู่อยู่ในช่วงตั้งแต่ 0 ถึง p-1 ) เป็นไปตามการเปรียบเทียบ (ตัวเลข a และ b ได้รับการแก้ไขแล้วและสอดคล้องกับเงื่อนไขเพิ่มเติมบางประการ):

Y2 == x3 + ขวาน + bmodp

ทรัพยากรอื่นๆ

  • ข้อมูลเกี่ยวกับยูทิลิตี้ Oracle XML-SQL http://otn.oracle.com/tech/xml/xdk_java/content.html
  • ข้อมูลจำเพาะ SAML http://www.oasis-open.org/committees/security/
  • ข้อมูลจำเพาะ XKMS http://www.w3.org/TR/xkms/
  • กฎหมายของรัฐบาลกลาง “ในลายเซ็นดิจิทัลอิเล็กทรอนิกส์”

ส่วนนี้เสนอให้ดาวน์โหลดโปรแกรม XML Converter / XML Designer / XML Reports / Just Sign / XML Contact - Rosreestr

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

โปรแกรมแปลง XMLกำหนดค่าให้แปลงไฟล์ XML / เอกสาร Rosreestr เช่นการแยกที่ดิน, แผนผังที่ดินของอาณาเขตเป็นรูปแบบที่ใช้งานง่ายอื่น ๆ เช่น MIF / MID, DXF, CSV, TXT, HTML

โปรแกรมออกแบบ XMLได้รับการกำหนดค่าให้สร้างเอกสารในรูปแบบอิเล็กทรอนิกส์ในรูปแบบ XML สำหรับกิจกรรมเกี่ยวกับที่ดิน เช่น แผนผังเขต แผนทางเทคนิค แผนที่ (แผน) ฯลฯ ตลอดจนการแจ้งเตือนการจำนำสังหาริมทรัพย์และการแจ้งตามกฎหมาย FATCA

โปรแกรมรายงาน XMLกำหนดค่าให้แปลงเอกสารอิเล็กทรอนิกส์สำหรับกิจกรรมเกี่ยวกับที่ดิน เช่น แผนผังเขต แผนทางเทคนิค แผนที่ (แผน) ให้เป็นเอกสารที่พิมพ์ (กระดาษ) ที่สอดคล้องกัน

เพียงลงนามในโปรแกรมออกแบบมาสำหรับการสร้างและตรวจสอบลายเซ็นดิจิทัลอิเล็กทรอนิกส์ (EDS)

โปรแกรม XML ติดต่อ-Rosreestrมีไว้สำหรับการโต้ตอบกับบริการเว็บ Rosreestr เช่น การสร้างแอปพลิเคชันสำหรับการจดทะเบียนที่ดินและอสังหาริมทรัพย์ การขอข้อมูลที่ดิน การได้รับผลลัพธ์จากการสมัครและคำขอเหล่านี้

โปรแกรมทั้งหมด (ยกเว้น Just Sign และ XML Contact-Rosreestr) มีโหมดสาธิตนาน 30 วัน ซึ่งช่วยให้คุณใช้ฟังก์ชันการทำงานของโปรแกรมได้โดยไม่มีข้อจำกัด หลังจากช่วงสาธิตหมดลง คุณจะต้องซื้อโปรแกรมเวอร์ชันเต็มหรือหยุดใช้งาน โปรแกรม Simply Sign เป็นโปรแกรมฟรีและไม่มีข้อจำกัดในการใช้งาน โปรแกรม Contact-Rosreestr XML อยู่ในการทดสอบเบต้าและปัจจุบันใช้งานได้ฟรี

สำคัญ! ในการแปลงโดยใช้โปรแกรม ตัวแปลง XMLหรือ ตัวสร้าง XMLไฟล์ XML ขนาดใหญ่จำเป็นต้องดาวน์โหลดและติดตั้งโดยตัวประมวลผลคิวรี XQuery ภายนอก และระบุไว้ในฟิลด์ที่เหมาะสมของโปรแกรมก่อนการแปลง ปัจจุบัน รองรับโปรเซสเซอร์คิวรีที่ใช้งานได้ฟรีสองตัว: AltovaXML 2010 (พัฒนาโดย www.altova.com) และ Saxon-HE 9.5 (พัฒนาโดย www.saxonica.com) คุณสามารถดาวน์โหลดได้จากเว็บไซต์ของผู้ผลิตหรือจากไซต์นี้โดยใช้ลิงก์ด้านล่าง:

สำคัญ! ก่อนที่คุณจะเริ่มทำงานกับโปรแกรม คุณต้องอ่านคำแนะนำก่อน นี่เป็นสิ่งสำคัญอย่างยิ่งสำหรับโปรแกรม XML Constructor เนื่องจากก่อนทำงานจำเป็นต้องเข้าใจหลักการทำงานของโปรแกรมนี้ก่อน คำแนะนำจะอยู่ในโฟลเดอร์เดียวกันกับไฟล์ปฏิบัติการของโปรแกรม เช่น สำหรับ XML Constructor ในโฟลเดอร์ “c:\ProgramFiles\XMLCON\XMLConstructor\XMLConstructor-help.rtf” คุณสามารถเรียกคำแนะนำผ่านทางลัดจากเมนูหลักของโปรแกรม Windows เช่น สำหรับ XML Designer “Start->Programs->XML Designer->XML Designer - Instructions” สำหรับโปรแกรม XML Designer คำแนะนำยังมีอยู่ในเมนูวิธีใช้

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

หากต้องการส่งไปยัง Rosreestr ซึ่งเป็นข้อบังคับ เอกสารทั้งหมดจะต้องลงนามด้วยลายเซ็นดิจิทัลอิเล็กทรอนิกส์ (ลายเซ็นดิจิทัลอิเล็กทรอนิกส์) และบางครั้งคุณจำเป็นต้องตรวจสอบลายเซ็นดิจิทัลของคุณเองหรือของผู้อื่น

มาดูกันว่าซอฟต์แวร์ใดที่คุณสามารถลงนามในเอกสารหรือไฟล์ XML ด้วยลายเซ็นดิจิทัลอิเล็กทรอนิกส์ได้อย่างไรและด้วยอะไร หนึ่งในโปรแกรมคือ GIS “พาโนรามา” - “Map-2011” เวอร์ชัน 11.10.4 การเซ็นเอกสารทำงานได้แม้ในเวอร์ชันที่ไม่ได้ลงทะเบียน ขั้นตอนการลงนามเอกสารไฟล์ รายชื่อโปรแกรมที่อนุญาตให้คุณลงนามเอกสาร, ไฟล์ XML, EDS (ลายเซ็นดิจิทัลอิเล็กทรอนิกส์) สำหรับการแลกเปลี่ยนข้อมูลกับพอร์ทัลบริการสาธารณะของ Federal Service สำหรับการลงทะเบียนของรัฐ, สำนักงานที่ดินและการทำแผนที่, Rosreestr ผ่าน Internet EDS มีดังต่อไปนี้: เปิด "Map-2011" หรือ "Mini Card" กด "F12" เพื่อเปิดเมนูเปิดแอปพลิเคชัน ในหน้าต่างที่ปรากฏขึ้น ให้เลือกงาน เอกสารอิเล็กทรอนิกส์, ไกลออกไป การสร้างลายเซ็นดิจิทัลอิเล็กทรอนิกส์

ไฟล์ลายเซ็น: เลือกไฟล์ที่ต้องลงนาม และตามด้วยใบรับรองที่จำเป็นในใบรับรอง เพียงเท่านี้ เอกสารหรือไฟล์ XML ของคุณได้รับการเซ็นชื่อด้วยลายเซ็นอิเล็กทรอนิกส์ หากคุณต้องการตรวจสอบลายเซ็นที่มีอยู่ ให้เลือกไฟล์ลายเซ็น (ไฟล์ที่มีนามสกุล “sig”) เว็บไซต์อย่างเป็นทางการของ GIS ""

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

หลังจากติดตั้งโปรแกรมและเปิดใช้งานแล้ว ให้เพิ่มไฟล์ลงในโปรแกรมที่ต้องลงนาม แท็บ "การกระทำ" ปุ่ม "เพิ่ม"

หากต้องการเซ็นชื่อไฟล์ทั้งหมดในคราวเดียว คุณต้องเลือกไฟล์ทั้งหมด - "ปุ่ม Shift + เมาส์ขวา" หรือ "Shift + ลูกศรลง" จากนั้นคลิก "ลงชื่อ" ในหน้าต่างที่ปรากฏขึ้น เพิ่มใบรับรอง หรือทิ้งใบรับรองที่เลือกไว้ก่อนหน้านี้ หรือเปลี่ยนเป็นใบรับรองอื่น ฉันจำอีกครั้งว่าในการส่งไปยัง Rosreestr ในหน้าต่างนี้ไม่ควรมีใบรับรองเกิน 1 ใบ! ตั้งค่าทั้งหมดตามที่แสดงในภาพ:

มาลงชื่อกันเถอะ หลังจากลงนามแล้ว ไฟล์ที่มีนามสกุล “sigO” จะถูกเพิ่มลงในรายการของคุณ นี่คือลายเซ็นไฟล์ สิ่งที่เหลืออยู่คือการอัปโหลดไฟล์ลายเซ็นหรือไฟล์ทั้งหมด (ขึ้นอยู่กับดุลยพินิจของคุณ) เลือกสิ่งที่คุณต้องการอัปโหลด ในกรณีนี้คือไฟล์ลายเซ็นสามไฟล์ แล้วคลิก "อัปโหลด" นั่นดูเหมือนจะเป็นทั้งหมด แต่เช่นเดียวกับชีสฟรีทุกชนิดมีความแตกต่างกันนิดหน่อย Rosreestr สาบานกับนามสกุลไฟล์ “sigO” ดังนั้นคุณต้องเปลี่ยนชื่อนามสกุลจาก “sigO” เป็น “sig” ใน Explorer หรือตัวจัดการไฟล์ใดๆ

ลายเซ็นของโปรแกรมนี้ยังไม่ได้รับการตรวจสอบโดยเว็บไซต์ Rosreestr. การตรวจสอบลายเซ็นดำเนินการโดยผลิตภัณฑ์ซอฟต์แวร์ที่มีการโต้ตอบกับพอร์ทัลบริการของรัฐบาลของ Federal Service for State Registration, Cadastre และ Cartography ทั้งสามโปรแกรมที่ตรวจสอบลายเซ็นที่ดำเนินการโดยโปรแกรมนี้ให้ผลลัพธ์ที่เป็นบวก การตรวจสอบดำเนินการโดยโปรแกรมที่ระบุไว้ที่นี่ GIS "พาโนรามา", Crypto ARM และโปรแกรมแผนสำรวจรูปหลายเหลี่ยม-ที่ดิน ลายเซ็นยังได้รับการตรวจสอบโดยบริการตรวจสอบลายเซ็นดิจิทัลออนไลน์บนเว็บไซต์

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

เป้าหมายอันสูงส่งทำให้กิจกรรมต่างๆ ในนามของเป้าหมายนี้ดีขึ้นเค. ลีบเนคท์

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

การรับรองข้อความที่สร้างในรูปแบบ XML

หากคุณต้องลงนามในรายงานที่รวบรวมในรูปแบบ XML ก็ควรพิจารณาว่ามีหลายทางเลือกในการดำเนินการนี้

  1. คุณสามารถใช้คอมโพเนนต์ Microsoft Office ใหม่ - InfoPath 2003 เพื่อสร้างลายเซ็นดิจิทัลในรูปแบบ XML
  2. การสร้างลายเซ็นต์ตามรูปแบบปกติ ในกรณีนี้คุณจะต้องใช้โปรแกรม CryptoPro

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

การทำงานกับรูปแบบ PDF

คำถามนี้มักเกิดขึ้นเกี่ยวกับวิธีลงนามไฟล์ทางอิเล็กทรอนิกส์หากเอกสารถูกสร้างในรูปแบบ PDF เพื่อสร้างและตรวจสอบลายเซ็นดิจิทัลของเอกสารที่สร้างในรูปแบบ PDF บริษัท CryptoPro ได้พัฒนาโปรแกรม CryptoPro PDF ผลิตภัณฑ์นี้เป็นวิธีการสร้างและตรวจสอบลายเซ็นดิจิทัลสำหรับตัวอักษรที่สร้างขึ้นในโปรแกรม Adobe Acrobat และ Adobe Reader

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

การลงนามในการจัดส่งแบบหลายไฟล์

บางครั้งคำถามก็เกิดขึ้นว่าจะลงนามไฟล์ EDS ได้อย่างไร หากการจัดส่งไม่ได้มีเพียงการดำเนินการเดียว แต่มีการดำเนินการหลายอย่าง ในกรณีนี้ คุณสามารถสร้างลายเซ็นลายเซ็นของคุณแยกกันสำหรับแต่ละลายเซ็นได้

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

หนึ่งในโครงการที่กำลังดำเนินการอยู่ในปัจจุบันได้แก้ไขปัญหาการลงนาม (ใช้ลายเซ็นอิเล็กทรอนิกส์) เอกสาร XML ได้แก่ แพ็คเกจ SOAP รูปแบบที่แนะนำคือ OASIS Standard 200401 พร้อมด้วยโปรไฟล์โทเค็นใบรับรอง X.509 เอกสารเหล่านี้อธิบายการใช้รูปแบบ www-consortium (W3C) XML Digital Signature (XMLDSig) ในข้อความ SOAP ลายเซ็น XML เช่นเดียวกับลายเซ็นอิเล็กทรอนิกส์ประเภทอื่นๆ รองรับการรับรองความถูกต้อง ความสมบูรณ์ของข้อมูล และการไม่ปฏิเสธการลงนามข้อมูล

ฉันจะสังเกตคุณสมบัติหลายประการของรูปแบบ XMLDSig:

1. ไม่ใช่เอกสาร XML ทั้งหมดที่สามารถทำหน้าที่เป็นวัตถุในการลงนามได้ แต่เพียงบางส่วนเท่านั้น เช่น โหนดเฉพาะ ตามมาตรฐาน OASIS 200401 วัตถุที่ถูกลงนามคือเนื้อหา (node ร่างกาย) ข้อความสบู่

2. ส่วนต่างๆ ของเอกสาร XML สามารถลงนามโดยผู้ลงนามหลายคนได้

3. ลายเซ็น XML สามารถอยู่ในระดับที่แตกต่างกันโดยสัมพันธ์กับออบเจ็กต์ที่กำลังลงนาม:

  • โครงสร้างลายเซ็นอาจมี ยูอาร์ไอ(ตัวระบุทรัพยากรที่สม่ำเสมอ);
  • ลายเซ็น XML สามารถอยู่ในระดับเดียวกับโหนดที่กำลังลงนาม
  • ลายเซ็น XML สามารถอยู่ภายในโหนดที่กำลังลงนามได้
  • โหนดที่กำลังลงนามอาจอยู่ภายในโครงสร้างลายเซ็น XML

4. ในการตรวจสอบความถูกต้องของลายเซ็นอิเล็กทรอนิกส์ จำเป็นต้องเข้าถึงวัตถุการลงนาม

โครงสร้างของซองสบู่

โดยทั่วไป ข้อความจะประกอบด้วยส่วนหัวและเนื้อหา: หัวข้อและ ร่างกาย. หัวข้อมีข้อมูลเมตาและ ร่างกายข้อมูล. ลายเซ็น XML ถูกวางไว้ในโหนด หัวข้อ.

อัลกอริธึมการเข้ารหัสและการกำหนดรูปแบบมาตรฐาน

เพื่อแก้ปัญหาที่เราใช้ GOST ร 34.11-94- มาตรฐานการเข้ารหัสลับของรัสเซียสำหรับการคำนวณฟังก์ชันแฮชและ GOST ร 34.10-2544- มาตรฐานลายเซ็นอิเล็กทรอนิกส์

เนื่องจากความยืดหยุ่นของกฎการจัดองค์ประกอบ XML โครงสร้างเอกสารเดียวกันและข้อมูลเดียวกันจึงสามารถแสดงด้วยเอกสาร XML ที่แตกต่างกันได้ ลองดูเอกสารสองฉบับ:

จากมุมมองเชิงตรรกะ สิ่งเหล่านี้เทียบเท่ากัน นั่นคือ พวกมันมี XML schema เหมือนกัน แต่ไฟล์ XML ของรายการเหล่านี้ไม่มีลำดับอักขระที่เหมือนกัน ซึ่งจะนำไปสู่ผลลัพธ์ที่แตกต่างกัน เช่น เมื่อดึงค่าแฮช

เพื่อหลีกเลี่ยงความคลาดเคลื่อนดังกล่าว จึงมีการใช้กฎการจัดรูปแบบที่เข้มงวดและข้อกำหนดสำหรับเนื้อหาของข้อความ XML กระบวนการนำเอกสาร XML มาสู่รูปแบบรวม (บัญญัติ) เรียกว่า การกำหนดมาตรฐาน(อังกฤษ: การกำหนดรูปแบบมาตรฐาน) ตัวอย่างของกฎอาจเป็นการใช้รูปแบบการเข้ารหัสบางอย่าง (UTF-8), การทำให้ค่าแอตทริบิวต์เป็นมาตรฐาน, การใช้เครื่องหมายคำพูดคู่สำหรับค่าแอตทริบิวต์, ลำดับที่แน่นอนของแอตทริบิวต์และการประกาศเนมสเปซ ฯลฯ การกำหนดมาตรฐาน XML มีหลายประเภท ซึ่งต่างกันไปตามองค์ประกอบของกฎเกณฑ์ คุณสามารถอ่านเพิ่มเติมเกี่ยวกับกระบวนการกำหนดรูปแบบมาตรฐานได้ในข้อกำหนด W3C อย่างเป็นทางการ (สามารถดูบทความภาษารัสเซียในหัวข้อนี้ได้และ)

ห้องสมุด SIRCrypt

ในการใช้การลงนาม XML ใน DIRECTUM ไลบรารี COM ได้ถูกเขียนขึ้น โดยมีการอธิบายไว้ 3 คลาส: ฮาเชอร์, ผู้ลงนามและ XMLCanonicalizerเพื่อรับแฮช ค่า ES และการกำหนดรูปแบบมาตรฐานของเอกสาร XML ตามลำดับ

ห้องสมุดต้องการ คริปโตโปร CSP(ทดสอบกับเวอร์ชั่น การเข้ารหัสลับ PRO CSP 3.6.6497 KC2) และ .สุทธิ(ขั้นต่ำ 2.0)

การลงทะเบียนไลบรารีทำได้โดยการรันคำสั่งต่อไปนี้:

> regasm.exe "เส้นทางไปยัง dll" /codebase /tlb

วัตถุ Hasher สำหรับการคำนวณแฮชตาม GOST

ประกอบด้วยเขตข้อมูล เนื้อหา (พิมพ์ "สตริง") และ แฮชค่าAsBase64 (พิมพ์ "string") รวมถึงวิธีการคำนวณค่าแฮช กัญชา(). ในการคำนวณจำเป็นต้องกำหนด เนื้อหา , เรียกวิธีการ กัญชา()ซึ่งส่งผลให้ในสนาม แฮชค่าAsBase64 ค่าแฮชจะถูกเขียนไปที่ Base64

วัตถุผู้ลงนามเพื่อรับค่า ES ตาม GOST

ประกอบด้วยเขตข้อมูล เนื้อหา (พิมพ์ "สตริง") ชื่อคอนเทนเนอร์ (พิมพ์ "สตริง") ใบรับรองAsPEM (พิมพ์ "สตริง") BESignatureValueAsBase64 (พิมพ์ "สตริง") วิธีการ เข้าสู่ระบบ(). หลังจากเริ่มต้นวัตถุแล้ว คุณจำเป็นต้องกำหนด เนื้อหา (รายละเอียดการลงนาม) ชื่อคอนเทนเนอร์ (ชื่อคอนเทนเนอร์คีย์ส่วนตัวของใบรับรอง) วิธีการเรียก เข้าสู่ระบบ(). แล้วในสนาม. ใบรับรองAsPEM ใบรับรองที่สอดคล้องกับคีย์ส่วนตัวจะอยู่ใน Base64 และฟิลด์ BESignatureValueAsBase64 ค่าลายเซ็นเป็นสตริง Base64

วัตถุ XMLCanonicalizer สำหรับการกำหนดมาตรฐาน XML

ประกอบด้วยเขตข้อมูล XMLContent (พิมพ์ "สตริง") CanonicalXML (พิมพ์ "สตริง") วิธีการ C14NExc(). หากต้องการรับแบบฟอร์ม Canonical XML คุณต้องระบุ XMLContent , เรียก C14NExc()รับผลจากสนาม CanonicalXML .

โครงสร้างลายเซ็น XML

การสร้างลายเซ็นมีลักษณะดังนี้: ขั้นแรก ฐานของแพ็คเกจสบู่จะถูกสร้างขึ้น โหนด หัวข้อและ ร่างกาย. ร่างกายเต็มไปด้วยข้อมูลและเพิ่มแอตทริบิวต์ wsu:ID="เนื้อหา"- ตัวระบุข้อมูลที่ลงนาม

ต่อเติมโครงสร้าง ความปลอดภัยเกิดขึ้นตามลำดับต่อไปนี้:

  1. ค่าแฮชจากโหนด Body จะถูกนำไปใช้ในรูปแบบมาตรฐานและวางไว้ในโหนด DigestValue
  2. ปม ข้อมูลลงนามแล้วลดลงเป็นรูปแบบมาตรฐาน ลงนามโดยลายเซ็นอิเล็กทรอนิกส์ ผลลัพธ์ในรูปแบบสตริง Base64 จะเข้าสู่โหนด ค่าลายเซ็น.
  3. รหัสสาธารณะของใบรับรองที่ใช้ในการลงนามจะถูกวางไว้ในโหนด โทเค็นความปลอดภัยไบนารีในรูปแบบสตริง Base64

ในการตรวจสอบ ES ที่สร้างขึ้นในลักษณะนี้ คุณต้องทำตามขั้นตอนทั้งหมดในลำดับย้อนกลับ กล่าวคือ:

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

ตัวอย่างการใช้งาน

ชุดพัฒนาและห้องสมุด

ตัวอย่างการลงนาม XML บน ISBL (สคริปต์): dev.zip (5.95 KB)

สำหรับการใช้งานแบบถาวร รหัสที่ดำเนินการลงนามมาตรฐานของซองจดหมาย SOAP ที่เสร็จแล้วจะถูกย้ายไปยังฟังก์ชัน เข้าสู่ระบบSOAP().

ใบรับรองจากที่เก็บใบรับรองส่วนบุคคลของผู้ใช้ปัจจุบันจะถูกใช้สำหรับการลงนาม