Inblock KMS(KeyManagementSystem)

METACOIN
Metacoin
Published in
5 min readNov 17, 2020

We roll out the INBLOCK’s KeyManagementSystem(KMS).

INBLOCK’s KMS provides the wallet service to keep the Digital Asset, stores the Private Key and creates the signature using the stored Private Key.

The most important thing in a Digital Asset Trading is the signature how to authenticate the transaction requested by you.

When User A transfer the 100 MTC to User B,
A makes a signature using A’s private key to verify that this transaction requested by A and requests the transaction attached with this signature. Then it requests the transaction by attached this signature.
Metacoin checks whether the signature is correct by using the Public Key stored in the wallet created by User A.

It was the most import issue how to protect the Private Key in the digital asset wallet.

The 90% of the sensitive data leaking such as Private Key is caused by internal employees. It must be the critical treat whether this is a mistake or intentional.

There is the way to encrypt the internal data with Hardware Security Module(HSM).
But This Unencrypted data

Without encryption

or

Encryption in Application

to

Using HSM

has to modify the previously developed application, and it depends on developers whether the data is securely encrypted or Key is well managed.

  • There is a very simple program with 2 functions that allows the user to save and retrieve the data.
  • It is created properly and reasonable included the user’s authentication process.
  • It’s provided the data to the authenticated users.
    But it can be accessed by application developers or O/S operator without an authentication process.
  • Even if the data is encrypted, the developers know the encryption method of the data and the storage location of the encryption key. This is same as the unencrypted one.

INBLOCK’s KMS runs on IBM Hyper Protect Virtual Servers (HPVS) in IBM LinuxONE.

All data is encrypted and stored by running user’s application in an isolated environment.
(Developers are not involved in the encryption process.)
It can not access the filesystem in anyway.

If you’re a developer, you can see the very simple source code of KMS.
(https://github.com/MetacoinDeveloprTeam/walletKMS)

You can check that user’s data is saved in the “db” folder without any encryption.

There is a serious security fault if running on existing operating system.

But developers or operators can not be accessed the “db” folder with running on HPVS. It is not possible to arbitrarily change the running program.

INBLOCK is pleased to offer the Wallet service which solves the security threat in the past.

Inblock KMS(KeyManagementSystem) 을 소개합니다.

Inblock KMS 는 가상자산을 보관하는 지갑 역할을 하며, 주소를 생성하고, Private Key를 저장하여주고, 저장된 Private Key 를 이용하여 signature를 대신 생성해주는 역할을 합니다.

가상자산 거래에 있어 가장 중요한것은 자신이 요청한 거래인것을 증명하기 위한 signature 입니다.

사용자 A가 사용자 B에게 100 MTC를 이체할때.
이 이체 요청이 사용자 A가 요청한 것임을 증명하기 위하여 사용자 A는 자신의 Private Key를 이용하여 signature 을 하고, 이 signature 을 첨부하여 이체를 요청합니다.
Metacoin 에서는 사용자 A가 만든 지갑에 저장된 Public Key를 이용하여 signature 가 맞는지 확인을 하게 됩니다.

결국 Private Key는 매우 중요하며, 가상자산 을 보관하는 지갑에서 Private Key를 어떻게 보호할것인가는 가장 중요한 문제였습니다.

Private Key 와 같은 민감한 데이터 유출사고의 90%는 내부 직원에 의한 사고 입니다.
이것이 실수건, 고의가 아니건, 가장 큰 위협인것은 틀림 없습니다.

HSM을 사용하여 내부 Data를 암호화 하는 방법도 있습니다.

기존에 방법들을 살펴보면, 암호화 하지 않고 저장하는 방법(아마도 개발 환경 일것 입니다.)

암호화 하지 않고 저장

혹은 기존 Application을 수정하여 암호화 하는 방법들을 사용할 수 있습니다.

Application에서 암호화
HSM을 이용하여 암호화

하지만, Data를 안전하게 암호화 하는지, Key는 잘 관리하는지 여부를 개발자에게 의존하여야 합니다.

간단한 프로그램으로 예를 들어보겠습니다.

  • 사용자가 Data를 저장하고, 불러올 수 있는 2가지 기능이 있는 아주 간단한 프로그램이 있습니다. 물론, 적절한 그리고 합리적인 사용자 인증과정을 포함하여 만들어진 프로그램입니다.
  • 이 프로그램에서 제공되는 Data는 인증된 사용자에게 Data를 제공하는것입니다.
  • 하지만, Application 개발자 혹은 O/S운영자는 인증과정 없이 Data에 접근할 수 있습니다.
  • Data가 암호화 되어있다고 하여도 개발자는 Data의 암호화방식, 암호화 키 저장 위치를 알고 있으며, 이것은 암호화 되지 않은것과 동일합니다.

Inblock KMS(KeyManagementSystem)는 IBM® LinuxOne 에서 구동되는 IBM® Hyper Protect Virtual Servers 에서 구동됩니다.

Hyper Protect Virtual Servers(이하 HPVS) 는 격리된 환경에서 사용자의 Application을 구동시켜 모든 Data를 HPVS가 암호화 하여 저장합니다.(개발자가 암호화 과정에 관여하지 않습니다) 어떠한 방법으로도 파일시스템에 접근할 수 없습니다.

개발자가 KMS의 소스 코드(https://github.com/MetacoinDeveloprTeam/walletKMS) 를 본다면 놀랄정도로 간단한것을 확인하실 수 있습니다.

사용자의 Data를 “db” 폴더에 어떠한 암호화 없이 저장하는것을 확인하실 수 있습니다.

이 프로그램이 기존 운영체제에서 구동된다면 보안상의 심각한 결함이 있는것입니다.

하지만 HPVS에서 구동되어 개발자나, 운영자 그 누구도 “db” 폴더에 접근할 수 없습니다.
또한 구동중인 프로그램을 임의로 변경할 수도 없습니다.

Inblock은 기존의 가장 큰 보안 위협이였던 문제를 해결한 시스템으로 Wallet 서비스를 제공하게되어 기쁘게 생각합니다.

--

--