Дешифриране на софтуерен лиценз с публичен ключ, съхранен в двоичния файл на приложението

Във връзка с отговора на този въпрос не мога да разбера как мога схемата за лицензиране на софтуер работи, ако частният ключ се съхранява на сървъра за лицензи и публичният ключ се изпраща в изпълнимия файл на приложението, а не обратното.

Опитвам се да направя следната схема за лицензиране на софтуер:

  1. Потребителят получава идентификатор на продукта (базиран на GUID) при покупка и го използва в приложението, за да активира то.
  2. Приложението се свързва със сървъра за лицензи, който изпраща обратно криптиран текст с помощта на RSA публичен ключ. Този текст (лиценз) ще се съхранява на твърдия диск на потребителя.
  3. Всеки път, когато приложението стартира, то трябва да декриптира този лиценз с помощта на RSA частен ключ, за да извлече различни параметри като издание на продукта, ограничения на продукта, регистрирана към коя компания и т.н.

Как може приложението да дешифрира този текст на лиценза, ако няма частния ключ, а публичния?

Благодаря!

РЕДАКТИРАНЕ:

  1. Ако ключът, използван за криптиране на лиценза, е достъпен само от страна на сървъра, а не за обществеността, можем ли да наречем това частен ключ? В този случай, ако едната страна има ключа за криптиране, а другата страна (обществеността) има ключа за декриптиране, може ли страната, която има ключа за декриптиране, да получи ключа за криптиране? Загрижеността се основава на различните теми в stackoverflow, че не е толкова трудно да се генерира публичен ключ, като се има предвид частният ключ. Ако имате частния ключ, вие на практика можете да имате и двата ключа.
  2. Идеята е, че след като софтуерът е активиран, вече не трябва да се свързва с лицензния сървър.

person Marcus Frenkel    schedule 11.02.2013    source източник


Отговори (2)


Приложението трябва да съхранява подробностите си в обикновен текст.

При регистрация сървърът трябва да подпише тези данни (включително идентификация на машината) с помощта на частния ключ.

Всеки път, когато приложението стартира, то трябва да проверява този подпис с помощта на публичния ключ.

person SLaks    schedule 11.02.2013
comment
Имам нужда от тези подробности, шифровани, те съдържат информация за ограничението за използване на приложението, като основна версия, корпоративна версия и т.н. Ако е в обикновен текст, приложението може да бъде отключено чрез просто промяна на текста. - person Marcus Frenkel; 11.02.2013
comment
@MarcusFrenkel Подписът на сървъра няма да бъде валидиран, ако данните са променени. - person Duncan Jones; 11.02.2013
comment
@MarcusFrenkel: За това е подписът. Ако потребителят промени нещо, подписът вече няма да съвпада и потребителят не може да го подпише отново без публичния ключ на сървъра. - person SLaks; 11.02.2013
comment
(освен ако потребителят не модифицира вашето приложение и постави свой собствен публичен ключ или премахне изцяло отметката) - person SLaks; 11.02.2013
comment
Добре сега разбрах. Асиметричното криптиране е ново за мен, смятам, че подписването и криптирането е едно и също нещо. Благодаря ти! - person Marcus Frenkel; 11.02.2013
comment
@SLaks: публичният ключ може да бъде получен от частен ключ (jason4zhu.blogspot.jp/2014/10/), така че намирането на личен ключ позволява повторно подписване на модифицирания лиценз и приложението остава същото. :( - person Fil; 18.02.2015
comment
@Fil: Разбира се. Ако частният ключ изтече, вие сте блокирани. Ето защо се нарича частен ключ. - person SLaks; 18.02.2015
comment
@SLaks: опс, съжалявам: прав си :P Коментирах, като прочетох оригиналната публикация Всеки път, когато приложението стартира, трябва да декриптира този лиценз с помощта на RSA частен ключ, така че изпаднах в недоразумение. Приложението има публичен ключ за проверка на подписа (направен от страна на сървъра с частен ключ). ^_^ - person Fil; 18.02.2015

Наистина не виждам нужда от всички тези неща.

Защо просто не установите връзка със сървъра по време на проверката, сървърът да генерира файл с всички параметри, които искате в него (дори в обикновен текст) и след това сървърът да подпише този файл и да го върне на софтуера?

Клиентът може да прочете файла и след това просто да потвърди подписа, като използва един от многото налични алгоритми за цифров подпис.

person Nik Bougalis    schedule 11.02.2013
comment
Ще направя както предлагате. Трябваше да приема другия отговор, тъй като дойде първи. Благодаря ти много. - person Marcus Frenkel; 11.02.2013
comment
Няма проблем. Успех при внедряването и внедряването на вашето решение. - person Nik Bougalis; 11.02.2013