C# .NET 응용 프로그램이 있습니다. 이 응용 프로그램은 하드웨어와 밀접하게 연결되어 있습니다. 현금 인출기를 생각하고 키오스크를 운전해라. 내 응용 프로그램이 하드웨어에서 실행되고 있음을 보증하는 방법이 필요합니다. 초기 계획은 WMI를 사용하여 CPU, OS, HD 또는 기타 하드웨어의 일련 번호를 얻은 다음 디지털 서명하여 해당 서명을 소프트웨어에 제공하는 것이 었습니다. 그런 다음 응용 프로그램은 공개 키를 가지고 서명을 검증합니다. 이 작업을 수행하는 더 좋은 방법이 있습니까?응용 프로그램을 특정 하드웨어에 어떻게 묶을 수 있습니까?
업데이트 1
우리는 동글 또는 걸쇠를 돼요. 시스템 외부는 없습니다.
당신은 아마도 다른 하드웨어로부터 가치를 보호하기 위해 더 많은 돈과 노력을 기울일 것입니다. 서명 키없이 소프트웨어를 실행하고 싶은 사람은 보호 기능을 제거 할 수 있습니다. 또한 고객이 시스템을 신속하게 수정해야하는 경우에도 고객을 제한하고 있습니다. –
모두 상황에 따라 다릅니다. 우리는 컴퓨터가 아닌 .NET을 지원하는 임베디드 하드웨어와 함께 제공되는 응용 프로그램을 가지고 있습니다. 하드웨어 및 소프트웨어는 패키지 계약으로 제공되며 이것이 우리가 구매 한 것입니다. 고객은 유지 보수를 수행하기를 원하지 않습니다. 그래서 우리와 계약 및 SLA가있는 것입니다.이 작업을 수행하는 데는 분명 좋은 이유가 있지만 실제로 적용되는 대부분의 앱에는 해당되지 않습니다. 칩 개발에서부터 소프트웨어에 이르기까지 모든 것을 완벽하게 보호 할 수는 없습니다. (애플이 칩을 제어하는 이유는 무엇입니까?) – TimothyP
http://www.ssware.com/cryptoobfuscator/obfuscator-net.htm에는 하드웨어 잠금을 만드는 데 도움이되는 도구가 있지만 유일한 방법으로는 사용하지 마십시오. .. 난독 화/잠금 장치 도구가 대중화되면할수록 사람들이 해킹에 더 많은 노력을 기울입니다. 그리고 고객과 확실한 계약을 맺고 있는지 확인하십시오. 이것이 가장 중요한 것입니다! – TimothyP