2010-08-06 6 views
6

이 내 첫 번째 질문 그래서 부드러운 주시기 바랍니다 ...라이센스 방식 스푸핑 안전 및 취소 기능

내가 라이선스 방식의 일종을 사용하여 보호하고자하는 소프트웨어에 일하고 있습니다. 기본 구성표는 사용자에게 "고유 한"키를 생성하는 것입니다. 사용자는 소프트웨어를 등록하고 활성화 코드를 수신 할 때이 키와 등록 코드를 전송합니다.

응용 프로그램이 실행되면 활성화 코드를 해독하여 수신 한 "고유"키와 데이터 영역을 비교하여 활성화 코드의 유효성을 검사합니다.

이 하나의 등은 그러나이 계획은 두 가지 속성이 부족 다른 암호화 알고리즘을 선택할 수 있습니다, 공정하고 구현하기가 매우 간단합니다 : 사용자가 동일한 "고유의 생산 스푸핑 하드웨어 서명 등을 관리하는 경우

  1. 을 "다른 컴퓨터에서 키를 입력하면 동일한 라이센스 데이터를 사용할 수 있습니다.
  2. 사용자가 응용 프로그램을 제거하고 다른 컴퓨터로 이동하려는 경우 이전 컴퓨터에서 이전 라이센스 데이터를 다시 사용하지 않고 새 설치에 대한 새 라이센스 데이터를 계속 가져올 수 없습니다.

이러한 문제를 해결하는 방법에 대한 제안 사항이 있으십니까?

"고유 한"키에 임의의 데이터를 추가하는 것이 하나의 아이디어입니다.이 임의의 데이터는 애매한 방식으로 저장되며, 사용자가 응용 프로그램을 삭제하면 임의의 데이터가 제거되고 해시 이전의 무작위 데이터와 라이센스 데이터가 생성되어 나에게 전송되어 애플리케이션을 실제로 제거했는지 확인하고 무작위 데이터가 변경된 이후에 이전 라이선스 데이터를 다시 사용할 수 없도록 만들었습니다.

지금은 이상 밖으로

, ...

편집 : 내가 현재 작동하는 방식을 가지고, 내가 하드웨어 변경은 매우 드문 경우 가장 일반적인 제품이 포함 된 환경에 설치되어 있다고 언급해야하고 하드웨어 오류가있는 경우 가장 확실한 기계 고장이 발생합니다. 그러나 하드웨어 키 계획을 수정하여 몇 가지 변경 사항을 고려할 수있었습니다.

또한이 때문에 소프트웨어는 VM 내부에서 실행되지 않을 가능성이 높습니다.하지만 좋은 점은 생각해 보지 않았습니다.

응용 프로그램이 정기적으로 호출하지 않는 경우 네트워크 연결을 사용할 수있는 경우 사용자는 더 자동 등록 옵션을 얻습니다. 그렇지 않으면 등록 키를 가져 와서 소프트웨어에 입력하고 설치 ID를 얻습니다. 나에게 제공되면, 등록 코드 + 설치 ID는 사용자가 소프트웨어를 잠금 해제하는 활성화 키를 생성합니다.

내가 찾고있는 것은 2 점에 대한 좋은/실현 가능한 해결책입니다. 하드웨어 스푸핑, 라이센스 키 해지, 즉 사용자가 동일한 regcode + activationcode를 사용할 수 없도록합니다.

당신이 보호하려고하는지 분명히해야한다,

+1

앱이 단순히 키를 "비교"하는 경우 크래커는 단순히 JMP 명령을 삽입하여 비교를 건너 뛰거나 "VERIFIED"를 반환 할 수 있습니다. 앱을 중단하고 실행이 좋은 키 대 나쁜 키를 비교하는 것입니다. 이것은 작업을 수행하기 위해 코드를 실행해야하므로 보호하기가 매우 어렵습니다. –

+0

크래커가 jz에서 jnz로 또는 그 반대로 변경해야하는 경우 활성화 키에 응용 프로그램이 제대로 작동하는 데 필요한 데이터 파일의 암호를 해독하기 위해 자동으로 사용되는 포함 된 암호화 키가 활성화 키에 포함될 수 있습니다. 소프트웨어가 올바르게 작동하도록 올바른 코드를 얻으십시오. 그런데 좋은 의견입니다! –

+0

흠. 데이터 파일이 고객마다 고유하다는 뜻입니까? –

답변

3

먼저 모든 피드백이 필요하지 않습니다

주셔서 감사합니다. 분명히, 응용 프로그램을 구입할 때마다 응용 프로그램이 설치되고 실행 가능한 컴퓨터가 하나만 있어야합니다.

각 사용자의 고유 키의 일부로 하드웨어 서명을 사용하도록 제안합니다. 하드웨어가 고장난 경우 (예 : 하드 디스크가 고장 났을 때) 어떻게됩니까? 하드웨어 문제가 발생해도 응용 프로그램을 사용할 수 없다면 응용 프로그램을 구입하지 않을 것이므로 최소한 핵심 변경 요청을 처리 할 준비가되어 있어야합니다. 응용 프로그램이 중요한 경우 가동 중지 시간을 최소화하고 싶으므로 빨리 대응하는 것이 좋습니다. 그리고 제 하드웨어가 고장 났는지 확인하지 않으려 고합니다. 그래서 제 말이 필요합니다. 이는 모든 사용자가 하드웨어 오류를 프리 텍스 팅하여 수시로 무료 라이센스를 얻을 수 있음을 의미합니다.

가상 컴퓨터는 어떻습니까? 현재와 ​​미래의 몇 가지 오탐의 위험이있는 현재의 모든 가상 시스템 구성을 탐지하는 것이 가능할 수 있습니다. 가상 시스템을 금지하면 사용자에게이를 어떻게 정당화합니까? 가상 컴퓨터를 허용하는 경우 사용자가 전체 VM을 여러 개 복사하지 못하게하려면 어떻게해야합니까? (이는 최대 절전 모드가있는 물리적 시스템에서도 발생할 수 있습니다).

응용 프로그램이 시작될 때마다 다시 전화 할 예정입니까? 나는 당신의 탈주 계획으로부터 그렇게 생각합니다. 이는 대역폭과 가용성 비용이며 일부 사용자는 연기 할 것입니다. 특히 민감한 환경에서 모든 사람이 온라인 상태가되는 것은 아닙니다. 그러나 복잡한 구조가 필요하지 않습니다. 서버가 실행중인 응용 프로그램의 사본 수를 추적 할 수 있지만 응용 프로그램이 어떤 이유로 든 정상적으로 종료되지 않는 경우를 처리해야합니다 (응용 프로그램 충돌, OS 충돌, 정전, 연결 손실 ...).

이 질문에 대해서는 의논하지 않지만 누군가가 디버거를 사용하여 라이센스 검사를 무시할 수 없도록 응용 프로그램 실행 파일을 보호해야합니다.

+0

몇 가지 추가 정보를 질문에 추가했습니다. 나는 어떤 이유로 커버 디 버거/디 컴파일러를하지 못했습니다 ... 나는 그러한 종류의 공격으로부터 보호 할 몇 가지 일이 있습니다. 매우 강하지 만 어쨌든. –

1

등록 코드를 활성화 코드로 둡니다.

고유 등록 코드는 판매 시점에 생성되거나 제품과 함께 제공됩니다. 해당 코드를 사용하여 한 번에 귀하 (또는 귀하의 서버)와 등록/활성화/비활성화 할 수 있습니다. 고객의 하드웨어는 키를 생성 할 필요가 없습니다.

재 등록/재 활성화는 여전히 사용자에게 연락해야하므로 다시 설치 시도를 알고 있어야합니다.

+0

이 고객이 다른 사람에게 등록 코드를 알려 주면 어떨까요? 모든 소프트웨어는 오프라인으로 등록 할 수 있어야하므로 등록 코드의 유효성 만 확인할 수는 없습니다. 그 이유는 등록 프로세스가 2 단계 절차이기 때문에 사용자가 등록 코드를 입력 한 다음 생성 한 두 가지 정보로부터 (tcp/ip, 전화 등을 통해) 수신 한 설치 ID를 얻는 것입니다 해당 장치에 연결되어있는 활성화 키 –

+0

@Daniel : 활성화가 필요하기 때문에 별도의 등록 단계가 필요하지 않으며 오프라인 등록도 필요하지 않습니다. 그것은 단지 모든 것을 복잡하게 만듭니다. 단순하게 유지하십시오. 동시에 등록하고 활성화 할 수있는 단일 코드를 제공하십시오. 고객이 등록/활성화 후 다른 사용자에게 코드를 제공하면 u 사용자가 첫 번째 고객에게 속한 것을 이미 알고 있기 때문에 새 사용자는 동일한 코드로 등록/활성화 할 수 없습니다. 예를 들어, 제품과 함께 제공된 A1B2C3 코드는 사용자 또는 프로그램이 u로 등록/활성화 (이름/주소/MAC/기타 캡처하고 싶은 것)와 함께 코드를 전송합니다. –

1

소프트웨어를 어플라이언스 하드웨어에 넣고 자물쇠를 하드웨어에 놓습니다. 어플 라이언 스를 고객에게 보내십시오.

고객이 어플라이언스를 열어 코드를 열어 볼 것으로 생각되면 저장 매체를 암호화하는 것을 고려하십시오. 그런 다음 상자를 쇠톱으로 만들고 키를 찾아야합니다. TPM 칩 또는 보안 USB 토큰이 후자를 지원할 수 있습니다.

0

귀하의 문제를 해결할 수있는 유일한 해결책은 암호 하드웨어 dongle입니다. 일반적으로 컴퓨터간에 쉽게 전송할 수있는 USB 기반의 변조 방지 챌린지 - 응답 동글입니다.

이 소자는 대량 구매시 미화 1 달러 미만이며, 소량 인 경우 미화 10 달러 이하입니다. 좋은 것들은 위조하기가 매우 어렵고 응용 프로그램에 내장하기가 쉽습니다. 또한 대개 안티 디버깅 및 안티 리버스 엔지니어링 기능이 포함 된 무료 EXE 암호화 기가 제공됩니다.

1

저는 셰어웨어 작성자이며 ASP의 오랜 구성원이기 때문에 자신이 솔루션에 잘못된 방향으로 가고 있다고 생각합니다. 이 방법을 사용할 수있게하는 유일한 방법은 이미 제안 된 하드웨어 장치를 사용하는 것입니다. 귀하가 확신하고 제품이 훌륭하고 경쟁자가 없으면 고객이 계속 사용하기를 원한다면 온라인 또는 온라인 정품 인증이 유일한 방법입니다.

하지만 연습에서 배운 우리 (작은 ISV 조직)는 당신이하려는 일을해서는 안된다는 것입니다. 하드웨어에 바인딩하지 마십시오. 컴퓨터 당 하나의 라이센스가 아닌 한 사람당 하나의 라이센스를 판매하십시오. 결국 당신은 편안한 면허 때문에 더 많은 판매를 할 것입니다.

정직한 사람들이 정직하게 머무를 수있을 정도로 충분합니다. 그래서 트레일 버전을 제한하고 (나는 1 시간 후에 애플리케이션을 종료하기로 결정했다.) 최종 버전을 모든 것으로부터 자유롭게 남겨둔다. 유료 고객과 별도로 다운로드하여 제공하십시오. 법적인 제약 회사가 극대화하는 욕심 많은 이윤이 아니라 좋은 회사가 되십시오.

나는 더 나은 윈도우 보호 프로그램을 먼저 사용했지만 모두 제 코드에 심각한 문제가있었습니다. 그리고 그들은 조만간 금이 간다고 부릅니다. 그래서 나는 그들 모두를 포기했다.

추신 : 나는 프로그램을 제한하지 않고 사람들이 30 일마다 새로운 평가판 키를받지 못하게하는 창에서 하드웨어 지문 스키마를 사용합니다. 클릭 스크린과 함께 작동하는 것 같습니다. 지문은 사용자 이름, Windows 설치 시간, 시스템 파일 및 하드 디스크 일련 번호의 타임 스탬프 수정 xor입니다.