현관문을 강화 강철로 교체할 수도 있지만 열쇠를 현관 매트 위에 놓아두면 침입을 막을 수 없습니다. 설명하신 보호 기능은 일반 코더를 막는 데는 좋지만 동기가 있는 공격자를 막는 데는 확실히 도움이 되지 않습니다.
여기서 문제는 쉬운 부분인 암호화가 아니라 키와 암호 해독 프로세스를 처리하는 방법입니다.
공격자(고전적인 용어로 '말로리'라고 부르겠습니다)가 키를 가지고 있는 EX5를 복사하여 배포하고자 하는 시나리오에서 다음과 같은 방법을 사용할 수 있습니다:
i. 키로 EX5를 실행합니다;
실행 중인 프로세스를 모니터링합니다(예: 프로세스에 DLL을 첨부하고 EX5의 내용이 해독된 후 즉시 덤프합니다);
iii. 이제 평문 EX5를 재조립합니다(귀찮다면 소스로 분해할 수도 있습니다).
첫 번째 지점 보호에 서명 확인이 포함된 경우 공격자가 파일을 배포하기 위해 필요한 것은 관련 공개 키를 교체한 다른 MQL 실행 파일을 배포하는 것입니다. MQL5가 암호화 API를 사용하여 인증서를 검증하는 경우 바이너리를 찢어버릴 수 있습니다. 이 과정은 무한히 계속됩니다.
이것은 키 관리의 악몽을 고려하기 전의 이야기입니다.
이런 종류의 바이너리 분석은 요즘 제 능력 밖의 일이지만, 번거로움 없이 해낼 수 있는 사람을 몇 명 알고 있습니다. 따라서 걱정해야 할 것은 암호화의 강도가 아니라 잘못된 보안 모델입니다. 메타트레이더가 이 문제를 해결할 것으로 기대하는 사람은 아무도 없기 때문에 이 문제 자체는 특별한 문제가 아닙니다. 특히 MQL5/EX5 코드 소유자가 제어하고 구매자에게 액세스/신호 라이선스를 부여하는 별도의 서버에서 실행하는 등 매우 유용한 다른 솔루션이 존재합니다.
따라서 적어도 변조 방지 하드웨어 없이는 제대로 구현하기가 매우 어려운데 왜 사람들이 이 기능을 요구하는지 이해할 수 없습니다.
all 충분한 많은 유효한 지적을 제기합니다. 실제 보호를 위해 다음을 권장합니다:
소스 코드의 기본적인 보호를 위해서는 가능한 한 많은 기능을 dll에 넣는 것이 좋습니다. MT5와 프로그래밍 간의 인터페이스를 위한 최소한의 코드는 괜찮습니다. 소프트웨어를 제공하지 않는 한 ex4/ex5의 전체 소스 코드를 신뢰하지 않습니다. 하지만 이 글은 유료/상업 제품 또는 소스 코드가 제공되지 않는 무료 제품에 대한 지적 재산 보호에 관한 것입니다.
라이선스의 경우, ex4/dll 조합의 데모 버전과 라이브 버전을 분리하는 것이 가장 좋은 보호 방법입니다. 단점은 개발자가 두 가지 버전의 소프트웨어를 유지 관리/컴파일해야 하므로 개발자와 클라이언트에게 다소 번거롭다는 점입니다. 하지만 데모 버전만 사용할 수 있으므로 누군가 정식 버전의 소프트웨어에 해킹당할 가능성은 줄어듭니다. 데모의 목표에 따라 많은 것이 달라집니다. 클라이언트에게 전체 기능을 제공하려면 다음과 같이 하세요.
또한 로컬 소프트웨어를 실행하기 전에 필수 코드의 일부를 원격으로 실행해야 하는 라이선싱을 구현하세요. CNS SaaS(Software as a Service)는 실제로 이를 수행했으며, 이를 CCoHS (호출 코드 호스팅 서버) 기능이라고 합니다. EA가 제대로 실행되는 데 필요한 제한된 부분의 코드를 호스팅된 방식으로 배치할 수 있습니다.그러면 누군가 EA를 가지고 도망가거나 라이선싱 dll을 어떻게든 크랙하더라도 해당 dll은 쓸모 없게 됩니다. 호스팅된 코드 서버와 EA 및/또는 라이선싱 서버 사이에 지연 시간이 있지만 이를 해결할 수 있습니다. 구현은 그리 어렵지 않지만 사용자가 자체 서버에서 CCoHS를 구현하는 방법을 찾아야 합니다. 규모가 작을 때는 저예산 서버 등에서 구현한 다음 구독자 기반이 커지면 확장할 수 있습니다.
호스팅 함수는 모든 옵션 중 가장 비싸지만 누군가 실제로 dll을 디컴파일할 수 있는 경우에 대비한 실질적인 보호 기능을 제공합니다. 그들은 소프트웨어가 작동하도록 하기 위해 dll을 '크랙'할 가능성이 높습니다. 하지만 필요한 호스팅 함수가 없으면 여전히 쓸모가 없습니다. 제가 여기서 뭔가 놓친 것이 아니라면 말이죠.
3. 계정에 바인딩-전문 어드바이저의 작업을 계정에 바인딩하려고했습니다. 보호 기능이 작동하지 않고 /이 계정에 대한 전문가 고문의 작업이 허용되지 않습니다 /라는 메시지가 표시되지만 EA는 계속 거래됩니다. 컴파일 중에 오류가 없습니다. 무엇이 잘못되었는지 모르겠습니다.
비꼬아서 미안하지만 이 글에서 제시된 것은 보안이 아니라 모호함입니다. 저작권 보호는 매우 어려운 문제이며, 따라서 음악/영화 업계에서 DRM을 도입하려는 노력과 실패를 거듭하고 있는 것입니다.
기껏해야 일부 사람들의 시간을 낭비할 뿐이며, 최악의 경우 독자에게 잘못된 보안 인식을 심어줄 수 있습니다. 그런 다음 여러분의 조언에 따라 제품을 '보호'하기로 결정한 경우, 소비자가 몇 시간 만에 보호 기능을 제거하고 싼 가격에 재판매하면 다소 놀랄 수 있습니다.
베이스64 인코딩은 암호화와 관련이 없습니다. 베이스64 인코딩은 데이터 인코딩을 7비트로 간주하는 프로토콜을 사용하여 8비트 데이터를 안전하게 전송할 수 있도록 설계되었습니다. 베이스64 인코딩을 간단히 역전시킬 수 있으며, 실제로 그렇게 설계되었습니다!
제가 볼 수 있는 유일한 해결책은 브로커의 제한된 위임장 조항을 이용하거나 서버 어딘가에 .ex5 파일이 포함된 MQL5 인스턴스를 설치하고 고객이 씬 클라이언트를 사용하여 액세스하도록 허용하는 것입니다(.ex5를 다운로드할 수 없도록). 저는 정보 보안 분야에서 15년 넘게 일했기 때문에 제가 무슨 말을 하는지 어느 정도 알고 있습니다.
Hello good afternoon consultation I need help to be able to achieve the use of an EA by account number in mt4 and that allows me to modify and that can only work the accounts that are within the license and that can enable and disable it remotely as it used two mt4 one master and one slave I attach the description of the code and how I can better for it to work well because if I enter another account that is outside the license it works the same.
현관문을 강화 강철로 교체할 수도 있지만 열쇠를 현관 매트 위에 놓아두면 침입을 막을 수 없습니다. 설명하신 보호 기능은 일반 코더를 막는 데는 좋지만 동기가 있는 공격자를 막는 데는 확실히 도움이 되지 않습니다.
여기서 문제는 쉬운 부분인 암호화가 아니라 키와 암호 해독 프로세스를 처리하는 방법입니다.
공격자(고전적인 용어로 '말로리'라고 부르겠습니다)가 키를 가지고 있는 EX5를 복사하여 배포하고자 하는 시나리오에서 다음과 같은 방법을 사용할 수 있습니다:
i. 키로 EX5를 실행합니다;
실행 중인 프로세스를 모니터링합니다(예: 프로세스에 DLL을 첨부하고 EX5의 내용이 해독된 후 즉시 덤프합니다);
iii. 이제 평문 EX5를 재조립합니다(귀찮다면 소스로 분해할 수도 있습니다).
첫 번째 지점 보호에 서명 확인이 포함된 경우 공격자가 파일을 배포하기 위해 필요한 것은 관련 공개 키를 교체한 다른 MQL 실행 파일을 배포하는 것입니다. MQL5가 암호화 API를 사용하여 인증서를 검증하는 경우 바이너리를 찢어버릴 수 있습니다. 이 과정은 무한히 계속됩니다.
이것은 키 관리의 악몽을 고려하기 전의 이야기입니다.
이런 종류의 바이너리 분석은 요즘 제 능력 밖의 일이지만, 번거로움 없이 해낼 수 있는 사람을 몇 명 알고 있습니다. 따라서 걱정해야 할 것은 암호화의 강도가 아니라 잘못된 보안 모델입니다. 메타트레이더가 이 문제를 해결할 것으로 기대하는 사람은 아무도 없기 때문에 이 문제 자체는 특별한 문제가 아닙니다. 특히 MQL5/EX5 코드 소유자가 제어하고 구매자에게 액세스/신호 라이선스를 부여하는 별도의 서버에서 실행하는 등 매우 유용한 다른 솔루션이 존재합니다.
따라서 적어도 변조 방지 하드웨어 없이는 제대로 구현하기가 매우 어려운데 왜 사람들이 이 기능을 요구하는지 이해할 수 없습니다.
all 충분한 많은 유효한 지적을 제기합니다. 실제 보호를 위해 다음을 권장합니다:
소스 코드의 기본적인 보호를 위해서는 가능한 한 많은 기능을 dll에 넣는 것이 좋습니다. MT5와 프로그래밍 간의 인터페이스를 위한 최소한의 코드는 괜찮습니다. 소프트웨어를 제공하지 않는 한 ex4/ex5의 전체 소스 코드를 신뢰하지 않습니다. 하지만 이 글은 유료/상업 제품 또는 소스 코드가 제공되지 않는 무료 제품에 대한 지적 재산 보호에 관한 것입니다.
라이선스의 경우, ex4/dll 조합의 데모 버전과 라이브 버전을 분리하는 것이 가장 좋은 보호 방법입니다. 단점은 개발자가 두 가지 버전의 소프트웨어를 유지 관리/컴파일해야 하므로 개발자와 클라이언트에게 다소 번거롭다는 점입니다. 하지만 데모 버전만 사용할 수 있으므로 누군가 정식 버전의 소프트웨어에 해킹당할 가능성은 줄어듭니다. 데모의 목표에 따라 많은 것이 달라집니다. 클라이언트에게 전체 기능을 제공하려면 다음과 같이 하세요.
또한 로컬 소프트웨어를 실행하기 전에 필수 코드의 일부를 원격으로 실행해야 하는 라이선싱을 구현하세요. CNS SaaS(Software as a Service)는 실제로 이를 수행했으며, 이를 CCoHS (호출 코드 호스팅 서버) 기능이라고 합니다. EA가 제대로 실행되는 데 필요한 제한된 부분의 코드를 호스팅된 방식으로 배치할 수 있습니다.그러면 누군가 EA를 가지고 도망가거나 라이선싱 dll을 어떻게든 크랙하더라도 해당 dll은 쓸모 없게 됩니다. 호스팅된 코드 서버와 EA 및/또는 라이선싱 서버 사이에 지연 시간이 있지만 이를 해결할 수 있습니다. 구현은 그리 어렵지 않지만 사용자가 자체 서버에서 CCoHS를 구현하는 방법을 찾아야 합니다. 규모가 작을 때는 저예산 서버 등에서 구현한 다음 구독자 기반이 커지면 확장할 수 있습니다.
호스팅 함수는 모든 옵션 중 가장 비싸지만 누군가 실제로 dll을 디컴파일할 수 있는 경우에 대비한 실질적인 보호 기능을 제공합니다. 그들은 소프트웨어가 작동하도록 하기 위해 dll을 '크랙'할 가능성이 높습니다. 하지만 필요한 호스팅 함수가 없으면 여전히 쓸모가 없습니다. 제가 여기서 뭔가 놓친 것이 아니라면 말이죠.
게시된 문서 MQL5 프로그램 보호: 암호, 키, 시간 제한, 원격 라이선스 확인:
저자: Investeo
3. 계정에 바인딩-전문 어드바이저의 작업을 계정에 바인딩하려고했습니다. 보호 기능이 작동하지 않고 /이 계정에 대한 전문가 고문의 작업이 허용되지 않습니다 /라는 메시지가 표시되지만 EA는 계속 거래됩니다. 컴파일 중에 오류가 없습니다. 무엇이 잘못되었는지 모르겠습니다.
이 코드 줄은 어디에 배치할까요? ??
안녕하세요, 질문이 있는데요, 제 사이트에서 어드바이저를 판매하고 싶은데 어떻게 해야 할지 모르겠는데 도와줄 수 있는 사람이 있나요?
미리 감사드립니다!
안녕하세요,
기사를 작성해 주셔서 감사합니다. 비밀번호 보호, 비밀번호를 입력 할 때 별표 ( "*") 또는 점 ( "-") 으로 입력을 표시하는 방법에 대해 조언 해주세요.
나는 좋은 프로그래머가 아닙니다.
고마워요
비꼬아서 미안하지만 이 글에서 제시된 것은 보안이 아니라 모호함입니다. 저작권 보호는 매우 어려운 문제이며, 따라서 음악/영화 업계에서 DRM을 도입하려는 노력과 실패를 거듭하고 있는 것입니다.
기껏해야 일부 사람들의 시간을 낭비할 뿐이며, 최악의 경우 독자에게 잘못된 보안 인식을 심어줄 수 있습니다. 그런 다음 여러분의 조언에 따라 제품을 '보호'하기로 결정한 경우, 소비자가 몇 시간 만에 보호 기능을 제거하고 싼 가격에 재판매하면 다소 놀랄 수 있습니다.
베이스64 인코딩은 암호화와 관련이 없습니다. 베이스64 인코딩은 데이터 인코딩을 7비트로 간주하는 프로토콜을 사용하여 8비트 데이터를 안전하게 전송할 수 있도록 설계되었습니다. 베이스64 인코딩을 간단히 역전시킬 수 있으며, 실제로 그렇게 설계되었습니다!
제가 볼 수 있는 유일한 해결책은 브로커의 제한된 위임장 조항을 이용하거나 서버 어딘가에 .ex5 파일이 포함된 MQL5 인스턴스를 설치하고 고객이 씬 클라이언트를 사용하여 액세스하도록 허용하는 것입니다(.ex5를 다운로드할 수 없도록). 저는 정보 보안 분야에서 15년 넘게 일했기 때문에 제가 무슨 말을 하는지 어느 정도 알고 있습니다.
솔직히 말해서 Metaquotes에서 이 기사를 게시한 것이 다소 놀랍습니다.
Hello good afternoon consultation I need help to be able to achieve the use of an EA by account number in mt4 and that allows me to modify and that can only work the accounts that are within the license and that can enable and disable it remotely as it used two mt4 one master and one slave I attach the description of the code and how I can better for it to work well because if I enter another account that is outside the license it works the same.
<?xml version="1.0" encoding="UTF-8"?>
<license>
<programVersion>
</programVersion>
<라이선스 유형> 전체</라이선스 유형>
<validityPeriod>
<endDate>1/18/2080</endDate>
</validityPeriod>
<Owners>
<소유자 이름>
<Account>6789</Account>
<Account>7994</Account>
<Account>22302</Account>
</ownerName>
</Owners>
<서명 xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
<Reference URI="">
<Transforms>
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
<DigestValue>Cl8vF8+Uyyms3pEodjip5ol5J4s=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue> p/NlTyHeUy5CVC01H/2WmvTcN8TqJhrInkhqtyzR6vqn/koJHqm6fiD6mepklpn4fud0em7vqOiyWcQ9KQ8jqoyoN9ExkJUEvepWBQT2HHHcaoW2kpV17ch+CZvtFX74cHE23WrOi9/p3RoK/4G0rsgvdjvefdZRQRsM5k=</SignatureValue>
</Signature>
</license>
좋은 생각이 떠올랐어요. 웹 흐름을 항상 살펴보는 웹 모니터가 있다고 가정해 봅시다.
1. EA 클라이언트가 웹 서버를 호출하여 서버에서 임의로 생성한 sha.pub 키를 요청합니다.
2. EA는 모니터가 데이터의 내용을 알 수 없도록 공개 키를 사용하여 서버에 인증을 요청하는 일부 데이터를 보냅니다. 그리고 데이터에는 클라이언트가 생성한 임의의 키가 포함될 수 있습니다. 모니터는 sha 키 때문에 데이터를 해독할 수 없습니다.
3. 서버는 데이터를 수신하고 클라이언트가 보낸 키에 의해 암호화된 권한 허용 정보를 보냅니다. 모니터는 공개 공개키를 알고 있기 때문에 이 정보를 해독할 수 있지만, 클라이언트의 키를 알지 못하므로 여전히 쓸모가 없습니다.
이러한 방식으로 서버는 EA 클라이언트의 동작을 제어할 수 있습니다.
안녕하세요, 새로운 Python 릴리스를 고려하여 이 문서를 업데이트할 수 있나요?
나는 그것을 작동시킬 수 없습니다. 추신 : 파이썬은 아직 저에게 새로운 것입니다.
Thx,
Danny