[블로그 포스트] 카르다노 코드 너머로 (카르다노 하스켈 라이브러리 의존성 감사)

[블로그 포스트] 카르다노 코드 너머로 (카르다노 하스켈 라이브러리 의존성 감사)

2018년 7월 8일 Steve Wagendorp

2017년 12월, 카르다노 재단은 제 3자인 카르다노 결제 레이어의 독립적인 감사를 수행하기 위하여 유명한 하스켈(Haskell) 소프트웨어 개발 및 DevOps 컨설팅인 FP Complete 와의 제휴를 맺었습니다. 감사 대상에는 카르다노의 개발팀인 IOHK의 코드, 기술 문서 및 운영 절차가 포함됩니다.

코드 리뷰 및 엔지니어링 관행에 대하여 이러한 독립적이고 철저한 접근법을 수행하는 목적은 연구 중심, 과학적 우수 사례 및 엄격한 피어리뷰를 카르다노의 개발 철학과 일치시키기 위함입니다.

FP Complete 는 성공적으로 임무를 이행해왔으며 많은 카르다노 감사 보고서를 작성하였습니다. 여기에는 프로젝트 내에서 사용하기 위한 상세한 사감사(Private Audit; 즉 여기서는 FP Complete가 보안에 민감한 문제들을 강조함)와 일반 공개를 위한 수정본인 '공개’버전이 포함됩니다. 포괄적이면서도 매우 구체적인 이러한 감사 보고서는 프로젝트 및 코드 베이스의 여러 측면을 다루며 이런 구체적인 감사 작업은 계속 진행됩니다.

감사 프로세스는 카르다노 소프트웨어의 개발 및 엔지니어링 관행을 추적하며 이 프로세스는 프로젝트가 앞으로 출시될 때까지 계속 진행합니다. 감사 일정은 마감일이 계획되어 있지 않으며 로드맵에 설명된 완전한 분산화 및 기능의 프로젝트 핵심 목표가 달성될 때까지 계속 진행할 예정입니다. 최근 공개 감사 보고서 출시 및 앞으로 진행될 출시 프로세스에 대한 업데이트가 조만간 공지될 예정입니다.

이번 블로그 포스트를 통해서는 카르다노 재단이 현재 가장 열중하고 있는 내용에 대해서 공유코자 합니다. 이는 기존 프로세스를 보완하고 확장하는 감사 이니셔티브의 연장이며 이것이 카르다노와 하스켈 커뮤니티에 심오한 가치를 제공할 것이라고 믿습니다.

카르다노 하스켈 라이브러리 의존성 감사

소프트웨어는 가장 높은 수준의 보증을 통해 설계하고 개발할 수 있지만 코드가 라이브러리에 의존하는 방식으로서 여전히 취약성을 내포하고 있습니다. 따라서 우리는 이러한 라이브러리 의존성을 향후 감사에서 특별히 중시할 영역으로 식별했습니다. 카르다노 코드베이스에 존재하는 소프트웨어 라이브러리와 특정 라이브러리 의존성이 가지는 중요성은 이 게시물에서 자세히 다룰 주제입니다.

대략적으로 말해서 소프트웨어 라이브러리는 잘 정의된 인터페이스 집합에서의 일반적인 기능 및 동작을 구현하기 위해 많은 프로젝트에서 사용되는 리소스(코드 및 설명서) 모음입니다. 라이브러리는 독립적인 여러 프로그램들에서 재사용 가능한 구성 요소를 제공하고 모듈 방식에 의한 코드 공유를 장려함으로써 코드의 배포를 촉진합니다.

소프트웨어 개발에 대한 이런 모듈식 방식은 잘 정립되어 있으며 오픈 소스 소프트웨어 개발 프로세스의 기초적인 부분으로 협력 개발 및 군중 기반 전문 지식의 결과에 따라 효율성, 보안 및 상호 운용성 향상을 가능하게 합니다.

소프트웨어 라이브러리의 사용이 오픈 소스 소프트웨어 프로젝트에만 국한되지 않는다고 해도 라이브러리 사용과 오픈 소스 소프트웨어 이동 간에는 깊은 관계가 있습니다. 오픈 소스 소프트웨어 이니셔티브를 지원하는 기반으로서, 우리는 근본적으로 이 오픈 소스 철학과 같은 태도를 가지며, 이를 개선하기 위한노력에 대한 지원을 추구합니다.

라이브러리 유지 관리는 진행중인 개선 프로세스의 중요한 부분이며 버그가 해결되고 새로운 기능이 개발되고 일반 코드가 프로그래밍 언어로 개발할 수 있도록 하는 데 필요합니다.

일반적으로 라이브러리에는 패키지를 정기적으로 관리하기 위한 개인 관리자가 있으며, 경우에 따라 라이브러리 유지 관리에 대한 감독을 제공하는 공식 기관이 존재할 수도 있습니다. 개인 관리자는 개별적인 문제를 처리해야 하며 이러한 관리자는 종종 해당 라이브러리에 대한 결정을 일방적으로 결정할 권한이 있습니다.

이로부터 문제가 제기됩니다 … 그렇다면 라이브러리를 어떻게 유지 관리해야 하며 모범 사례는 무엇일까요?

오늘날 개발자는 주어진 문제에 사용할 올바른 라이브러리를 식별할 수 있어야 합니다. FP Complete의 코드 감사에는 필요없이 많거나 중복된 솔루션을 식별하고 불필요한 종속적 사용을 강조하며 라이브러리의 성숙도를 평가하고 라이브러리 유지 관리의 질과 빈도를 검토하고 미해결된 문제를 추적하여 라이브러리의 적합성에 대한 분석 및 검토가 포함됩니다.

이 고수준 분석뿐아니라 이러한 라이브러리와 그의 잠재적 취약점에 대한 철저한 코드 검토가 현재는 FP Complete의 별도의 공식 감사로 수행되고 있습니다. 여기에는 자동화 검사 방법, 수동적인 코드 검토 및 하스켈에서의 기존 정적 분석 도구의 활용이 포함됩니다 (적어도 컴파일러 자체만은 아닙니다!). FP Complete팀은 수행한 일부 기술들에 대하여 이런 감사가 계속되기 때문에 FP Complete팀으로부터 더 많은 것을 결과물을 얻을 수 있기를 기대합니다.

카르다노-sl 코드베이스에는 현재 372 개의 개별 라이브러리 의존성이 있으며, 모두 코드 감사에 의해 검토 중입니다.

따라서 FP Complete의 코드 감사는 하스켈 커뮤니티에서 더 많이 사용되는 라이브러리와 코드를 검토하며 경우에 따라 여러 버전의 동일한 라이브러리에 널려 있는 코드를 검토할 수 있는 특별한 기회를 제공합니다.

일반적으로 하스켈 커뮤니티와 오픈 소스 소프트웨어 운동에 대한 계약에 따라 카르다노 재단은 FP Complete 와 함께 카르다노의 개발을 보다 구체적으로 검토하면서 다양한 아스켈 라이브러리를 검토하는 정기 감사 보고서를 발표할 예정입니다.

이 감사 자료의 공개가 더 많은 하스켈 개발자 커뮤니티에 도움이 되고, 일반적으로 사용되는 코드에 대한 공개 토론을 장려하고, 안전 및 보안 문제에 대한 종속성을 조사하는 프로세스를 지원하고 장려할 수 있기를 바랍니다.

첫 번째 보고서는 여기 cardano.org 에서 확인하실 수 있으며 이 보고서에서는 높은 수행성과 순수한 바이너리 직렬화를 제공하는 하스켈 바이너리 패키지 를 검토합니다.

바이너리 패키지는 또한 가장 일반적으로 사용되는 네이티브 하스켈 컴파일러인 GHC의 핵심 라이브러리 중 하나로 광범위한 영향을 미치면서 하스켈 커뮤니티에서 널리 사용됩니다. 바이너리 패키지는 다음 분야의 카르다노 프로젝트에서 사용됩니다.

카르다노 재단이 광범위한 블록 체인 커뮤니티를 지속적으로 지원함에 따라 재단은 이러한 추가 라이브러리 감사 보고서를 후원함으로써 생태계 보호의 역할을 수행할 뿐만 아니라 카르다노 프로젝트가 모든 사람들의 이익을 위해 강력하고 안전한 공용 블록 체인 기술을 구축할 수 있도록 하는 하스켈 및 함수 프로그래밍 커뮤니티에 강력하고 긍정적인 기여를 수행 합니다.

원문 바로가기