2

타원형 키 암호화를 기반으로하는 시리얼 키가 필요합니다. 내가하고 싶은 일은 공개적으로 확인할 수 있지만 나만 만들 수있는 일련의 정보를 인코딩하는 것입니다. 초기 아이디어는 http://www.ssware.com/cryptolicensing/cryptolicensing_net.htm에서 정보가 암호화 된 일련 번호를 만들 수 있습니다. 그러나 이는 RSA를 기반으로하므로 많은 수의 결과가 발생합니다. 그러므로 나는 스스로 비슷한 것을 만들고 싶다.ECC가있는 시리얼 키

가 난 다음 발견 : http://www.codeguru.com/cpp/cpp/algorithms/general/article.php/c12799/Product-Keys-Based-on-Elliptic-Curve-Cryptography.htm

그러나,이에는 benifit를 볼 : 그들은 응용 프로그램 및 작성자가 알려진해야 할 도메인 매개 변수를 선택합니다. 공개 키는 암호화하는 데 사용되는 반면 (직렬 생성) 개인 키는 응용 프로그램에 있고 암호 해독하는 데 사용됩니다. 그러나 도메인 매개 변수와 개인 키를 알고 있으면 ECIES의 공개 키를 쉽게 파생시킬 수 있습니까?

다음 아이디어는 정보를 임의로 인코딩하고 ECDSA를 기반으로 서명을 추가하는 것입니다. 그러나 이로 인해 큰 일련 번호가 생깁니다.

내가 실제로 찾고있는 솔루션은 올바른 개념을 사용하는 http://ellipter.com과 비슷한 솔루션입니다. 직렬 키를 생성하는 개인 키와이를 확인하기위한 공개 키. 스크린 샷에 표시되는 키는 매우 짧습니다. 128 비트 키는 약 30 자입니다.

올바른 방법은 무엇입니까? 이에 대한 올바른 계획을 놓치고 있습니까? 그것은 ECDSA 일 수 없으며 ECIES 일 수 없습니다. 하지만 또 뭐야?

답변

4

타원 곡선 digital signature scheme (예 : ECDSA)이 필요합니다.

기본적으로 키 생성 서버는 키 쌍의 개인 반을 보유하고 배포하는 소프트웨어는 공개 절반을 포함합니다. 일련 번호는 간단한 일련 번호와 개인 키를 사용하는 해당 번호의 서명으로 구성됩니다. 사용자가 번호를 입력하면 소프트웨어는 공개 키를 사용하여 서명이 유효한지 확인합니다.

제품 활성화 키에도 동일한 구성표를 사용할 수 있습니다. 이 경우 서명 할 데이터는 일련 번호가 아니라 사용자를 식별하는 일부 다이제스트 문자열과 소프트웨어를 설치할 시스템의 일부 기능 일 수 있습니다.

불행히도, 보안 수준이 매우 낮은 ECDSA 서명은 여전히 ​​라이센스 키에 대해 꽤 길다는 것이 나쁜 소식입니다. 보안 수준을 낮춤으로써 서명 길이를 줄일 수 있지만 무차별 적으로 서명을 위조 할 수 있습니다. 기본적으로, 당신은 보안과 유용성 사이에서 균형을 맞출 것입니다. Schnorr signatures과 같은 짧은 서명 또는 McEliece-based signature scheme described in this paper과 같은 다른 서명 구성표를 사용해 볼 수도 있지만 사용자 지정 가능 라이센스 키에 맞지 않을 수도 있습니다. 일반적으로 최초의 RSA 서명의 형태로 디지털 서명을 발생하는 사람들을 혼란 무엇


RSA cryptosystem가 동일한 기본 알고리즘은 모두public-key encryption과 디지털 서명에 사용할 수 있습니다에 가지 특이한 점이다 낮은 수준에서 두 작업은 일종의 이중이므로 RSA 서명 작업을 "개인 키를 사용하여 암호화"및 서명 검증을 "공개 키를 사용하여 암호 해독"으로 볼 수 있습니다 (이는 일반적인 공개 키 암호화를 위해 수행 할 작업).

그러나 대부분의 다른 공개 키 암호 시스템의 경우 이러한 이중성은 유지되지 않습니다. 일반적으로 디지털 서명 스키마는 공개 키 암호화 스키마와 완전히 다릅니다 (종종 유사한 수학적 문제를 기반으로 함). 사실, RSA의 경우조차도, "보안 교재 RSA"알고리즘을 실제로 안전하고 실용적인 암호 시스템으로 사용할 수있게하려면 기본적으로 padding과 같은 세부 사항을 고려하기 시작하면 서명 및 암호화 작업이 달라집니다.

+0

흠, 나는 이미 계획을 구현했다는 것을 자세히 설명했습니다. 저는 서명 방식, ECC, RSA에 대해 알고 있습니다. Ellipter가 짧은 ** 일련 번호를 만들 수있는 방법은 무엇입니까? 또한 데이터가 추가로 암호화되므로 일반 서명이 될 수 없습니다. – divB

+0

나는 대답 한 후에 그것을 알아 차리고, 그것에 대해 조금 더했다. 그들은 ECDSA 외에 다른 서명 구성표를 사용하고 있을지 모르지만 보안 수준에 대해서도 고려할 수 있습니다. 실제로 어떤 알고리즘을 사용하는지 알지 못하면 "128 비트 키 강도"가 실제로 의미하는 바를 말하기 어렵습니다. –