문제

IP 보안 등에 대한시기 적절한 게시물이 있었지만 알고리즘을 구체적으로 해결할 수있는 것은 없습니다. 현재 프로젝트 중 하나에서 오프라인 등록 키 시스템의 경로를 가기로 결정했습니다.

최종 사용자 기반의 대부분이 정직 할 것이라고 생각합니다. ~도 걱정할 것이 많습니다. 반면에, 나는 많은 땀과 눈물없이 캐주얼 크래커가 접근 할 수 없다.

그렇다면 키를 생성하고 확인하는 방법에 대한 몇 가지 옵션은 무엇입니까? 설치 모델이 인트라넷 서버의 Samba 공유에서 실행되기 때문에 하드웨어 키잉이 발생할 가능성이 높습니다. 또한 키는 얼마나 걸리야합니까?

둘째, 검증 알고리즘의 위험이 난독 화 된 경우에도 단순히 반영 되는가? 대신 관리되지 않는 코드로 알고리즘을 작성하는 것이 더 낫습니까?

도움이 되었습니까?

해결책

내 생각에, 당신이 직면 할 주요 문제는 등록 알고리즘과 난독 화의 레벨 (또는 부족)이 아닙니다.

오히려, 이것은 다음과 같습니다. 코드의 어느 시점에서 단순한 바이너리 결정 - 실행 또는 종료하기위한 것입니다. 시스템을 해킹하면이 결정 지점을 찾아서 조정하면됩니다.

난독 화, 강한 서명, 탬퍼 감지 - 다른 모든 것은 이것을 더욱 어렵게 만들기 위해 지향적이지만 그것을 만들 수는 없습니다. 저것 훨씬 더 어렵다.

다른 팁

일반적으로 당신이하고 싶은 것은 당신이 그것을 소유 한 사람과 같은 키에 포함시키려는 일부 데이터를 선택하는 것입니다. 만료 될 때, 아마도 당신의 응용 프로그램은 제대로 작동하는 데 필요한 작은 코드조차도 가능할 것입니다. 열쇠). 그런 다음 RSA와 같은 디지털 서명 체계를 사용하여 회사의 개인 키로 키를 디지털로 서명하십시오. 응용 프로그램 실행 파일로 공개 키를 배포하십시오. 그런 다음 키를로드하면 서명이 유효 한 다음 키에 포함 된 데이터를 사용하십시오. 1024 또는 2048 비트 키는 이것에 충분해야합니다.

물론 코드가 아무리 정교하더라도 누군가가 항상 그것을 깨뜨 리거나 주위를 둘러 볼 수있을 것입니다. 따라서 스스로에게 물어봐야 할 질문은 얼마나 어려운지 (더 어려운 계획을 명심하고 코딩하고 유지하기가 더 어렵다는 것을 명심하십시오)? 수익을 줄이는 지점이 있습니다. 일반적으로 꽤 낮습니다. 프로그램이 열쇠가 없으면 작동하지 않는 한, 키가 가짜를 가짜로 만들 수 없거나 16 진 편집자로 만료 날짜를 변경할 수 없을 정도로 열쇠가 복잡하다면 아마도 괜찮을 것입니다.

키를 리팩토링하는 한, 키를 관리하지 못한 상태에서 콜 사이트를 관리하지 못한 것에서 콜 사이트를 죽이면 도움이되지 않을 수 있습니다. Dotpuscator Professional을 사용하는 경우 Obfuscation을 사용하여 하나의 옵션을 사용하는 경우 "탬퍼 감지"를 사용하는 것이 기본적으로 어셈블리를 태그하고 누군가가 수정하면 코드가 다양한 작업을 수행하도록 할 수 있습니다. 물론 해커는 이것을 제거 할 수 있지만 훨씬 더 땀과 눈물을 흘릴 수 있습니다.

코드를 잘 고정시키는 한 가지 방법 만 발견했습니다. 거의 모든 형태의 직렬 검증은 평균 2 학년 프로그래머가 쉽게 갈라질 수 있습니다.

내가 한 방식은 .NET에서 라이센스 개체를 사용하는 것입니다. 집에서 재배 한 라이센스 개체 내에서 "홈"이 어디에 있는지 알아 내기 위해 "라이센스"파일을 읽습니다. 해당 라이센스는 암호화 된 문자열입니다. 문자열의 개인 키는 라이센스 개체에 있습니다.

그런 다음 라이센스 개체는 비밀 암호로 집에 전화하여 암호화됩니다. 서버는 암호를 해독하고 유효성을 검사합니다. 또한 사기 조사의 경우 IP 및 사용자 이름을 기록합니다. 서버가 암호를 검증 할 수있는 경우 비밀 응답으로 응답하여 스푸핑 할 수 없도록 다시 암호화됩니다. 검증 할 수없는 경우 연결이 삭제됩니다. 응답이 전송되지 않으므로 다른 쪽 끝의 라이센스 개체가 실패합니다.

통합 라이센스 개체가 실패하면 자동으로 예외가 발생하여 라이센스가 호출되는 시점에서 응용 프로그램이 실패하고 종료되도록합니다.

서버와 라이센스 개체를 작성하는 데 약 2 일이 걸렸으므로 약간의 운동이지만 로켓 과학은 아닙니다.

샘플 소스 또는 더 많은 정보를 원한다면 알려주세요. 내가 할 수있는 것을 당신에게 가져다 주셔서 기쁩니다.

답을 살펴보고 싶을 수도 있습니다. 이 질문

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top