2010-01-25 4 views
3

여러분,안전한 소프트웨어 라이센스 사용 감사 로그

우리는 흥미로운 기술적 도전을 가지고 있습니다. 라이센스 사용료가 사용량에 따라 달라질 수 있으므로 소프트웨어 사용을 추적하는 보안 감사 파일을 작성하여 사용량이 적은 사람들에게 더 저렴하게 만드는 방법.

특히 TickZoom은 헤지 펀드를위한 알파 생성 거래 플랫폼을 판매합니다.이 플랫폼은 현재 지원 비용을 포함하여 라이센스 비용으로 2,000 달러/월 (두 배 이상으로 곧 증가 할 것입니다)입니다. 그것은 기관에게는 좋지만 개인에게는 너무 비싸다. 개인은 종종 고정 요금을 지불 할 여유가있을 때까지 소프트웨어를 사용하여 만들어진 이익의 %와 교환하여 더 낮은 가격을 요구합니다.

우리는 그 제안을 좋아합니다. 그러나 실제로 플랫폼에서 생성 된 이익을 감사하기위한 신뢰할 수있는 방법과 감사 파일을 삭제하거나 겹쳐 써서 사용자가 "게임"하지 못하게함으로써 실제보다 낮은 수입을보고해야합니다.

이 응용 프로그램은 C#으로 작성되었으며 시스템의이 부분은 적어도 코드를 해독하기가 어렵게 만드는 것은 어렵습니다.

또 다른 요구 사항은 사용자가 총 요금에 약간의 불일치가 있다고 느끼는 경우 심층적 인 감사를 허용하기 위해 발생하는 모든 거래에 대해 파일에 기록하는 것입니다. 그렇게하면 개별 무역 이익을 브로커 명세서와 비교할 수 있습니다.

물론 파일이 암호화된다고 가정합니다.

그러나 "변조 방지"방법에 대한 아이디어가 있습니까? 특히 간단한 삭제 시도에 반대합니까?

내 첫 번째 추측은 소프트웨어에 항상 기존 감사 파일이 필요하거나 실행을 거부하는 것입니다.

그런 다음 소프트웨어를 제공하면 "비어있는"감사 파일로 패키징되지만 실제로는 변조 방지 인증이 있습니다.

사용자가 파일을 "변경"하려고 시도하는 것은 누군가가 원래의 "비어있는"파일을 단순히 백업 한 다음 나중에 나중에이 파일을 사용하여 나중에 시스템을 속일 수 있다고 생각하게 만듭니다. 새로운 시작.

아마 "마지막 업데이트 타임 스탬프"와 만료 시간이 포함되어 해결 될 수 있습니다.

또한 완전히 다른 해결책 아이디어를 환영합니다. 이 경우 우리는 거래가 중앙 서버에 기록되도록 "전화 집"기능을 추가해야 할 수도 있습니다. 그러나 이것은 불리한 것으로 보이며 잠재적으로 미션 크리티컬 한 애플리케이션에서 또 다른 실패 지점을 추가합니다. 일반적으로 그들은 명백한 좋은 이유와 함께 "전화 집"기능을 크게 싫어합니다. 감사합니다

, Waynek

답변

1

사용자가 소프트웨어를 사용하여 세션을 종료 할 때마다 감사 로그를 기반으로 해시를 생성합니다. 해시를 암호화 한 다음 바이너리 또는 레지스트리에 숨겨진 다른 파일에 해시를 기록하십시오.

사용자가 응용 프로그램을 다음에 열면 로그 파일을 읽고 해시를 다시 생성 한 다음 기록 된 값과 일치하는지 확인하십시오. 그렇지 않은 경우 "감사 파일을 변조 함"오류 메시지와 함께 응용 프로그램을 종료하십시오.

완전히 바보가 아니지만 매우 견고합니다. 또한

, check out this question

+1

이것은 상당히 유머러스 한 아이디어입니다. 몇 가지 우려 사항이 있지만 쉽게 해결할 수 있습니다. Q : 사용자가 감사를 위해 파일을 보낼 때 합법적인지 확인하는 방법은 무엇입니까? A : 감사 파일과 함께 해시 파일을 보내야합니다. Q : 프로그램을 닫을 때 파일이 해시 된 경우 사용자가 프로그램을 죽이면 어떻게됩니까? A : 즉, 해시 파일과 일치하지 않는 파일을 가지고 있음을 의미합니다. 다음 시작시에는 프로그램이 위조 파일을 거부합니다. 나는 다음 댓글에서 이것들을 풀기위한 아이디어에 대한 의견을 원합니다. – Wayne

+1

해결 방법 1. 프로그램은 비밀 "소금"과 함께 파일을 해시 할 수 있으므로 해시를 쉽게 재현 할 수 없으므로 소금을 찾기 위해 난독 화 코드를 디버그해야합니다. 해결 방법 2. 감사 로그 라인이 추가 될 때마다 해시를 파일에 다시 만들어야합니다. 상대적으로 드물게 발생합니다. 아마도 외부에서 하루에 수백 시간이 걸릴 것입니다. – Wayne

+1

소금은 단순한 고정 된 문자열보다 더 복잡하므로 복제하기가 더 어려워지고 모든 거래에서 변수가 변경되거나 변경 될 수 있습니다. 분명히, 나는 공개적으로 그 트릭을 게시 할 수 없습니다. 그러나 해커가 감사보고를 위해 파일을 보낼 때까지 해시가 올바르게 "해킹 된"경우 해커가 확인을하지 않기 때문에 크래커가 처리하는 것이 가장 어려울 것입니다. 그런 다음, 그들이 잘못된 "소금"을 사용한다면, 우리는 그것을 확실히 알 것입니다. – Wayne

2

아니, 내가 거기에 다시 서버에 실시간으로 모든 소득을보고 이외의 할 수있는 일이지만, 심지어는 문제를 가지고 있다고 생각하지 않습니다.

- 편집 :

내가보기로 당신은, 단지 옵션을 위치 :

  • 웹 기반 (또는 적어도 씬 클라이언트)로 시스템을 변환하여 모든 만들기 이미 전체 로컬 기반의 시스템을 개발하는 경우 서버 분명

의 거래는,이, 아마 꽤 실용적이다

    상점 갑자기 X를 X를 획득하고, 경우 16,
  • 는 휴식과 희망의 사람들이 그것을

휴식 그리고이 방법 내에서 결합하지 않는다 "하드"일부 정교한 계획을 생각 프로파일 일종의 보여줍니다 -sigificantAmount, 당신은 그들이 더 이상 이익이되지 않는다는 것을 결정할 수 있습니다. 따라서 아마 시스템을 속이는 것입니다 (또는 사업을 떠나는 것). 그러나 이는 프라이버시의 침해를 낳고 적절하지 않을 수 있습니다.

실제적으로, 나는 당신이 가능한 이익에 대해 위험을 감수해야한다고 생각합니다. 또는이 사람들에게 팔 방법에 대한 또 다른 각도를 찾아야합니다 (즉, 인터페이스/앱 자체가 전체 기금에서 X를 관리하도록하십시오. 오버, 프로 버전에 대한 프롬프트 또는 기타).

+0

그건 물론 내 본능입니다. 실시간으로 서버에보고하는 작업은 임시 연결 문제가 발생한 경우 별도의 스레드에서 수행 될 수 있지만 너무 많은 거래가 기록되지 않으면 결국 연결이 끊어 질 때까지 소프트웨어가 실행되지 않도록 차단해야합니다 수정 됨. 사용자는 마지 못해 더 저렴한 가격에 동의하지만 "서버"가 실패하여 사용자 앱이 사망하고 이로 인해 재정적 손실이 발생할 수있는 경우 매우 난처하게됩니다. – Wayne

+0

다른 한편으로 우리는 사용자가 국제적으로 있기 때문에 국가 (또는 전 세계)의 개별 데이터 센터에서 5 개 이상의 중복 Linux 컴퓨터로 도메인 이름을 설정하는 것이 쉽고 저렴해야합니다. 그렇게하면 로깅은 로깅 할 호스트 IP 주소의 긴 목록을 가질 수 있습니다. "상태 저장"연결을 사용하지 않고 언제든지 다른 사용자에게 로그 한 다음 모든 로그를 수집하고 사용자 ID별로 저장하고 보고서를 생성하는 백 엔드 프로세스를 가질 수 있습니다. 그래서 쉽게 할 수 있습니다. 매우 신뢰할 만하다. – Wayne

+0

Wayne : 당신이 그렇게하더라도, 요청 자체는 위조 될 수 있습니다. 제가 의미하는 바는 이것이 심지어 절대적이지 않다는 것입니다. 단지 "더 힘들다"는 것입니다. 나는 나의 최근 편집에서 조금 정교했다. –

5

을 문제에 대한 설명은 다음과 같습니다

  • 우리는 클라이언트를 신뢰하지 않는다; 클라이언트는 적대적 일 수 있습니다.
  • 우리는 클라이언트가 우리가 신뢰할 수있는 데이터를 보내길 원합니다.

이 문제에 대한 해결책은 없습니다. 당신은 "나는 두명의 남자를 찾고 싶다. 하나는 밥이라고, 하나는 빌이라고 불렀다. 그래서 밥은 빌보다 더 키가 크고 빌은 밥보다 더 키가 크다." 그 재산을 가진 두 남자를 찾을 수 없을거야.

적대적인 클라이언트가 소유하고있을 수있는 자신이 소유하지 않은 컴퓨터에서 오는 어떤 것도 절대적으로 신뢰할 수 없습니다. 불가능한 문제를 해결하기 위해 귀중한 시간을 낭비하지 말라. 적대적인 고객에 대항하여 자신이 소유하고 신뢰할 수있는 서버를 만드는 데 많은 시간을 할애해야합니다.

+0

그건 사실입니다. 그러나 소프트웨어를 복사 방지하는 데 사용하는 "무엇이든 신뢰할 수 없습니다"라는 사실 또한 사실입니다. 모든 종류의 소프트웨어를 해독 할 수 있습니다. 유일한 문제는 크래커가 얼마나 많은 노력을 기울여야하는지, 그리고 그만한 가치가 있는지 여부입니다. – Wayne

+2

내 머리 속에는 훌륭한 복제 방지 원칙이이 도전에 적용됩니다. 중요한 원칙 중 하나는 다음과 같습니다. 고객의 대다수가 정직하고 협조합니다. 따라서 사기꾼을 낙담시키는 것은 합리적으로 어렵게 균형을 잡아야하며 정직한 고객을 돌보는 등의 보호 장치를 만들지 않아야합니다. – Wayne

+0

복제 방지 기능인 TickZoom은 고객이 좋아하는 매우 균형 잡힌 기능을 제공합니다. 1. 무료 버전에는 컴파일 된 특정 기능이 있으므로 크래커가 크래킹을하는 경우에도 만료일을 제외하고는 아무 것도 없습니다. 2. TZ는 컴퓨터를 제한하는 동글 또는 라이센스 키를 사용하지 않습니다. 3. 사용자는 소프트웨어에서 아무 것도 활성화하지 않는 "사용자 당 하나의"고유 한 256 비트 키를 가져옵니다. 4. 대신 사용자 키를 사용하면 3 개월마다 새 바이너리 버전을 다운로드 할 수 있습니다. 5. 바이너리가 제거되는 데 몇 주가 걸리는 방식으로 바이너리가 만료됩니다. – Wayne

관련 문제