Main Content

소스 코드를 보호하기 위한 보안 고려 사항

MATLAB® 소스 코드(.m)는 자체적으로 실행 가능하다는 장점을 갖는 반면, 다른 사람이 MATLAB 소스 파일 내용에 쉽게 액세스하여 설계와 구현 세부 정보를 알아낼 수 있다는 단점도 가지고 있습니다. 사유 애플리케이션 코드를 이런 방식으로 배포하고 싶지 않다면 대신에 다음 옵션을 하나 이상 사용할 수 있습니다.

P 코드 파일 만들기

소스 코드 파일의 일부 또는 전체를 P 코드 파일(파일 확장자가 .p임)이라 불리는 난독 처리된 형식으로 변환하여 애플리케이션 코드를 이 형식으로 배포합니다.

P 코드 파일을 생성하는 방법에 대한 자세한 내용은 난독 처리된 P 코드 파일 생성하기 항목을 참조하십시오.

독립형 실행 파일 빌드하기

소스 코드를 보호할 수 있는 또 다른 방법은 소스 코드를 독립형 실행 파일로 빌드한 다음 이 실행 파일을 다른 필수 파일과 함께 사용자에게 배포하는 것입니다. 배포할 파일을 준비하려면 MATLAB Compiler™ 또는 Simulink® Compiler와 지원되는 C 또는 C++ 컴파일러가 설치되어 있어야 합니다. 그러나 최종 사용자는 MATLAB이 없어도 됩니다.

MATLAB Compiler 또는 Simulink Compiler에서 독립형 실행 파일을 만들면 애플리케이션에 필요한 모든 파일이 아카이브에 번들로 제공됩니다. 아카이브에서 각 MATLAB 코드 파일(일반 텍스트 MATLAB 파일 또는 P 코드 파일)은 표준 AES-256 알고리즘을 사용하여 암호화됩니다. 기본적으로 파일 이름과 디렉터리 구조는 난독 처리되지 않으며 MAT, FIG, MEX 등의 기타 파일 형식은 암호화되지 않습니다.

R2021b부터 사용자가 파일 이름과 디렉터리 구조를 난독 처리할 수 있으며 mcc (MATLAB Compiler)-s 옵션을 사용하여 MAT, FIG, MEX 등의 기타 파일 형식을 암호화할 수 있습니다. 런타임 시, 암호화된 파일은 디스크에는 암호화된 채로 남아 있지만 메모리에서는 컴파일하기 전의 원래 형식으로 복호화됩니다. 활용 사례에 따라 이 방법에 다른 방법까지 조합하여 추가적인 보안 계층을 더할 수 있습니다. 예를 들어, MATLAB 코드 파일을 컴파일하기 전에 이 파일에서 P 코드 파일을 만들 수 있습니다.

MATLAB 애플리케이션의 독립형 실행 파일을 빌드하려면 MATLAB 프로그램 파일의 일반적인 워크플로에 따라 애플리케이션을 개발하고 디버그하십시오. 실행 파일을 생성하는 방법에 대한 자세한 내용은 Create Standalone Application from MATLAB Function (MATLAB Compiler) 항목을 참조하십시오.

모델 보호 사용하기

모델을 보호하는 것은 모델을 참조된 모델로 컴파일하여 원래 모델의 구현 세부 정보를 숨기는 것입니다. 보호된 모델을 만들면 모델이 SLXP라는 패키지로 컴파일되어 원래 모델의 구현 세부 정보가 숨겨집니다. SLXP에는 코드 생성이나 시뮬레이션같이 사용자가 Simulink 환경에서 요구하는 기능을 지원하기 위한 파생 파일이 포함되어 있습니다.

사용자가 오직 시뮬레이션을 목적으로 하는 보호된 모델을 만들면 파생된 이진 파일 내에서 대부분의 IP가 숨겨집니다. 사용자가 코드 생성까지 지원하는 보호된 모델을 만들면 사용자가 SLXP를 만든 방식에 따라 읽기 가능한 C/C++ 코드 아니면 난독 처리된 이진 형식으로 코드 생성을 지원하는 파일이 SLXP에 포함되게 됩니다.

시뮬레이션과 코드 생성 기능은 비밀번호를 가진 수신자만 이러한 기능을 사용할 수 있도록 선택적으로 비밀번호로 보호할 수 있습니다. 비밀번호 보호를 사용하면 이 기능을 지원하는 메인 파일이 AES-256 암호화 방식을 사용하여 보호됩니다. 최종 사용자가 비밀번호를 입력하면 이러한 파일은 디스크에 복호화됩니다.

패키지의 모든 지원 파일이 암호화되는 것은 아닙니다. 이러한 파일에는 IP가 거의 들어 있지 않지만 여전히 인터페이스와 샘플 시간처럼 모델에 대한 특정 정보를 노출시킬 수 있습니다.

자세한 내용은 Protect Models to Conceal Contents (Simulink Coder) 항목을 참조하십시오.

코드를 네이티브 코드로 변환하기

소스 코드나 알고리즘의 일부 또는 전체를 C/C++ 코드로 변환한 다음 이진 파일로 컴파일합니다. 코드를 이진 파일로 변환하는 옵션에는 여러 가지가 있습니다.

  • mex 명령 - C/C++ 코드에서 이진 파일을 생성하는 데 사용합니다.

  • MATLAB Coder - MATLAB 코드에서 이진 파일을 생성하는 데 사용합니다.

  • Simulink Coder - Simulink 모델에서 C/C++ 코드를 생성하고 생성된 코드를 독립 실행형 이진 파일로 컴파일하는 데 사용합니다.

추가적인 보안 계층을 더하기 위해, 생성된 이진 파일에 이진 난독 처리를 적용할 수 있습니다(MathWorks 외부의 툴 사용).

컴파일된 애플리케이션을 원격 보호 서버에서 호스팅하기

소스 코드를 보호하는 한 가지 방법은 MATLAB Web App Server 또는 MATLAB Production Server를 사용하여 원격 보호 서버에 소스 코드를 저장하는 것입니다. 서버에 저장된 소스 코드는 액세스가 제한되며 사용자는 보안 인터페이스를 통해 애플리케이션에 액세스합니다. 파일은 독립형 실행 파일 빌드하기에 설명된 것과 동일한 메커니즘으로 암호화됩니다.

보안 OS 서비스 활용하기

운영 체제에서 제공하는 다양한 시스템 보안 강화(system hardening) 기법을 사용합니다. 예를 들어, 알고리즘을 보안 가상 머신에서 제한된 액세스로 실행되는 서버에 둘 수 있습니다. 보안 가상 머신은 IP 보호를 위한 추가적인 보안 계층을 제공할 수 있습니다.

참고 항목

관련 항목