테크 #백서리뷰#기술분석#tech
애플 크립토킷의 정확한 용도는?
애플, WWDC 2019에서 크립토킷 소개...블록체인 업계 관심
전문가 “하드웨어 월릿 개발 보단 앱 보안 향상 용도...블록체인 업계엔 좋은 신호”
강민승 기자
등록일: 2019-06-14  수정일: 2019-06-16

세계개발자컨퍼런스(WWDC) 2019에서 애플리케이션 보안 성능을 향상시키고 앱개발에서 암호화 기능을 손쉽게 적용할 수 있도록 돕는 애플 크립토킷이 소개됐다. 애플 크립토킷은 애플의 암호화 프레임워크로 스위프트 API, 암호화 알고리즘, 시큐어 엔클레이브 등으로 이뤄져 있고 iOS 13부터 적용된다. 업계에서는 애플 크립토킷이 아이폰의 암호화폐 하드월렛 등 블록체인에 사용될 가능성을 두고 의견이 분분하다.


발표에서 제시된 애플 크립토킷은 블록체인을 위한 하드월렛 기능보다는 애플리케이션의 보안성 향상에 중점을 두고 있다. 프레드릭 제이콥스 애플 암호화엔지니어링팀 보안엔지니어는 애플 크립토키트를 소개하며 “애플의 크립토킷은 하드웨어 수준에서 작동하는 로우레벨 API로 앱을 제어하는 여러 암호화 프로토콜을 구현할 수 있다. 이로써 애플리케이션의 보안 취약성 상당수를 효과적으로 극복할 수 있을 것”이라고 강조했다. 


애플리케이션의 시큐어 코딩 손쉽게, 애플 크립토킷

실제로 지금까지 개발자가 애플의 암호화 기능을 소프트웨어에 추가하려면 복잡한 코딩을 거쳐야 했다. 예를 들어 애플리케이션에서 메시지 암호화를 수행하려면 버퍼를 먼저 할당하고 카운팅값을 나타내는 넌스 등의 변수를 포인터로 처리해 매개변수에 담아야 했다. 모바일 개발에 복잡한 포인터가 많이 사용되는 이유는 메모리 위치를 정확히 참조하고 메모리 영역의 보안을 높이기 위함이다. 하지만 이번 소개된 애플 크립토킷을 사용하면 사진 하단에서 보는 바와 같이 포인터를 직접 사용하지 않고도 암호화하는 코드를 단순히 한줄로 작성해 넣을 수 있게 된다. 즉 애플리케이션의 보안성을 향상시킬 시큐어 코딩이 훨씬 간단해지는 셈이다. 

[캡션 : 버퍼를 할당하고 넌스를 포인터로 처리해 매개변수에 넣고 암호화하는 모습(상단). 애플 크립토킷을 사용해 같은 내용을 한줄 코딩(하단). 출처=애플 개발자 홈페이지]


애플 크립토킷을 사용하면 애플리케이션에서 암호화키를 생성하는 과정도 간소화된다.


[캡션 : 단위를 비트로 치환하고 랜덤 숫자를 사용해 버퍼에 할당하는 과정, 키를 사용한 후 메모리에서 지우는 작업(상단). 이같은 키생성 과정 애플 크립토킷 코드 한줄로 표현(하단). 출처=애플 개발자 홈페이지]


시큐어 엔클레이브로 터치아이디, 페이스아이디를 앱에서 사용가능

애플 크립토킷을 사용하면 A7 칩셋 이후의 아이폰 모델 등에 적용된 시큐어 엔클레이브를 사용할 수 있게 된다. 시큐어 엔클레이브는 메인프로세서와 분리된 공간에서 암호화된 메모리를 사용하고 하드웨어에 기반한 랜덤 숫자를 생성하는 기능을 갖고있는 마이크로프로세서를 말한다. 시큐어 엔클레이브를 사용하면 하드웨어에 기반해 키를 관리할 수 있게 된다. 실제로 애플의 터치 아이디, 페이스 아이디, 개인키 등 기밀 정보는 시큐어 엔클레이브를 통해 저장, 관리된다.


[캡션 : 시큐어 인클레이브가 있는 디바이스인지 확인하고 애플리케이션에서 P256(secp256r1) 타원곡선 알고리즘을 사용해 개인키를 생성하고 서명하는 동작을 구현한 코드. 출처=애플 개발자 홈페이지]

애플 크립토킷을 사용하면 애플리케이션 내부에 필요한 인증 절차를 커스텀화 할 수 있다. 송금 애플리케이션에 필요한 인증을 터치아이디나 페이스아이디 등으로 구현할 수도 있다.


[캡션 : 코드는 인증값이 담기는 과정. 구현된 코드에는 .userPresence 변수에 터치아이디로 부터 받은 인증값을 사용하고 있다. 여기에 페이스 아이디를 사용할 수도 있다. 출처=애플 개발자 홈페이지]


애플 크립토킷 ‘비트코인, 이더리움 서명 알고리즘 지원없다’

애플 크립토킷에는 해시함수, 대칭키 기반 암호화 기술, 공개키 기반 암호화(비대칭 암호화), 이전 레거시 모듈 등 암호화 기능이 다수 탑재돼 있다. 이중 대부분은 커먼크립토 때부터 지원되는 스펙이며 크립토킷에서는 스위프트 API를 사용해 애플리케이션을 설계할 수 있어 적용 범위가 더욱 확장된다.


[캡션 : 애플 크립토킷 아키텍쳐. 출처=애플 개발자 홈페이지]


애플 크립토킷을 더 잘 이해하기 위해서는 지갑과 서명 기술에 대한 이해가 먼저 필요하다. 블록체인에서 거래는 주문서 내용을 담은 트랜잭션 메시지를 토대로 개인 서명을 생성하는 연산과정이다. 서명에는 사용자의 개인키가 사용된다. 개인키는 블록체인의 분산데이터베이스에 접속하는 열쇠로 토큰을 주고받고 그 내역을 수정할 수 있다. 지갑에는 지원되는 암호 알고리즘이 필수적으로 요구된다. 만약 지갑 내부에서 해당 토큰이 요구하는 서명 알고리즘이 없으면 거래 서명을 생성하는 연산도 애초에 불가능해진다. 즉 알고리즘이 없다면 장부 열쇠는 있지만 계산기가 없어 암호화폐 공공 장부를 수정하지 못하는 셈이다. 반대로 지갑에 탑재된 알고리즘이 많으면 여러 종류의 토큰을 지원할 수 있게 된다.


애플 크립토킷의 아키텍쳐에 따르면 개인키, 공개키를 생성해 서명에 사용하는 연산에 P-256, P-384, P-512 등의 타원곡선을 암호화 함수로 사용할 수 있다. 하지만 애플 크립토킷은 비트코인과 이더리움의 지갑의 서명에 필요한 연산을 현재 지원하기 어렵다. 특히 명칭이 비슷해 이번 발표의 뜨거운 감자로 꼽히는 P-256 커브는 SECP256R1라고도 불리며 미국국립표준기술연구소(NIST)에서 만들었다. 비트코인과 이더리움의 트랜잭션 서명에 사용되는 SECP256K1 곡선과 명칭은 유사하지만 둘은 완전히 다르다.


실제로 P-256 커브는 y^2=x^3-3x+b 타원곡선의 상수값 b에 임의의 랜덤값을 사용하는 것으로 알려져 있다. 랜덤값은 NIST에서 곡선을 만든 당사자만 알 뿐 알려진바가 현재 없다. 일각에서는 이같은 랜덤 메커니즘은 곡선에 백도어를 만들어낼 수 있다는 지적도 제기됐다. 반면 비트코인과 이더리움에 사용되는 SECP256K1 곡선은 함수의 랜덤 상수값을 예측가능한 값으로 바꾼 형태며 y^2=x^3+7 곡선을 사용한다. 한편 이더리움은 타원곡선의 상수값을 바꾼 BLS 커브로 기존 커브를 대체해 사용할 계획이다.


“암호화폐 지갑 개발에 쓰이려면 암호 알고리즘, 실행 권한 더 필요해”

애플 크립토킷을 사용하면 응용프로그래밍인터페이스(API)를 통해 보안 기능을 강화한 애플리케이션을 짤 수 있게 된다. 하지만 실제로 암호화폐 지갑을 만들수 있는 스펙에는 부족하다는 지적도 나온다. 우리엘 젠고월릿 최고경영자(CEO)는 “애플 크립토킷에서는 암호화폐에 현재 사용되는 SECP256K1 등의 타원곡선을 지원하지 않으며 시큐어 엔클레이브에서도 개인키를 내보내거나 외부로부터 받아오는 기능이 현재 없어 지갑으로써 쓸모가 사실상 없다"고 평했다. 젠고월릿은 코어 지갑 기술과 암호화 기법을 개발해 개인키 없이 암호화폐를 저장, 송금할 수 있는 생체인증(FIDO) 지갑이다.


암호화폐 지갑을 만들기 위해서는 지갑 코어에서 비트코인 등 해당 암호화폐에 적용된 서명 알고리즘의 지원이 필수적인데 애플 크립토킷에서 지원하는 암호화 알고리즘이 현재 쓰이는 비트코인과 이더리움 등 여러 암호화폐와 호환되지 않아 대다수 지갑으로써 충분하지 않다는 설명이다. 뿐만 아니라 시큐어 인클레이브를 통해 키를 관리할 수 있도록 하지만 외부지갑과 키를 주고 받을 수 없어 사용성이 떨어진다는 설명이다.


그렇다고 하드웨어 월릿으로써 가능성이 아예 없는 건 아니다. 실제로 이오스(EOSIO)의 경우 애플의 기존 버전 암호화 프레임워크인 커먼크립토 프레임워크에서도 이오스허브 등 모바일 지갑을 만들 수 있었다. 실제로 이오스허브는 기존 R1 곡선에 기반한 개인키를 시큐어 엔클레이브의 암호화 메모리에 저장하는 방식으로 동작한다. 이는 이오스의 서명 알고리즘이 SECP256K1 곡선과 SECP256R1 곡선 둘을 애초에 모두 지원하기 때문에 가능했다. 만약 애플 크립토킷에 서명 알고리즘이 더 많이 탑재되면 이같은 암호화폐 하드웨어 월릿의 구현체가 더욱 많아질 것으로 기대된다.


우리엘 CEO는 “애플의 크립토킷 도입은 앞으로 업계에 긍정적인 변화를 가져올 것"이라고 내다봤다. 이번에 업데이트된 커브25519, 키 교환, HMAC 등의 기능은 보안성을 높이는 효과가 커 긍정적이라는 것이다. 커브 25519는 구글의 크롬브라우저, 애플 시스템, 오픈 SSH 등에서 보안성을 높이기 위해 사용되는 타원 곡선이다. 키 교환은 사용자 간 키를 실제로 주고받는 행위가 아닌 애플리케이션에서 키셋업에 필요한 데이터를 주고받아 대칭키 등 공유비밀값을 생성하는 메커니즘을 말한다. HMAC은 디지털서명을 검증하는 방식 중 하나로 거래메시지를 중간 변형이 있는지 해시알고리즘을 통해 확인하는 기능이다. 한편 애플 크립토킷에서 발표된 기능들은 현재 베타버전으로 제공된다.


[강민승 기자]


D.VIP 3기 투자 중급반
북마크
좋아요 : 1
공유
https://dstreet.io/news/view-detail?id=N20190614165712883284
URL복사
댓글 0
댓글쓰기
댓글 쓰기
D.VIP 3기 업계 입문반