라이센스 키 생성을위한 최상의 메커니즘


35

사람들이 라이센스 키를 생성하기 위해 어떤 방법 / 라이브러리 / 도구를 제안합니까 (소프트웨어를 등록 할 때 입력하는 멋진 AAAAA-AAAAA-AAAAA-AAAAA-AAAAA)?

구현할 때주의해야 할 점이 있습니까?

(현재 언어에 국한되지 않고 일반적인 것으로 관심이 있으니 솔루션이 언어에 따라 다른 언어를 사용하고 있으면됩니다.)

답변:


23

암호를 저장할 때와 거의 같습니다. 생성기와 프로그램에만 알려진 고유 한 비밀 키가 있어야합니다. 이 키를 사용하여 세부 사항 (사용자 이름, 비밀번호, 조직 등)을 조작 한 후 해시하십시오. 그런 다음 Base32 에서 해시에 대한 간단한 전송 인코딩을 수행 하거나 형식에 신경 쓰지 않으면 간단히 16 진수 문자열로 옮길 수 있습니다.

구현할 때주의해야 할 점이 있습니까?

비밀을 비밀로 유지하십시오. 구현을 즉흥적으로 만드십시오. 누군가가 깨지면 쉽게 구현을 변경할 수 있습니까? 데스크톱 응용 프로그램의 일반적인 구현 중 하나는 원격 서버를 사용하여 라이센스의 유효성을 검사하는 것입니다. 이렇게하면 응용 프로그램 자체를 검사하여 누군가 해시 또는 알고리즘을 리버스 엔지니어링 할 수있는 가능성이 사라집니다.


11
인코딩 할 BASE32가 표준입니다. 그것은 쉬운 인간의 사용자 입력 할 수 있습니다) (Base32 : 매우 다른 문자와 숫자의 선택 예를 들어, 0과 O는 순서)에 있지 않습니다.

1
@ 피에르 : 나는 좋은 정보를 몰랐다!
Josh K

10

이 같은 질문 은 SO에 대해 물었고 대답은 꽤 좋습니다. 일반적인 요점은 다음과 같습니다.

  • 사용자의 이름을
  • SHA1을 사용하여 사용자 이름과 비밀 키 및 해시 연결
  • SHA1 해시를 영숫자 문자열로 압축 해제하십시오. 이것은 개별 사용자의 "제품 키"입니다
  • 프로그램 내에서 동일한 해시를 수행하고 제품 키와 비교하십시오. 같으면 OK.

1

내가 선호하는 방법은 10,000 개의 임의 라이센스 문자열, SHA1 (또는 MD5) 해시 또는 HMAC를 생성하고 SHA1 / MD5 해시의 전부 또는 일부를 실행 파일 자체에 포함시키는 것입니다. 라이센스 문자열을 입력하면 난독 처리 된 코드를 사용하여 문자열의 해시를 생성하고 목록의 코드와 비교합니다. 일치하면 유효한 라이센스입니다. 라이센스가 부족한 경우 더 많은 문자열로 새 버전을 릴리스하십시오.

SHA1 해시의 첫 96 비트 만 사용하면 충분합니다. 따라서 10,000 개의 라이센스가 120KB 미만이됩니다. 알고리즘 키 생성 또는 키 생성기 생성은 불가능합니다. 걱정해야 할 유일한 취약점은 리버스 엔지니어링 또는 우회입니다. (또는 유효한 키를 배포 한 사람이 있습니다.)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.