2011-01-16 3 views
13

Windows 컴퓨터에서 실행중인 R 스크립트가 많으며 코드를 읽지 않으려는 사람이 코드를 읽지 않도록하고 싶습니다. 리눅스 박스에서는 R 코드를 bash 스크립트 #로 감쌀 수있다. 암호화 된 (그리고 아마도 제한된 수명의) 실행 가능한 쉘 스크립트를 만든다. Windows에서 유사한 행에 대해 어떤 작업을 수행 할 수 있습니까?MS-Windows에서 R 스크립트 암호화

+22

우리는 R을 오픈 소스 시스템으로 소중히 여기며, 모두에게 소스 코드를 연구 할 기회를 제공합니다. –

+0

Dirk, 그리고 나는이 라인들에 정확히 어떤 것을 기대하고 있었고 당신에게서 꽤 가능성이 높았습니다 :-) 저는 제 코드를 계속 열어 두었습니다. 즉각적인 상황에서 루프에서 눈을 뗄 필요가 없다는 것을 제외하고는. 그러나 귀하의 요점은, 많은 감사와 실제로 오픈 소스를 소중히합니다. –

+0

@Vishal 귀하는이 요청에 대해 많은 도움을 얻지 못할 것입니다. 더 중요한 것은, 당신이 생각해내는 해결책이 눈을 뗄 수 없을 것입니다. –

답변

1

R 인터프리터가 코드를 해독하고 읽을 수 있어야만 해당 인터프리터를 사용하는 사람이 코드를 해독하고 읽을 수 있어야한다고 생각하지 않습니다.

나는 전문가는 아니므로 그 진술에 대해 100 % 잘못 될 권리를 보유합니다.

저는 최상의 솔루션은 귀사가 제공하는 전문 지식과 서비스와 고용주가 제공하는 가치를 보장하는 것입니다 - 비밀 유지가 아니라.

오류가 발생하면 코드를 클라이언트/서버 모델로 분리 해보십시오. 그런 식으로 클라이언트는 데이터를 보내고 결과를받습니다. 서버에서 실행되는 코드에 액세스 할 수 없습니다.

그러나 과학자는 단지 "그 해결책은 엿 같아서 그런 조건에서 제공되는 결과는 절대 신뢰하지 않을 것"이라고 말했습니다..

5

이것은 특별히 R 지향 전략은 아닙니다. 크로스 플랫폼 암호화 방법을 원한다면 오픈 소스 프로그램 인 TrueCrypt를 조사해야합니다. 볼륨 형식화 방법을 지원하는 모든 시스템에서 볼륨으로 마운트 할 수있는 암호화 된 파일 작성을 지원합니다. Mac이 FAT 파일을 읽을 수는 있지만 Linux-PC 틈에서 작동하는 방법에 대한 경험이 없기 때문에 Mac PC 분할에서이 문제를 테스트했습니다.

(Windows 용 TODO 목록에는 "Linux 및 Mac OS X 버전에서 이미 구현 된 볼륨 생성 용 명령 줄 옵션"이 포함되어 있습니다.) 따라서 실행하지 않고 R 내에서 이것을 사용하는 확실한 방법은 없습니다 운영 체제에서 프로그램을.)

+0

이것은 제가 한 해결책입니다. R 및 패키지를 암호화 된 볼륨에 설치하십시오.또는 일반 R 설치를 사용하여 암호화 된 볼륨에있는 로컬 라이브러리 디렉토리에 중요한 패키지를 넣으십시오. –

+0

@DrG, 당신은 당신의 "보통의 R 설치를 사용하고 암호화 된 볼륨에있는 로컬 라이브러리 디렉토리에 민감한 패키지를 넣으십시오"라고 설명 할 것입니다. –

19

내 대답은 조금 늦었지만, 이것이 좋은 질문이라고 생각합니다. 불행하게도 현재의 해결책이나 최소한 쉬운 것은 있다고 나는 믿지 않는다.

R을 비롯한 대부분의 해석 언어의 경우 실행되는 모든 명령의 로깅 및 검사를 설정하는 것이 종종 가능하기 때문에 일반적으로 어려움이 있습니다. 이렇게하면 코드를 난독 화하는 많은 트릭을 무효화 할 수 있습니다.

오픈 코드가 좋다고 생각하는 사람들은 여러 공급 업체를 고용하는 클라이언트와상의 할 때 코드를 혼란스럽게 만드는 일반적인 이유가 있음을 알아야합니다. 클라이언트가 A 벤더의 스크립트를 가져와 B 시스템에 왜 작동하지 않는지 묻는 것은 흔한 일입니다. (이것은 NDA 계약을 담당하는 사람이 아닌 저수준 IT 실수로 수행 될 수 있습니다.) A & B가 경쟁자 인 경우 A의 코드가 B에 전달되었습니다. 스크립트 == 심각한 프로그램 인 경우 심각한 코드는 다음과 같습니다. 멀리 주어졌습니다. 나는이 다루어 본 적이

방법은 다음과 같습니다

  1. 컴파일 된 언어로 전화를 확인하고이 가능한 표준 보호를 사용합니다.
  2. 다른 서버에서 실행 파일을 호스팅하고 서버 호출을 사용하여 계산을 실행하십시오. (R에는 여러 서버 측 옵션이 있습니다.)
  3. 언어 내에서 컴파일 된 (사전 처리/바이트 코드) 코드를 사용하십시오.

IP가 아니라 코드가 널리 배포 될 때 실제로 옵션 2가 더 쉽고 더 좋습니다. 가장 큰 이점은 사이트 전체 릴리스 프로세스의 고통을 겪지 않고도 코드를 업그레이드 할 수 있다는 것입니다. 새로운 라이브러리가 필요하다면 아무런 문제가 없습니다 - 서버를 업데이트하십시오.

옵션 3은 Matlab에서 .p 개의 파일로 수행되며 Windows의 경우 Python의 경우 py2exe으로 수행 할 수 있습니다. R에서 새 바이트 코드 컴파일 과 유사 할 수도 있지만 R 문맥에서는 .Rc 개 파일과 Matlab 컨텍스트에서는 .p 파일 사이의 차이점을 해결하기에 충분하지 않습니다. 컴파일러에 대한 자세한 내용은 다음을 참조하십시오. http://www.inside-r.org/r-doc/compiler/compile

버그 또는 기능 요청에 대한 응답으로 신속하게 반복하기가 쉽기 때문에 숙련되지 않은 사용자와 함께 작업 할 때 호스팅 계산이 유용합니다. IP 보호는 단순히 이점입니다.

+2

+1, 우리는이 입장에서 자신을 매우 자주 찾았습니다. 여기서는 이론적 인 참고 자료와 적절히 레이블이 지정된 데이터 세트의 주요 문서가 유용하게 사용됩니다. – Chase