문제
SO에 대해 이미 비슷한 질문이 있다는 것을 알고 있습니다.하지만 내 질문은 더 이론적인 것입니다.
완벽한 시험 시스템을 설계하는 것이 가능한지 궁금합니다.완벽하다는 것은 크래커가 그러한 시스템의 알고리즘을 알고 있더라도 크랙할 수 없는 시스템을 의미합니까?
프로그래밍 질문이 아니라면 죄송합니다.
편집하다: 제 질문을 좀 더 실용적으로 만들어야 할 것 같아요.독립형 애플리케이션이 아닌 전체 시스템에 대해 묻고 있습니다.시스템은 Linux OS가 설치된 PC와 이에 연결된 일부 하드웨어로 구성됩니다.HDD 암호화를 사용할 수 있을까요?
해결책
아마도 유일한 방법은 인터넷 기반의 "서비스로서의 소프트웨어" 애플리케이션일 것입니다.액세스 권한을 제공하지 않으면 소프트웨어를 사용하지 않는 것입니다.데스크톱 기반 애플리케이션인 경우 일부 주요 기능은 여전히 온라인 서버 어딘가에 있어야 합니다.
해커가 자신의 로컬 컴퓨터에 전체 애플리케이션을 갖고 있는 경우 어떤 방식으로든 리버스 엔지니어링되어 "크랙"될 수 있습니다.이 문제를 극복하는 유일한 방법은 기능의 일부가 해당 컴퓨터에 절대 존재하지 않도록 하는 것입니다.
다른 팁
크랙 방지 소프트웨어를 갖는 유일한 (이론적) 방법은 완전히 폐쇄 된 시스템을 갖는 것입니다. 하드웨어에서 OS, 응용 프로그램 및 개발 도구에 이르기까지 모든 것을 제어하면 변조를 방지 할 수 있습니다.
이것이 어떻게 이론적이라고 말했는지 주목하십시오. 필연적으로 하드웨어를 수정하는 방법을 찾을 수있는 하드웨어 해커를 찾을 수 있습니다 ( 모드). 여기에서 원하는 소프트웨어를로드하고 이미있는 소프트웨어를 수정할 수 있습니다.
물리적 보안 (SAFE, VAULTS 등)에 적용되는 동일한 모델은 소프트웨어에 적용됩니다. 요점은 합법적 인 수단을 통해 상품을 더 비싸게 도둑질하거나 복사하는 것입니다. 완벽한 시스템을 만들 수는 없지만 스크립트 어린이와 취미 해커가 제품을 크래킹하는 것을 쉽게 방지 할 수 있습니다. 반면에 프로는 깨기 위해 산다. 그들은 방법을 찾을 것입니다.
당신은 당신이 제어 할 수있는 사람이 아닌 원격 서버에 의존하도록 응용 프로그램을 설계 할 수 있습니다.
아니요.매우 어렵게 만들 수 있지만 귀하의 질문은 "어떻게 누군가가 코드를 실행하게 하고 코드를 실행하지 못하게 할 수 있습니까?"와 같습니다.
예를 들어, 코드의 작지만 중요한 부분을 생략하고 해당 코드를 제어하는 서버에서 다운로드하도록 요구할 수 있습니다.이를 통해 평가판 활동을 추적하고 특정 사용자를 차단할 수 있습니다.그러나 일단 코드를 받으면 코드를 캡처하고 충분한 작업을 통해 방해받지 않는 제품 버전을 구축할 수 있습니다.