Core Concepts
Cocoon은 Rust 언어와 컴파일러를 수정하지 않고도 정적 타입 기반 정보 흐름 제어를 제공하는 라이브러리이다. Cocoon은 Rust의 타입 시스템과 프로시저 매크로를 활용하여 비간섭성을 보장하는 효과 시스템을 구현한다.
Abstract
이 논문은 Cocoon이라는 Rust 라이브러리를 소개한다. Cocoon은 Rust 언어와 컴파일러를 수정하지 않고도 정적 타입 기반 정보 흐름 제어(IFC)를 제공한다.
Cocoon의 핵심 아이디어는 Rust의 타입 시스템과 프로시저 매크로를 활용하여 비간섭성을 보장하는 효과 시스템을 구현하는 것이다. 이를 통해 Cocoon은 고보안 값이 저보안 값에 영향을 미치지 않도록 보장한다.
Cocoon의 프로그래밍 모델은 다음과 같다:
- 비밀 값과 보안 레이블: 표현식과 변수는 정적 보안 레이블을 가지며, 높은 보안 레이블의 값은 Secret<Type,Label> 타입으로 감싸진다.
- 비밀 블록: 비밀 값에 접근하려면 lexically scoped 비밀 블록 내부에서만 가능하다. 비밀 블록은 보안 레이블을 명시하며, 이 레이블에 따라 읽기/쓰기 제한이 적용된다.
- 비밀 값 접근: unwrap_secret, unwrap_secret_ref, unwrap_secret_mut_ref 함수를 통해 비밀 값에 접근할 수 있다. 이 함수들은 블록의 보안 레이블보다 높지 않은 레이블의 값만 허용한다.
- 비밀 값 declassify: declassify() 메서드를 통해 고보안 값을 저보안 값으로 내보낼 수 있다.
Cocoon은 또한 비밀 블록 내부의 부작용을 제한한다. 부작용이 있는 함수 호출은 금지되며, 연산자 오버로딩과 역참조 강제 변환 등의 숨겨진 부작용도 차단한다.
Cocoon의 성능 평가 결과, 컴파일 시간은 증가하지만 애플리케이션 성능에는 영향이 없다. 또한 Spotify TUI 클라이언트와 Mozilla Servo 브라우저 엔진에 Cocoon을 적용하여 제한적인 기밀성 정책을 시행할 수 있음을 보였다.
Stats
Cocoon은 Rust 언어와 컴파일러를 수정하지 않고도 정적 타입 기반 정보 흐름 제어를 제공한다.
Cocoon은 Rust의 타입 시스템과 프로시저 매크로를 활용하여 비간섭성을 보장하는 효과 시스템을 구현한다.
Cocoon의 프로그래밍 모델은 비밀 값과 보안 레이블, 비밀 블록, 비밀 값 접근 및 declassify 등으로 구성된다.
Cocoon은 비밀 블록 내부의 부작용을 제한하며, 연산자 오버로딩과 역참조 강제 변환 등의 숨겨진 부작용도 차단한다.
Cocoon의 성능 평가 결과, 컴파일 시간은 증가하지만 애플리케이션 성능에는 영향이 없다.
Cocoon을 Spotify TUI 클라이언트와 Mozilla Servo 브라우저 엔진에 적용하여 제한적인 기밀성 정책을 시행할 수 있음을 보였다.
Quotes
"Cocoon은 Rust 언어와 컴파일러를 수정하지 않고도 정적 타입 기반 정보 흐름 제어를 제공한다."
"Cocoon은 Rust의 타입 시스템과 프로시저 매크로를 활용하여 비간섭성을 보장하는 효과 시스템을 구현한다."
"Cocoon의 성능 평가 결과, 컴파일 시간은 증가하지만 애플리케이션 성능에는 영향이 없다."