Abstract
When building a software system out of software components, the composition is not simple because of the complexity caused by diverse versions, digital signatures, static type information, and off-the-shelf components from various vendors. Well-established linking policies are one of the best solutions to solve the complexity problem at linking time. Secure Linking (SL) enables users to specify their linking policies which can be enforced at link time. Secure Linking framework is a framework based on a higher-order logic in order to help build a SL system. This paper shows that the Secure Linking logic is expressive enough to describe a real-world component composition system, the linking protocol of.NET. The paper also demonstrates the advantage of the logic-based linking framework by discussing the weakness of the code signing protocol in.NET which was found while we encoded the assembly linking system of.NET.
소프트웨어 컴포넌트를 이용하여 시스템을 구성하는 경우 그리 간단하지 않은데, 그것은 링크 과정 자체가 서로 다른 버전들과 디지털 서명, 정적인 타입 정보나 네트워크로 전송된 소프트웨어, 그리고 서로 다른 판매자에 의한 컴포넌트들을 모두 포함하는 복잡한 과정이기 때문이다. 만약 링크과정에 적용될 수 있는 링크 정책을 수립하고 이를 링크 시에 적용할 수 있는 방법이 있다면 이러한 복잡함을 해결하는 좋은 수단이 된다. 시큐어 링킹(Secure Linking)은 사용자가 안전한 링크를 위한 정책을 만들고 이를 링크 시에 적용할 수 있도록 해주는 새로운 링크 프로토콜이며, 시큐어 링크 프레임워크(Secure Linking Framework)는 시큐어 링크 시스템 구현을 위한 논리적 프레임워크이다. 본 논문에서는 시큐어 링크 프레임워크를 이용하여 마이크로 소프트의 닷넷(.NET)에서 사용되는 어셈블리의 링크 과정을 설명함으로써 시큐어 링킹이 실제로 사용되는 링크 시스템을 나타낼 수 있을 만큼 풍부한 표현력과 실용성을 가지고 있음을 증명한다. 또한 이 과정에서 나타난 어셈블리 코드 서명의 문제점에 대한 논의를 통해서 논리에 기반을 둔 링크 프레임워크가 가지는 장점을 보이고자 한다.