FDO: FIDO 디바이스 온보드 프로토콜 안내
<FDO 소개>
FIDO Device Onboard 에 대해 소개하고자 합니다.
IoT 즉 사물 인터넷하면 4차산업혁명 얘기도 많이하고 실제 IoT가 우리 실생활에서 많이 사용되고 있어 아직도 IoT에 대해서 핑크빛인 사람들도 많고, IoT가 뭐냐 이렇게 얘기하시는 분들도 많지만 실제로 어떤 트랜드라기 보다는 어떤 사물이 인터넷에 연결되어 있으면 다 무조건 IoT Internet of Things 라고 볼 수 있음
다시 말해서 어떤 기기가 있는데 그게 혼자서 동작을 한다면 IoT가 아니고 그게 네트웍이랑 붙어서 어떤일을 한다면 그것은 IoT라고 할 수 있겠습니다. 예를 들면 과거에 보일러로 단순 온도 조절하는 것들은 IoT가 아니지만 그것이 와이파이랑 붙어서 집 밖에서 제어를 하거나 이럴때 인터넷에 붙어 있으면 그것은 IoT기기가 됨
<FDO의 탄생 배경>
그런데 가장 문제가 이 기기가 만들어진 곳에서 부터 인터넷에 붙을때까지 그 구간이 생산자나 클라우드서비스에 따라서 많이 달랐기 때문에 거기에 대한 표준화 작업이 좀 필요하다고 생각해서 파이도에서 그것을 시도하게 됨
[FDO 스펙]
IoT 디바이스는 결국 Cloud 와 접속해야 서비스를 할 수 있고 디바이스의 순정성과 무결성을 어떻게 처리할 수 있는지 고민을 해야 하고 그래서 익명의 installer 에 대해서도 관계없이 Trusted installer와 같이 온보딩 할 수 있는 기술에 관심을 가지고 있고 기기 자체의 보안이라기 보다는 클라우드나 네트웍에 붙을 때 어떤게 활용될 수 있는지에 대한 기술임
그래서 인텔의 SDO(Secure Device Onboarding)을 사용해서 인텔의 자체기술중에서 표준 암호화 함수만 사용하고 기존 기술을 가능하면 재사용하여 사용도 제고하고 Device 자체의 문제는 TPM(Trusted Platform Module)로 해결함
이 기술은 좋지만 인텔이 원하는 방향으로 갔고 이 기술은 시사하는 바도 굉장히 크고 쓸모가 많은 표준이라고 생각함
[FDO 장점]
Fast, Scalable & Secure 하고 Device 프로비져닝 과 온보딩과 엑티베이션 기능이 있고 장점으로는 제로 터치가 가능하고
* 제로 터치란 중간에 가서 configuration 하지 않고 컴퓨터 연결해서 이런 것 하지 않고 네트웍에 꽂으면 온보딩 할 수 있고 빠르게 안전하게 만들수 있음
또 다른 특징은 Late-binding이고 이것은 디바이스 자체가 클라우드에 붙을 때 끝에 가서 붙는다는 얘기임
그래서 과거에는 제로터치를 하더라도 FDO가 없었다면 디바이스를 만들어서 유통 채널을 거친 다음에 클라우드에 붙을 때 특정 클라우드에 붙도록 되어 있었고 이제 FDO 를 사용해서 제로터치를 한 것은 똑같은 제품을 만들어서 유통 채널을 거친 후 맨 끝에 가서 바인딩(Late-Binding) 을 통해서 맨 마지막에 클라우드에 붙을 때만 클라우드의 어떤 특징에 따라 다르게끔 하고 그 과정에 대한 인프라스트럭쳐가 있어야 되는데 이것을 FDO 에서 다룸
그래서 late-binding을 위해서는 manufacturer의 크리텐셜이 살아있어서 끝까지 가야하고 그다음에 웨어하우스 같은 경우는 final destination이 뭔지 모르는 상태에서 디바이스를 웨어하우싱해야 하는데 어떤 유통과정을 겪던지 간에 그 유통에 대한 이력들이 살아있거나 아니면 그것이 관리되어야 함 그리고 그런 것들이 프로비젼닝할 때 flexible 하게 제공 되고 네트웍도 아까 클라우드란 말을 사용했지만 closed network 이 나 인트라넷 심지어는 폐쇄망이 되도 관계는 없고 아무튼 네트웍이랑 붙어서 뭔가를 서비스할 때 필요한 것들이 late-binding으로 나타나야 됨
<FDO 프로토콜>
FDO는 Ownership Voucher 란 것이 있어서 이게 바로 이력서 라고 생각하시면 되는데 이것이 크리덴셜을 가지고 있고 처음에 manufactorer가 크리덴셜이랑 디바이스에 대한 정보를 넣고 유통과정을 막 거치다가 보면 맨 끝에 가면 이 제품을 사는 오너가 생기는데 유통과정에서 이력들이 쭉 쌓이다가 끝에 가서 이 Owner는 결국에는 앞쪽에 있는 디바이스 크리덴셜하고 연결이 되야 하는데 그것을 연결해 주는 프로토콜을 FDO 프로토콜이라고 함
<FDO로 프로비전닝하는 과정>
어떤 디바이스의 넘버 시리얼키를 가지고 있다가 manufactor가 Ownership Voucher를 뿌리는데 실제 디바이스는 유통과정을 거쳐서 이동하다가 이 바우쳐들은 유통과정에서 쭉 살아남다가 그게 끝에 가면 타켓 클라우드 (Owner가 지정한 클라우드)나 응용시스템에 붙게 되고 FDO에서 얘기하는 랑데뷰 서비스랑 타켓 클라우드가 Ownership 바우쳐를 받을면 랑데뷰서비스랑 같이 연결을 해서 랑데뷰 서비스에게 이 디바이스에 대한 정보를 제공하게 되고 타켓 서비스는 그 다음에 디바이스를 기다리고 랑데뷰 서비스도 기다린다. 그럼 디바이스가 유통과정을 거쳐서 집으로 가서 언박싱을 하고 딱 열면 제일먼저 붙는 곳이 타켓이 아니고 랑데뷰 서비스에 먼저 붙는다
이때 랑데뷰 서비스가 여러가지가 있다면 이 디바이스가 지정한 랑데뷰 서비스에 대해서만 붙게 됨.
그런 다음에 랑데뷰 서비스가 아 너구나 너 이제 언박싱했네 이렇게 되면 그 다음에 너는 그러면 요 클라우드를 연결해 그리고 그 클라우드에 어떤 정보를 주고 그럼 디바이스는 클라우드에 붙게 되고 그럼 클라우드가 아 너구나 내가 지금까지 널 기다렸으니깐 late-binding하고 붙은 다음에 여러가지 왔다갔다하면서 여러가지 일을 하고 그 다음에 power on 하고 제대로 사용하게 되는 과정을 거치고 이게 바로 FDO를 활용한 프로비젼닝 과정임
<FDO 프로토콜별 설명>
그리고 FDO에서는 Transfer Owner 라는 프로토콜을 사용하는 3가지 TO0 , TO1, TO2 가 있고, 서버랑 붙을 때 이런 프로토콜들은 http, https 주로 https 를 사용해서 굉장히 안전하게 왔다갔다 하게 됨
[프로토콜별 설명을 하기전에 공인인증서 사용 방법]
제일 중요한 것은 생산자가 여기서 키페어를 생산해야 한다. 이 안에서 퍼블릭키 , 프라이빗키를 생성해가지고 그런것들은 아까 나온 TPM이나 Security 엔진 같은 곳에서 하고 있고, 좀 더 중요한 디바이스인 경우 예를 들어 이게 자동차 라던가 아니면 굉장히 중요한 것들은 생산자가 자기자신의 키페어를 생산하는 것은 조금 문제가 있어보여서 이런 것들은 보통 공인인증서를 사용하는데 공인인증서란 것이 인증기관에서 private key 와 publice key의 Randomness를 굉장히 안전하게 만들어주는 것이고 그래서 이것을 내려보내서 그 안에다 manufactoring info를 집어넣고 디바이스 내부에 이 크리덴셜 즉 public key , private key 같은 것을 안전하게 저장함
이 때 디바이스 생산자 정보(언제만들었는지 , 누가 만들었는지 등 )는 설정이 되어 있어야 하고 그래서 이 프로비젼닝 서비스같은 경우에는 보안을 강화해서 공인인증서를 사용함.
[DI 프로토콜]
IoT 디바이스 안에 여러가지 컴포넌트 들이 있는데 그런것들에 대해서는 어떻게 할 것이냐? 이것을 그냥 initialize 하는것을 DI (Device Initialization) 프로토콜의 단계에서 하고 이것은 Device Initialization 이라기 보다는 FDO 프로토콜의 late-binding에서 필요한 어떤 크리덴셜을 만드는 거라고 생각하면 됨
그래서 DI 프로토콜을 시작하기 전에 어떤디바이스간에 오퍼레이션 펌웨어가 있어야 하고 커뮤니케이션 프로토콜이 있어야 하고 그다음에 ROE (Restricted Operation Environment)-즉 제한된 운영 환경을 만족시키는 보안 모듈같은 것이 있어야 합니다. 이런 것들이 제대로 갖쳐져 있고 제대로 되어 있어야지 DI 프로토콜을 사용하기 용이 함
[TO0]
이렇게 해서 디바이스가 준비되면 디바이스는 쭉 유통을 흘러가고 Ownership 바우쳐가 나왔을 때 이쪽 Transfer Ownership 단계가 0 이라고 해서 TO0라고 하고 이것은 디바이스랑 관계가 없고 클라우드가 디바이스에 대한 정보를 받아서 랑데뷰 서버에 정보를 주는 단계를 TO0 라고 함
클라우드에는 바우쳐 정보도 , 공개키에 대한 비밀키 ,또 공개키 정보를 다 가지고 있고, 여기에 자기 IP 주소를 가지고 있어야 되고 , 랑데뷰 서비스는 적어도 ownership 바우쳐에 대한 생산자 공개키 정도는 가지고 있어야 되는데
서로가 함께 아 이 디바이스가 오겠구나 하고 OOS쪽에 알려주고 랑데뷰 서버는 나중에 이런 GUID를 가진 디바이스가 붙으면 오너에 대한 정보를 내가 전해줄게 하고 기다리고 있는 상황
[TO1]
디바이스를 Owner가 받아서 인터넷에 딱 꽂으면 랑대뷰 서버에 접속하고 접속이 되면 너 그렇지 않아도 기다리고 있었어 너 GUID가 이거지 서로가 verify를 하고 verify 과정을 통해서 id를 받고 그다음에 너는 이런 서버에 접속을 하면 돼 이렇게 해서 그 정보를 줍니다. 그래서 KT, SK, AWS 등 다양한 클라우드 서버에 붙을 수 있음
예를 들면 만약에 어떤 냉장고나 세탁기가 있다면 이 세탁기가 kt서버를 사용한 서비스가 있을 거고 아니면 sk서버를 사용한 서비스가 있을거고 해서 여러가지 디바이스가 여러가지 다른 서비스에 멀티풀로 붙을 수 있는 것도 가능하고
중고로 팔았을 때 그 오너쉽 바우쳐를 새로 만들어서 붙여 그 후 랑데뷰서비스랑 다시 붙여서 다른 오너가 사용할 수 있는 재사용도 가능함
[TO2]
랑데뷰서비스를 거쳐서 클라우드가 디바이스를 만나면 서로가 인증을 하고 서로 만났으니깐 새롭게 키를 만들자 해서 키 교환을 하고 디바이스에 있는 사용자 정보를 인식하고 Attestation 와 인증서를 제외하고는 모든 크리덴셜을 대체함 그 후 필요하면 펌웨어 업데이틀 한다든, 명령어를 실행한다든지, 어려가지 제반 명령어 수행 등 응용에 필요한 오퍼레이션을 하고
이렇게 해서 디바이스가 준비가 되고 그럼 서비스가 시작됨
~~~~ 좀 더 깊이 들어가면
생산자가 디바이스를 유통에 넘길때 이 Ownership Voucher에 publice key랑 이 디바이스의 id와 인포메이션을 해쉬한 private key를 집어넣고 유통에서는 자기 public key 가 있고 이쪽 생산자의 publice key 도 가지고 있고, 또 유통이 가지고 있는 인포메이션등을 사인을 한 후 여기에 자기 public key를 붙이고 또 그 다음 유통에서도 반복하다가 마지막에 오너까지 가게되는데 이 과정은 TO2 이후에 일어나는 일.
이 과정에서 넘겨받은 퍼블릭키를 자기가 가지고 있던 해쉬넘버랑 비교를 해서 같으면 verify 된거다고 간주함
컨셉은 넘어 받은 이 publice key를 활용해서 안쪽에 ROE안에 들어있던 디바이스랑 verify 과정을 거치고 그 다음에 1번이 verify 되면 그 후 2번도 , 3번도 verify를 거치고 그 과정이 다 끝나게 되면 verify가 완료되었으니깐 너는 이런 생산자를 시작해서 이런 유통과정을 거쳐서 나한테 왔네라는 사실을 알수 있고 맨마지막에 자기가 만든 private key와 publice key를 가지고 verify하는 그런 과정을 겪음(원리는 이렇고 표준문서에는 좀 더 복잡하게 설명되어 있음)
< FDO 를 적용하기 위한 보안 기술>
Ownership Voucher를 설치를 해서 이력을 하나 하나씩 거치고 그 디바이스랑 오너와 서로 verify하는 과정에
ROE(Restricted Operating Environment)라는 것이 있고 이것은 응용프로그램이나 cpu가 들어갈 수 없는 어떤 영역 제한된 영역인데 크리덴셜을 안전하게 숨기고 저장을 하고 여러가지 크립토에 관련된 것을 execution 하고 관련 펑션들을 돌리고 이런 것들을 하게 되는데 것으로 이것은 sw나 hw e모두 가능함
sw라도 인텔과 같은 cpu면 그 안에 tpm 이 들어있을 수도 안들어있을 수도 있으니깐 방법은 secure os안에 어떤 키를 숨겨서 할 수 있는 방법도 있고, hw를 사용해서 할 수 있고 아니면 tpm이란 모듈을 심어서 할 수도 있고 다행함.
최근에는 tpm이 embedded 된 칩들도 있음
또 거기에 대한 각각 표준들이 있어서 그런것들을 사용해서 안전하게 숨기는 것에 대해 얘기하고 있고 어떤 디바이스를, 어떤 칩를 선택하고, 어떤 environment를 선택할지는 생산자와 오너와 협의해서 어떤 보안에 대한 리즈가 필요한지 확인후 알맞은 ROE를 제공해야 한다. 이것이 생산자에게 제일 중요한 것임
<Owner Voucher 관리>
오너 바우쳐(Owner Voucher)는 아주 복잡한데 예를 들어 세탁기를 예를 들면 컴포넌트도 많고 cpu도 많고 그외 여러가지 돌아가는 것들이 굉장히 많은데 Device initialization은 어디서 해야 하는지 ?
이것을 앞에서 해야 하는것이지, 다 끝나고 해야하는것인지, 그리고 메인 tpm은 어디에 들어가야 하는건지, 이게 세탁기 처럼 간단한 것은 관계가 없는데 자동차같이 복잡한 것은 function이 나눠져 있어서 이런것을 어떻게 하느냐가 가장 중요한 것 중에 하나임.
그런것이 아직 define이 깨끗하게 안되어있어서 그것은 생산자가 사용자와 클라우드 서비스업체랑 애기를 해서 만들어야 되는데 이때 너무 어렵게 만들지 말고 flexible 하게 해 놓는게 좋음
또 오너바우쳐까지 나오면 각각 유통기관에 따라 오너바우쳐 가 쭉 따라가면서 가는데 각각 유통에서 오너바우쳐를 가지고 가는데 이 오너 바우쳐가 디바이스랑 같이 즉 세탁기가 가는 곳마다 따라가는 것이 아닐 수도 있어서 때로는 이런 일련의 과정을 건너뛰고 바로 오너에 붙을 수도 있어서 이런 경우 사용자의 입장에서는 생산자가 누군지는 알지만 중간에 어떤 이력을 거쳤는지 잘 모르는 경우가 있는 등 오너바우쳐의 관리나 이력같은 것들을 관리할 지가 가장 큰 이슈중에 하나임
설치자가 오너바우쳐를 어떻게 할 것인가란 문제가 있는데 이것은 좀 디테일한 문제이기에 각각 응용에 따라서 다르게 관리를 한다고 생각됨
<결론>
FDO 기술은 IoT가 발달됨에 따랄 디바이스와 클라우드가 다양향 형태로 나타니게 됨에 따라 이에 대한 이력을 어떻게 안전하게 관리하고 보안을 강화할 수 있는지에 대한 연구를 하는 과정에서 나온 것으로
<현 상황>
국내에서는 특정기긱가 특정 클라우드에만 접속되지만, 미국등 해외에서는 기기가 다양한 클라우드를 사용할 수 있는 옵션이 있음
즉 디바이스 사용자가 클라우드 서비스를 선택할 수 있는 장점이 있고
또 Iot 디바이스가 공장에서 출하하여 , 사용자(혹은 설치자)에 의해 클라우드에 연결될때까지 보안에 대한 표준이 없어 그 표준을 만들 필요가 있음
<FDO로 해결될 일들>
1) 디바이스 생산부터 Ownership에 대한 이력관리가 가능
2) 디바이스의 새로운 사용자에 의해서 재사용도 같은 프로토콜로 관리가 가능하고 디바이스의 설치가 Truested installer 인지 아닌지에 무관하게 On-boarding 이 가능하고
3) Owner Voucher 관리의 경우 블록체인 기술과 접목하여 관리가 가능할 것 같고 원산지 표시 및 이력관리 등에 광범위하게 적용될 것으로 판단됨
Posted by sup1377
,
비밀번호 관련 법규에 대한 이해 및 변화의 필요성
목적 : 비밀번호에 관련된 어떤 사건 그리고 어떤 법령 이런 부분들을 검토하므로서 어떤 부분에 문제가 있고 어떻게 좀 개선해 나갈수 있을 지를 한번 검토해 보고자 함
<패스워드의 문제 사례>
콜로니얼 파이프라인 사태는 비밀번호가 어떤역할을 하는지 어떤 한계가 있는지를 극명하게 보여주는 예시
<소유기반으로 인증한 사례>
스타트업에서는 거의 대세인 노션은 로그인시 이메일을 사용하는데 이메일주소로 코드를 보내주면 그것으로 로그인하는 방식으로 이메일 즉 소유기반 인증을 실제로 사용한 사례
<고시가 법적인 효력이 생길 수 있는 경우>
크게 보면 개인정보관련 법, 금융쪽에서 사용하는 법들이 있고 그외에 정보통신관련된 법들이 있고 우리가 보통 법령하면 시행령 , 시행규칙까지를 법령이라고 하고 일반적으로 법적 강제성 또는 이런것을 법규명령이라고 하는데 법적 강제성이 있는 것을 법령까지는 되있지만, 고시는 행정규칙이라고 해서 원칙은 법의 강제성이 없음. 하지만 판례에서는 고시는 그 법령을 시행하는데 필요한 구체적인 사항을 정한 것 그리고 그 상위법령(개인정보보호법)의 위임한계를 벗어나지 않는 한 그렇게 되면 상위 법령과 결합하여 법적 구속력이 있다.
<2가지 예시>
2가지 예시가 있는데 하나는 "암호 알고리즘 및 키 길이 이용 안내서" (2018년) 이고 이것은 안정한 알고리즘으로 암호화하여야 한다. 라는 문장이 법령에 많은데 그럼 안전한 알고리즘은 뭐야 라고 할 때 이것이 수사기관에 가거나 규제기관에 가거나 법정에 가거나 다 이 "암호 알고리즘 및 키 길이 이용 안내서”를 인용합니다. 그래서 이것은 법도 아니고 고시도 아니지만 거의 법처럼 봐야 함
또 다른 사례는 패스워드 선택 및 이용안내서(2019년) 로 위에 것 만큼 중요하지 않지만 비밀번호와 관련되서 많이 사용됨
<보안관련 법령에서 패스워드 사용사례>
보안관련 법령에는 개인정보보호법, 정보통신망법, 전자거래금융법, 신용정보법, 위치정보법(유일하게 고시가없음)이 있고 여기에 다 패스워드와 관련된 규정이 있고 또 기타 법률인 고용산재보험료징수법, 공간정보관리법 등에도 패스워드에 대한 내용이 나와 있음 거의 모든 보안관련 법령에는 패스워드에 대한 내용을 다루고 세부적인 내용을 상이한데 패스워드를 만들는 법에 대한 것과 패스워드를 보호하는 방법등에 대한 명시가 있음
<시사점>
혹시 나중에 이제 비밀번호를 어떻게 사용하자라는지, 혹시 이런 정도의 비밀번호는 없앨 수 있지 않겠느냐 또는 다른 대용의 뭔가 다른 것을 만들 수 있지 않냐할 때 등 이런 비밀번호의 분류나 역할 지위들의 기능을 잘 살펴보면 그런 부분들을 찾아내는데 도움이 되지 않을까 싶고
또, 기존 법체계의 검토와 해외 사례 검토를 통해 개선 방향을 도출해서 NIST와 같이 현실에 맞지 않는 법(패스워드는 1개월, 분기별 한번씩 변경하고 어쩌고 저쪄고 등은 결국에는 인간의 머리의 한계로 포스잌에 적어서 사용하게 됨 - 이 내용은 FIDO 시험인증 프로그램 업데이트 세션에서 김재범 책임도 언급함)은 과감히 고치고(NIST는 문제가 있거나 발견되고 고치라고 변경함) 향후 패스워드의 존폐에 대해 신중히 검토하면 우리사회에 좀 더 안전하고 편리한 사용자 인증방법을 도입하는 시기가 좀 더 빨라지지 않을까 싶고, 또 지피지기면 백전백승이라고 아무리 정보화를 하는 사람이지만 현재 보안에 대한 법체계가 어떻게 되어있는지 알고 있어야 막상 일이 닥칠 경우 더 슬기롭게 대처하고 또 상식선에 알아둘 필요도 있다고 생각해서 이런 내용을 다루게 되었음
 
Posted by sup1377
,
패스키 ('passkey'): 멀티 디바이스 FIDO 크리덴셜
최근에 애플, MS, 구글 등을 통해서 소개됨
<FIDO 란 >
먼저 한국에서 파이도에 대한 현황은 한국은 금융, 정부, 이커머스에 많이 사용되고 대부분 FIDO v1 UAF 형태( 모바일에서 생체인증이나 손쉬운 인증방식 활용하는 용도)로 사용. 그래서 한국에서는 FIDO가 생체인증인지 알고 있는데 아니고 파이도는 2012년경 많은 산업체에 있는 기업들이 모여서 새로운 인증 표준기술을 만들고 패스워드에 의존적인 인증수단을 개선하기 위해서 만들기술로 그 기술을 기반으로 표준 작업을 거쳐 널리 이용할 수 있게 하는 것을 목표로 설림이 됨
2012년에 설립된 후 약 10년이 흘렀는데 많은 기술중 하나인 패스키를 소개하고자 함
<패스키 소개>
FIDO의 개념 설명 : 지식기반의 인증수단에서 소유기반의 인증수단으로 패러다임 쉬프트
패스워드 같은 인증수단은 그 보안강화를 위해서 추가적인 인증수단(SMS OTP를 사용) 활용하는 반면 소유기반의 인증수단이 FIDO는 디바이스에 저장되고 그 해당정보를 활용해서 인증하는 방식(현재 이 방법의 문제점이 다수 발견된다고 FIDO 얼라이언스 업데이트에서 FIDO 얼라이언스 이사장겸 마케팅 책임자 앤드류 시키어가 발표함)
지식기반 인증에서 소유기반 인증방식으로 전환되면서 기존 취약점이 많이 해결됨 특히 FIDO에서 여러 보안위협중에 피싱에 대한 방어 또는 내성을 가지기 위해서 디자인 할 때 그런 부분을 고려
2012년 부터 걸어온 마일스톤을 살펴보면
2012년에 FIDO V1 인 UAF (Universal Authentication Framework)라고해서 모바일 환경에서 생체인증이나 손쉬운 인증방식을 활용하는 인증형태로 국내에 많이 사용됨 또 U2F(Universal 2nd Factor)인 특히 데스크탑, 웹환경에서 ID( 유저네임) , PW에 더해서 추가적인 인증팩터(usb, secret key) 을 활용하는 형태(외부장치를 사용하는 것이 한계)
또 FIDO2 는 기존 FIDO V1의 단점을 보완하는 FIDO v2를 비슷한 시기에 발표했고 이 기술은 FIDO의 웹환경에서도 손십게 사용하는 것이 목표
동시에 웹환경에서도 사용하기 위해서 릴리즈되었고 FIDO2의 웹표준을 WebAuthn이라고 부르고 이 기능이 브라우져에 탑재되기 시작
거의 비슷한 시기에 WebAuthn 기술이 플랫폼, 플랫폼 os 에 탑재되어 기존 외부장치(구매가 필요)에 의존하는 인증장치에서 사용자가 가지고 있는 스마트폰, 래탑, 데스크탑에서 인증장치를 제공하는데 이런 기능을 platform Authenticator라고 부른다.
~~~~ 그런데 아직 파이도 사용에 망설여짐 ?
패스키가 탄생하게 된 계기
파이도 인증의 핵심은 Authenticator(가운데)라는 디바이스를 활용하는데 오른쪽에 위치한 서비스( 로그인페이지를 제공하거나 인증을 제공하는 백앤드 서버)와 왼쪽은 사용자라고 보면 됩
그래서 FIDO2, WebAuthn 는 Authenticator와 서비스 사이에서 발생하는 인증이라고 보면 될 것 같고
사용자가 보유하고 있는 장치를 백앤드에서 다시한번 확인함으로써 인증하는 형태라고 보시면 됨 그리고 기기 소유여부를 기존 디바이스의 인증방식으로 한번 더 거침
자세히 살펴보면 인증을 위해서 1. Challenge(문제를 냄)를 요청하면 Authenticator는 자신만이 알고 있는 private key로 해답을 구하게 되는데 이 해답은 전자서명이란 형태로 해답을 찾게 되고 이 해답을 찾기 위해서는 반듯이 private key를 활용해야 합니다. 그래서 결국에는 private key를 보유하고있는 장치만이 challenge에 대한 정확한 해답을 찾을 수 있다
2. 이 private key를 액세스하기 위해서 사용자가 그 authenticator에 소유자인지 확인하는 프로세스가 있고 그래서 사용자가 authenticator와 사용자 액션을 수행하게 되는데 이때 생체인증 아니면 패턴 아니면 디바이스 패스코드 등등을 입력을 하게 되고 Authenticator는 디바이스에서 기존에 사용자가 등록했던 어떤 그런 생체정보 또는 패스코드를 찾아 확인을 하게되고 정상적으로 기기소유자임이 판명되면 말씀드린 private key 를 꺼내서 3. challenge에 대해서 전자서명을 하게 되고 그 전자서명 결과를 인증의 최종결과로 전송을 하게 됨
그럼 4. 서비스쪽 백앤드에서는 해당 전자서명 값을 받고 authentictor에 있는 private key에 대응되는 public key로 전자서명을 검증을 하게 되고 검증이 성공하게 되면 해당 authentictor가 보유하고 있는 private key로 정상적인 서명을 했다고 판단할 수 있고 판단이 되면 5. 인증이 완료되는 프로세스임
좋은 점 : 패드워드와 같은 백엔드에서 발생하는 여러가지 보안리스크가 굉장히 작고 그렇기 때문에 좀 더 안전하게 사용자를 인증할 수 있다.
이러한 형태로 인증이 진행이 되는데 앞서 설명한 것과 같이 그럼에도 불구하고 실제로 FIDO 기술이 여러 서비스나 여러 산업군에서 적용되는 부분들은 아직도 조금 제약적인 부분들이 있었고 그러한 이유로 말씀드린것 처럼 널리 이런 기술을 활요하기 위해서는 많은 사용자 커버가 필요한데 그런 부분들이 여러 제약사항으로 존재했지만 최근에 많이 해결되었음
~~~~ 그런데 아직 파이도 사용에 제약이 있음
그럼에도 불구하고 그럼에도 불구하고 이 기술을 활용하는데에는 여러가지 제약사항이 아직도 존재하는데 그 이유는 1. FIDO 를 활용했을 때 우리가 마켓에서 원하는 모든 사용자 유즈케이스(use case) 를 커버하지는 못하고, 2. PW 취약점이 존재하기에 FIDO 활용해서 좀더 안전한 형태로 인증을 제공할 수 있지만 만약 FIdo 크리덴셜을 보유하고 있는 기기를 잃거나 고장이 나면 파이도형태로 인증수행이 어렵기 때문임
3. 또, 많은 플랫폼이나 브라우져에서 많은 기능들이 제공되기 시작했지만 그 플랫폼별로 그 기술을 지원하는 set 이나 정도에 차이가 생기고 그래서 서비스에서 그런 기술들을 반영할 때는 플랫폼이나 브로우저에 따른 분기가 항상 필요하게 되고 그렇다보니 이런것을 반영하는 것이 쉽지 않았음 그리고 아직도 FIDO를 잘 모르고 그 장점을 모르는 경우도 많음
<패스키 탄생 배경>
사용자의 크리덴셜이 들어있는 기기를 분실하거나 고장이 나면 어떤 상황이 생기나요? 이런것은 우리의 집키를 잃어버리는 것과 동일한 상황인데 우리가 집키를 잃어버리면 열쇠공을 불러서 키를 다시 만들거나 복사하는 행위를 하게되듯이 파이도 등록을 새로하거나 복사를 해야 한다.
이렇게 파이도키를 복제하거나 백업하는 것을 패스키라고 하고 패스키란 용어는 작년에 애플에서 WWDC에서 먼저 사용을 했고 google , MS도 동일하게 사용됨
<패스키 사용 방식 2가지 >
패스키는 FIDO 크리덴셜이 다른 디바이스로 이동할 때 이를 안전하게 이동하는 위해서 일반적으로 많이 사용되는 방식인 종단간 암호 채널을 열고 EE2E라고 부르고 종단간 채널을 만들고 이 종단간 채널을 통해서 사용자의 크리덴셜을 전달을 하게 됨. 이 종단간 채널은 안전한 형태의 키교환 환경이 사전에 보장이 되야하고 이를 위해서 보통 Diffie-Hellman이라는 알고리즘을 사용하게 됨 이것을 sync 방식이라고 하고
또 다른 방식은 backup and recovery로 앞서 sync와 거의유사한데 한가지 다른 점은 크리덴셜이 백업되고 클라우드에 저장되어 있고 어느시점에 복원을 한다. 그래서 기기간에 그런 정보가 직접 전송되는 형태가 아니라 백업되는 시점과 복원되는 시점이 차이가 있을 수 있고, 마찬가지로 크리덴셜을 클라우드에 전송할 때 EE2E 인 종단간암호화 를 사용
또, 이것은 최종 HSM에서 복원을 하게 되면 클라우드 프로바이더의 취약점을 이용해서 사용자의 크리덴셜에 접근이 가능할 수 있어 오로지 사용자만이 생성할 수 있는 값으로 한번 더 암호화하여 저장함
<BS, BE를 flags에 추가>
서비스입장에서는 사용자의 크리덴셜이 백업이 가능한 형태인지(BE, Backup Eligiblity) 백업이 현재 되었는지(Backup Status) 여러가지 목적으로 확인이 필요하고 이런 수정 변경사항이 기존 spec에 반영이됨.
인증을 하거나 아니면 등록하는 프로세스에 Authenticator Data라는 정보가 있는데 그중에 Flags 가 다수 포함되는데 여기 에 BS, BE가 추가됨
<패스키에서 한 플랫폼에 한정적인 문제 해결>
이런 패스키는 플랫폼에 한정적이라는 것이고 이런 문제를 해결하기 위해서 서로 다른 기기 또는 서로다른 에코시스템간에 크리덴셜을 활용하는 형태를 패스키에서는 제공해야 함 이것을 Cross Device Sign-in user experience라고 함
랩탑과 스마트폰 사이뿐만아니라 지금 보시는 것처럼 ios와 안드로이드 사이에서도 동일하게 그러한 형태의 인증을 수행하고
서로 다른 플랫폼간 , echo 시스템 크리덴셜을 활용하기 위해서 패스키의 한기능으로 제공함
<근접한 기기각 크리덴셜을 주고 받는 메카니즘 hybrid>
근접한 랩탑과 핸드폰간에 파이도 클라덴셔을 주고 받는 기능을 예전에는 caBLE(cloud assist BLE)라고 불렀는데 지금은 hybrid라고 함
이 것은 랩탑에서 QR를 표출하고 그 QR 코드를 파이도 크리덴셜이 들어있는 안드로이드 핸들폰으로 읽고 또 서로 블루투스 통신( BLE scan, BLE advertisement)을 하면서 QR 코드에 내장된 정보값으로 양 기기간 암호화된 종단채널을 만드는 기술이고 이 종단 채널을 통해 파이도 명령을 주고 받고 인증이 끝나면 크리덴셜을 안드로이드에서 macbook으로 이동해서 사용하는 기술임
<DPKs의 목적>
크리덴셜이 특정기기에 머물러야 하는 경우가 있는데 그런 경우를 위해서 패스키에서는 DPKs라는 것을 익스텐션의 형태로 제공
서비스입장에서 특정기기에 종속되어 있는 키를 확인하고 자 할 때 활용할 수 있음
그래서 서비스에서 사용자 기기를 통해서 사용자 인증을 하거나 크리덴셜를 생성을 할 때 DPKs를 요청할 수 있구요 해당 authenticator 기기에는 DPKs요청에 대해서 관련된 정보를 생성해서 요청에 대한 응답에 포함해서 전송을 할 수 있음 이것은 DPKs(Device-bound public key)라고 함
<Conditional mediation 소개>
UX관련된 부분인데 앞서 패스키 소개할 때 기존의 유저네임과 pw를 넣는 그런 형태에서 패스키에서는 사용자의 계졍정보 없이도 사용자가 바로 기기에 보유되어 있는 크리덴셜을 활용할 수 있도록 UI를 제공하고 있다고 했는데 이것을 Conditional mediation 이라고 부름
<패스키와 Social 로그인 비교>
패스키는 FIDO 와 WebAuthn 기반이고 해당페이지로 다이렉션이 필요없고 패스워드가 전혀 필요없고 개인정보나 어떤 로그인 정보를 플랫폼기업에 따라 가져갈 수도 있고 아닐수도 있음
반면 소셜 로그인은 OICD(인증), OAuth2(인가)기반이고 해당 페이지로 리다이렉션이 생기고 본인 인증시 패스워드가 필요하고 Identity Provider가 사용자가 누구인지 언제 로그인을 했는 지 정보를 알 수 있음
<Recap>
요약하면 기존의 파이도의 싱글디바이스 크레덴셜이라는 제약사항을 멀티디바이스라는 형태로 확장을 했고요 그래서 기기간 크리덴셜이 동기화가 될 수 있고 그렇기 때문에 신규기기 또는 사용자가 보유하고 있는 여러기기간에 크리덴셜이 공유가 되고 백업이 되고 기존에 사용자가 접근할 수 없는 케이스(분실 등)에 대해서도 사용자가 이후에 복원을 할 수 있는 것도 가능하고
여러 기기간에 파이도 크리덴셜을 활용할 수 있도록 hybrid 제공 ( cross 디바이스, 플랫폼, 에코시스템) , 새로운 use case가 될 수 있는 공공기관의 PC에 사용자가 보유하고 있는 폰에 있는 크리덴셜을 활용하여 공공pc에 인증가능
마지막으로 사용자 UX를 개선하기 위해서 시스템 또는 브라우져에서 로그인 페이지에 사용자가 접속을 했을 때 해당 기기에서 사용가능한 크리덴셜을 사용자에게 오퍼하고 사용자는 해당 오퍼를 클릭하므로서 손쉽게 패스키를 사용할 수 있고 서비스입장에서도 불필요한 버튼 또는 불필요한 UI 변경없이도 기존에 어떤 로그인폼에서도 손쉽게 활용가능하도록 관련 기능을 제공함
또 패스키가 사용자 유저네임 없이도 활용가능한 그런 형태의 크리덴셜이기에 사용자 계정없이도 인증을 수행할 수 있는 그런 형태의 유저네임 리스로도 지원이 가능함
 
Posted by sup1377
,