2005년 2월 11일-이글루스에서 쓴 글

 

그동안 이 글을 쓰지 못한 이유는 자신감 상실이었다.

해야할 리스트는 있지만, 하지못함과 능력이 온전치 못해서 오는 무능함이다. 발걸음 하나하나 옮기는 게 쉽지가 않다. 최선을 다해야 함에 불구하고 그러하지 못함에 오는 괴리감은 이글루스를 쳐다보지도 않는 것으로 표현이 되는 거 같다.

잡담은 여기서 끝낸다.

Extensible Security Architectures for Java 를 읽은지 거의 3주가 넘어갔다. 이 논문은 프린스턴 대학교에서 나온 논문이다.

자바는 모든 프로그램에 제한적인 보안정책을 사용하고 있다. 이보다 좀더 확장된 보안모델을 이 논문에서는 3가지부분으로 제한하고 있다. 이는 capability system, name space management, stack instrospection 으로 나누어서 해결책을 제시하고 있다.

자바에서는 Sandbox Model 이라는 보안정책을 사용하고 있다. 즉, local과 remote 코드로 분류하고 이것을 구분하는 것은 ClassLoader가 담당을 하고, applet인지 system 메소드인지 구분하기 위해서 stack frame의 수를 계산함으로써 (stack inspection) classloader의 depth를 이용하는 기법을 말한다.
(정확하게는 잘 몰라서, 공부해야될듯.. 대충만 알고 넘어간다.)

해결방법으로 capability system을 먼저 제시하고 있다. 즉, 제어되는 system resource에 대한 위조할수 없는 포인터를 의미한다. 인터페이스를 제공하여 interposition을 implement한다.

두번째, stack introspection이다. 이는 익스플러어나 네트스케이프에서 제공되는 것으로서, 자바의 기본 기능을 확장한다. 파일과 같은 시스템 자원을 보호할때, 자원에 대해서 target이 정의되고, 접근전에 System이 target에 대한 권한을 체크하며, 권한에 대해서 enable, disable을 통한 자원 접근 제어 방법을 제시한다.

세번째, name space 관리로서, Runtime때의 클래스를 name space에서 제거 혹은 다른 특정 클래스로 매핑하도록 하는 것이다. Classloader를 수정하여 동적으로 제어가 가능한 방법을 제시한다.

이들 모두가 성능과 구현면에서 어느정도의 효과를 볼지는 상당히 미지수로 보이는 게 흠이다. 기존의 자바 메커니즘의 한계를 넘어가는 stack inspection은 괜찮아 보인다.

Posted by '김용환'
,