รหัสลิขสิทธิ์ซอฟต์แวร์ถูกสร้างขึ้นมาอย่างไร?


361

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


8
+1 คำถามที่น่าสนใจบางทีผู้ตอบอาจโพสต์ลิงก์ไปยังแหล่งข้อมูลที่ดีในหัวข้อนี้เพื่ออ่านเพิ่มเติม ได้โปรด :)
Jacob

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

5
คีย์ซีดีนั้นมีความปลอดภัยแน่นอน มีหลายวิธีในการสร้างพวกเขา แต่ทุกอย่างจำเป็นต้องพึ่งพาการฝังความลับบางอย่างในโปรแกรมที่จำเป็นในการตรวจสอบคีย์
Nick Johnson

4
พวกเขากำลังเรียกว่ารหัสผลิตภัณฑ์หรือรหัสสิทธิ์การใช้งานในขณะนี้เนื่องจากซอฟต์แวร์ส่วนใหญ่ที่ใช้พวกเขามีแนวโน้มที่จะถูกส่งออนไลน์มากกว่าซีดี
Joel Coehoorn

4
ฉันต้องการสร้างแอปสักวันหนึ่งที่ฉันต้องกังวลเกี่ยวกับเรื่องนี้ความฝันในวัยเด็กของแปลก ๆ เว็บแอพไม่ตัดมัน
Znarkus

คำตอบ:


268

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

ทางที่ไม่ถูกต้องที่จะทำ:

สตาร์คราฟต์และHalf-lifeใช้การตรวจสอบเดียวกันโดยที่ 13 หลักตรวจสอบ 12 ตัวแรกดังนั้นคุณสามารถป้อนอะไรก็ได้สำหรับ 12 หลักแรกและเดา 13 (มี 10 ความเป็นไปได้เท่านั้น) นำไปสู่ความอับอาย1234-56789-1234

อัลกอริทึมสำหรับการยืนยันเป็นแบบสาธารณะและมีลักษณะดังนี้:

x = 3;
for(int i = 0; i < 12; i++)
{
    x += (2 * x) ^ digit[i];
}
lastDigit = x % 10;

วิธีที่ถูกต้องที่จะทำ

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

แน่นอนไม่ว่าสิ่งที่คุณทำเว้นแต่คุณจะนำเสนอบริการออนไลน์ (เช่นWorld of Warcraft ) ประเภทของการป้องกันการคัดลอกใด ๆ เป็นเพียงแผง: โชคไม่ดีถ้ามันคุ้มค่าเกมมูลค่าใด ๆ คนที่จะทำลาย(หรืออย่างหลีกเลี่ยงไม่น้อยกว่า )อัลกอริทึม CD-key และการปกป้องลิขสิทธิ์อื่น ๆ

REALวิธีที่ถูกต้องที่จะทำมัน:

สำหรับบริการออนไลน์ชีวิตนั้นค่อนข้างง่ายกว่าแม้จะเป็นไฟล์ไบนารีคุณจำเป็นต้องตรวจสอบสิทธิ์กับเซิร์ฟเวอร์ของตนเพื่อใช้ประโยชน์จากมัน (เช่นมีบัญชี WoW) อัลกอริทึม CD-key สำหรับ World of Warcraft - ใช้แล้วเช่นเมื่อซื้อการ์ดเล่น - อาจมีลักษณะดังนี้:

  1. สร้างตัวเลขสุ่มที่ปลอดภัยมากเข้ารหัสลับ
  2. เก็บไว้ในฐานข้อมูลของเราและพิมพ์ลงบนการ์ด

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

สำหรับบริการออนไลน์ไม่มีเหตุผลที่จะไม่ใช้รูปแบบข้างต้น การใช้สิ่งอื่นอาจทำให้เกิดปัญหาได้


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

18
เฮ้ฉันไม่เคยรู้เกี่ยวกับ1234-56789-1234กุญแจตาร์คราฟ แต่ฉันจำได้ว่าใช้เวลาประมาณห้านาทีในการ "พิสูจน์กำลัง" โดยใช้การกดแป้นบนแป้นพิมพ์แล้วลองอีกครั้ง
fmark

18
ฉันยังจำผลิตภัณฑ์ของ Microsoft บางอย่างในอดีตที่ผ่านมาช่วยให้คุณใช้ 111-1111111 เป็น CDkey ที่ถูกต้อง (Visual Studio 6.0)
hannson

25
ไม่เคยรู้เกี่ยวกับ 1234-56789-1234 เราใช้สิบสามข้อแทน! 3333333333333
ErikTJ

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

56

ตอนแรกที่ฉันเขียนคำตอบนี้มันอยู่ภายใต้การสันนิษฐานว่าคำถามนั้นเกี่ยวกับการตรวจสอบความถูกต้องของรหัสออฟไลน์ 'ออฟไลน์' คำตอบอื่น ๆ ส่วนใหญ่ใช้การยืนยันออนไลน์ซึ่งง่ายต่อการจัดการอย่างมาก (ตรรกะส่วนใหญ่สามารถทำได้ทางฝั่งเซิร์ฟเวอร์)

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

ฉันไม่เชี่ยวชาญในวิชาคณิตศาสตร์มาก แต่มันทำให้ฉันหลงทางที่จะทำสิ่งนี้คือการใช้ฟังก์ชันทางคณิตศาสตร์ที่พล็อตกราฟ

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

ป้อนคำอธิบายรูปภาพที่นี่

ตัวอย่างเช่นเราจะพล็อตกราฟนี้เลือกสี่จุดและเข้ารหัสเป็นสตริงเป็น "0, -500; 100, -300; 200, -100; 100,600"

เราจะเข้ารหัสสตริงด้วยคีย์ที่รู้จักและคงที่ (อ่อนแออย่างน่ากลัว แต่มันมีจุดประสงค์) จากนั้นแปลงไบต์ผลลัพธ์ผ่านBase32เพื่อสร้างคีย์สุดท้าย

แอปพลิเคชันสามารถย้อนกลับกระบวนการนี้ (base32 เป็นจำนวนจริงถอดรหัสถอดรหัสคะแนน) จากนั้นตรวจสอบแต่ละจุดเหล่านั้นบนกราฟลับของเรา

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

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


6
ไม่เอริคก็จะไม่ X เป็นจำนวนเต็มและ Y เป็นพื้นของฟังก์ชัน
Joshua

นี่ไม่ต่างกับการนำทางด้วยดาวเทียม GPS มาก่อน! youtube.com/watch?v=BBOsQBuCJfs
แบรด

34

ตรวจสอบบทความนี้เกี่ยวกับการยืนยันคีย์บางส่วนซึ่งครอบคลุมข้อกำหนดต่อไปนี้:

  • คีย์ใบอนุญาตจะต้องง่ายพอที่จะพิมพ์

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

  • ไม่มี "การโทรกลับบ้าน" เพื่อทดสอบคีย์ แม้ว่าการฝึกฝนนี้จะทวีความรุนแรงมากขึ้นเรื่อย ๆ แต่ฉันก็ยังไม่ชื่นชมในฐานะผู้ใช้ดังนั้นจะไม่ขอให้ผู้ใช้ของฉันอดทน

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

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


21

ฉันไม่เคยมีประสบการณ์กับสิ่งที่ผู้คนทำเพื่อสร้างคีย์ซีดี แต่ (สมมติว่าคุณไม่ต้องการลงพื้นที่เปิดใช้งานออนไลน์) นี่คือวิธีที่เราสามารถสร้างคีย์ได้:

  • กำหนดให้หารด้วย (พูด) 17. คาดเดาได้ยากถ้าคุณมีกุญแจจำนวนมาก แต่ส่วนใหญ่ของสตริงที่อาจเกิดขึ้นจะไม่ถูกต้อง ในทำนองเดียวกันจะต้องมีการตรวจสอบของคีย์ตรงกับค่าที่รู้จักกัน

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

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

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


9
ฉันต้องการให้ใครก็ตามที่มาพร้อมกับ 'หมายเลขที่ใช้ครั้งเดียว' ไม่ได้เลือก Nonce เป็นชื่อเนื่องจากความหมายเชิงลบของอะแฮ่มที่ทำให้ฉันหัวเราะคิกคักทุกครั้งที่มีคนแนะนำการเข้ารหัส
Ed James

2
โปรดทราบว่าตัวเลือกที่สามนั้นใช้ไม่ได้กับ cyphers key symmetric เนื่องจากผู้โจมตีสามารถย้อนวิศวกรทดสอบในข้อความธรรมดาสร้างสิ่งที่ผ่านแล้วเข้ารหัสด้วยคีย์ (รู้จัก) และ cypher (รู้จัก) การใช้ Home Brew Cypher ไม่ใช่วิธีแก้ปัญหาเพราะถ้าคุณทำได้ด้วยตัวเองคุณควรหางานที่ NSA
BCS

@BCS: ขออภัยฉันควรชัดเจนเกี่ยวกับการใช้รหัสสาธารณะกุญแจ
Andrew Aylett

ใช้รูปแบบลายเซ็นไม่ใช่รูปแบบการเข้ารหัสสำหรับรุ่นสาธารณะ (ลายเซ็น RSA มีลักษณะเหมือน "การเข้ารหัสด้วยกุญแจสาธารณะ" แต่มันไม่เหมือนกันทั้งหมดมีโครงร่างลายเซ็นอื่น ๆ ที่ไม่มีรูปแบบการเข้ารหัสที่เกี่ยวข้องเช่น DSA)
Paŭlo Ebermann

ปัญหาของรหัสลับสาธารณะคือกุญแจ (และดังนั้น serials) ต้องยาว คู่คีย์ RSA 512 บิตไม่ยากที่จะถอดรหัสในวันนี้ เปรียบเทียบกับปุ่มของ WinXP (5 กลุ่มจากตัวอักษรและตัวเลข 5 ตัว) ซึ่งมีเอนโทรปีเพียง 128 บิต แต่ยังคงเจ็บปวดในการพิมพ์
finnw

17

CD-Keys นั้นมีความปลอดภัยไม่มากสำหรับสิ่งที่ไม่ได้เชื่อมต่อกับเครือข่ายดังนั้นในทางเทคนิคแล้วพวกเขาไม่จำเป็นต้องสร้างอย่างปลอดภัย หากคุณอยู่ใน. net คุณสามารถไปกับ Guid.NewGuid () ได้

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

ดังที่ได้กล่าวไปแล้วคุณอาจต้องการใช้ algorhithm เพื่อบรรลุเป้าหมายสองข้อ:

  • มีการตรวจสอบบางอย่าง ที่ช่วยให้โปรแกรมติดตั้งของคุณแสดงข้อความ "คีย์ดูไม่ถูกต้อง" แต่เพียงผู้เดียวในการตรวจสอบความผิดพลาด (การเพิ่มการตรวจสอบในตัวติดตั้งจริง ๆ แล้วหมายถึงการเขียนตัวสร้างคีย์เป็นเรื่องเล็กน้อยเนื่องจากแฮกเกอร์มีรหัสทั้งหมด ตรวจสอบและอาศัยการตรวจสอบด้านเซิร์ฟเวอร์ แต่เพียงผู้เดียวปิดการใช้งานการตรวจสอบที่มีความเสี่ยงของการถูกกฎหมายลูกค้าของคุณที่ไม่เข้าใจว่าทำไมเซิร์ฟเวอร์ไม่ยอมรับคีย์ CD ของพวกเขาเพราะพวกเขาไม่ได้ตระหนักถึงการพิมพ์ผิด)
  • ทำงานกับชุดอักขระที่ จำกัด กำลังพยายามพิมพ์คีย์ CD และคาดเดาว่า "นี่คือ 8 หรือ B หรือไม่ 1 หรือ I? a Q หรือ O หรือ 0?" - ด้วยการใช้ชุดย่อยของตัวอักษร / ตัวเลขที่ไม่กำกวมคุณจะกำจัดความสับสนนั้น

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


แก้ไขได้อย่างง่ายดายโดยฝ่ายบริการลูกค้าที่ดี - Box shot + หลักฐานการซื้อ = ล็อคผู้ใช้ที่ผิดกฎหมาย, ให้สิทธิ์การเข้าถึงผู้ใช้เป็นครั้งที่สอง
alexanderpas

1
นี่คือความคิดเพิ่มเติมบางประการเกี่ยวกับคีย์ซีดีcodinghorror.com/blog/2007/12/software-registration-keys.html
Richard Chambers

10

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

เป็นหลักมี nonce บางชนิดและลายเซ็นคงที่

ตัวอย่างเช่น: 0001-123456789

ที่ 0001 เป็น nonce ของคุณและ 123456789 เป็นลายเซ็นคงที่ของคุณ

จากนั้นเข้ารหัสสิ่งนี้โดยใช้คีย์ส่วนตัวของคุณเพื่อรับคีย์ CD ของคุณซึ่งมีลักษณะดังนี้: ABCDEF9876543210

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

สิ่งนี้จะป้องกันไม่ให้ใครบางคนคาดเดาสิ่งที่สำคัญของซีดีสำหรับผู้ที่ไม่ใช่ 0002 เพราะพวกเขาไม่มีรหัสส่วนตัว

ข้อเสียอย่างเดียวที่สำคัญคือปุ่ม CD ของคุณจะค่อนข้างยาวเมื่อใช้คีย์ส่วนตัว / สาธารณะขนาด 1024 บิต คุณต้องเลือก nonce นานพอเพื่อให้คุณไม่ได้เข้ารหัสข้อมูลจำนวนเล็กน้อย

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


1
โปรดทราบว่าตัวอย่างของฉันประเมินความยาวของคีย์ของคุณต่ำเกินไป โดยทั่วไปแล้วแผนการเหล่านี้ต้องการการเข้ารหัส base64 และการปรับใช้การคัดลอก / วาง แต่อนุญาตให้คาดเดาคีย์ที่ไม่ได้เชื่อมโยงกับเครื่องและไม่ต้องเปิดใช้งาน (ใกล้กับสองสิ่งที่สำคัญมากสำหรับลูกค้าหลายประเภท)
userx

3
แทนที่จะใช้ RSA คุณสามารถใช้รูปโค้งได้ พวกเขาใช้ปุ่มที่สั้นกว่าและความยาวของบล็อกนั้นเล็กกว่า อ่านวิกิพีเดียดูเหมือนว่า ECC 256 บิตมีความปลอดภัยเท่ากับ AES 128
xanatos

โปรดทราบว่าลายเซ็นดิจิทัลและ "การเข้ารหัสโดยคีย์ส่วนตัว" นั้นไม่เหมือนกัน ใน RSA พวกเขามีลักษณะคล้ายกัน (แม้ว่าพวกเขาจะไม่ได้เนื่องจากรูปแบบการแพ็ดที่แตกต่างกัน) รูปแบบลายเซ็นอื่น ๆ ไม่ได้มีรูปแบบการเข้ารหัสที่สอดคล้องกัน
Paŭlo Ebermann

@xanatos 256 bits ยังคงยาวเกินไปที่จะพิมพ์ด้วยมือ พิจารณาคีย์ 25 อักขระที่ใช้โดย WinXP - มีเอนโทรปีเพียง 128 บิต
finnw

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

9

ระบบกุญแจต้องมีคุณสมบัติหลายอย่าง:

  • ปุ่มน้อยมากจะต้องถูกต้อง
  • คีย์ที่ถูกต้องจะต้องไม่สามารถทำได้แม้จะมีทุกอย่างที่ผู้ใช้มี
  • รหัสที่ถูกต้องในระบบหนึ่งไม่ใช่รหัสที่ถูกต้องในอีกระบบหนึ่ง
  • คนอื่น ๆ

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

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

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


1

นอกจากนี้ยังมีพฤติกรรม DRM ที่รวมหลายขั้นตอนเข้ากับกระบวนการ หนึ่งในตัวอย่างที่เป็นที่รู้จักมากที่สุดคือหนึ่งในวิธีการของ Adobe ในการตรวจสอบการติดตั้ง Creative Suite ใช้วิธีการแบบ CD Key แบบดั้งเดิมที่กล่าวถึงในที่นี้จากนั้นสายสนับสนุนของ Adobe จะถูกเรียกใช้ คีย์ซีดีนั้นมอบให้กับตัวแทนของ Adobe และพวกเขาจะให้หมายเลขการเปิดใช้งานกลับคืนแก่ผู้ใช้

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

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


1

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

"โจรสลัด" จะต้องมีสิทธิ์เข้าถึงซีดีที่ถูกต้องตามกฎหมายและรหัสการเข้าถึงเท่านั้นเขาสามารถทำสำเนาและแจกจ่ายได้

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

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

โดยรวมแล้วง่ายกว่ามากในการสร้างความสัมพันธ์ที่ไว้วางใจกับลูกค้าของคุณ!


0

คุณสามารถใช้และใช้ Secure Licensing API ได้จาก ( https://www.nuget.org/packages/SystemSoulLicense/ ) ได้อย่างง่ายดายมากในโครงการซอฟต์แวร์ของคุณที่ใช้(คุณต้องดาวน์โหลดแอปพลิเคชันเดสก์ท็อปเพื่อสร้างใบอนุญาตที่ปลอดภัยจากhttps: / /www.systemsoulsoftwares.com/ ) 1. สร้าง UID ที่ไม่ซ้ำกันสำหรับซอฟต์แวร์ไคลเอ็นต์โดยยึดตามฮาร์ดแวร์ระบบ (CPU, เมนบอร์ด, ฮาร์ดไดรฟ์) (UID ทำหน้าที่เป็น Private Key สำหรับระบบที่ไม่ซ้ำกัน) 2. อนุญาตให้ส่งสตริงลิขสิทธิ์ที่เข้ารหัสได้อย่างง่ายดายไปยังระบบไคลเอนต์ และทำงานบนระบบเฉพาะนั้นเท่านั้น 3. วิธีนี้ช่วยให้นักพัฒนาซอฟต์แวร์หรือ บริษัท จัดเก็บข้อมูลเพิ่มเติมเกี่ยวกับซอฟต์แวร์ / ผู้พัฒนา / ผู้จัดจำหน่ายบริการ / คุณสมบัติ / ไคลเอนต์ 4. ช่วยควบคุมการล็อคและปลดล็อคคุณสมบัติซอฟต์แวร์ไคลเอนต์ การสร้างเวอร์ชั่นเพิ่มเติมสำหรับซอฟต์แวร์เดียวกันกับการเปลี่ยนฟีเจอร์ 5 มันต้องคำนึงถึงเวอร์ชั่นทดลองด้วยเช่นกันไม่ว่าจะกี่วันก็ตาม 6. มันจะรักษาความปลอดภัยไทม์ไลน์ของลิขสิทธิ์โดยการตรวจสอบ DateTime ออนไลน์ระหว่างการลงทะเบียน 7 มันจะปลดล็อกข้อมูลฮาร์ดแวร์ทั้งหมดมันมีฟังก์ชั่นที่สร้างขึ้นล่วงหน้าและกำหนดเองทั้งหมดที่นักพัฒนาสามารถเข้าถึงได้ในทุกขั้นตอนของการออกใบอนุญาตสำหรับการสร้างรหัสที่ปลอดภัยมากขึ้น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.