KR20240009957A - 보안 인터넷 통신을 위한 시스템 및 방법 - Google Patents

보안 인터넷 통신을 위한 시스템 및 방법 Download PDF

Info

Publication number
KR20240009957A
KR20240009957A KR1020237040889A KR20237040889A KR20240009957A KR 20240009957 A KR20240009957 A KR 20240009957A KR 1020237040889 A KR1020237040889 A KR 1020237040889A KR 20237040889 A KR20237040889 A KR 20237040889A KR 20240009957 A KR20240009957 A KR 20240009957A
Authority
KR
South Korea
Prior art keywords
user
address
trusted
received
public key
Prior art date
Application number
KR1020237040889A
Other languages
English (en)
Inventor
조스 마누엘 리베라
마이클 래스키
앤드류 브루스
Original Assignee
트리플사이버 코퍼레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 트리플사이버 코퍼레이션 filed Critical 트리플사이버 코퍼레이션
Publication of KR20240009957A publication Critical patent/KR20240009957A/ko

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3263Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3263Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements
    • H04L9/3268Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements using certificate validation, registration, distribution or revocation, e.g. certificate revocation list [CRL]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees

Abstract

본 발명은, 인터넷 상의 개개의 행위자가 등록될 수 있게 하고, 이들의 신원이 허용 가능한 신뢰도 레벨에서 확인될 수 있게 하고, (이메일 주소, 전화번호, 도메인 이름, 애플리케이션 사용자 이름 등과 같은) 특정 사용자 식별자에 대한 이들의 관련성 및/또는 소유권이 검증될 수 있게 하는 통신 서버에 관한 것이다. 본 발명은 또한, 인터넷 행위자가 상이한 보안 레벨에서 통신할 수 있게 하고, 이들의 개인 암호화 키의 단독 소유 및 제어를 유지하면서 서로 간에 디지털 메시지 및/또는 문서에 대한 암호화 및 서명을 행할 수 있게 한다. 통신 서버 상의 사용자 정보의 무결성이 손상되지 않았음을 보장하기 위해서, 본 발명은, 정당하게 변경될 수 없지만 독립적으로 검증될 수 있는 공개적으로 액세스가능한 블록체인 포맷으로 중요한 데이터를 주기적으로 백업하기 위한 실시형태를 포함한다.

Description

보안 인터넷 통신을 위한 시스템 및 방법
관련 출원에 대한 상호 참조
본 출원은, 2021년 4월 29일자로 출원되고, 발명의 명칭이 "Method and System for Securing the Internet"이며, 그 내용이 본원에 참조로 포함되는, 미국 가특허 출원 번호 제63/181,297호에 대해 35 U.S.C. § 119(e) 하에서의 우선권을 주장한다.
기술분야
본 발명의 실시형태는, 인터넷 상에서 통신하는 개선된 시스템 및 방법에 관한 것으로, 참가자들의 신원(identities)을 확실하게 확인할 수 있고, 참가자들 간의 통신을 보안화할 수 있는 개선된 시스템 및 방법에 관한 것이다. 더 구체적으로, 본 발명의 실시형태는, 인터넷 행위자를 확실하게 등록하고 이들의 신원을 확인하며 그러한 행위자들 간의 보안 인터넷 및 네트워크 통신을 용이하게 하고 관리하기 위한, 새롭고, 보다 효율적이며, 보다 신뢰할 수 있는 컴퓨팅 및 통신 아키텍처를 제공한다. 보다 더 구체적으로, 본 발명의 실시형태는, 인터넷 상의 개개의 행위자의 신원을 등록하고 확인하며, 다양한 보안 레벨과 다양한 신원 확인 레벨에서 그러한 개개의 행위자 간의 통신을 용이하게 하기 위한, 통신 서버 및 관련 소프트웨어를 제공한다. 또한, 본 발명의 실시형태는, 보안 인터넷 및 네트워크 통신을 더 효율적으로 가능하게 하기 위해서 공개 및 개인 암호화 키(public and private cryptographic keys)의 생성, 관리, 및 사용을 용이하게 하기 위한, 네트워크화된 통신 서버와 함께 작동하는 새로운 사용자-디바이스 시스템 및 방법을 또한 제공한다. 마지막으로, 본 발명의 실시형태는, 통신 서버 상에서 유지되는 특정 사용자-관련 정보의 내용 및 무결성(integrity)을 검증하기 위해 사용될 수 있는 공개적으로 액세스할 수 있고 변경할 수 없는 암호화 체인 상에 사용자-레벨 식별자와 이들의 대응하는 공개 키를 기록하기 위한 보안 방법을 제공한다.
인터넷이 우리의 삶에 미치는 전반적인 영향과 모든 호소력에도 불구하고, 현재 버전(2021년경)의 인터넷은 심각한 보안 결함을 가지고 있다. 초기에는, 이러한 결함은 결함으로서 전혀 간주되지 않았다. 왜냐하면 인터넷은 서로 알고 협력하는 엔티티(entities)가 소유하는 별개의 컴퓨팅 시스템들 간에 정보를 공유하기 위한 메커니즘을 제공하기 위한 것이었기 때문이다. 인터넷은 보안이 아닌 협업이 일차 목표라는 생각으로 구상되었다. 실제로, 보안은 인터넷의 핵심 특징이 아니었고, 보안은 항상 나중에 고려되는 것이었다. 이로 인해, 사람들은 거의 처음부터 인터넷의 고질적으로 내포된 보안 결함을 패치(patch)하려고 시도해 왔다.
악의적인 행위자들이 인터넷 상에서 활개칠 수 있게 하는 주요 보안 결함 중 하나는 자신의 신원을 숨길 수 있는 능력이다. 인터넷 상의 누구든지(사용자가 또 다른 사람, 네트워크, 또는 심지어 가공의 엔티티로서 가장할 수 있게 하는 것을 포함하는) 가짜 인물(fake persona)을 생성하는 것은 거의 사소한 일이다. 익명성이 유리한 상황이 있을 수 있지만, 컴퓨팅 네트워크, 휴대폰, 또는 이메일 계정을 사용하는 모든 사람이 익명의 출처(anonymous source)로부터의 통신을 수락해야 할 이유는 없다. 마찬가지로, 누구든지 다른 사람으로 가장한 출처로부터의 통신을 수락해야 할 이유는 없다. 그리고 반대로, 누군가가 자신이 누구인지를 확실히 입증하고 싶어하는 경우도 많이 있다.
인터넷 도메인들, 4G 내지 5G 네트워크, 및 인터넷 상에서 통신할 수 있는 소형 디바이스(즉, 사물 인터넷, 또는 "IoT" 디바이스)가 확산됨에 따라, 인터넷 보안의 중요성이 급격히 높아졌다.
인터넷 밖의 일반 사회에서, 사람들은 우리가 공유하고 싶어하는 것과 우리가 이것을 어떻게 공유하고 싶어하는지에 근거하여 어느 정도 보호를 받는다. 우리는 식당, 상점, 또는 극장에 들어갈 수 있고, 우리가 대중과 공유하는 정보는 다른 당사자에 대해 우리가 갖는 신뢰 레벨에 따라 선택되고/되거나 제어될 수 있다. 우리는 예컨대, 현금으로 결제하여 정보를 거의 공유하지 않을 수 있거나, 신용 카드 또는 다른 전자적 수단(electronic means)으로 결제함으로써 특정 개인 정보를 공유할 수 있다. 우리는 잘 알려지고/지거나 신뢰할 수 있는 당사자와 추가적인 개인 정보를 기꺼이 공유하려 할 수 있지만, 우리는 잘 알려지지 않거나 신뢰하지 않는 사람과는 기꺼이 그렇게 하려고 하지 않을 수 있다. 신뢰된 당사자의 예로는 은행, 차량 관리국, 또는 국세청을 포함할 수 있다. 신뢰할 수 없는 당사자의 예로는 길목에서 롤렉스 시계를 판매하려는 낯선 사람을 포함할 수 있다.
인터넷 상에서, 사이버 범죄자는 신뢰할 수 있는 당사자로 위장할 수 있다. 사이버 범죄자가 임의의 사람의 컴퓨팅 시스템에 침투한 후에는, 이에 대해 무엇인가를 하기에는 너무 늦는 경우가 많다. 귀중한 디지털 자산이 순식간에 복사, 삭제되거나, 쓸모없게 될 수 있다.
역사적으로, 인터넷 상에서의 통신을 보안화하려는 시도는 많은 어려움을 겪어왔다. 대부분의 경우, 구성 및 사용과 관련하여 어느 정도의 복잡성을 가지고 있어서 대부분의 사용자가 접근하기 어려웠다. 일부 시도에서는 보안성 및 사용의 용이성을 저하시키는 패스워드의 더 능동적인 관리 및 대역-외 전송(out-of-band transmission)이 필요했다. 대부분의 시도에서는 개인 키 및/또는 보안 문서를 중앙집중화된 서버 상에 저장해야 했다. 이 경우, 비록 이러한 문서가 암호화되더라도, 비밀(secret)이 서비스 제공자 또는 표적 공격(targeted attack)에 노출될 수 있다는 의심이 여전히 존재한다. 인터넷 보안의 중요성과 악의적인 행위자가 가짜 신원을 포함하는 또 다른 신원으로 가장할 수 있는 용이성을 고려하고 이러한 전체적인 문제에 대한 다양한 솔루션의 부적절성을 고려할 때, 인터넷 상의 개개의 행위자는 자신을 등록하고, 충분히 높은 확률로 자신의 신원을 보안적으로 증명하고, 선택된 보안 레벨에서 다른 인터넷 행위자와 통신할 수 있게 하기 위한 효율적인 시스템 및 방법에 대한 필요성이 남아 있다.
본 요지는, 이하의 상세한 설명에서 더 설명되는 특정 개념들을 간결한 형태로 소개하기 위해 제공하는 것이다. 본 요지는 청구 대상의 핵심적인 주요 특징 또는 본질적인 특징을 식별하고자 하는 것이 아니며, 아울러 청구되는 발명의 범위를 어떠한 방식으로든 제한하고자 하는 것이 아니다.
본 발명의 실시형태는 여러 관련된 문제를 해결함으로써 인터넷을 보안화하려는 종래 기술의 시도의 단점을 극복한다.
첫 번째로, 본 발명의 실시형태는, 인터넷 상의 개개의 행위자가 등록되고, 이들의 신원이 허용 가능한 수준의 신뢰도에서 확인되며, (이메일 주소, 전화번호, 도메인 이름, 및 애플리케이션 사용자 이름 등과 같은) 특정 사용자 식별자에 대한 이들의 관련성 및/또는 소유권이 검증될 수 있게 하기 위한 통신 서버 및 적절한 소프트웨어를 제공한다. 이러한 기능을 제공하기 위해, 통신 서버의 실시형태는 사용자 정보를 포함하는 데이터베이스 또는 디지털 원장(digital ledger)을 포함할 수 있으며, 여기서, 검증된 사용자와 관련된 디지털 원장/데이터베이스에 저장된 각각의 사용자 식별자에 대해, 서버는 공개 키(공개-개인 암호화 키 쌍(public-private cryptographic key pair)의 공개 부분)를 저장할 수 있으며, 이러한 공개 키는 해당 공개 키를 사용하여 사용자 식별자에 대한 메시지를 암호화함으로써 사용자 식별자의 등록된 소유자(검증된 사용자)와 보안적으로 통신하기 위해 인터넷 상의 임의의 다른 행위자에 의해 사용될 수 있다. 마찬가지로, 검증된 사용자는, 자기 자신의 로컬에 저장된 개인 키(즉, 개인 키는 사용자의 디바이스 상에만 우선적으로 저장됨)를 사용하여 메시지에 서명함으로써 인터넷 상의 임의의 다른 행위자와 보안적으로 통신할 수 있다. 암호화된 메시지가 수신되는 경우, 공개 키와 관련된 로컬에 저장된 개인 키는 메시지를 복호화하기 위해 사용될 수 있다. 서명된 메시지가 수신되는 경우, 통신 서버로에서 검색된 보내는 사용자의 공개 키는 메시지 상의 서명을 검증하기 위해 사용할 수 있다.
본 발명의 실시형태는, 특정 통신의 보안이 특정 응용 및 필요에 맞게 맞춤화되거나 맞춤 제작될 수 있도록 하기 위해, 각각의 공개 키를 주어진 사용자 식별자와 관련된 특정 보안 레벨 또는 목적에 할당할 수 있다.
본 발명의 실시형태는 통신 서버를 클라우드 기반 서버 또는 SAAS(Software As A Service; 서비스로서의 소프트웨어) 시스템으로서 구현할 수 있고, 이들 중 어느 하나는 복수의 인터넷-액세스가능 컴퓨팅 플랫폼(Internet-accessible computing platform) 상에서 상주하고/하거나 실행되는 소프트웨어 및 디지털 원장(들) 및/또는 데이터베이스(들)를 포함할 수 있다.
두 번째로, 암호화 통신의 보안성을 높이기 위해, 본 발명의 실시형태는 통신 서버 상에 개인 키를 우선적으로 저장하지 않을 것이다. 대신에, 본 발명의 실시형태는, 사용자 디바이스 상에서만 실행되는 공개-개인 키 관리자를 사용하여, 개인 키를, 이들과 쌍을 이루는 공개 키와 함께, 생성할 수 있다. 바람직하게는, 실시형태는, 권한없는 소프트웨어에 의한 액세스로부터 개인 키를 보호하는 방식으로, 로컬에 생성된 개인 키를 사용자 디바이스 상의 보안 저장소 영역에 저장할 것이다. 실시형태에 따르면, 임의의 주어진 공개-개인 키 쌍과 관련된 공개 키만이 통신 서버에 전송되어 통신 서버 상에 저장될 것이다.
일반적으로, 본 발명의 실시형태는 특정 목적 또는 보안 레벨을 위해 각각의 공개-개인 키 쌍을 생성할 것이다. 예를 들어, 실시형태는, 특정 보안 레벨에서 이메일 통신을 암호화하고 복호화할 목적으로, 또는 이메일 통신에 서명하고 그 서명을 검증하기 위해, 공개-개인 키 쌍을 생성할 수 있다. 이러한 목적 또는 역할뿐만 아니라 다른 목적 또는 역할이, 이하의 본 출원의 상세한 설명 부분에서 더 상세히 논의될 것이다.
인터넷 상에서 전송하지만 비검증된 행위자가, 검증된 행위자에게 보안 메시지를 보내고자 하는 경우(여기서, 검증된 행위자의 사용자 식별자 및 공개 키는 통신 서버 상에 저장되어 있음), 전송하는 행위자는, 통신 서버로부터 적절한 공개 키(즉, 검증된 행위자의 목표 사용자 식별자와 관련된 공개 키)를 획득하고, 메시지를 암호화하기 위해 해당 공개 키를 사용하고, 암호화된 메시지를 검증된 행위자의 목표 사용자 식별자에 직접적으로 보내기 위해 본 발명의 실시형태를 호출할 수 있다. 검증된 행위자가, 암호화된 메시지를 수신하는 경우, 검증된 행위자는 이것을 자신의 대응하는 개인 키를 사용하여 복호화할 수 있다.
마찬가지로, 검증된 행위자가 (수신하는 행위자의 신원이 통신 서버에 의해 검증되었는지 여부에 상관 없이) 수신하는 행위자에게 보내질 메시지에 암호화 서명을 하고자 하는 경우, 전송하는 검증된 행위자는 단지 자신의 개인 키를 사용하여 메시지에 서명하면 되고, 그런 다음, 수신하는 행위자에게 메시지를 직접적으로 보내기만 하면 된다. 수신하는 행위자가 서명된 메시지를 수신하는 경우, 수신하는 행위자는, 전송하는 검증된 행위자의 사용자 식별자와 관련된 적절한 공개 키를 획득하기 위해 통신 서버의 실시형태와 상호작용할 수 있고, 전송하는 검증된 행위자에 의해 서명이 생성되었음을 검증하기 위해, 획득된 공개 키를 사용할 수 있다. 수신하는 행위자는 또한, 전송하는 검증된 행위자가 자신이 말하고 있는 그 사람인지를 확인하기 위해, 전송하는 검증된 행위자에 대한 정보를 통신 서버로부터 획득할 수 있다.
세 번째로, 통신 서버 상의 정보의 무결성이 손상되지 않았음을 보장하기 위해서, 통신 서버의 실시형태는, 중요한 공개 데이터(예컨대, 사용자 식별자 및 이의 관련된 공개 키)의 백업을 주기적으로 생성할 수 있고, 합리적으로 변경할 수 있는 포맷으로 이러한 백업을 저장할 수 있다. 예를 들어, 본 발명의 실시형태는, 디지털 원장으로부터 획득된 복수의 연쇄된 레코드(chained record)의 암호화 체인을 포함하는 백업을 생성할 수 있고, 여기서 각각의 연쇄된 레코드는, 검증된 행위자의 사용자 식별자 및 해당 사용자 식별자와 관련된 공개 키의 해시 또는 해시들을 포함한다. 그런 다음, 본 발명의 실시형태는, 이러한 암호화 체인의 복사본을 공개적으로 이용가능하며 변경이 불가능하고 첨부만 가능한 인터넷 블랍(blob)에 에스크로(escrow)로 보관할 수 있고, 그 내용들은 통신 서버 상의 디지털 원장 내에 상주하는 대응하는 데이터와 상호-참조될 수 있고 이러한 대응하는 데이터에 대비되어 유효화될 수 있다.
전술한 솔루션을 사용하여, 본 발명의 실시형태는, 디지털 메시지가, 신원이 검증된 행위자 및 디바이스에 대해서, 인터넷 및 다른 네트워크를 통해 보안적으로 전송 및 수신될 수 있도록 보장할 수 있고, 그럼으로써 악의적인 행위의 가능성을 현저히 감소시키게 된다. 허구의 행위자 및/또는 악의적인 행위자가 인터넷 상에 여전히 존재할 수 있지만, 이들의 신원은 예컨대, 본 발명의 실시형태에 의해 검증되지 않았을 것이기 때문에, 이들의 존재는 명백해질 것이다. 이에 따라, 본 발명의 실시형태는, 인터넷 행위자가 비검증된 인물을 통해 통신하고자 하는 경우, 그것이 가능하도록 보장할 수 있고, 이와 동시에, 행위자가, 검증된 신원으로서, 보안화된 방식으로 통신하기를 원할 때, 그것도 또한 가능하도록 보장할 수 있다.
본 발명의 실시형태의 전술한 개요들은 이하의 상세한 설명에서 더 설명되는 특정 개념을 소개하기 위해 제공되었다. 요약된 실시형태가, 청구 대상을 반드시 대표하는 것은 아니며, 이하에서 더 상세히 설명되는 특징의 범위를 포괄하는 것도 아니다. 이는 단순히 다양한 발명들의 주된 내용을 소개하는 역할을 할 뿐이다.
본 발명의 앞서 언급된 특징들이 상세히 이해될 수 있도록, 본 발명의 더 구체적인 설명이 실시형태를 참조하여 이루어질 수 있으며, 그 중 일부는 첨부되는 도면에 예시되어 있다. 그러나, 첨부되는 도면은 단지 본 발명의 일반적인 실시형태를 예시할 뿐이며, 본 발명이 다른 등가적인 유효한 실시형태를 허용할 수 있기 때문에, 따라서 본 발명의 범위를 제한하는 것으로서 고려되어서는 안 된다는 점에 유의해야 한다.
도 1은 본 발명에 따른, 보안 인터넷 통신을 가능하게 하기 위한 통신 서버의 예시적인 실시형태를 나타내는 블록도이다.
도 2는 본 발명에 따른, 보안 인터넷 통신을 가능하게 하기 위한 통신 서버의 데이터베이스 관리 시스템(DBMS: DataBase Management System) 구성요소의 예시적인 실시형태를 나타내는 블록도이다.
도 3은 본 발명에 따른, 보안 인터넷 통신을 가능하게 하기 위해 사용자를 등록하기 위한 방법의 예시적인 실시형태를 나타내는 흐름도와 블록도가 결합된 것이다.
도 4는 본 발명에 따른, 보안 인터넷 통신을 가능하게 하기 위해 공개 키 서비스를 제공하기 위한 방법의 예시적인 실시형태를 나타내는 흐름도와 블록도가 결합된 것이다.
도 5는 본 발명에 따른, 보안 인터넷 통신을 가능하게 하기 위한 공개-개인 키 관리자(본원에서 "트리폴드(Trifold)"로서 지칭되고, 이하에서 더 상세히 정의됨)의 예시적인 실시형태를 나타내는 흐름도와 블록도가 결합된 것이다.
도 6은 본 발명에 따른, 준비된 URL을 사용하여 보안 인터넷 통신을 가능하게 하기 위해 사용자의 신원을 검증하기 위한 방법의 예시적인 실시형태를 나타내는 흐름도와 블록도가 결합된 것이다.
도 7은 본 발명에 따른, 사용자의 휴대폰으로 전달되는 SMS 메시지를 사용하여 보안 인터넷 통신을 가능하게 하기 위해 사용자의 신원을 검증하기 위한 방법의 예시적인 실시형태를 나타내는 흐름도와 블록도가 결합된 것이다.
도 8은 본 발명에 따른, 신뢰할 수 있는 이름-주소 소스를 사용하여 보안 인터넷 통신을 가능하게 하기 위해 사용자의 신원을 검증하기 위한 방법의 예시적인 실시형태를 나타내는 흐름도와 블록도가 결합된 것이다.
도 9는 본 발명에 따른, 사용자 데이터를 암호화하기 위한 방법의 예시적인 실시형태를 나타내는 흐름도와 블록도가 결합된 것이다.
도 10은 본 발명에 따른, 사용자 데이터를 복호화하기 위한 방법의 예시적인 실시형태를 예시하는 흐름도와 블록도가 결합된 것이다.
도 11은 본 발명에 따른, 디지털 문서에 암호로 서명하기 위한 방법의 예시적인 실시형태를 나타내는 흐름도와 블록도가 결합된 것이다.
도 12는 본 발명에 따른, 디지털 서명을 검증하기 위한 방법의 예시적인 실시형태를 나타내는 흐름도와 블록도가 결합된 것이다.
도 13은 본 발명에 따른, 컴퓨팅 디바이스의 예시적인 실시형태의 블록도이다.
본 발명의 실시형태에 대해 첨부되는 도면을 참조하여 설명할 것이고, 도면에서 유사한 부분은 본원 전체에 걸쳐 유사한 참조 번호로 표시되고, 각각의 참조 번호의 맨 왼쪽 숫자는 참조된 부분이 처음 출현한 도면의 도면 번호를 나타낸다. 본 발명의 실시형태는, 구성의 세부사항, 또는 다음의 설명에 기재되거나 도면에서 도시된 구성요소의 배열에 적용됨에 있어, 제한되지 않는다. 본 발명의 실시형태는 다양한 방식으로 실시되고 실행될 수 있다. 또한, 본원에 사용되는 문구 및 용어는 설명의 목적으로 사용된 것이며, 이를 제한하는 것으로 간주해서는 안 된다.
통신 서버
도 1은 본 발명에 따른, 보안 인터넷 통신을 가능하게 하기 위한 통신 서버(100)의 예시적인 실시형태를 나타내는 블록도이다. 통신 서버(100)는 당업자에게 공지된 다수의 물리적 구성들로 구현될 수 있는 논리적 구조체(logical construct)이지만, 각각의 구성은, 데이터베이스 관리 시스템을 갖는 웹 서버와 유사한, 인터넷-액세스가능 컴퓨팅 서버의 등가적 요소를 포함할 것이다. 통신 서버(100)는, 사용자로 하여금 다른 사용자의 신원에 관해 높은 신뢰도로 통신하게 하는 것을 함께 가능하게 하는 특정 성능 및 기능을 제공할 수 있다. 그러한 성능 및 기능을 제공하기 위해, 통신 서버(100)의 실시형태는, 데이터베이스 관리 시스템(105), 트리폴드 등록 서비스(120), 사용자 등록 서비스 모듈(130), 공개 키 서비스 모듈(140), 및 암호화 체인 서비스 모듈(150)을 포함할 수 있다.
본원에 사용되는 바와 같은 용어 "트리폴드"는 사용자의 디바이스 상에 설치된 소프트웨어 모듈을 지칭한다. 트리폴드(173) 및/또는 트리폴드(183)와 같은 트리폴드는, 요청하는 애플리케이션을 위해서, 공개-개인 키 생성 및 관리 기능을 수행할 수 있을 뿐만 아니라 암호화 기능들(예컨대, 메시지를 암호화하는 것, 또는 메시지에 서명하는 것)을 수행할 수 있다. 트리폴드는, 통신 서버(100)와 통신할 수 있고, 공개-개인 키 쌍을 생성할 수 있고, 이전에 생성된 공개 및 개인 키에 대한 액세스를 제공할 수 있고, 그리고 이하에서 더 상세히 논의될 다른 관련된 작업들을 수행할 수 있다. 트리폴드 등록 서비스(120)는 사용자 디바이스 상에 상주하는 트리폴드(예컨대, 트리폴드(173) 및/또는 트리폴드(183))와 상호작용할 수 있다.
계속해서 도 1을 참조하면, 데이터베이스 관리 시스템(105)은 사용자 관련 레코드들(110)의 테이블을 포함할 수 있고, 여기서 각각의 이러한 사용자-관련 레코드는 단일 사용자에 관한 정보를 포함할 수 있고, 또한, (a) 등록된 자와 암호화 통신에서 사용하기 위한 공개 키, (b) 사용자에 등록된 컴퓨팅 디바이스에 대한 정보, 및 (c) 사용자에 등록될 수 있는 사용자의 컴퓨팅 디바이스 상에서 상주하고 실행될 수 있는 애플리케이션에 대한 정보를 저장할 수 있다. 애플리케이션은 본원에서 "자산(asset)"으로서 지칭될 수 있다.
데이터베이스 관리 시스템(105)은 등록된 사용자에 대한 정보를 저장하고 검색하기 위해 사용자 등록 서비스 모듈(130)과 상호작용할 수 있다. 사용자 등록 서비스 모듈(130)은, 데이터베이스 관리 시스템(105)에 저장된 대응하는 데이터와 부합하는 사용자 데이터에 대한 코드-내 데이터 엔티티(in-code data entities)(예컨대, 구조, 객체, 등)의 세트(set)를 제공함으로써 이러한 기능을 수행할 수 있다. 사용자 등록 서비스 모듈(130)은 이러한 코드-내 엔티티와 데이터베이스 관리 시스템(105)에 저장된 데이터 간의 연결을 제공하기 위해 산업 표준 데이터베이스 라이브러리(industry standard database libraries)(예컨대, 마이크로소프트사의 엔티티 프레임워크(entity framework))을 사용할 수 있다. 데이터베이스 관리 시스템(105)으로부터의 데이터는, 사용자 등록 서비스 모듈(130)에 의해 유지되는 데이터 엔티티로 가져와서, 거기서 조작된 다음에 라이브러리의 제공된 기능을 사용하여 데이터베이스 관리 시스템(105)에 다시 저장될 수 있다. 예를 들어, 사용자 등록 서비스 모듈(130)은, SQL 서버 데이터베이스 테이블과 그러한 테이블을 따르는 C# 객체 간에 데이터를 이동(move)시키기 위해 마이크로소프트사의 엔티티 프레임워크 및 LINQ 라이브러리를 사용할 수 있다.
데이터베이스 관리 시스템(105)은 요청이 있을 때 공개 키를 다른 사용자에게(예컨대, 요청자(185)에게) 제공하기 위해 공개 키 서비스 모듈(140)과 상호작용할 수 있다. 공개 키 서비스 모듈(140)은, 데이터베이스 관리 시스템(105)에 저장된 대응하는 데이터와 부합하는 키 데이터에 대한 코드-내 데이터 엔티티(예컨대, 구조, 객체, 등)의 세트를 제공함으로써 이러한 기능들을 수행할 수 있다. 공개 키 서비스 모듈(140)은 이러한 코드-내 엔티티와 데이터베이스 관리 시스템(105)에 저장된 데이터 간의 연결을 제공하기 위해 산업 표준 데이터베이스 라이브러리(예컨대, 마이크로소프트사의 엔티티 프레임워크)를 사용할 수 있다. 데이터베이스 관리 시스템(105)으로부터의 데이터는, 공개 키 서비스 모듈(140)에 의해 유지되는 데이터 엔티티로 가져와서, 거기서 조작된 다음에 라이브러리의 제공된 기능을 사용하여 데이터베이스 관리 시스템(105)에 다시 저장될 수 있다. 예를 들어, 공개 키 서비스 모듈(140)은, SQL 서버 데이터베이스 테이블과 이러한 테이블을 따르는 C# 객체 간에 데이터를 이동시키기 위해 마이크로소프트사의 엔티티 프레임워크 및 LINQ 라이브러리를 사용할 수 있다. 공개 키 서비스 모듈(140)은 잘-정의된 API를 제공할 수 있으며, 이러한 API를 통해, 외부 소프트웨어 프로세스(즉, 트리폴드(173)와 같은 또 하나의 다른 프로그램)는 키 데이터를 저장을 위해 데이터베이스 관리 시스템(105)에 제출하거나, (트리폴드(183)와 같은) 또 하나의 다른 프로그램은 데이터베이스 관리 시스템(105)에 등록된 특정 사용자에 대응하는 특정 키에 대한 요청(예컨대, 요청(187))을 제출할 수 있다. (그러한 요청에 대한 응답, 예컨대, 응답(189)은 요청된 키를 제공할 수 있다.) 예를 들어, 공개 키 서비스 모듈(140)은, Get 쿼리(Get query)에서 쿼리 파라미터(query parameter)를 허용하고 JSON 포맷으로 데이터를 반환(return)하는 레스트풀 웹 서비스 인터페이스(restful web service interface)를 구현할 수 있다.
데이터베이스 관리 시스템(105)은, 암호화 체인 데이터(115)를 생성하고, 암호화 체인 데이터(115)의 백업을, 인터넷(160)을 통해, 원격의 첨부만 가능하고 변경이 불가능한 블랍(Append-Only, Immutable Blob)(190)에 저장하기 위해, 암호화 체인 서비스 모듈(150)과 상호작용할 수 있다. 암호화 체인 서비스 모듈(150)은 암호화 체인 데이터(115)의 백업 내에 사용자 관련 레코드(110)에 저장된 특정 데이터의 백업을 포함할 수 있다.
암호화 체인 서비스 모듈(150)은, 변경이 불가능한 레코드를 생성하기 위해 일반적으로 사용되는 해시의 암호화 체인을 나타내는 코드-내 데이터 엔티티(예컨대, 구조, 객체, 등)의 세트를 제공함으로써 이러한 기능을 수행할 수 있다. 이러한 체인은 일반적으로 블록 체인으로서 지칭되고, 당업자라면 잘 이해할 수 있을 것이다. 이러한 체인에 대한 데이터 구조는 데이터베이스 관리 시스템(105)에 저장된 데이터와 부합한다. 암호화 체인 서비스 모듈(150)은 이러한 코드-내 엔티티와 데이터베이스 관리 시스템(105)에 저장된 데이터 간의 연결을 제공하기 위해 산업 표준 데이터베이스 라이브러리(예컨대, 마이크로소프트사의 엔티티 프레임워크)를 사용할 수 있다. 데이터베이스 관리 시스템(105)으로부터의 데이터는, 데이터 엔티티로 가져와서, 거기서 조작된 다음에 라이브러리의 제공된 기능을 사용하여 데이터베이스 관리 시스템(105)에 다시 기입될 수 있다. 예를 들어, 암호화 체인 서비스 모듈(150)은, SQL 서버 데이터베이스 테이블과 이러한 테이블을 따르는 C# 객체 간에 데이터를 이동시키기 위해 마이크로소프트사의 엔티티 프레임워크 및 LINQ 라이브러리를 사용할 수 있다. 암호화 체인 서비스 모듈(150)은, 추적되는 공개 키 및 소유하는 사용자 식별자 데이터의 원하는 해시를 계산한 다음에 이들을 데이터베이스 관리 시스템(105)에 저장하기 위해 암호화 체인 데이터(115)의 끝에 추가하기 위해서, 산업 표준 암호화 라이브러리를 사용할 수 있다. 예를 들어, 시스템은 마이크로소프트사의 .NetCore 프레임워크의 일부인 암호화 라이브러리를 사용할 수 있다.
암호화 체인 서비스 모듈(150)은, 암호화 체인 데이터(115), 사용자 관련 레코드(110)로부터 검색된 특정 해싱된 데이터, 및 구성된 해시 체인을, 통신 서버(100) 또는 통신 서버(100) 내의 임의의 소프트웨어에 의해 후속적으로 조작되지 않는 첨부만 가능하고 변경이 불가능한 블랍(190)으로서 확립되는 원격 데이터 저장 위치에 에스크로로 보관할 수 있다. 즉, 첨부만 가능하고 변경이 불가능한 블랍(190)은 기입(writing)은 허용하지만 업데이트는 허용하지 않는 매체를 제공하는 써드-파티가 관리하는 저장 매체이다. 예를 들어, 첨부만 가능하고 변경이 불가능한 블랍(190)은 애저 클라우드(Azure cloud) 상에 제공되는 블랍에 해당할 수 있다. 암호화 체인 데이터(115) 및 사용자 관련 레코드(110)로부터 검색된 특정 해싱된 데이터는, 첨부만 가능하고 변경이 불가능한 블랍(190) 저장소의 써드-파티 제공자에 의해 제공되는 API 내의 함수를 사용하여, 첨부만 가능하고 변경이 불가능한 블랍(190)에 기입될 수 있다. 예를 들어, 시스템은 애저 변경이 불가능한 블랍(Azure immutable blob)에 데이터를 기입하기 위해서 마이크로소프트에 의해 제공되는 Azure.Storage.Blobs 라이브러리를 사용할 수 있다.
데이터베이스 관리 시스템(105)은, (a) 사용자의 트리폴드(예컨대, 트리폴드(173) 또는 트리폴드(183))에 관한 정보, (b) 트리폴드가 상주하는 사용자의 디바이스(예컨대, 사용자 디바이스(170) 또는 요청자 디바이스(180))에 대한 정보, 및/또는 (c) 트리폴드와 상호작용하고 있을 수 있는 사용자의 디바이스(예컨대, 사용자 디바이스(170) 또는 요청자 디바이스(180)) 상에서 실행되는 다양한 소프트웨어 애플리케이션들에 대한 정보를 저장하기 위해, 트리폴드 등록 서비스(120)와 상호작용할 수 있다. 트리폴드 등록 서비스(120)는, 데이터베이스 관리 시스템(105)에 저장된 대응하는 데이터와 부합하는 디바이스, 애플리케이션, 및 트리폴드 클라이언트 증명서(Trifold client certificate)에 대응하는 코드-내 데이터 엔티티(예컨대, 구조, 객체, 등)의 세트를 제공함으로써 이러한 기능들을 수행할 수 있다. 트리폴드 등록 서비스(120)는 이러한 코드-내 엔티티와 데이터베이스 관리 시스템(105)에 저장된 데이터 간의 연결을 제공하기 위해 산업 표준 데이터베이스 라이브러리(예컨대, 마이크로소프트사의 엔티티 프레임워크)를 사용할 수 있다. 이러한 데이터 엔티티에서의 (트리폴드(173) 또는 트리폴드(183)와 같은 원격 트리폴드로부터 수신된) 데이터는 각각의 라이브러리의 제공된 기능을 사용하여 데이터베이스 관리 시스템(105)에 기입될 수 있다. 트리폴드 등록 서비스(120)는 잘-정의된 API를 제공할 수 있으며, 이러한 API를 통해, (트리폴드(173) 또는 트리폴드(183)와 같은) 원격 트리폴드가 데이터를 제공할 수 있다. 예를 들어, 트리폴드 등록 서비스(120)는 제출된 데이터를 쿼리 파라미터로서 허용하는 레스트풀 웹 서비스 인터페이스를 구현할 수 있다. 등록하는 트리폴드(예컨대, 트리폴드(173))는 트리폴드 등록 서비스(120)에게 사용자 디바이스(170)의 타입 및 사용자 디바이스(170)의 이름을 일련번호와 함께 제공할 수 있다. 등록하는 트리폴드(예컨대, 트리폴드(173))는 또한, 주어진 애플리케이션 타입이 트리폴드와 상호작용하기 위해 등록되는 경우 대응하는 애플리케이션 개발자에게 발행된 애플리케이션 식별자를 트리폴드 등록 서비스(120)에게 제공할 수 있다. 이에 응답하여, 트리폴드(예컨대, 트리폴드(173))는, 통신 서버(100)와의 모든 장래의 상호작용을 보안화하기 위해, 특정 등록된 사용자(예컨대, 사용자(175)), 특정 디바이스(예컨대, 사용자 디바이스(170)), 및 특정 애플리케이션(미도시)에 대한, 특정 트리폴드에 명시적으로 속박된 (표준 암호화 라이브러리를 사용하여 생성된) TLS(Transport Layer Security; 전송 계층 보안) 증명서를 수신할 수 있다.
사용자 등록 서비스 모듈(130)은, 다음과 같은 기능을 수행할 수 있는 통신 서버(100) 상에서 실행되는 소프트웨어 모듈이다: (1) (사용자(175)와 같은) 새로운 사용자를 등록하는 것; (2) 이하에서 설명되는 다양한 방법들을 사용하여 사용자의 신원을 검증하는 것; 및 (3) 사용자가 여러 이용가능한 보안 레벨 중 하나에서 통신할 수 있도록 하기 위해 충분한 신뢰도로 해당 사용자의 신원이 알려져 있는지 여부를 결정하는 것. 사용자 등록 서비스 모듈(130)은, 인터넷(160) 및 사용자 디바이스(170)를 통해서, 사용자(175)와 같은 등록하는 사용자와 통신할 수 있다. 사용자(175)로부터 수신되는 정보는 이들의 실제 신원으로 이들의 디지털 식별자를 검증하는 것과 관련된다. 예를 들어, 사용자의 디지털 식별자는 이메일 주소 또는 전화번호일 수 있다. 실제 신원 정보는, 사용자(175)의 이름 및 성씨를 포함할 수 있고, 또한 이들의 물리적(거리, 도시, 등) 주소를 포함할 수 있다. 신원 검증을 위한 원하는 신뢰도 레벨과 제공된 신원 정보가 (이후 더 상세히 논의되는) 신뢰할 수 있는 외부 소스와 프로그래밍적으로 일치될 수 있는지 여부에 따라, 사용자의 신원이 검증될 수 있다. 더 높은 보안 레벨에서, 추가적인 이름 및 주소 정보가, 사용자에 의해 제공될 수 있으며, 자동적으로 발생되는 리스트(list), 신뢰된 정부 문서(예컨대, 운전자의 면허증)의 전자적 스캔(electronic scan), 또는 제공된 위치에서의 존재 여부를 테스트(test)하기 위한 지리적-위치 좌표(Geo-Location coordinate)로부터, 이름 및 주소의 선택의 형태로, 사용자에 의해 제공될 수 있다. 또한, 이미지 실재 존재 여부 테스트(image liveness testing)를 가능하게 하기 위해 사용자의 실시간 비디오가 제공될 수 있다.
데이터는 또한, 제공된 사용자 이름 및 주소의 유효성 확인을 돕기 위해 다양한 외부 "신뢰할 수 있는" 소스로부터 사용자 등록 서비스(130)에 의해 획득된다. 업계에서 일반적으로 사용되는 주소 검증 및 전화 소유권 제공업체는 제공된 이름과 주소의 진정성(veracity)을 평가하기 위해 해당 공급업체(vendor)가 제공하는 API를 사용하여 쿼리를 받을 수 있다. 전화 제공업체로부터의 CNAM 데이터베이스도 확인할 수 있다.
공개 키 서비스 모듈(140)은, 다음과 같은 기능을 수행할 수 있는 통신 서버(100) 상에서 실행되는 소프트웨어 모듈이다: (1) 특정 목적을 위해 특정 사용자에 대한 공개 키에 대한 요청을 수신하는 것(예를 들어, 메시지를 암호화하기 위해 사용자(175)와 관련된 공개 키에 대한 요청자(185)로부터의 요청을 수신하는 것); (2) (사용자(175)와 같은) 주어진 사용자에 대한 공개 키를 데이터베이스 관리 시스템(105)으로부터 추출하는 것; 및 (3) (사용자(175)와 같은) 주어진 사용자에 대응하는 추출된 공개 키를 (요청자(185)와 같은) 요청하는 사용자에게 전송하는 것. 공개 키 서비스 모듈(140)은 잘-정의된 API를 제공하며, 이러한 API를 통해, 외부 소프트웨어 프로세스(즉, 트리폴드(173)와 같은 또 하나의 다른 프로그램)는 하나 이상의 사용를 위해 한 명 이상의 사용자에 대한 키 데이터를 요청할 수 있다. 예를 들어, 공개 키 서비스 모듈(140)은, Get 쿼리의 쿼리 파라미터로서 특정 사용자 및 특정 키 타입에 대한 쿼리 파라미터를 허용하고 요청된 공개 키를 표준 JSON 페이로드(standard JSON payload)에서 Base64 인코딩 스트링(Base64 encoded string)으로서 반환하는 레스트풀 웹 서비스 인터페이스를 구현할 수 있다.
암호화 체인 서비스 모듈(150)은, 다음과 같은 기능을 수행할 수 있는 통신 서버(100) 상에서 실행되는 소프트웨어 모듈이다: (1) 선택된 해싱된 암호화 체인 데이터(115)의 암호화적으로 링크(link)된 체인을 어셈블링(assemble)하기 위해 데이터베이스 관리 시스템(105)과 상호작용하는 것; 및 (2) 암호화적으로 링크된 체인의 복사본을 인터넷(160) 상의 원격의 첨부만 가능하고 변경이 불가능한 블랍(190)에 에스크로로 보관하는 것. 써드-파티는, 이들의 관심 정도에 따라, 두 가지 방식으로 암호화 체인에 대해 특정 사용자에 대한 공개 키의 장기간 소유권을 확인할 수 있다. 가장 쉬운 것으로, 써드-파티는, 데이터베이스 관리 시스템(105)에 저장되고 암호화 체인 서비스(150) API로부터 요청될 수 있는 암호화 체인의 값과, 그들이 수신한 키의 값을 비교할 수 있다. 암호화 체인 서비스(150) API는, 암호화 체인 데이터(115)와 이것을 발생시킨 데이터(데이터베이스 관리 시스템(105)으로부터 획득된 데이터) 양쪽 모두를 (예컨대) CSV 파일(CSV file)로서 제공하는 웹 서비스를 구현할 수 있다. 해시가 어떻게 구성되고 연결되는지에 대한 정확한 사양은 공개적으로 이용가능하고 당업자에게 잘 알려져 있다. 예를 들어, 통신 서버(100)는 이러한 세부사항이 표시되는 웹 페이지를 제공할 수 있다. 이것은 암호화 체인 데이터(115)의 무결성의 유효화를 가능하게 하고, 그 안에 있는 임의의 키의 값 및 소유권의 검증을 가능하게 한다. 약간 더 어려운 것으로, 사용자는, 써드-파티에 의해 제공되는 변경이 불가능한 블랍으로부터 에스크로로 보관된 데이터(예를 들어, 첨부만 가능하고 변경이 불가능한 블랍(190) 내의 에스크로로 보관된 데이터)를 다운로드함으로써 동일한 유효화를 수행하도록 선택할 수 있다. 써드-파티 제공자는 이러한 행위를 쉽게 이용 가능하게 할 수 있는 그들의 기능에 따라 부분적으로 선택된다. 예를 들어, 애저 변경이 불가능한 블랍이 사용될 수 있고, 이것은 특정 엔드포인트에 대한 HTTPS 요청에 응답하여 CSV 다운로드를 직접적으로 제공한다. 마지막으로, 제3자는, 데이터베이스 관리 시스템(105)으로부터 이용 가능한 데이터를 에스크로로 보관된 저장소(첨부만 가능하고 변경이 불가능한 블랍(190))로부터 이용 가능한 데이터와 비교할 수 있고, 이들이 동일함을 확인할 수 있다. 예를 들어, 만약 데이터베이스 관리 시스템(105)으로부터의 다운로드와 첨부만 가능하고 변경이 불가능한 블랍(190)으로부터의 에스크로로 보관된 데이터 양쪽 모두가 동일한 CSV 포맷으로 제공된다면, 스프레드시트를 사용하여 누구나 쉽게 신원 비교를 수행할 수 있다.
사용자(175)는 인터넷(160)을 통해 통신 서버(100)와 통신하기 위해 사용자 디바이스(170)를 통해 통신 서버(100)와 상호작용할 수 있다. 사용자(175)는 먼저, 등록된 사용자가 되기 위해서 사용자 디바이스(170)를 통해 통신 서버(100)와 상호작용할 수 있다. 사용자 디바이스(170)는 인터넷 웹 페이지, 등과 상호작용할 수 있는 일반적인 컴퓨팅 디바이스일 수 있다. 사용자 디바이스(170)는 또한, 스마트폰 또는 유사한 디바이스일 수 있다. 사용자 디바이스는 사용자 등록 동안 설치되는 트리폴드(173)를 가질 수 있거나, 트리폴드(173)는 이후에 획득될 수 있다.
등록된 사용자가 되는 것은 다단계 과정(multi-step process)으로 이루어지며 아래에 더 상세히 설명된다. 그러나, 사용자(175)가 등록되는 경우, 통신 서버(100)는 이하에서 더 상세히 설명되는 방법을 사용하여 여러 개의 상이한 신뢰도 레벨(또는 보안 레벨) 중 하나에서 사용자(175)의 신원을 검증했을 것이다. 사용자(175)가 어떤 보안 레벨에 등록되는 경우, 사용자 디바이스(170) 상에 사용자(175)에 대한 트리폴드(173)가 설치되고 등록될 수 있다. 이러한 등록은 결과적으로 향후 통신을 보안화하기 위해서 트리폴드(173)가 이후에 사용할 TLS(전송 계층 보안) 클라이언트 증명서를 통신 서버(100)가 발행하게 할 수 있다. TLS 증명서는 개인 키를 패스워드로 보안화된 패키지 내에 다른 신원 정보(주체 이름)와 함께 패키징하기 위한 산업 표준 포맷이다. TLS 증명서의 공개 키는 통신 서버(100) 상에서 유지될 수 있다(그리고 사용자의 경우, 애플리케이션용 디바이스 상의 특정 트리폴드에 속박됨). (암호화된 개인 키를 갖는) TLS 증명서 자체는 (트리폴드(173)와 같은) 트리폴드에 전달되어, 여기에 저장될 수 있다. TLS 증명서에 대한 패스워드(비밀번호)는 (트리폴드(173)와 같은) 트리폴드에 의해 (사용자 디바이스(170)와 같은) 사용자의 디바이스 상에 (사용자(175)와 같은) 사용자에 대해 보안 방식으로 저장될 수 있다. 이러한 등록은 또한, 사용자(175)와 다른 등록된 사용자(예컨대, 요청자(185)) 간의 통신을 용이하게 하기 위해, 트리폴드(173)에게 공개 및 개인 키 쌍을 발생시키도록 권한을 부여할 수 있다.
만약 요청자(185)와 같은 또 다른 사용자가 사용자(175)에게 메시지를 보내고자 한다면, 요청자(185)는 요청자 디바이스(180) 상의 트리폴드(183)로 하여금 (TLS 클라이언트 증명서를 사용하여) 보안화된 요청(187)을 인터넷(160)을 통해 통신 서버(100)의 공개 키 서비스 모듈(140)로 보내도록 할 수 있다. 요청(187)은 당업자에게 공지된 임의 개수의 표준 프로토콜을 사용하여 보내질 수 있다. 예를 들어, 요청(187)은 레스트풀 HTTPS 쿼리를 사용하여 보내질 수 있다. 요청(187)은 암호화된 메시지를 사용자(175)에게 보내기 위한 공개 키를 제공하도록 통신 서버(100)에게 요구할 수 있다. 만약 사용자(175)와 사용자(175)의 트리폴드(173)가 통신 서버(100) 상에 등록되었고, 이에 따라 적절한 공개 키가 사용자(175)에 대해 발생되었고 데이터베이스 관리 시스템(105)의 적절한 사용자 레코드(110)에 저장되었다면, 요청(187)에 응답하여, 통신 서버(100)의 공개 키 서비스 모듈(140)은 요청된 공개 키를 적절한 사용자 레코드(110)로부터 추출할 수 있고, 이것을 요청자(185)에게 인터넷(160)을 통해 요청자 디바이스(180) 상의 트리폴드(183)로 전송할 수 있다. 요청(187)에 대한 응답(189)에서 제공되는 공개 키를 사용하여, 요청자(185)의 트리폴드(183)는 암호화된 메시지(165)를 사용자(175)에게 보낼 수 있다. 암호화된 메시지(165)가 사용자(175)에 의해 수신되는 경우, 사용자(175)는, 요청자(185)에 의해 보내진 암호화된 메시지(165)를 암호화하기 위해 사용된 공개 키에 대응하는 사용자(175)의 개인 키를 사용하여, 암호화된 메시지(165)를 복호화하기 위해 트리폴드(173)를 사용할 수 있다.
데이터베이스 관리 시스템
도 2는 본 발명에 따른, 보안 인터넷 통신을 가능하게 하기 위한 통신 서버(100)의 데이터베이스 관리 시스템(DBMS)(200) 구성요소의 예시적인 실시형태를 나타내는 블록도이다. DBMS(200)는 도 1에 도시된 데이터베이스 관리 시스템(105)의 인스턴스화(instantiation)일 수 있다.
도 2를 참조하면, DBMS(200)는 당업자에게 일반적인 임의의 수의 데이터 모델(data model)(예컨대, 관계형, 네트워크형, 등)을 사용하여 모델링될 수 있다. 마찬가지로, 모든 실무자들에게 친숙한 임의의 수의 일반적으로 이용 가능한 데이터베이스 관리 시스템(예컨대, SQL 서버, 오라클, 라이마 데이터베이스 관리자(Raima Database Manager))이, 선택된 모델을 인스턴스화하기 위해 사용될 수 있다. 본 발명의 범위를 제한하지 않고, 일관된 쉬운 설명을 위해, DBMS(200)는 관계형 데이터 모델에 근거하는 용어 및 개념(테이블(table), 레코드(record), 필드(field), 키(key))을 사용하여 설명될 것이다.
DBMS(200) 내에는 사용자 관련 레코드(210)가 있으며, 이러한 사용자 관련 레코드(210)는 개개의 사용자와 직접적 또는 간접적으로 관련된 데이터를 포함하는 레코드이다. 사용자 관련 레코드(210)는 도 1에 도시된 사용자 관련 레코드(110)의 인스턴스화일 수 있다. 도 2에 도시된 바와 같이, 사용자 관련 레코드(210)에 저장된 데이터는 다음과 같은 테이블 및/또는 레코드를 포함할 수 있다: 사용자 검증 정보(221), 사용자 식별자(222), 암호화 공개 키(223), 서명 공개 키(224), 클라이언트 증명서(225), 보안 레벨(226), 및 사용자 자산(227).
사용자 검증 정보(221)는, 도 3에 도시되고 이하에서 상세히 설명되는 사용자 등록 서비스(300) 내의 신원 검증 프로세스의 동작 결과를 설명하는 정보를 포함할 수 있다. 그러나, 여전히 도 2를 참조하면, 사용자 검증 정보(221)는 특정 보안 레벨에서의 검증이 허용된 근거(basis)의 레코드를 제공할 수 있다. 이것은 또한, 완료되지 않은 신원 검증 프로세스 내에서 사용자의 정확한 위치에 관한 정보를 제공할 수 있다.
사용자 식별자(222)는 사용자를 식별하기 위해 사용되는 데이터를 포함할 수 있다. 사용자 식별자(222)는 전역적으로 고유한 사용자-이름을 포함할 수 있다. 이것은 또한, 이메일 주소, 전화번호, 또는 이름 혹은 성씨와 같은 추가적인 사용자를 식별시키는 정보를 포함할 수 있다.
암호화 공개 키(223)는 특정 사용자에게 속박된 원격으로 생성된 공개/개인 키 쌍의 공개 키와 관련된 데이터를 포함할 수 있다. 암호화 공개 키(223)는 선택된 DBMS(200)에 적합한 포맷으로 저장될 수 있다. 이것은 지문(thumbprint), 유효 기간(validity date range), 및 추가적인 메타 데이터와 같은 추가적인 정보를 포함할 수 있다. 암호화 공개 키(223)는 인터넷을 통해 보내지는 메시지의 암호화에 적합하도록 충분한 강도를 가져야 한다. 당업자에게 친숙한 암호화의 최상의 실행으로서, 암호화 공개 키(223)는 서명 공개 키(224)와 우선적으로 구분될 것이다.
서명 공개 키(224)는 특정 사용자에게 속박된 원격으로 생성된 공개/개인 키 쌍의 공개 키와 관련된 데이터를 포함할 수 있다. 서명 공개 키(224)는 선택된 DBMS(200)에 적합한 포맷으로 저장될 수 있다. 이것은 지문, 유효 기간, 및 추가적인 메타 데이터와 같은 추가적인 정보를 포함할 수 있다. 서명 공개 키(224)의 암호화 키 강도는 암호화 공개 키(223)의 강도보다 낮을 수 있다. 당업자에게 친숙한 암호화의 최상의 실행으로서, 서명 공개 키(224)는 암호화 공개 키(223)와 우선적으로 구분될 것이다.
클라이언트 증명서(225)는, 신뢰할 수 있는 통신이 통신 서버(100)와 (트리폴드(173)와 같은) 사용자의 트리폴드 간에 일어날 수 있도록 하기 위해 통신 서버(100)에 의해 발행된 TLS(전송 계층 보안) 클라이언트 증명서에 대한 공개 키에 관한 정보를 포함할 수 있다. 정확한 구현예에 따라, 클라이언트 증명서(225)는 클라이언트 증명서(225)가 발행된 특정 사용자 디바이스(예컨대, 사용자 디바이스(170)) 및 특정 트리폴드(예컨대, 트리폴드(173))를 식별시키는 추가 데이터를 포함할 수 있다. 클라이언트 증명서(225)는 또한, (사용자 디바이스(170)와 같은) 사용자 디바이스가 손상된 경우 쉽게 무효화할 수 있도록 만료 정보를 포함할 수 있다.
보안 레벨(226)은, 이하에서 설명되는 사용자 검증 프로세스의 결과에 근거하여 (사용자(170)와 같은) 사용자의 도출된 또는 허용된 보안 레벨에 대한 정보를 포함할 수 있다. 예를 들어, 보안 레벨(226)은 "공개(public)", "개인(private)", "보안(secure)", 또는 "강화(enhanced)"의 보안 레벨에 대응할 수 있다. 보안 레벨(226)은, 사용자 디바이스(170) 또는 요청자 디바이스(180) 상에서 각각 실행되는 소프트웨어를 통해, 사용자(175) 또는 요청자(185)에 의해 행해지는 특정 요청을 허용하거나 제한하기 위해 통신 서버(100) 상에서 실행되는 소프트웨어에 의해(예컨대, 공개 키 서비스 모듈(140)에서) 참조될 수 있다.
사용자 자산(227)은, (사용자(170)와 같은) 사용자에 등록된 자산, 또는 통신 서버(100)와 상호작용하거나 보안 검증을 위해 추적되는 자산에 관한 정보를 포함할 수 있다. 이러한 맥락에서, 용어 "자산"은, 컴퓨팅 디바이스, 소프트웨어 애플리케이션, 트리폴드, 및 인터넷 도메인 등을 포함할 수 있는 포괄적인 의미를 갖는다.
사용자 등록 서비스
도 3은 본 발명에 따른, 보안 인터넷 통신을 가능하게 하기 위해 사용자를 등록하기 위한 방법의 예시적인 실시형태를 나타내는 흐름도와 블록도가 결합된 것이다.
도 3을 참조하면, 사용자 등록 서비스(300)는 일반적인 프로세스를 포함하며, 이러한 일반적인 프로세스를 통해 사용자는 통신 서버(100) 상에 등록될 수 있다. 사용자 등록 서비스(300)는 도 1과 관련하여 언급된 사용자 등록 서비스(130) 모듈의 인스턴스화일 수 있다. 사용자 등록 서비스(300)는 다음과 같은 프로세스 단계들을 포함할 수 있다: 사용자 식별자를 수신하고 저장함(310), 사용자 신원을 검증함(320), 및 사용자 보안 레벨을 설정하고 저장함(330).
사용자 식별자를 수신하고 저장함(310)에 대응하는 단계는, 사용자 식별자(이메일 주소, 등)가, 등록(340)으로서 식별된 사용자 등록 상호작용을 통해 수신되고 데이터베이스 관리 시스템(105)(또한, DBMS(200)) 내에 저장되는 프로세스를 포함할 수 있다. 등록(340) 프로세스는 간단한 웹 페이지 인터페이스를 통해 일어날 수 있다. 이것은 사용자(305)와 같은 단일 사용자가 이메일 주소와 같은 단일 식별자를 제공하는 것을 포함할 수 있다. 이것은 또한, 사용자(305)와 같은 사용자가 다수의 사용자들에 대한 다수의 식별자들을 제공하는 것을 포함할 수 있다. 이러한 단계는 또한, 사용자(305)에 대한 연결 자격증명서(connection credential)를 확립할 수 있다. 사용자(305)는 도 1에 도시된 사용자(175)의 인스턴스화일 수 있다.
사용자 신원을 검증함(320)에 대응하는 단계는, 사용자의 신원이 검증되는 프로세스를 포함할 수 있다. 신원 증명의 신뢰도 레벨(즉, 정확성의 확률)은 대응하는 보안 레벨에 속박될 수 있다. 즉, 사용자의 신원에서의 정확성의 신뢰도가 더 높을수록, 허용될 수 있는 보안 레벨도 더 높아진다. 사용자 신원 검증의 다양한 국면들이 이하에서 더 상세히 설명된다. 사용자 신원 검증(320) 프로세스는 사용자(305)와의 직접적인 상호작용을 포함할 수 있다. 이것은 이메일에 포함(embed)된 URL 링크에 응답하기 위해 사용자(305)가 사용자 디바이스(370)와 같은 디바이스를 사용하는 것을 포함할 수 있다. 이것은 사용자(305)가 SMS에 의해 전송된 코드를 중계(relaying)하는 것을 포함할 수 있다. 이것은 사용자(305)가 웹 페이지 상에 제시되는 질문에 응답하거나 가능한 선택사항으로부터 선택하는 것을 포함할 수 있다.
사용자 보안 레벨을 설정하고 저장함(330)에 대응하는 단계는, 사용자 신원 검증(320) 프로세스의 결과가 평가되고 (사용자(305)와 같은) 사용자에 대한 보안 레벨로서 저장되는 프로세스를 포함할 수 있다. 이러한 보안 레벨은 결과적으로, 이후에 사용자(305)가 사용자 디바이스(370) 상에서 상주하고/하거나 실행되는 다양한 소프트웨어 애플리케이션 중 임의의 것을 사용하거나 사용하려고 시도할 때, 사용자(305)가 특정 활동 또는 요청에 대해 허용되게 하거나 거부되게 한다. 예를 들어, 보안 레벨은 특정 제품을 구매할 수 있는 기능을 사용자(305)에게 부여하거나 거부하기 위해 참조될 수 있고 사용될 수 있다.
공개 키 서비스
도 4는 본 발명에 따른, 보안 인터넷 통신을 가능하게 하기 위해 공개 키 서비스를 제공하기 위한 방법의 예시적인 실시형태를 나타내는 흐름도와 블록도가 결합된 것이다.
도 4를 참조하면, 공개 키 서비스(400)는, 공개 키가 이들을 요청한 사용자에게 제공되는 전체 프로세스를 예시한다. 이러한 요청(460)은 사용자-요청자(405)와 같은 사용자에 의해 제어되는 사용자 디바이스(470)와 같은 원격 사용자 디바이스로부터 발생(originate)될 수 있다. 요청(460)은 사용자 디바이스(470) 상에서 실행되는 트리폴드(475)로부터 발생될 수 있다. 요청(460)은 또한 어떤 다른 사용자에 의해 제어되는 디바이스로부터 발생될 수 있다. 또한, 트리폴드(475)는, 사용자 디바이스(470) 상에서 실행되는 애플리케이션(미도시)으로부터 공개 키에 대한 업스트림 요청(upstream request)을 수신했기 때문에, 요청(460)을 발행할 수 있다.
공개 키 요청을 수신함(410)에 대응하는 단계는, 공개 키를 제공하도록 하는 요청(460)이 사용자-요청자(405)를 위해서 사용자 디바이스(470)로부터 수신되는 청취 단계(listening step)를 포함한다. 요청(460)은, 주어진 사용자에 대응하는 공개 키를 요청할 수 있고, 또한 특정 목적을 위한 것일 수 있는데, 예컨대, 주어진 사용자에 대한 (도 2에 도시된 서명 공개 키(224)와 같은) 서명 검증 공개 키를 제공하도록 하기 위한 것일 수 있다. 요청(460)은 또한, 사용자들의 세트에 대한 특정 목적을 표시할 수 있으며, 예컨대, 사용자 A 및 사용자 B에 대한 (도 2에 도시된 암호화 공개 키(223)와 같은) 암호화 키를 제공하도록 표시할 수 있다.
요청된 공개 키 요청을 추출함(420)에 대응하는 단계는, 공개 키 요청을 수신함(410)에서 수신된 정의하는 자격(defining qualification)이, 쿼리 파라미터로 변환되고 (도 2의 맥락에서 앞서 언급된) DBMS(200)로부터 필요한 공개 키를 추출하기 위해 사용되는 프로세스를 포함한다. 이러한 파라미터는 단일의 또는 다수의 사용자 식별자 및 단일의 또는 다수의 목적을 포함할 수 있다.
요청된 공개 키를 전송함(430)에 대응하는 단계는, 이전의 요청된 공개 키 요청 추출(420) 단계에서 추출된 공개 키(440)(이것은 여러 개의 이러한 공개 키를 포함할 수 있음)가, 요청하는 트리폴드(475)에 반환되는 프로세스를 포함한다. 공개 키(440)와 같은 키는 당업자에게 공지된 지원되는 호출 프로토콜에 맞는 포맷으로 반환된다.
사용자 공개 개인 키 관리자
도 5는 본 발명에 따른, 보안 인터넷 통신을 가능하게 하기 위한 트리폴드(530)(사용자 공개-개인 키 관리자)의 예시적인 실시형태를 나타내는 흐름도와 블록도가 결합된 것이다.
도 5는 또한, (도 1에서 통신 서버(100)로서 이전에 언급된) 통신 서버(550), (도 1에서 사용자 디바이스(170)로서 이전에 언급된) 사용자 디바이스(510), 및 (트리폴드 등록 서비스(120)로서 이전에 언급된) 트리폴드 등록 서비스(555)를 예시한다.
도 5를 참조하면, 트리폴드 등록 서비스(555)는, 물리적으로 원격의 사용자 디바이스(510) 상에서 실행되는 트리폴드(530)의 초기 등록 및 권한부여를 담당할 수 있다. 트리폴드 등록 서비스(555)는 특정 사용자 디바이스(510)에 대한 특정 트리폴드(530)를 식별시키는 트리폴드 식별자(590)를 수신할 수 있다. 트리폴드 등록 서비스는 이러한 사용자의 인증을 위해 산업 표준 OAuth 서버로부터 산업 표준 JWT 인증 토큰을 허용할 수 있다. 이러한 프로세스는 당업자에게 친숙하다. 그 다음에, 트리폴드 등록 서비스(555)는 데이터베이스 관리 시스템(560)의 적절한 사용자 관련 레코드(앞에서 언급된 도 2에서 DBMS(200)의 사용자 관련 레코드들(210)에 대응함)에 트리폴드 식별자(590)를 저장할 수 있다. 모든 실무자들에게 친숙한 일반적인 암호화 라이브러리를 사용하여, 트리폴드 등록 서비스(555)는, 통신 서버(550)와의 모든 향후 통신에서 트리폴드(530) 자신을 식별시키기 위해 트리폴드(530)에 의해 사용될 TLS 클라이언트 증명서(570)를 생성할 수 있다. 클라이언트 증명서(570)는 패스워드로 보호된 개인 키에 대해 일반적으로 사용되는 패키지이다. 트리폴드(530)에 반환되는 증명서 자체는 통신 서버(550)의 파일 시스템 상의 편리한 곳에 간단히 저장될 수 있다. 클라이언트 증명서(570)에 대한 클라이언트 증명서 패스워드(571)는 비밀이고, 트리폴드(530)는 바람직하게는, 대응하는 클라이언트 증명서 패스워드(571)를 보안화된 저장소(540) 내에 저장해야 한다. 클라이언트 증명서(570)의 개인 키와 관련된 공개 키는 데이터베이스 관리 시스템(560)으로 전달된다. 이것은, 트리폴드(530)가 등록된, 관련된 사용자(미도시), 사용자 디바이스(510), 및 사용자 애플리케이션(520)에 상관적으로 속박된 자기 자신의 테이블에 저장된다. 그 다음에, 사용자 디바이스(510) 상의 트리폴드(530)는 요구되는 공개/개인 키 쌍을 생성할 수 있다. 공개 키(580)는 (도 4에 도시되고 앞에서 언급된) 공개 키 서비스(400)를 사용하여 데이터베이스 관리 시스템(560)에서의 저장을 위해 통신 서버(100)로 전송될 수 있다. 쌍의 개인 키(581)는 사용자 디바이스(510) 상의 보안 저장소(540)에 저장된다.
사용자 디바이스(510)는, 사용자 디바이스(170), 사용자 디바이스(370), 및 사용자 디바이스(470)에 대응한다. 이것은 사용자 애플리케이션(520), 트리폴드(530), 및 보안 저장소(540)를 포함할 수 있다.
사용자 애플리케이션(520)은 트리폴드(530)와 통신하도록 구성된 소프트웨어 애플리케이션을 포함할 수 있다. "트리폴드(530)와 통신하도록 구성"되는 것이 의미하는 바는, 사용자 애플리케이션(520)이 트리폴드(530)의 다음과 같은 서비스를 호출하도록 프로그래밍될 수 있다는 것이다: 암호화(533), 복호화(535), 서명(537), 및/또는 검증(539). 이것은 또한, 산업 표준 OAuth 서버와 상호작용할 수 있고 반환된 산업 표준 JWT 인증 토큰을 트리폴드에게 전달할 수 있는 기능을 가질 수 있다.
트리폴드(530)는 사용자 디바이스(510) 상에서 동작하는 구성요소 소프트웨어 모듈을 포함하는데, 이러한 구성요소 소프트웨어 모듈은, (a) 공개-개인 키 생성; (b) 공개-개인 키 관리; 및 (c) 공개-개인 키 사용을 포함하는 다양한 공개-개인 키 관리 기능을 수행한다. 이러한 기능은 다음과 같은 것으로 편성된다: 초기화(531), 암호화(533), 복호화(535), 서명(537), 및 검증(539).
초기화(531) 기능은, 트리폴드(530)가 다른 기능을 수행할 수 있기 전에 수행돼야 하는 초기 준비 및 구성 기능을 포함한다. 초기화(531)는 트리폴드(530)가 처음 호출될 때 자동적으로 실행된다. 초기화(531)는, 통신 서버(550) 상에서 상주할 수 있고 실행될 수 있는 앞서 언급된 트리폴드 등록 서비스(555)를 인터넷을 통해 호출한다. 이에 응답하여, 트리폴드 등록 서비스(555)는, 사용자 디바이스(510)에 대응하는 트리폴드 식별자(590) 및 트리폴드(530)에 대응하는 클라이언트 증명서(570)를 제공할 수 있다. 초기화(531)는, 트리폴드(530)가 통신 서버(550)와의 모든 향후 통신에 대해 자신을 식별시키기 위해 사용할 수 있는 클라이언트 증명서(590)를 수신한다. 그 다음에, 초기화(531)는 서명 및 암호화 목적을 위해 공개-개인 키 쌍을 생성한다.
그 다음에, 초기화(531)는, 발생된 공개-개인 키 쌍의 공개 키(580) 부분을 앞에서 언급된 바와 같은 데이터베이스 관리 시스템(560)에서의 저장을 위해 통신 서버(550) 상에서 실행되는 트리폴드 등록 서비스(555)에 전송할 수 있다.
초기화(531) 기능 내에서 실행되는 공개-개인 키 쌍 생성 프로세스에 의해 생성된 각각의 공개 키(580)에 대해, 대응하는 개인 키(581)가 생성된다. 개인 키(581)와 클라이언트 증명서의 패스워드(571) 양쪽 모두는 보안 저장소(540)에 안전하게 저장될 수 있다. 데이터를 안전하게 저장하기 위한 정확한 위치 및 메커니즘은 각각의 지원되는 운영 체제에 따라 상이그러나, 그러한 위치 및 메커니즘은 당업자에게 친숙하다. 클라이언트 증명서의 개인 키는 암호화되기 때문에, 이것은 디바이스의 파일 시스템 상에서 편리한 위치에 간단히 저장될 수 있다.
암호화(533)는 트리폴드(530)의 암호화 기능을 구현하는 프로세스이다. 이것은 도 9와 관련하여 이하에서 상세히 설명된다.
복호화(535)는 트리폴드(530)의 복호화 기능을 구현하는 프로세스이다. 이것은 도 10과 관련하여 이하에서 상세히 설명된다.
서명(537)은 트리폴드(530)의 디지털 서명 생성 기능을 구현하는 프로세스이다. 이것은 도 11과 관련하여 이하에서 상세히 설명된다.
검증(539)은 트리폴드(530)의 디지털 서명 검증 기능을 구현하는 프로세스이다. 이것은 도 12와 관련하여 이하에서 상세히 설명된다.
URL을 사용하는 사용자 신원 검증
도 6은 본 발명에 따른, 준비된 URL을 사용하여 보안 인터넷 통신을 가능하게 하기 위해 사용자의 신원을 검증하기 위한 방법의 예시적인 실시형태를 나타내는 흐름도와 블록도가 결합된 것이다.
도 6을 참조하면, 도 6에서 도시되는 사용자 식별 검증 방법(600)은 사용자의 이메일 주소가 본 발명의 실시형태에 의해 어떻게 검증될 수 있는지를 예시한다. 단계(610)에서는, 준비된 URL을 포함하는 이메일 메시지가 사용자(605)에 의해 제공된 이메일 주소에 이메일 메시지를 통해 보내질 수 있다. 이메일 메시지는 사용자(605)에게, 임베딩된 URL을 클릭하도록 명령할 수 있는데, 이러한 임베딩된 URL은 클릭되거나 선택될 때 바람직하게는 사용자(605)를 통신 서버(100)(도 1 참조)와 같은 통신 서버 상에서 호스팅되는 준비된 웹 페이지로 인도할 것이다. URL은 추가적으로, 이러한 특정 시간에 이러한 특정 목적을 위해 이 특정 사용자(605)에 특정된 준비된 토큰을 포함할 수 있다.
사용자 디바이스(620)를 사용해서, 사용자(605)는, 임의의 산업 표준 이메일 클라이언트를 사용해, 단계(610)에서 보내진 이메일을 열 수 있다. 사용자(605)는 그 안에 임베딩된 URL 상에서 클릭을 행함으로써 응답할 수 있다. 클릭 행위는 사용자 디바이스(620) 상에서 디스플레이되는 웹 브라우저를 호출할 수 있고 웹 브라우저가 URL에 의해 표시된 웹 페이지를 열도록 할 수 있다. 웹 페이지가 열리는 경우, 웹 페이지 상의 코드는, 통신 서버(100)(도 1 참조) 상에서 실행되는 소프트웨어에, 준비된 URL이 특정 기간 내에 액세스되었음을 통지할 수 있다. 단계(630)에서, 사용자가 요구된 URL을 특정 응답 시간 내에 활성화시켰다는 통지를 수신하는 경우, 사용자(605)가 제공된 이메일 주소를 사용하는 것으로 검증되었다는 사실을 기록하기 위해 단계(630)는 단계(640)를 호출할 수 있다. 이러한 검증은, 사용자에게 전송되는 메시지에 의해 명시되고/되거나 도 1과 관련하여 앞에서 설명된 데이터베이스 관리 시스템(105) 및/또는 도 2와 관련하여 앞에서 설명된 DBMS(200) 내에 대응하는 보안 레벨에서 사용자 신원 검증의 표시를 기록함으로써, 명시(manifest)될 수 있다.
SMS 메시지를 사용하는 사용자 신원 검증
도 7은 본 발명에 따른, 사용자의 휴대폰으로 전달되는 SMS 메시지를 사용하여 보안 인터넷 통신을 가능하게 하기 위해 사용자의 신원을 검증하기 위한 방법의 예시적인 실시형태를 나타내는 흐름도와 블록도가 결합된 것이다.
도 7을 참조하면, 도 7에서 도시되는 사용자 식별 검증 방법(700)은 사용자의 전화번호가 본 발명의 실시형태에 의해 어떻게 검증될 수 있는지를 예시한다. 이것은, 만약 예를 들어, 사용자 계정에 대해 이중 인증(two-factor authentication)이 요구된다면, 필요하거나 바람직할 수 있다.
단계(720)에서는, 사용자(705)가 사용자 식별자(222)(앞에서 설명된 도 2 참조)로서 제공한 전화번호를 통한 사용자의 전화기(750)로의 SMS 메시지를 통해 코드가 사용자(705)에게 보내질 수 있다. 코드 및 SMS 메시지는 당업자에게 공지된 임의의 산업 표준 메커니즘 또는 서비스를 사용하여 준비될 수 있고 보내질 수 있다.
전송된 SMS 코드가 사용자의 전화번호를 통해 사용자의 전화기(750) 상에서 사용자(705)에 의해 수신되는 경우, 사용자(705)는 컴퓨팅 디바이스(710)를 통해 액세스된 웹 페이지(713) 상에 제공되는 인터페이스를 사용하여, 수신된 코드를 입력할 수 있다. 컴퓨팅 디바이스(710)는 사용자의 전화기(750)와 동일할 수 있거나, 컴퓨팅 디바이스(710)는 별개의 컴퓨팅 디바이스일 수 있다. 사용자(705)가 수신된 SMS 코드를 특정 기간 내에 웹 페이지(713)에 입력하는 경우, 단계(730)는 SMS 코드를 수신할 수 있고 이것을 보내진 것과 비교할 수 있다. 만약 일치한다면, 사용자(605)의 신원이 검증되었다는 사실을 기록하기 위해 단계(730)는 단계(740)를 호출할 수 있다. 이러한 검증은, 사용자에게 전송되는 메시지에 의해 명시되고/되거나 도 1과 관련하여 앞에서 설명된 데이터베이스 관리 시스템(105) 및/또는 도 2와 관련하여 앞에서 설명된 DBMS(200) 내에 대응하는 보안 레벨에서 사용자 신원 검증의 표시를 기록함으로써, 명시될 수 있다.
신뢰할 수 있는 이름-주소 소스를 사용하는 사용자 신원 검증
도 8은 본 발명에 따른, 신뢰할 수 있는 이름-주소 소스를 사용하여 보안 인터넷 통신을 가능하게 하기 위해 사용자의 신원을 검증하기 위한 방법의 예시적인 실시형태를 나타내는 흐름도와 블록도가 결합된 것이다.
도 8을 참조하면, 도 8에서 도시되는 사용자 식별 검증 방법(800)은 신뢰할 수 있는 써드-파티 소스가 사용자(805)와 같은 사용자의 신원을 검증하기 위해 어떻게 사용될 수 있는지를 예시한다. 이러한 써드-파티 소스는, 사용자(805)의 실제 이름 및 물리적 주소를 앞에서 설명된 바와 같이 검증되었던 전자적 사용자 식별자(222)(도 2 참조, 이것의 예는 이메일 주소 및 전화번호임)와 검증 가능하게 연결시키기 위해 사용될 수 있다. 써드-파티 검증은 더 높은 보안 레벨을 확립하기 위해 사용될 수 있다.
사용자(805)는 도 1에 도시된 통신 서버(100) 상에 계정을 생성하기 위해 컴퓨팅 디바이스(810)를 사용할 수 있다. 계정-생성 프로세스 동안, 사용자(805)는 단계(820)에서 사용자 이름 및 주소 정보를 제공할 수 있다. 사용자 이름 및 주소 정보는 앞에서 설명된 DBMS(200)(도 2 참조)의 사용자 검증 정보(221)에 저장될 수 있다.
그 다음에, 단계(830)에서, 사용자 신원 검증 방법(800)은 신뢰할 수 있는 이름-주소 소스(860)로부터 사용자 이름 및 주소 정보를 획득할 수 있다. 이러한 단계(830)는 하나 이상의 신뢰할 수 있는 이름-주소 소스(860)에 액세스하는 것을 포함할 수 있다. 예를 들어, 단계(830)는 운전자의 면허증 또는 국가 신분증과 같은 신뢰할 수 있는 정부 문서를 판독하는 것을 포함할 수 있다. 이것은 에카타(Ekata)(https://ekata.com/ 참조)와 같은 신뢰할 수 있는 데이터 서비스와 통신하는 것을 포함할 수 있다. 이러한 소스는, 다음 단계(840)로부터 획득되는 결과 및 사용자(805)에 의해 추구되는 특정 보안 레벨에 따라, 반복적이거나 순차적인 방식으로 접촉될 수 있다.
단계(840)에서, 사용자 신원 검증 방법(800)은 사용자(805)로부터 수신된 사용자 이름 및 주소 정보를 신뢰할 수 있는 이름-주소 소스(860)로부터 수신된 대응하는 사용자 이름 및 주소 정보와 비교할 수 있다. 만약 실질적으로 일치한다면, 단계(850)에서 사용자(805)는 높아진 보안 레벨에서의 후속 통신들에 대해 허용될 수 있다.
사용자(805)로부터 수신된 사용자 이름 및 주소 정보와 신뢰할 수 있는 이름-주소 소스(860)로부터 수신된 대응하는 사용자 이름 및 주소 정보 간에 적절한 실질적인 일치가 없다면, 다른 신뢰할 수 있는 이름-주소 소스(860)를 사용하여 단계(830)가 반복될 수 있다. 또는 단계(850)에서 사용자(805)는 높아진 보안 레벨에서의 후속 통신에 대해 거부될 수 있다.
신뢰할 수 있는 이름-주소 소스(860)와 같은 이러한 신뢰할 수 있는 이러한 소스는 권위 있는 소스가 아니며 아울러 권위 있게 검증 가능한 소스도 아니기 때문에(미국에는 개인, 이메일, 또는 휴대폰에 대한 권위 있는 중앙 등록소가 없고, 비-법-집행 인원(non-law-enforcement personnel)이, 운전자의 면허증 또는 여권을, 발행하는 기관과 함께 검증할 수 있는 기능은 엄격히 제한됨), 부분적 일치(예를 들어, 수신된 사용자 이름 또는 수신된 주소 중 단 하나만이, 신뢰할 수 있는 사용자 이름 및 신뢰할 수 있는 주소와 일치하는 경우)에 대처하기 위한 메커니즘이 구현된다. 이러한 대처하는 메커니즘은, 사용자(805)가 가능한 주소 또는 가능한 이름 리스트에서 선택하도록 요구하는 것으로 구성될 수 있다(여기서 리스트 내의 하나의 요소는 실제 신뢰할 수 있는 이름 또는 신뢰할 수 있는 주소를 포함함). 대처하는 메커니즘은 또한, 신뢰할 수 있는 제공자 주소에 대비하여 사용자(805) 및 사용자 디바이스(810)의 지리적-위치 테스트를 행하는 것으로 구성될 수 있다.
단계(840)에서, 수신된 이름-주소의 신뢰할 수 있는 이름-주소와의 비교가 성공적으로 완료(즉, 실질적인 일치)되면, 단계(850)에서, 사용자의 신원이 더 높은 보안 레벨에 대해 검증되게 할 수 있다. 이로 인해 메시지가 사용자에게 보내지게 될 수 있다. 이로써 보안 레벨 정보가 앞에서 설명된 DBMS(200)(도 2 참조)의 사용자 검증 정보(221)에 저장되게 된다.
암호화
도 9는 본 발명에 따른, 사용자 데이터를 암호화하기 위한 방법의 예시적인 실시형태를 나타내는 흐름도와 블록도가 결합된 것이다.
도 9는 또한, (도 1에서 통신 서버(100)로서 이전에 언급된) 통신 서버(990), (도 1에서 사용자 디바이스(170)로서 이전에 언급된) 사용자 디바이스(910), 및 (도 1에서 데이터베이스 관리 시스템(105)으로서 이전에 언급된) 데이터베이스 관리 시스템(995)을 예시한다.
도 9를 참조하면, 사용자 디바이스(910)는 사용자 디바이스(170)에 대응할 수 있고/있거나 본원에 개시되고 설명되는 다른 유사한 사용자 디바이스에 대응할 수 있다. 이것은 사용자 애플리케이션(920) 및 트리폴드(930)를 포함할 수 있다.
사용자 애플리케이션(920)은 트리폴드(930)의 암호화 서비스(940)를 호출하기 위해 트리폴드(930)와 통신하도록 구성된 소프트웨어 애플리케이션을 포함할 수 있다.
트리폴드(930)는 트리폴드(173)에 대응할 수 있고/있거나 본원에 개시되고 설명되는 다른 유사한 트리폴드에 대응할 수 있다.
암호화 서비스(940)는, 사용자 애플리케이션(920)이 암호화 서비스(940)를 호출하기 위해 트리폴드(930)와 통신할 때, 단계(941)에서 시작할 수 있다. 암호화 서비스(940)가 호출될 때, 사용자 애플리케이션(920)은 암호화할 데이터 및 암호화가 수행되게 되는 임의의 목표 사용자 식별자(950)를 트리폴드(930)에게 제공할 수 있다. 암호화할 데이터는 원시 바이트 배열(raw byte array)로서 표현될 수 있다. 목표 사용자 식별자(950)는 이메일 주소 등을 포함할 수 있다.
단계(943)에서, 암호화 서비스(940)는 목표 사용자 식별자(950)를, 그 목표 사용자 식별자(950)와 관련된 공개 키(955)를 반환하도록 하는 요청과 함께, 통신 서버(990)에 보낼 수 있다. 통신 서버(990)가 공개 키(955)를 제공하는 경우, 단계(945)가 시작될 수 있다.
단계(945)에서, 암호화 서비스(940)는, 당업자에게 공지된 많은 산업 표준 암호학적 암호화 기능들 중 어느 하나를 사용하여, 사용자 애플리케이션(920)에 의해 제공된 데이터를 공개 키(955)를 사용하여 암호화할 수 있다. 암호화된 데이터는 바이트들의 배열로서 표현될 수 있다.
단계(947)에서, 암호화된 데이터는 사용자 애플리케이션(920)에 반환될 수 있다.
복호화
도 10은 본 발명에 따른, 사용자 데이터를 복호화하기 위한 방법의 예시적인 실시형태를 나타내는 흐름도와 블록도가 결합된 것이다.
도 10을 참조하면, 사용자 디바이스(1010)는 사용자 디바이스(170)에 대응할 수 있고/있거나 본원에 개시되고 설명되는 다른 유사한 사용자 디바이스에 대응할 수 있다. 이것은 사용자 애플리케이션(1020), 트리폴드(1030), 및 보안 저장소(1080)를 포함할 수 있다.
사용자 애플리케이션(1020)은 트리폴드(1030)의 복호화 서비스(1040)를 호출하기 위해 트리폴드(1030)와 통신하도록 구성된 소프트웨어 애플리케이션을 포함할 수 있다.
트리폴드(1030)는 트리폴드(173)에 대응할 수 있고/있거나 본원에 개시되고 설명되는 다른 유사한 트리폴드에 대응할 수 있다.
보안 저장소(1080)는 보안 저장소(540)에 대응할 수 있고/있거나 본원에 개시되고 설명되는 다른 유사한 보안 저장소 영역에 대응할 수 있다.
복호화 서비스(1040)는, 사용자 애플리케이션(1020)이 복호화 요청을 보냄으로써 복호화 서비스(1040)를 호출하기 위해 트리폴드(1030)와 통신할 때, 단계(1041)에서 시작할 수 있다. 복호화 서비스(1040)가 복호화 요청을 수신하는 경우, 사용자 애플리케이션(1020)은 트리폴드(1030)에게 복호화할 데이터를 제공할 수 있다. 암호화할 데이터는 원시 바이트 배열로서 표현될 수 있다.
단계(1043)에서, 복호화 서비스(1040)는 보안 저장소(1080)로부터 개인 키(1082)를 검색할 수 있다. 개인 키(1082)는, 도 5와 관련하여 언급된 공개 키(580)와 같은 해당 공개 키로 암호화되었던 데이터를 복호화할 목적을 위해 단계(531)(초기화)에서 트리폴드(1030)에 의해 생성되었다.
단계(1045)에서, 복호화 서비스(1040)는, 당업자에게 공지된 많은 산업 표준 암호학적 복호화 기능들 중 어느 하나를 사용하여, 제공된 데이터를 개인 키(1082)를 사용하여 복호화할 수 있다.
단계(1047)에서, 복호화 서비스(1040)는 복호화된 데이터를 사용자 애플리케이션(1020)에 반환할 수 있다.
서명
도 11은 본 발명에 따른, 디지털 문서에 암호화적으로 서명하기 위한 방법의 예시적인 실시형태를 나타내는 흐름도와 블록도가 결합된 것이다.
도 11을 참조하면, 사용자 디바이스(1110)는 사용자 디바이스(170)에 대응할 수 있고/있거나 본원에 개시되고 설명되는 다른 유사한 사용자 디바이스에 대응할 수 있다. 이것은 사용자 애플리케이션(1120), 트리폴드(1130), 및 보안 저장소(1180)를 포함할 수 있다.
사용자 애플리케이션(1120)은 트리폴드(1130)의 서명 서비스(1140)를 호출하기 위해 트리폴드(1130)와 통신하도록 구성된 소프트웨어 애플리케이션을 포함할 수 있다.
트리폴드(1130)는 트리폴드(173)에 대응할 수 있고/있거나 본원에 개시되고 설명되는 다른 유사한 트리폴드에 대응할 수 있다.
보안 저장소(1180)는 보안 저장소(540)에 대응할 수 있고/있거나 본원에 개시되고 설명되는 다른 유사한 보안 저장소 영역에 대응할 수 있다.
서명 서비스(1140)는, 사용자 애플리케이션(1120)이 서명 요청을 보냄으로써 서명 서비스(1140)를 호출하기 위해 트리폴드(1130)와 통신할 때, 단계(1141)에서 시작할 수 있다. 서명 서비스(1140)가 서명 요청을 수신하는 경우, 사용자 애플리케이션(1120)은 트리폴드(1130)에게 서명할 데이터 또는 디지털 문서를 제공할 수 있다. 서명할 데이터 또는 문서는 원시 바이트 배열로서 표현될 수 있다.
단계(1143)에서, 서명 서비스(1140)는 보안 저장소(1180)로부터 개인 키(1182)를 검색할 수 있다. 개인 키(1182)는 디지털 데이터에 서명할 목적을 위해 단계(531)(초기화)에서 트리폴드(1030)에 의해 생성되었고, 여기서 생성된 서명은 도 5와 관련하여 언급된 공개 키(580)와 같은 해당 공개 키로 검증될 수 있다.
단계(1145)에서, 서명 서비스(1140)는, 당업자에게 공지된 많은 산업 표준 암호학적 서명 기능들 중 어느 하나를 사용하여 디지털 서명을 생성하기 위해, 개인 키(1182)를 사용하여, 제공된 데이터에 서명할 수 있다.
단계(1147)에서, 서명 서비스(1140)는 디지털 서명을 사용자 애플리케이션(1120)에 반환할 수 있다.
검증
도 12는 본 발명에 따른, 디지털 서명을 검증하기 위한 방법의 예시적인 실시형태를 나타내는 흐름도와 블록도가 결합된 것이다.
도 12는 또한, (도 1에서 통신 서버(100)로서 이전에 언급된) 통신 서버(1290), (도 1에서 사용자 디바이스(170)로서 이전에 언급된) 사용자 디바이스(1210), 및 (도 1에서 데이터베이스 관리 시스템(105)으로서 이전에 언급된) 데이터베이스 관리 시스템(1295)을 예시한다.
도 12를 참조하면, 사용자 디바이스(1210)는 사용자 디바이스(170)에 대응할 수 있고/있거나 본원에 개시되고 설명되는 다른 유사한 사용자 디바이스에 대응할 수 있다. 이것은 사용자 애플리케이션(1220) 및 트리폴드(1230)를 포함할 수 있다.
사용자 애플리케이션(1220)은 트리폴드(1230)의 검증 서비스(1240)를 호출하기 위해 트리폴드(1230)와 통신하도록 구성된 소프트웨어 애플리케이션을 포함할 수 있다.
트리폴드(1230)는 트리폴드(173)에 대응할 수 있고, 본원에 개시되고 설명되는 다른 유사한 트리폴드에 대응할 수 있다.
검증 서비스(1240)는, 사용자 애플리케이션(1220)이 검증 서비스(1240)를 호출하기 위해 트리폴드(1230)와 통신할 때, 단계(1241)에서 시작할 수 있다. 검증 서비스(1240)가 호출되고 검증 요청을 수신할 때, 사용자 애플리케이션(1220)은 검증할 데이터 및 검증이 수행되게 되는 목표 사용자 식별자(1250)를 트리폴드(1230)에게 제공할 수 있다. 암호화할 데이터는 원시 바이트 배열로서 표현될 수 있다. 목표 사용자 식별자(1250)는 이메일 주소 등을 포함할 수 있다. 사용자 애플리케이션(1220)으로부터 단계(1241)에서 수신되는 검증 요청은, 디지털 서명, 서명된 데이터, 및 주장된 서명자(purported signer)의 사용자 식별자를 포함할 수 있다. 디지털 서명 및 서명된 데이터 양쪽 모두는 바이트들의 배열로서 표현될 수 있다.
단계(1243)에서, 검증 서비스(1240)는 목표 사용자 식별자(1250)를, 그 목표 사용자 식별자(1250)와 관련된 공개 키(1255)를 반환하도록 하는 요청과 함께, 통신 서버(1290)에 보낼 수 있다. 통신 서버(1290)가 공개 키(1255)를 제공하는 경우, 단계(1245)가 시작될 수 있다.
단계(1245)에서, 공개 키(1255)는 디지털 서명 및 서명된 데이터와 결합될 수 있다. 이러한 공개 키(1255)와 관련된 개인 키를 사용하여 서명이 생성되었음(검증되었음) 또는 생성되지 않았음(검증되지 않았음)을 증명하기 위해 산업 표준 암호학적 서명 검증 기능들이 사용될 수 있다.
단계(1247)에서, 검증 결과는 사용자 애플리케이션(1220)에 반환될 수 있다.
실시형태의 이점 및 장점
본 발명은 일반 사용자의 사용범위 내에서, 강화된 보안을 위한 인증 및 부인-방지(non-repudiation) 그리고 암호화 복호화의 목적을 위한 디지털 서명의 수행 및 검증 기능을 제공한다. 이는 인증 기관의 서명 요청을 처리(navigate)하거나, 다양한 서로 다른 물리적 디바이스 상에 증명서를 설치하는 방법을 결정할 필요없이, 이러한 기능을 실현할 수 있다. 이러한 사용자는 개인 키를 목표 공격에 취약한 다른 서버와 공유할 의무가 없으며, 써드-파티 서버 상에서 약속된 보안에 기밀 문서를 맡길 필요도 없다. 이들의 데이터 및 이들의 보안 키는 언제나 이들의 개인 디바이스 상에서 실행되는 소프트웨어의 제어 하에 있다.
이러한 기능은, 본 발명의 실시형태에 의해 개시되는 기법에 의해 보안화되는 모든 애플리케이션에 사용가능하므로, "3중화(TripleEnabled)"가 가능하게 되어, 그 기능을 이용할 수 있다.
본 발명의 실시형태의 사용자는 또한, 인터넷 상에서 자신들이 누구와 통신하고 있는지에 관해서 훨씬 더 높은 등급의 확실성을 얻는다. 이것은 여러 차원에서 일어난다. 가장 간단하게는, 이들은 소유자에 대해 쉽게 추적될 수 있는 특정 주소로부터 디지털방식으로 서명된 이메일을 얻게 된다. 실시형태는 피싱 공격에서 종종 사용되는 주소 스푸핑(address spoofing)을 극적으로 감소시킬 수 있다. 더 정교한 레벨에서, 본 발명의 실시형태에 의해 가능해진 그러한 보안화된 통신은 실제 검증된 물리적 신원에 다시 속박될 수 있다. 이에 따라, 이메일 주소 user_name@domain.com으로부터 수신되는 메시지는 그 이메일 주소로부터 왔다고 알려지게 될 뿐만 아니라, 이메일 주소 뒤에 있는 사람이 특정 주소에 살고 있는 특정 사람이라고 검증되었음이 쉽게 알려질 수 있다. 이러한 자격증명서의 보고된 오용은 쉽게 추적될 수 있고 이것에 대해 사용된 키는 무효화될 수 있다.
컴퓨팅 디바이스
도 13은 본 발명에 따른, 컴퓨팅 디바이스(1300)의 예시적인 실시형태의 블록도이며, 이러한 컴퓨팅 디바이스(1300)는, 특정 동작가능 실시형태에서, 예를 들어, 컴퓨팅 서버(100), 사용자 디바이스(170), 요청자 디바이스(180), 사용자 디바이스(370), 사용자 디바이스(470), 사용자 디바이스(510), 통신 서버(550), 사용자 디바이스(620), 사용자의 전화기(750), 컴퓨팅 디바이스(710), 컴퓨팅 디바이스(810), 사용자 디바이스(910), 통신 서버(990), 사용자 디바이스(1010), 사용자 디바이스(1110), 사용자 디바이스(1210), 및 통신 서버(1290)를 포함할 수 있다. 컴퓨팅 디바이스(1300)는, 예를 들어, 하나 이상의 네트워크 인터페이스(1310), 하나 이상의 메모리(1320), 하나 이상의 프로세서(1330), 프로그램 명령 및 로직(1340), 하나 이상의 입력/출력("I/O") 디바이스(1350), 및 I/O 디바이스(들)(1350)에 결합될 수 있는 하나 이상의 사용자 인터페이스(1360) 등과 같은 여러 구성요소 중 임의의 구성요소를 포함할 수 있다.
컴퓨팅 디바이스(1300)는 데이터 및/또는 정보를 처리할 수 있는 본 발명의 기술분야에서 공지된 임의의 디바이스를 포함할 수 있으며, 예컨대, 임의의 범용 및/또는 특수 목적 컴퓨터를 포함할 수 있고, 여기에는 개인용 컴퓨터, 워크스테이션, 서버, 미니컴퓨터, 메인프레임, 슈퍼컴퓨터, 컴퓨터 단말기, 랩탑, 태블릿 컴퓨터(예컨대, 아이패드), 웨어러블 컴퓨터, 모바일 단말기, 블루투스 디바이스, 커뮤니케이터, 스마트폰(예컨대, 아이폰, 안드로이드 디바이스, 또는 블랙베리), 프로그래밍된 마이크로프로세서 또는 마이크로제어기 및/또는 주변 집적 회로 요소, ASIC 또는 다른 집적 회로, 하드웨어 전자 로직 회로(예컨대, 개별 요소 회로), 및/또는 프로그래밍가능 로직 디바이스(예컨대, PLD, PLA, FPGA, 또는 PAL 등) 등이 포함된다. 일반적으로, 유한 상태 머신(finite state machine)이 상주하는 임의의 디바이스로서 본원에 설명되는 방법, 구조, API, 및/또는 인터페이스 중 적어도 일부를 구현할 수 있는 그러한 디바이스는 컴퓨팅 디바이스(1300)를 포함할 수 있다. 이러한 컴퓨팅 디바이스(1300)는, 하나 이상의 네트워크 인터페이스(1310), 하나 이상의 프로세서(1330), 명령 및 로직(1340)을 포함하는 하나 이상의 메모리(1320), 하나 이상의 입력/출력(I/O) 디바이스(1350), 및 I/O 디바이스(1350)에 결합된 하나 이상의 사용자 인터페이스(1360) 등과 같은 구성요소를 포함할 수 있다.
메모리(1320)는 명령 및/또는 데이터와 같은 아날로그 또는 디지털 정보를 저장할 수 있는 본 발명의 기술분야에서 공지된 임의 타입의 장치일 수 있다. 예로는, 비-휘발성 메모리, 휘발성 메모리, 랜덤 액세스 메모리(Random Access Memory), RAM, 판독 전용 메모리(Read Only Memory), ROM, 플래시 메모리, 자기 매체, 하드 디스크, 솔리드 스테이트 드라이브, 플로피 디스크, 자기 테이프, 광학 매체, 광학 디스크, 콤팩트 디스크, CD, 디지털 다용도 디스크(Digital Versatile Disk), DVD, 및/또는 RAID 어레이 등이 포함된다. 메모리 디바이스는 프로세서에 결합될 수 있고/있거나 예컨대, 본원에 개시되는 실시형태에 따라, 프로세서에 의해 실행되도록 되어 있는 명령을 저장할 수 있다.
입력/출력(I/O) 디바이스(1350)는 본 발명의 기술분야에서 공지된 임의의 감각-지향 입력 및/또는 출력 디바이스를 포함할 수 있으며, 예컨대, 청각적, 시각적, 및/또는 촉각적 디바이스를 포함할 수 있고, 여기에는 예를 들어, 모니터, 디스플레이, 영사기, 오버헤드 디스플레이, 키보드, 키패드, 마우스, 트랙볼, 조이스틱, 게임패드, 휠, 터치패드, 터치 패널, 포인팅 디바이스, 마이크로폰, 스피커, 비디오 카메라, 카메라, 스캐너, 프린터, 진동기, 촉감적 시뮬레이터, 및/또는 촉감적 패드가 포함된다(여기에는 선택에 따라 컴퓨팅 디바이스(200) 내의 다른 구성요소와 통신하기 위한 통신 포트가 포함됨).
명령 및 로직(1340)은 컴퓨팅 디바이스(200)와 같은 머신이 하나 이상의 특정 활동, 동작, 또는 기능을 수행하게 하도록 되어 있는 지시(direction)를 포함할 수 있다. 지시(이는 때때로, "커널", "운영 체제", "프로그램", "애플리케이션", "유틸리티", "서브루틴", "스크립트", "매크로", "파일", "프로젝트", "모듈", "라이브러리", "클래스", "객체", 또는 "애플리케이션 프로그래밍 인터페이스" 등으로 지칭되는 엔티티를 포함할 수 있음)은, 하드웨어, 펌웨어, 및/또는 소프트웨어에, 머신 코드, 소스 코드, 목적 코드, 컴파일링된 코드, 어셈블링된 코드, 해석가능한 코드, 및/또는 실행가능한 코드, 등으로서 구현될 수 있다. 명령 및 로직(1340)은 프로세서(1330) 및/또는 메모리(1320)에 상주할 수 있다.
네트워크 인터페이스(1310)는 정보 디바이스를 네트워크에 결합시킬 수 있는 임의의 디바이스, 시스템, 또는 서브시스템을 포함할 수 있다. 예를 들어, 네트워크 인터페이스(1310)는, 전화기, 휴대폰, 셀룰러 모뎀, 전화 데이터 모뎀, 팩스 모뎀, 무선 송수신기, 이더넷 회로, 케이블 모뎀, 디지털 가입자 회선 인터페이스, 브리지, 허브, 라우터, 스위치, 또는 다른 유사한 디바이스를 포함할 수 있다.
프로세서(1330)는 하나 이상의 미리결정된 작업을 수행하기 위한 머신-판독가능 명령의 세트 및/또는 디바이스를 포함할 수 있다. 프로세서는 하드웨어, 펌웨어, 및/또는 소프트웨어 중 어느 하나 또는 이들의 조합을 포함할 수 있다. 프로세서는, 작업(들)을 수행하기 위해, 기계적, 공압적, 유압적, 전기적, 자기적, 광학적, 정보적, 화학적, 및/또는 생물학적 원리, 신호, 및/또는 입력을 이용할 수 있다. 특정 실시형태에서, 프로세서는, 실행가능한 절차 및/또는 정보 디바이스에 의한 사용을 위해 정보를 조작하고, 분석하고, 수정하고, 변환하고, 전송하고/하거나 정보를 다른 디바이스로 라우팅시킴으로써, 정보에 관해 동작할 수 있다. 프로세서는, 중앙 프로세싱 유닛, 로컬 제어기, 원격 제어기, 병렬 제어기, 및/또는 분산된 제어기, 등으로서 기능할 수 있다. 달리 기재되지 않는다면, 프로세서는 범용 디바이스를 포함할 수 있으며, 예컨대, 마이크로제어기 및/또는 마이크로프로세서(캘리포니아, 산타 클라라의 인텔사(Intel Corporation)에 의해 제조된 그러한 펜티업 IV 시리즈의 마이크로프로세서)를 포함할 수 있다. 특정 실시형태에서, 프로세서는 전용 목적 디바이스일 수 있으며, 예컨대, 본원에 개시되는 실시형태의 적어도 일부를 자신의 하드웨어 및/또는 펌웨어에서 구현하도록 설계된 애플리케이션 특정 집적 회로(ASIC: Application Specific Integrated Circuit) 또는 현장 프로그래밍가능 게이트 어레이(FPGA: Field Programmable Gate Array)일 수 있다.
사용자 인터페이스(1360)는 사용자에게 정보를 렌더링(rendering)하고/하거나 사용자로부터 정보를 요청하기 위한 임의의 디바이스 및/또는 수단을 포함할 수 있다. 사용자 인터페이스(1360)는, 예를 들어, 텍스트, 그래픽, 오디오, 비디오, 애니메이션, 및/또는 촉각적 요소들 중 적어도 하나를 포함할 수 있다. 텍스트 요소는 예를 들어, 프린터, 모니터, 디스플레이, 영사기 등에 의해 제공될 수 있다. 그래픽 요소는 예를 들어, 모니터, 디스플레이, 영사기, 및/또는 시각적 표시 디바이스, 예컨대, 조명, 깃발, 불빛, 등을 통해 제공될 수 있다. 오디오 요소는 예를 들어, 스피커, 마이크로폰, 및/또는 다른 소리 발생 및/또는 수신 디바이스를 통해 제공될 수 있다. 비디오 요소 또는 애니메이션 요소는 예를 들어, 모니터, 디스플레이, 영사기, 및/또는 또 다른 시각적 디바이스를 통해 제공될 수 있다. 촉각적 요소는 예를 들어, 초저주파 스피커, 진동기, 촉감적 시뮬레이터, 촉감적 패드, 시뮬레이터, 키보드, 키패드, 마우스, 트랙볼, 조이스틱, 게임패드, 휠, 터치패드, 터치 패널, 포인팅 디바이스, 및/또는 다른 촉각적 디바이스 등을 통해 제공될 수 있다. 사용자 인터페이스는 예를 들어, 하나 이상의 문자, 숫자, 기호 등과 같은 하나 이상의 텍스트 요소를 포함할 수 있다. 사용자 인터페이스는 예를 들어, 이미지, 사진, 그림, 아이콘, 윈도우, 타이틀 바, 패널, 시트, 탭, 드로어, 매트릭스, 테이블, 폼, 캘린더, 아웃라인 뷰, 프레임, 다이얼로그 박스, 정적 텍스트, 텍스트 박스, 리스트, 픽 리스트, 팝-업 리스트, 풀-다운 리스트, 메뉴, 툴 바, 독, 체크 박스, 라디오 버튼, 하이퍼링크, 브라우저, 버튼, 컨트롤, 팔레트, 프리뷰 패널, 컬러 휠, 다이얼, 슬라이더, 스크롤 바, 커서, 상태 바, 스텝퍼, 및/또는 진행 표시자, 등과 같은 하나 이상의 그래픽 요소를 포함할 수 있다. 텍스트 및/또는 그래픽 요소는, 외관, 배경 컬러, 배경 스타일, 테두리 스타일, 테두리 두께, 전경 컬러, 폰트, 폰트 스타일, 폰트 크기, 정렬, 줄 간격, 들여쓰기, 최대 데이터 길이, 유효화, 쿼리, 커서 타입, 포인터 타입, 자동-크기조정, 위치, 및/또는 치수 등을 선택, 프로그래밍, 조정, 변경, 특정 등을 하기 위해 사용될 수 있다. 사용자 인터페이스는 예를 들어, 음량 컨트롤, 피치 컨트롤, 속도 컨트롤, 음성 선택기, 및/또는 오디오 재생, 속도, 정지, 빨리 감기, 역진, 등을 제어하기 위한 하나 이상의 요소와 같은 하나 이상의 오디오 요소를 포함할 수 있다. 사용자 인터페이스는 예를 들어, 비디오 재생, 속도, 정지, 빨리 감기, 역진, 줌-인, 줌-아웃, 회전, 및/또는 틸트 등을 제어하기 위한 요소와 같은 하나 이상의 비디오 요소를 포함할 수 있다. 사용자 인터페이스는 예를 들어, 애니메이션 재생, 정지, 빨리 감기, 역진, 줌-인, 줌-아웃, 회전, 틸트, 컬러, 강도, 속도, 빈도, 외관 등을 제어하는 요소와 같은 하나 이상의 애니메이션 요소를 포함할 수 있다. 사용자 인터페이스는 예를 들어, 촉감적 자극, 힘, 압력, 진동, 모션, 변위, 온도 등을 이용하는 요소와 같은 하나 이상의 촉각적 요소를 포함할 수 있다.
변형
본 발명은 하드웨어, 소프트웨어, 또는 하드웨어와 소프트웨어의 조합으로 실현될 수 있다. 본 발명은, 하나의 컴퓨터 시스템에서, 중앙집중화된 방식으로 실현될 수 있거나, 여러 컴퓨터 시스템에 걸쳐 상이한 요소들이 퍼져 있는 분산된 방식으로 실현될 수 있다. 본원에 설명되는 방법을 수행하는 데 적합한 어떤 종류의 컴퓨터 시스템 또는 기타 장치도 적합하다. 하드웨어와 소프트웨어의 일반적인 조합은 컴퓨터 프로그램을 갖는 범용 컴퓨터 시스템일 수 있으며, 여기서 컴퓨터 프로그램은, 로딩되고 실행될 때, 컴퓨터 시스템이 본원에 설명되는 방법을 수행하도록 컴퓨터 시스템을 제어한다.
비록 본 개시 내용이 특정 실시형태 및 응용예를 제공하지만, 본원에 기재된 모든 특징 및 이점을 제공하지 않는 실시형태를 포함하여, 당업자에게 명백한 다른 실시형태도 본 개시 내용의 범위 내에 있다.
본 발명은, 이미 언급된 바와 같이, 컴퓨터 시스템에 로딩될 때 본원에 설명되는 상이한 방법을 수행할 수 있는 컴퓨터 프로그램 제품(예컨대, 컴퓨터-판독가능 저장 매체 또는 디바이스)에 내장될 수 있다. "컴퓨터 프로그램"은, 본 문맥에서, 정보 처리 기능을 갖는 시스템이 특정 세트의 기능을 직접적 또는 간접적으로 수행하게 하도록 의도된 명령의 세트의 (임의의 컴퓨팅 언어, 코드 또는 표기법에서의) 임의의 표현을 의미하며, 여기에는 다음과 같은 것 중 어느 하나 또는 양쪽 모두 이후에 수행되는 것이 포함된다: a) 또 다른 언어, 코드 또는 표기법으로의 변환; 또는 b) 상이한 물질 형태에서의 재현을 포함하는 재현.
전술한 개시 내용은 단지 본 발명을 예시하기 위해 기재되었으며, 이를 제한하기 위한 것은 아니다. 수정예, 변형예, 및 추가적인 실시형태가, 본 발명의 사상 및 의도된 범위로부터 벗어나는 일 없이, 전술한 교시에 의해 그리고 첨부된 청구범위의 범위 내에 포함되는 것으로 이해될 것이다. 다른 로직이 예시적인 실시형태의 일부로서 제공될 수도 있지만, 본 발명을 모호하게 하지 않도록 하기 위해 본원에는 포함시키지 않는다. 본 발명의 사상 및 본질을 포함하는 개시되는 실시형태의 수정예가 당업자에 의해 이루어질 수 있으므로, 본 발명은 첨부되는 청구범위 및 그 등가물의 범위 내에 있는 모든 것을 포함하는 것으로 해석되어야 한다.

Claims (14)

  1. 인터넷을 통한 암호화 통신(cryptographic communication)을 용이하게 하기 위한 방법으로서, 상기 방법은,
    상기 인터넷을 통해 액세스가능한(accessible) 적어도 하나의 컴퓨팅 서버 상에 상주하는 데이터베이스 관리 시스템(DBMS: DataBase Management System)에 복수의 사용자를 등록하는 단계로서, 상기 등록 단계는, 각각의 이러한 사용자에 대해,
    (a) 상기 사용자와 관련된 사용자 식별자를 수신하는 것,
    (b) 상기 사용자로부터 공개 키(public key)를 수신하는 것,
    (c) 상기 사용자의 신원(identity)을 검증하는 것,
    (d) 상기 사용자 식별자 및 상기 공개 키를 상기 DBMS 내의 사용자 항목(user entry)에 저장하는 것, 및
    (e) 상기 사용자와 관련된 사용자 클라이언트 증명서(user client certificate)를 생성시키는 것
    을 포함하는, 단계;
    요청된 사용자 식별자와 관련된 요청을 상기 인터넷을 통해 요청자로부터 수신하는 단계;
    상기 요청에 응답하여,
    상기 요청된 사용자 식별자를 포함하는 일치하는 사용자 항목에 대해 상기 DBMS를 탐색하고,
    상기 일치하는 사용자 항목으로부터 상기 공개 키를 추출하고,
    상기 추출된 공개 키를 상기 요청자에게 전송하는 것;
    상기 컴퓨팅 서버 상에 암호화 체인(cryptographic chain)을 생성하는 단계로서, 상기 암호화 체인은 복수의 연쇄된 레코드(chained record)를 포함하고, 각각의 이러한 연쇄된 레코드는 상기 DBMS 내의 상기 사용자 항목 중 하나로부터 추출된 데이터를 포함하는, 단계;
    상기 생성된 암호화 체인에 대한 액세스를 제공하는 단계; 및
    상기 생성된 암호화 체인의 복사본(copy)을 변경이 불가능하고 첨부만 가능한 블랍 저장소(immutable, append-only blob storage)에 보안 연결(secure connection)을 통해 다운로드(downloading)하는 단계
    를 포함하는, 방법.
  2. 제1항에 있어서,
    상기 암호화 체인은 상기 컴퓨팅 서버 상에서 실행되는 프로세스에 의해 생성되고, 상기 프로세스는,
    각각의 연쇄된 레코드를 해싱(hashing)하는 것;
    각각의 해싱된 연쇄된 레코드에 서명(signing)하는 것; 및
    각각의 서명된 해싱된 연쇄된 레코드를 이전에 서명된 해시 연쇄된 레코드와 함께 해싱하여, 서명된 해시 연쇄된 레코드의 체인을 형성하는 것
    을 포함하는, 방법.
  3. 제1항에 있어서,
    상기 요청은 목적(purpose)을 포함하고, 상기 목적은 디지털 데이터를 암호화하는 것인, 방법.
  4. 제1항에 있어서,
    상기 요청은 목적을 포함하고, 상기 목적은 암호화 서명을 검증하는 것인, 방법.
  5. 제1항에 있어서,
    상기 공개 키는 상기 사용자에 의해 제어되는 컴퓨팅 디바이스에 의해 생성되는 공개/개인 키 쌍(public/private key pair)의 구성요소인, 방법.
  6. 제5항에 있어서,
    상기 공개/개인 키 쌍의 개인 키 구성요소는 상기 사용자의 컴퓨팅 디바이스 상에 보유(retain)되어 있는, 방법.
  7. 제1항에 있어서,
    상기 디지털 요청은 보안 연결을 통해 수신되는, 방법.
  8. 제1항에 있어서,
    상기 사용자 식별자는 상기 사용자에 의해 제공되는 이메일 주소를 포함하고, 상기 사용자 신원 검증 단계는,
    준비된 URL을 상기 이메일 주소에 이메일로 보내는 것; 및
    상기 준비된 URL이 특정 기간 내에 액세스되었다는 통지를 수신하는 것
    을 포함하는, 방법.
  9. 제1항에 있어서,
    상기 사용자 식별자는 상기 사용자에 의해 제공되는 전화번호를 포함하고, 상기 사용자 신원 검증 단계는,
    SMS 텍스트 메시지를 통해 상기 전화번호에 코드를 보내는 것; 및
    특정 기간 내에 인터넷 웹 페이지 인터페이스를 통해 상기 코드를 수신하는 것
    을 포함하는, 방법.
  10. 제1항에 있어서,
    상기 사용자 신원 검증 단계는,
    상기 사용자로부터 사용자 이름 및 사용자 주소를 수신하는 것;
    신뢰할 수 있는 이름-주소 정보 소스로부터 상기 사용자에 대한 신뢰할 수 있는 사용자 이름 및 신뢰할 수 있는 사용자 주소를 획득하는 것; 및
    상기 수신된 사용자 이름 및 수신된 사용자 주소를 상기 신뢰할 수 있는 사용자 이름 및 상기 신뢰할 수 있는 사용자 주소에 대비하여 비교하는 것
    을 포함하는, 방법.
  11. 제10항에 있어서,
    상기 방법은,
    상기 비교하는 단계가 상기 수신된 사용자 이름과 상기 신뢰할 수 있는 사용자 이름의 실질적인 일치를 발견한 경우, 그리고 또한
    상기 비교하는 단계가 상기 수신된 사용자 주소와 상기 신뢰할 수 있는 사용자 주소의 실질적인 일치를 발견한 경우,
    상기 사용자 신원을 검증된 것으로서 허용하는 단계를 추가로 포함하는, 방법.
  12. 제10항에 있어서,
    상기 방법은,
    상기 비교하는 단계가 상기 수신된 사용자 이름과 상기 신뢰할 수 있는 사용자 이름 간의 실질적인 일치가 적은 것을 발견한 경우, 또는
    상기 비교하는 단계가 상기 수신된 사용자 주소와 상기 신뢰할 수 있는 사용자 주소 간의 실질적인 일치가 적은 것을 발견하고, 상기 사용자가, 웹 페이지 인터페이스를 통해, 디스플레이된 이름 및 주소의 세트(set)로부터 상기 수신된 사용자 이름 및 상기 수신된 사용자 주소를 정확하게 선택하는 경우,
    상기 사용자 신원을 검증된 것으로서 허용하는 단계를 추가로 포함하는, 방법.
  13. 제10항에 있어서,
    상기 방법은,
    상기 비교하는 단계가 상기 수신된 사용자 이름과 상기 신뢰할 수 있는 사용자 이름 간의 실질적인 일치가 적은 것을 발견한 경우, 또는
    상기 비교하는 단계가 상기 수신된 사용자 주소와 상기 신뢰할 수 있는 사용자 주소 간의 실질적인 일치가 적은 것을 발견하고, 상기 사용자가, 웹 페이지 인터페이스를 통해, 디스플레이된 이름 및 주소의 세트로부터 상기 수신된 사용자 이름 또는 상기 수신된 사용자 주소를 정확하게 선택하고, 상기 선택 이후, 정부에서 발행된 신원증명 문서(government-issued identification document)로부터, 정확하게 선택되지 않은 이름 또는 주소와 성공적으로 일치하는 신뢰할 수 있는 이름 및 신뢰할 수 있는 주소가 추출되는 경우,
    상기 사용자 신원을 검증된 것으로서 허용하는 단계를 추가로 포함하는, 방법.
  14. 제10항에 있어서,
    상기 사용자 신원 검증 단계는,
    정부에서 발행된 신원증명 문서로부터, 신뢰할 수 있는 사진, 추가적인 신뢰할 수 있는 이름, 및 추가적인 신뢰할 수 있는 주소를 추출하는 단계; 및
    (1) 상기 수신된 사용자 이름이 상기 추가적인 신뢰할 수 있는 이름과 실질적으로 일치하고, 상기 수신된 사용자 주소가 상기 추가적인 신뢰할 수 있는 주소와 실질적으로 일치하는 경우, 또는
    (2) 상기 수신된 사용자 이름이 상기 추가적인 신뢰할 수 있는 이름과 실질적으로 일치하거나, 상기 수신된 사용자 주소가 상기 추가적인 신뢰할 수 있는 주소와 실질적으로 일치하고, 상기 사용자가 상기 추가적인 신뢰할 수 있는 주소에 대응하는 지리적-위치(geo-location)로부터, 준비된 URL에 성공적으로 액세스하는 경우,
    상기 사용자 신원을 검증된 것으로서 허용하는 단계
    를 추가로 포함하는, 방법.
KR1020237040889A 2021-04-29 2022-04-28 보안 인터넷 통신을 위한 시스템 및 방법 KR20240009957A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US202163181297P 2021-04-29 2021-04-29
US63/181,297 2021-04-29
US17/729,177 US11764976B2 (en) 2021-04-29 2022-04-26 System and method for secure internet communications
US17/729,177 2022-04-26
PCT/US2022/026665 WO2022232353A1 (en) 2021-04-29 2022-04-28 System and method for secure internet communications

Publications (1)

Publication Number Publication Date
KR20240009957A true KR20240009957A (ko) 2024-01-23

Family

ID=83808740

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237040889A KR20240009957A (ko) 2021-04-29 2022-04-28 보안 인터넷 통신을 위한 시스템 및 방법

Country Status (8)

Country Link
US (2) US11764976B2 (ko)
EP (1) EP4331175A1 (ko)
KR (1) KR20240009957A (ko)
CN (1) CN117751551A (ko)
BR (1) BR112023022498A2 (ko)
CA (1) CA3217120A1 (ko)
IL (1) IL308059A (ko)
WO (1) WO2022232353A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220350984A1 (en) * 2021-04-30 2022-11-03 Docusign, Inc. Identity verification in a document management system

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7181017B1 (en) 2001-03-23 2007-02-20 David Felsher System and method for secure three-party communications
US7613929B2 (en) * 2004-11-19 2009-11-03 Triad Biometrics, Llc Method and system for biometric identification and authentication having an exception mode
US7870202B2 (en) * 2004-12-03 2011-01-11 Clairmail Inc. Apparatus for executing an application function using a smart card and methods therefor
US8387122B2 (en) * 2008-05-16 2013-02-26 University Of Washington Access control by testing for shared knowledge
KR101661930B1 (ko) * 2015-08-03 2016-10-05 주식회사 코인플러그 블록체인을 기반으로 하는 공인인증서 발급시스템
CA3015697C (en) 2016-02-29 2022-11-22 Securekey Technologies Inc. Systems and methods for distributed identity verification
US10574692B2 (en) 2016-05-30 2020-02-25 Christopher Nathan Tyrwhitt Drake Mutual authentication security system with detection and mitigation of active man-in-the-middle browser attacks, phishing, and malware and other security improvements
US11645642B2 (en) * 2017-10-26 2023-05-09 Jack Shauh Mobile payment system and method using a mobile payment device without an installed application
US11836717B2 (en) 2017-12-04 2023-12-05 Vijay Madisetti System and method for processing payments in fiat currency using blockchain and tethered tokens
US10749676B2 (en) 2018-05-01 2020-08-18 Americorp Investments Llc Distributed consent protecting data across systems and services
US11424910B2 (en) * 2018-07-31 2022-08-23 EMC IP Holding Company LLC Enterprise storage of customer transaction data using a blockchain
US10972274B2 (en) 2018-08-29 2021-04-06 International Business Machines Corporation Trusted identity solution using blockchain
US10656936B2 (en) * 2018-08-30 2020-05-19 Dell Products L.P. Systems and methods for software integrity validation using blockchain
US10855447B2 (en) * 2018-10-30 2020-12-01 EMC IP Holding Company LLC Request approval using blockchain technology
WO2021026736A1 (en) 2019-08-12 2021-02-18 Advanced New Technologies Co., Ltd. Blockchain-based judgment execution
EP3915078A4 (en) * 2020-01-16 2022-10-19 MX Technologies, Inc. PAYMENT PROCESSING
US10972475B1 (en) 2020-01-29 2021-04-06 Capital One Services, Llc Account access security using a distributed ledger and/or a distributed file system
US11769152B2 (en) * 2020-05-01 2023-09-26 Mastercard International Incorporated Verifying user identities during transactions using identification tokens that include user face data

Also Published As

Publication number Publication date
US20230362018A1 (en) 2023-11-09
EP4331175A1 (en) 2024-03-06
CN117751551A (zh) 2024-03-22
US11764976B2 (en) 2023-09-19
BR112023022498A2 (pt) 2024-02-27
CA3217120A1 (en) 2022-11-03
US20220353092A1 (en) 2022-11-03
WO2022232353A1 (en) 2022-11-03
IL308059A (en) 2023-12-01

Similar Documents

Publication Publication Date Title
US11387986B1 (en) Systems and methods for encryption and provision of information security using platform services
US11704427B2 (en) Systems and methods for providing data loss prevention via an embedded browser
US20220300584A1 (en) Systems and methods for adding watermarks using an embedded browser
KR101878149B1 (ko) 패스워드의 보안 입력 및 처리 장치, 시스템 및 방법
JP5852265B2 (ja) 計算装置、コンピュータプログラム及びアクセス許否判定方法
US8220035B1 (en) System and method for trusted embedded user interface for authentication
US8353016B1 (en) Secure portable store for security skins and authentication information
US20100082989A1 (en) Storing Composite Services on Untrusted Hosts
US11184336B2 (en) Public key pinning for private networks
JP6756056B2 (ja) 身元検証による暗号チップ
US20220130401A1 (en) Systems and methods for watermarking audio of saas applications
JP2022534677A (ja) ブロックチェーンを使用するオンラインアプリケーションおよびウェブページの保護
US20230362018A1 (en) System and Method for Secure Internet Communications
US11443023B2 (en) Distributed profile and key management
US11450069B2 (en) Systems and methods for a SaaS lens to view obfuscated content
US11973860B1 (en) Systems and methods for encryption and provision of information security using platform services
US20230229752A1 (en) Attestation of application identity for inter-app communications
TW202314543A (zh) 作業系統登錄方法、電子設備及儲存介質