2017-05-20 1 views
1

하지 않을 수 있습니다키 보안 - 키가 안전하도록하는 방법은 무엇입니까?

byte[] kek = new byte[32]; 
secureRandom.nextBytes(kek); 
byte[] kekHash = SHA512.hash(kek); 

... 메모리에 있고 파일이나 데이터베이스에 기록되지 않은 키 암호화 키가 있다고 가정 그리고 키 암호화 키가 임시 것을 가정하고 데이터 암호화 키거나 일과성이있다.

kek을 어떻게 보호합니까?

kek이 가상 메모리에 기록되지 않도록하려면 어떻게합니까?

kek을 다른 응용 프로그램 (예 : CheatEngine)에서 읽지 않도록하려면 어떻게해야합니까?

kek이 응용 프로그램에서 생성되고 다른 응용 프로그램에서 kekkekHash을 조작하지 않도록하려면 어떻게해야합니까?

"소프트웨어 HSM"에 대해 들어 봤습니다. 그들이 사용하는 키를 안전하게 만드는 것은 어떤 기술을 사용합니까?

답변

1

암호화 키를 확실하게 보호하려면 하드웨어 보안 모듈 (HSM)을 사용해야합니다. 이 키는 안전하게 키를 저장할 수있는 물리적 장치입니다. 그들에 대한 자세한 내용은 here을 참조하십시오.

현재 시나리오에서는 소프트웨어 (이 경우 java)를 사용하여 암호화 키를 생성하고 소프트웨어에서도 암호 연산 (암호화/암호 해독)을 수행합니다. 그러나 HSM을 사용하면 실제로 하드웨어에 키를 생성하고 저장하게되며 소프트웨어 자체가 아닌 하드웨어 자체에서 암호화 작업을 수행하게됩니다. 또한 소프트웨어가 하드웨어와 통신하기 위해해야하는 많은 구성이 있습니다. 따라서 HSM에 들어가서 키를 보는 것은 쉽지 않습니다. 이것은 HSM을 어떻게 사용할 것인지에 대한 높은 수준입니다. PKCS # 11 API는 일반적으로 하드웨어와 상호 작용하는 데 사용됩니다. 자세한 내용은 here을 참조하십시오.

이러한 장치는 일반적으로 HSM (서버만큼 큰 크기), USB 토큰, 스마트 카드 등 3 가지 주요 팩토리 팩토리로 제공됩니다. 이러한 장치는 수 백에서 천 달러까지 실행될 수 있습니다.

HSM 작동 방법을 시도하거나 비용이 많이 들거나 자신의 프로젝트에 R & D를하고 싶다면, SoftHSM을 사용할 수 있습니다. 즉, 평소와 같이 (PKCS # 11을 사용하여) 하드웨어와 상호 작용할 때 SoftHSM 소프트웨어와 상호 작용하지만 실제로 키는 소프트웨어에 저장됩니다. SoftHSM은 물리적 장치가 아니기 때문에 컴퓨터에 설치할 소프트웨어입니다. 암호 연산은 소프트웨어에서도 수행됩니다. 그리고 앞으로 실제 HSM과 통합 할 준비가되면 SoftHSM 코드를 사용할 수 있습니다. SoftHSM 설명서 here을 참조 할 수 있습니다.

키를 안전하게 저장하려면 HSM을 사용할 수 있습니다. 그러나 소프트웨어를 사용하면 항상 개방형입니다. 암호화 키를 암호화하는 슈퍼 마스터 키가 있더라도 슈퍼 마스터 키를 어딘가에 저장해야합니다. 일반적으로 Java KeyStore에 저장됩니다. Java KeyStore는 암호로 보호되어 있으므로 어딘가에 저장해야합니다.

조금 더 높은 보안에 접근 할 수있는 한 가지 방법은 이러한 중요한 작업을 수행하는 코드를 난독 화하는 것입니다. 난독 화조차도 깨질 수 있지만, 시간은 조금 더 걸립니다.

+0

안녕하십니까, 답변 해 주셔서 감사합니다. HSM에 대한 경험이 있지만 현재 소프트웨어 솔루션을 찾고 있습니다. 키 암호화 키를 보호하는 방법을 생각해보십시오. 또한 난독 화 제안을 고맙게 생각하지만, ProGuard를 Java 또는 상용화 된 다른 obfuscator와 함께 사용하는 것이 꽤 표준이라고 말해야합니다. 더 중요한 것은 Kirchoff의 원칙에 따르면 공격자는 키의 가치와 코드/시스템의 모호성/보안을 통한 보안이 용납 될 수 없다는 점을 제외하면 시스템에 대한 완벽한 지식을 가지고 있다고 가정합니다. – user3635998