CWN(CHANGE WITH NEWS) - ′수학과 코드의 만남′ 함수형 프로그래밍 언어 F*

  • 구름많음고창군10.5℃
  • 흐림밀양2.2℃
  • 흐림영주0.0℃
  • 흐림양평-0.1℃
  • 구름많음강릉2.9℃
  • 구름조금강진군2.2℃
  • 흐림추풍령0.8℃
  • 구름많음임실6.4℃
  • 구름많음김해시5.0℃
  • 흐림장수8.7℃
  • 맑음제주11.1℃
  • 구름많음흑산도12.7℃
  • 흐림서울1.9℃
  • 흐림함양군-0.5℃
  • 흐림금산4.6℃
  • 구름많음통영5.6℃
  • 흐림대관령0.2℃
  • 구름많음북창원5.4℃
  • 구름많음북부산4.2℃
  • 흐림철원-3.1℃
  • 흐림의성-2.1℃
  • 흐림백령도2.3℃
  • 흐림경주시-1.4℃
  • 비북강릉1.6℃
  • 구름많음진주1.5℃
  • 흐림춘천-3.2℃
  • 구름조금울진5.4℃
  • 맑음영천-1.1℃
  • 흐림상주1.0℃
  • 구름많음성산14.7℃
  • 흐림군산7.8℃
  • 흐림전주8.4℃
  • 흐림부안10.8℃
  • 구름많음울산5.4℃
  • 구름조금장흥2.2℃
  • 구름많음구미-1.3℃
  • 흐림청송군-3.5℃
  • 구름많음순천0.9℃
  • 구름많음양산시4.6℃
  • 구름많음남원3.2℃
  • 흐림대전2.7℃
  • 구름많음창원5.9℃
  • 흐림보은1.3℃
  • 흐림수원3.1℃
  • 흐림서귀포15.2℃
  • 흐림서산8.0℃
  • 흐림천안2.1℃
  • 흐림원주-0.6℃
  • 구름많음남해3.9℃
  • 구름많음동해2.5℃
  • 흐림부여2.2℃
  • 흐림파주-1.7℃
  • 흐림영월-2.0℃
  • 흐림울릉도7.3℃
  • 구름많음고창10.1℃
  • 흐림충주0.6℃
  • 흐림동두천-1.0℃
  • 구름많음순창군3.1℃
  • 구름많음영광군9.9℃
  • 흐림안동-0.2℃
  • 흐림광주6.5℃
  • 구름많음목포12.4℃
  • 구름많음해남13.2℃
  • 비 또는 눈북춘천-3.9℃
  • 구름조금완도5.3℃
  • 흐림서청주0.4℃
  • 흐림홍성10.5℃
  • 구름많음속초2.3℃
  • 흐림산청-0.8℃
  • 흐림제천-0.9℃
  • 구름많음청주2.4℃
  • 구름조금보성군1.9℃
  • 흐림의령군-0.2℃
  • 흐림홍천-2.3℃
  • 흐림이천0.2℃
  • 구름많음거제5.5℃
  • 구름많음고흥3.8℃
  • 구름많음정읍10.9℃
  • 구름조금포항2.4℃
  • 흐림문경0.3℃
  • 흐림합천-1.1℃
  • 흐림거창-1.2℃
  • 흐림대구0.0℃
  • 구름많음여수5.5℃
  • 흐림강화-0.3℃
  • 흐림부산11.4℃
  • 구름많음진도군13.8℃
  • 흐림봉화-2.0℃
  • 구름많음인제-4.1℃
  • 구름많음영덕2.0℃
  • 구름많음태백4.4℃
  • 구름많음광양시4.6℃
  • 흐림정선군-3.2℃
  • 흐림인천3.0℃
  • 흐림보령10.6℃
  • 흐림세종1.5℃
  • 맑음고산15.0℃
  • 2026.01.15 (목)

'수학과 코드의 만남' 함수형 프로그래밍 언어 F*

오영주 / 기사승인 : 2022-05-15 16:34:44
  • -
  • +
  • 인쇄

코드는 다양한 시점에 다양한 방식으로 실행되는 여러 함수가 복잡하게 얽힌 매듭이다. 따라서 함수형 프로그래밍의 몇 가지 중심 개념을 사용해 수학적으로 증명 가능한 코드를 생산하는 언어를 설계할 수 있다.

마이크로소프트 리서치와 프랑스 국립 연구 센터인 인리아(Inria)에서 진행 중인 프로젝트인 F*('F스타'라고 읽음)는 프로그램 검증 기법을 지원하는 함수형 프로그래밍 언어다. F*로 코드를 쓰고 검증한 다음 타겟 언어 및 환경으로 내보낸다. 이미 성숙도가 충분히 높아서 F* 자체를 개발하는 언어로 사용하고 있으며 OCaml에서 컴파일된다. 깃허브의 개발 커뮤니티도 활발하다.

F*는 프로젝트 에베레스트(Project Everest)에서 안전하고 검증된 HTTPS 버전을 개발하는 데 이미 쓰이고 있다. 이는 프로토콜의 중요한 부분으로, 애플리케이션과 HTTPS 내부 사이를 잇는 다리 역할을 한다. 프로젝트 에베레스트는 F*를 통해 레코드 레이어 자체가 안전함을 보장할 수 있었고, 그 결과로 얻은 miTLS 코드는 마이크로소프트의 QUIC HTTP 표준 구현의 일부를 구성한다.

F*은 HACL*(High Assurance Cryptographic Library) 및 베일크립트(ValeCrypt) 라이브러리의 일부로 일반적인 암호화 라이브러리의 검증된 버전을 생성해 코드를 C 및 어셈블리로 내보내는 데 사용한다. HACL* 및 베일크립트 위에 위치하는 에버크립트(EverCrypt) 암호화 공급자에도 사용돼 프로세서 및 실행 환경을 기준으로 알고리즘의 최적 구현을 선택한다. 애저 컨피덴셜 컨소시엄(Azure Confidential Consortium) 프레임워크와 리눅스 커널에 사용되는 와이어가드(WireGuard) VPN에도 사용된다.

그 외에 F* 구현의 혜택을 얻은 툴에는 시그널(Signal) 보안 메시징 프로토콜의 웹어셈블리(WebAssembly) 구현, 마이크로컨트롤러 펌웨어에서 실행되는 부팅 툴인 DICE(Device Identifier Composition Engine)의 검증된 버전이 있다. 깃허브에서 프로젝트 에베레스트의 작업 대부분을 찾을 수 있으며 소스 코드와 리눅스 도커 이미지는 매일 빌드된다.

F*는 비주얼 스튜디오 코드를 포함한 대부분의 주요 편집기를 위한 툴을 제공한다. F*로 코드를 쓰고 검증기를 통해 실행하고 사용할 준비가 되면 타겟 언어로 내보낸다. F*를 만든 이들은 이 언어를 함수적 정확함을 제공하고 보안 속성 및 리소스 사용을 관리하는 데 초점을 두는 “의존적 형식 지정(dependently typed)” 언어라고 설명한다. F* 위키는 시작할 때 도움이 되는 리소스를 제공하며 F* 프로그래밍을 위한 온라인 가이드도 있다.


[저작권자ⓒ CWN(CHANGE WITH NEWS). 무단전재-재배포 금지]

최신기사

뉴스댓글 >

- 띄어 쓰기를 포함하여 250자 이내로 써주세요.
- 건전한 토론문화를 위해, 타인에게 불쾌감을 주는 욕설/비방/허위/명예훼손/도배 등의 댓글은 표시가 제한됩니다.

댓글 0

Today

Hot Issue