자바 샌드 박스 모델의 보안
3 페이지 1
의 도입 이후, 자바 기술은 보안 문제에 중요한 역할을 부여하고있다. 혼합 결과와 있지만, 디자이너는 개발자가 사용할 언어의 측면에서 직접 구현된 보안 시스템을위한 플랫폼을 제공하기 위해 노력했습니다.
진화와 JVM의 섬세한 연속 과정에서이 문서에서 우리는 보안 모델의 진화에 초점을 맞출 것이다, 모바일 독립형위한 가장 중요한 인프라 중 하나로, 웹 등을되고, 일반적으로 코멘트, 샌드 박스라는 설계 오류 및 현재 상태.
전제 조건
이 문서는 그들이 완전히 주제의 독자 fasts 자바 프로그래머를 경험 여부, 모두를위한 것입니다. 일부 고려 사항은 이미이 언어와 경험을 가지고있는 사람들에게 더 이해할 수있을 것입니다 그러나,이 문서의 독서는 독자에게 적합합니다.
샌드 박스
원래 모델
샌드 박스로 알려진 오리지널 모델은, 외딴 고도 제한에 잠재적으로 악성 코드 범위를 제한하도록 설계되었습니다. 자바는 그 탄생 이후로, 네트워크에 크게 중심이었고,이 고려 사항은 중요한 안전 문제로 클라이언트를 노출 코드가 원격에서 직접 다운로드한하는 실행 모델을 고안하는 이끌었다.
첫 번째 구현에서는 그림과 간략하게 구조와 같이 샌드 박스는 대략 로컬 및 원격 코드 코드 구분 : 그러한 예를 들어, 같은 '긴급'시스템의 모든 리소스에 대한 첫 번째 즐기는 모든 권한을, 파일 시스템과 다양한 디바이스, 원격 코드 한편, 동일한 샌드 박스에 의해 매개 자원에 대한 접근 제한했다 : 애플릿, 지금은 대부분의 웹보기에서 사라진, 내가 가장 잘 알려진 예를 들어왔다.

이 모델은 서로 다른 수준의 보안 메커니즘의 집합을 포함합니다.
우선, Java는 타입 - 안전, 즉 제어 변수와 그 형식 (정수, 부동 소수점, 문자열, 등 ..) 사이에 명시적인 관계가있다.
언어와 같은 C의 낮은 / 중간 수준에서 프로그래밍 않은 사람 및 C + + 얼마나 많은 어려움이 체크를 피할 수있어 같은 특징이 있습니다 정수 또는 포인터에 대한 논리 타입으로 공극 포인터와 같은 유형 간의 암시적 변환의 집합이 동시에 그 언어는 동일하게 초보자와 전문가 모두에게 최선을 다하고, 프로그래밍 에러의 주요 원천이된다.
개발자 compiessero의 잘못 들어와서는 Sun에 디자이너가 단과 같은 틈새 시장이나 대학 수준의 언어에서 발견 지금까지 몇 가지 측면을 도입하는 가능성을 최소화하려면, 예를 들어, 런타임에 자동 메모리 관리 (가비지 수집) 및 컨트롤 액세스 메모리 (포인터, 배열 요소 등 ...).
보호의 두 번째 단계는 가상 머신에 의해, 컴파일러와 런타임에 의해 보장됩니다. 이것은 적절한 사용 권한을 실행하여 바이트 코드는, 자바 VM의 어셈블러가 실행되는 것을 보장합니다. 특히, 두 가지 핵심 구성 요소 ClassLoader와 SecurityManager는 VM의 여러 인스턴스간에 간섭을 피하기 위해 로컬 이름 공간을 정의하고 중요한 리소스에 대한 액세스 컨트롤을 관리할 수 있습니다.
JDK 1.1 - 코드 서명
제시된 모델은 시스템 리소스에 대한 액세스, 고객의 승인을하는 경우 전자 서명을 첨부 원격 응용 프로그램을 허용하는 신뢰할 수있는 코드의 개념을 도입했다 JDK의 첫 번째 업데이트 (버전 1.1)에 매우 유연합니다. 아래 그림에 간략하게 구조 표시된 솔루션은 이전 아키텍처의 해킹보다 조금 더이므로 다음 릴리스에서 완전히 재작 필요합니다.







