2010-06-17 4 views
1

제품 키를 생성하고 유효성을 검사해야하며 공용/개인 키 시스템 사용을 고려하고 있습니다.암호화 제품 키 : 공개 키 및 개인 키 암호화

내가 (될 수있는 가변 길이 문자열)

  • 클라이언트 이름
  • 6 자리 일련 번호를 기반으로 우리의 제품 키를 생성합니다. 제품 키가 관리 가능한 길이 (16 자 정도) 나는 바닥에를 암호화하고 복호화/검증 시스템을 distrubute 필요

    될 경우

그것은 좋은 것입니다. 우리 시스템은 관리 코드 (.NET)로 작성 되었기 때문에 암호화 시스템을 배포하고 싶지는 않으며 암호 해독 만하고 싶습니다. 공개 개인 키가 필요합니다. 이렇게하는 것이 좋습니다. 하나의 키로 암호화하고 decrpytion/verification에 필요한 다른 키를 배포하십시오.

위의 요구 사항을 충족시키기위한 적절한 메커니즘은 무엇입니까?

참고 : 불법 복제를 막을 수는 없습니다. 그것은 초보 사용자가 필요로하지 않거나 사용할 권한이없는 구성 요소를 설치하는 가능성을 줄이는 것입니다.

답변

1

.NET은 http://msdn.microsoft.com/en-us/library/ms867080.aspx과 같이 다양한 방식으로 공개 키 암호화를 지원합니다. 이렇게 말하면 출시 된 코드에 대한 완전한 액세스 권한을 가진 사람이 자신의 제품 키를 발급 할 수 없다는 확신이 생깁니다. 이 중 어떤 것도 어떤 것도을 유효한 키로 받아들이도록 클라이언트를 패치하지 않습니다. 그것이 난독 화가 맞는 곳입니다.

+0

위의 요구 사항을 충족시키기 위해 적절한 메커니즘은 무엇입니까?라는 질문에 대한 대답은 나에게 제공되지 않습니다. –

+0

내가 말했듯이, PKE는 당신의 필요에 정말로 관련이 없습니다. 초보 사용자를 막으려면 문서화되지 않은 명령 줄 옵션을 사용 가능하게 설정하지 않으면 설치 선택 항목을 숨기십시오. 그런 다음 필요한 구성 요소를 설치해야하는 사람들에게만이 옵션을 문서화하십시오. –

+0

물론 패치를 피하기 위해 코드 서명과 같은 것이 있습니다. – ErikHeemskerk

-2

불법 복제 방지를 위해 노력하지 마십시오. 그것은 가치가 없어. 나는 무수한 응용 프로그램 (hush)에 금이 갔고. NET은 가장 쉬운 방법이다. 그러나 실제로는 충분한 경험으로 모두 비교적 쉽습니다. 네가 나를 믿지 않는다면, 잠시 isohunt를 확인해 보라.

tl; dr : 잃는 전투입니다. 싸우지 마라. 정말로 승리하기를 원한다면 침해를 고소하십시오.

+1

이것은 내 질문에 대한 대답이 아닙니다. –

+1

"무단 구성 요소 사용"은 불법 복제 방지와 같이 많이 들립니다. –

+1

우리는 관리자와 사용자가 있으며 소프트웨어에 금이 갈 가능성이 거의 없습니다. 우리는 사용자가 관리자 구성 요소를 설치하기를 원하지 않습니다. - - - 질문에 대답하고 싶지 않다면 대답하지 마십시오. 질문을하지 말아야하는 이유는 무엇입니까? 질문이 많을수록 답이 많을수록 사람들이 이미 답변을하고 있음을 실제로 알게 될 가능성이 적습니다. –

-2

나는 아주 비슷한 것을했다. 하지만 제 경우에는 간단한 전화 인증 코드였습니다. 사용자는 번호로 전화를 걸고 회사 이름과 수행중인 작업을 제공하고 코드를 받아 응용 프로그램에 입력 한 다음 계속 진행할 수 있습니다.

내가 한 것은 데이터를 바이너리로 serialize하는 것입니다. 데이터에는 해시 된 회사 이름, 작업 코드/만료 날짜가 포함되어 있으며 향후 요구 사항을 위해 여유 공간이 있습니다. 그런 다음 배열 주위의 비트를 흩어져 혼동했습니다. 그런 다음 이진 배열의 각 5 비트를 32 자의 인증 코드 알파벳 (0-9, a-z, 전화를 통한 가독성을 위해 I/O/Q/S 제외)에 매핑했습니다.

16 문자로 4x4 블록 (#### - #### - #### - ####)으로 표시되는 멋진 인증 코드가 생성되었습니다. 사용자는 한 번에 4 개의 문자를 듣거나 SMS를 통해 전송해야하기 때문에 전화로 쉽게 읽을 수 있습니다.

문제의 코드 크래커를 Bletchley Park에 멈추려는 의도는 아니지만 평균적인 회사원이 회사 절차를 따르지 않고 무언가를하지 못하도록 막았습니다. 그리고 그 범위가 주어지면 매우 효과적입니다.

+0

왜 바퀴를 다시 만들까요? SHA-1을 사용하여 연결된 회사 이름 및 관련 정보를 해시 할 때 128 비트 숫자를 생성하고 소금 값으로 사용합니다. 그들에게 결과 숫자를 입력하십시오. 반면에 소프트웨어는 동일한 계산을 수행하고 해시를 사용자가 입력 한 것과 비교합니다. 공유 비밀을 숨기려면 소프트웨어에서 obfuscater를 실행하십시오. 모두 완료되었습니다. 이 계획은 충분히 안전하고, 아무런 노력도하지 않으며, 알고있는 모든 것을 위해 거대한 구멍을 가질 수있는 새로운 알고리즘을 필요로하지 않습니다. –

+0

이 솔루션의 문제점은 코드에 keygen을 효과적으로 포함 시켰기 때문입니다. 초심자 크래커는 소프트웨어를 해킹 할 필요없이 간단하게 keygen을 복제하고 원하는 모든 라이센스를 만들 수 있습니다. 공용/개인 키 조합은 최소한 keygen을 복제하지 못하게하고 소프트웨어를 크랙하려면 직접 해킹해야하며 업데이트를 릴리스 할 때마다 다시 해킹해야합니다. – JamieB

관련 문제