복붙노트

[PYTHON] 암호화 된 보안 도커 컨테이너

PYTHON

암호화 된 보안 도커 컨테이너

우리는 여러분이 오픈 소스에 갈 수없고 소프트웨어를 자유롭게 배포 할 수없는 상황을 모두 알고 있습니다. 그리고 나는 이러한 상황 중 하나에 있습니다.

나는 여러 바이너리들 (C 소스들로 컴파일 된)과 그것을 모두 시스템으로 묶는 파이썬 코드로 구성된 앱을 가지고있다. 이 앱은 클라우드 솔루션으로 작동했기 때문에 사용자는 네트워크를 통해 앱 기능에 액세스 할 수 있었지만 바이너리와 코드가 저장되는 실제 서버를 만질 기회는 없었습니다.

이제 우리 시스템의 "로컬"버전을 제공하고자합니다. 이 앱은 사용자가 실제로 소유 할 PC에서 실행됩니다. 우리는 모든 것이 망가질 수도 있다는 것을 알고 있지만 최소한 가능한 복사 및 리버스 엔지니어링으로부터 앱을 보호하기를 원합니다.

docker는 훌륭한 배포 도구이므로 컨테이너의 파일 시스템에 저장된 데이터를 아무도 볼 수 없도록 암호화 된 도커 컨테이너를 만들 수 있습니다. 이 문제에 대한 알려진 해결책이 있습니까?

또한, 도커를 기반으로하지 않은 잘 알려진 해결책이있을 수 있습니까?

해결법

  1. ==============================

    1.당신이 요구하는 것은 난독 화입니다. Docker와는 아무런 관련이 없으며 언어 별 문제입니다. 데이터에 대해서는 원하는 맹 글링을 항상 수행 할 수 있지만 공격자를 억제 할 수는 있지만 결코 안전하지는 않습니다. 최첨단 암호화 체계조차도 당신이 제공하는 프로그램이 핵심을 포함해야하므로 도움이되지 않습니다.

    당신이 요구하는 것은 난독 화입니다. Docker와는 아무런 관련이 없으며 언어 별 문제입니다. 데이터에 대해서는 원하는 맹 글링을 항상 수행 할 수 있지만 공격자를 억제 할 수는 있지만 결코 안전하지는 않습니다. 최첨단 암호화 체계조차도 당신이 제공하는 프로그램이 핵심을 포함해야하므로 도움이되지 않습니다.

    C는 대개 엔지니어를 역전시키기에 충분히 어렵습니다. Python의 경우 pyobfuscate 등을 시도 할 수 있습니다.

    데이터의 경우이 질문 (키워드 : 파일 암호화 게임)을 발견했습니다.

  2. ==============================

    2.호스트 시스템의 루트 사용자 (docker 데몬이 실행되는 곳)는 호스트에서 실행중인 모든 프로세스에 대한 전체 액세스 권한을가집니다. 즉, 호스트 시스템을 제어하는 ​​사람은 항상 파일 시스템뿐만 아니라 응용 프로그램의 RAM에 액세스 할 수 있습니다. 따라서 파일 시스템을 해독하거나 RAM을 디버깅하지 못하도록하는 키를 숨길 수 없습니다.

    호스트 시스템의 루트 사용자 (docker 데몬이 실행되는 곳)는 호스트에서 실행중인 모든 프로세스에 대한 전체 액세스 권한을가집니다. 즉, 호스트 시스템을 제어하는 ​​사람은 항상 파일 시스템뿐만 아니라 응용 프로그램의 RAM에 액세스 할 수 있습니다. 따라서 파일 시스템을 해독하거나 RAM을 디버깅하지 못하도록하는 키를 숨길 수 없습니다.

    표준 Linux 상자에서 난독 화를 사용하면 파일 시스템과 RAM을 읽기가 더 어려워 질 수 있지만 불가능하게 만들거나 컨테이너를 실행할 수 없습니다.

    운영 체제를 실행하는 하드웨어를 제어 할 수있는 경우 시스템이 부팅 되 자마자 시스템 확인을 시작하는 신뢰할 수있는 플랫폼 모듈을 살펴볼 수 있습니다. 그런 다음 루트 사용자가 키를 숨기고 파일 시스템을 강력하게 암호화하기 위해 시스템에 액세스하기 전에 이론적으로 작업을 수행 할 수 있습니다. 그럼에도 불구하고, 기계에 대한 물리적 액세스가 주어지면 공격자는 해독 된 데이터를 항상 가져올 수 있습니다.

  3. ==============================

    3.완벽한 보안 솔루션을 원한다면, 당신은 기밀성의 '성배 (holy grail)'를 찾고 있습니다. 즉, 응용 프로그램과 데이터를 암호화하여 PC로 보내고 소유자 나 OS 또는 다른 사람이 데이터를 스쿠프 할 필요없이이 PC를 실행하게하려는 것입니다. 막대한 성과 위약없이 그렇게하는 것은 적극적인 연구 프로젝트입니다. 적어도 하나의 프로젝트가 관리되었지만 여전히 한계가 있습니다.

    완벽한 보안 솔루션을 원한다면, 당신은 기밀성의 '성배 (holy grail)'를 찾고 있습니다. 즉, 응용 프로그램과 데이터를 암호화하여 PC로 보내고 소유자 나 OS 또는 다른 사람이 데이터를 스쿠프 할 필요없이이 PC를 실행하게하려는 것입니다. 막대한 성과 위약없이 그렇게하는 것은 적극적인 연구 프로젝트입니다. 적어도 하나의 프로젝트가 관리되었지만 여전히 한계가 있습니다.

    TPM 사용에 대한 Andy의 제안은 2와 3의 의미와 유사한 의미를 지닙니다.

  4. ==============================

    4.Docker와 같은 사운드는 올바른 도구가 아닙니다. 본격적인 샌드 박스로 사용하지 않으려 고했기 때문에 (적어도 내가 읽은 것을 토대로). 왜 당신은 더 완전한 VirtualBox 접근 방식을 사용하지 않습니까? 적어도 그러면 로그인 뒤에 가상 시스템을 잠글 수 있고 (다른 사람의 컴퓨터에 물리적 인 설치가 잠길 수있는 한) 격리 된 암호화 된 파일 시스템과 전체 9 야드를 실행할 수 있습니다.

    Docker와 같은 사운드는 올바른 도구가 아닙니다. 본격적인 샌드 박스로 사용하지 않으려 고했기 때문에 (적어도 내가 읽은 것을 토대로). 왜 당신은 더 완전한 VirtualBox 접근 방식을 사용하지 않습니까? 적어도 그러면 로그인 뒤에 가상 시스템을 잠글 수 있고 (다른 사람의 컴퓨터에 물리적 인 설치가 잠길 수있는 한) 격리 된 암호화 된 파일 시스템과 전체 9 야드를 실행할 수 있습니다.

    당신은 가볍고 열리거나 뚱뚱하고 닫을 수 있습니다. 나는 "가볍고 닫힌"옵션이 있다는 것을 모른다.

  5. ==============================

    5.나는 정확히 같은 문제가있다. 현재 내가 발견 할 수 있었던 것은 울부 짖었다.

    나는 정확히 같은 문제가있다. 현재 내가 발견 할 수 있었던 것은 울부 짖었다.

    A. 망명 (예 : 망명)

    B. Scone (https://sconedocs.github.io)

  6. from https://stackoverflow.com/questions/26006727/encrypted-and-secure-docker-containers by cc-by-sa and MIT license