​​NI LabVIEW 암호화 및 보안 통신 가이드

개요

​​데이터 보안은 최신 테스트 및 측정 시스템의 중요한 부분입니다. 이 가이드에서는 암호 기술 개념을 소개하고 NI LabVIEW 어플리케이션에서 암호화, 보안 통신, 유휴 상태의 데이터 보호 및 키 관리를 구현하는 방법과 FIPS 및 규제 환경에 대한 실질적인 지침을 제공합니다.

내용

LabVIEW 암호화 및 보안 통신 가이드

암호 기술은 오늘날 데이터를 보호하는 데 그 어느 때보다 중요합니다. 테스트 시스템의 경우에도 엔지니어는 전송 및 저장 시 테스트 데이터를 보호하기 위한 암호 기술을 고려해야 합니다. 악성 행위자가 접근 권한을 얻거나 내부자가 의도치 않게 데이터를 의도된 용도 외부에 노출시켜 시스템이 손상되는 경우에도 암호화는 데이터를 보호할 수 있습니다. 암호화를 포함한 데이터 보호는 회사의 지적재산권을 보호하거나, 고객 데이터를 보호하거나, 보안 규정을 준수하기 위해 중요합니다.

이 문서에서는 LabVIEW 환경의 암호 기술에 대한 실용적이고 구현 중심의 가이드를 제공하며, 암호 기술에 대한 사전 경험이 없는 엔지니어를 위해 설계되었습니다.

암호 기술의 기본 사항

​암호 기술이란 무엇입니까?

​암호 기술은 암호화, 해싱, 디지털 서명, 키 교환을 포함하는 광범위한 데이터 보호 기술 분야입니다.

​암호화는 키로 데이터를 잠그는 것과 유사합니다. 일반 텍스트는 암호화 이전의 텍스트이며, 키 없이도 누구나 읽을 수 있습니다. 암호 텍스트는 암호화 이후의 텍스트이며, 암호화를 해제할 키가 있는 사람만 접근할 수 있습니다.

​디지털 암호화에서 키는 일반 텍스트의 비트를 인코딩하여 암호 텍스트로 변환하는 데 사용되는 문자 집합입니다. 키가 있는 사람은 데이터를 잠금 해제할 수 있으므로 키를 보호해야 합니다. 어떤 암호화 알고리즘도 암호화된 데이터를 해제하는 키의 의도치 않은 공유를 막을 수 없습니다. 데이터를 보호하기 위해 키는 주기적으로 교체되어 새 키를 생성하고, 이전 키는 더 이상 사용되지 않게 합니다.

​해싱은 단방향 변환입니다. 이는 데이터 비트의 집합을 고정된 길이의 다이제스트로 변환하며, 이는 서로 다른 입력에 의해 복제될 가능성이 매우 낮습니다. 이는 소스 데이터의 무결성을 확인하는 데 사용됩니다. 암호화와 달리 해시는 원래 소스 데이터로 되돌릴 수 없습니다.

​디지털 서명은 프라이빗 키를 사용하여 데이터의 해시를 기반으로 암호 서명을 생성합니다. 서명은 문서와 함께 전송됩니다. 수신자는 발신자의 퍼블릭 키를 사용하여 서명을 확인하고 문서가 서명된 이후 변경되지 않았는지 확인합니다.

​암호화 세부사항

​이 섹션에서는 암호화가 어떻게 작동하는지 자세히 설명합니다. 더 깊은 토론에 관심이 있는 독자들을 위해 JKI는 LabVIEW의 간단한 XOR 암호화에 대한 훌륭한 소개를 제공합니다.

​암호화는 XOR 함수로 가장 낮은 레벨에서 시작합니다. XOR의 수학적 프로퍼티는 고유하며, 데이터가 통과할 때 정보가 손실되지 않도록 합니다. 출력의 절반이 참이고 절반이 거짓이므로 XOR 함수는 고유합니다:

 

​표 1: XOR 진리표

 

​또한 XOR에는 함수를 통해 양방향으로 데이터를 이동할 수 있는 결합 및 교환 프로퍼티가 있습니다. 이는 XOR를 통해 데이터를 처리한 후 다시 처리하여 원래 데이터를 복구한다는 것을 의미합니다.

​이러한 프로퍼티를 사용하면 메시지와 키에 XOR 연산을 수행하여 암호화된 메시지를 생성할 수 있습니다. XOR와 같은 키를 사용하여 암호화된 메시지를 원래 메시지로 복구할 수 있습니다.

​암호화를 위해 XOR을 사용하면, 다음의 모든 조건이 충족되면 깨뜨릴 수 없는 암호를 생성할 수 있습니다.

  • ​키는 진정한 난수입니다.
  • ​키는 최소한 메시지 길이 이상이어야 합니다.
  • ​키의 어떤 부분도 다시 사용되지 않습니다.
  • ​키는 비밀로 유지됩니다.

​이러한 작업에는 과제가 있습니다. 특히 전송을 시작하기 전에 메시지의 길이가 알려져 있지 않은 경우, 키의 길이가 항상 메시지의 길이와 같다고 기대하는 것은 적절하지 않습니다. 또한 현대 시스템에서는 반복되는 부분이 없는 진정한 난수 키를 생성하기 어렵습니다.

​키 길이 문제를 해결하기 위해 알려진 시작점을 기반으로 임의 길이의 키를 생성하는 알고리즘이 사용됩니다. 알고리즘의 시작점은 무작위로 생성되어 발신자와 수신자 간에 공유됩니다. 동일한 시드와 알고리즘을 사용하면, 수신자는 발신자가 생성한 것과 동일한 키를 생성할 수 있습니다.

​그림 1의 LabVIEW 프로그램은 가우스 화이트 노이즈 생성기를 사용하여 이 개념을 보여줍니다. 이 패턴은 무작위로 보이고 많은 난수성 테스트를 통과하며 초기 시드를 알고 있으면 완전히 재현할 수 있기 때문에 의사 난수입니다.

가우스 화이트 노이즈 패턴을 생성하는 LabVIEW 코드

​그림 1: LabVIEW의 의사 난수 패턴 생성

​위의 코드를 사용하면 동일한 시드 또는 다른 시드 중에서 선택할 수 있습니다. 동일한 시드를 사용하면 그림 2와 같이 동일한 "임의" 패턴이 생성됩니다.

결과가 일치하는 두 개의 화이트 노이즈 패턴을 보여주는 차트

​그림 2: 의사 난수 화이트 가우스 노이즈 생성

​발신자와 수신자가 모두 시드와 알고리즘을 알고 있는 경우, 메시지와 같은 크기의 키를 전송하지 않고도 키를 다시 생성할 수 있습니다.

​따라서 암호화된 메시지 전송은 시드와 알고리즘으로 키를 생성하는 단계와, 생성된 키 문자로 메시지의 각 문자에 XOR을 수행하는 두 단계로 구성됩니다.

​암호가 키가 아니라는 점에 유의하십시오. 키는 암호에서 생성됩니다. 암호는 키 유도 함수 (KDF)라는 프로세스를 통해 강력한 고정 길이 암호화 키로 변환됩니다. 암호는 짧고, 예측 가능하며, 길이가 다양하며, 약한 경우가 많습니다. KDF는 암호를 정확한 크기, 높은 무작위성, 일관된 형식으로 변환합니다.

​키는 암호학적으로 안전한 난수 소스에서 생성해야 합니다. 일반적으로 어플리케이션이 생성한 난수 대신 OS 난수 생성기를 사용해야 합니다. OS 난수 생성기는 키보드 타이밍, 마우스 이동, CPU 지터, 어플리케이션에서 일반적으로 사용되지 않는 다른 측정과 같은 다양한 소스로부터 난수를 생성합니다. 

​KDF는 그림 3과 같이 암호에 "솔트"를 추가합니다. 두 개의 동일한 암호가 두 개의 매우 다른 키를 생성하기 때문에, 솔트는 공격자가 키를 추측하는 것을 방해합니다.

키를 생성하기 위해 암호에 솔트를 추가하는 과정

​그림 3: KDF가 암호에 솔트를 추가하여 키 생성

​암호화에서 사용자가 발견하는 알고리즘 중 일부는 KDF를 위한 것이며, 일부는 실제 암호화를 위한 것입니다. 두 가지 모두 암호화된 데이터의 보안을 보장하는 데 매우 중요합니다.

​키는 고정된 길이이지만, 메시지는 길이가 변할 수 있습니다. 대부분의 암호화 알고리즘에서 메시지는 키와 같은 크기의 블록으로 분할됩니다. 그런 다음 키가 메시지의 각 섹션에 반복적으로 적용되어 데이터를 암호화합니다.

​보안은 알고리즘과 키 길이에 따라 다릅니다. 키가 길수록 일반적으로 무차별 대입 공격에 대한 저항이 커집니다. 사용할 최소 길이는 사용되는 암호화 유형, 데이터의 민감도, 예상 데이터 수명에 따라 달라집니다. 현재 AES 암호화에서 일반적으로 사용되는 경우, 128비트 키는 데이터 보안을 유지하기 위한 최소 길이로 간주됩니다. AES-128은 많은 어플리케이션에서 여전히 승인되고 안전하지만, 많은 조직에서 매우 민감한 데이터나 장기 보존 데이터에는 AES-256을 선호합니다. 현재 AES-256은 알려진 양자 공격에 내성이 있는 것으로 간주되지만, 향후 암호화 표준은 계속 발전할 것입니다.

암호 기술의 유형

​연구자들은 다양한 유형의 암호화 알고리즘을 개발해 왔으며, 각각 장점과 단점이 있습니다. 암호화 알고리즘에는 대칭과 비대칭이라는 두 가지 주요 범주가 있습니다.

대칭 암호화

​대칭 알고리즘은 동일한 키를 사용하여 데이터를 암호화하고 해독합니다. 그림 4는 이 프로세스를 보여줍니다.

동일한 키를 암호화 및 해독에 사용하는 대칭 암호화 프로세스

​그림 4: 대칭 암호화

​작업이 더 간단하기 때문에, 대칭 암호화는 비대칭 암호화보다 빠르고 효율적입니다. 대칭 암호화는 큰 파일, 스트리밍 데이터, 리얼타임 테스트 시스템에 적합합니다.

​대칭 암호화의 보안은 키 보호에 크게 의존합니다. 키를 얻으면 모든 것을 해독할 수 있습니다. 대칭 키는 발신자와 수신자가 모두 키를 가지고 있어야 하며, 이는 키가 수신자에게 전달되어야 함을 의미합니다. 일부 경우, 이는 불가능하기 때문에 비대칭 암호화가 사용됩니다.

​가장 일반적인 대칭 암호화는 AES입니다. 키 길이로 지정되므로, 사용되는 키의 길이에 따라 AES-128과 AES-256이 달라집니다. 대부분의 어플리케이션에서 AES-256은 특별한 이유가 없는 한 권장됩니다. FIPS 요구사항에 대해 AES가 허용됩니다. ChaCha20은 오늘날 일반적으로 사용되는 또 다른 대칭 암호화 알고리즘입니다.

​TLS (Transport Layer Security)는 비대칭 암호화를 사용하여 키를 안전하게 교환한 후 대칭 암호화를 사용하여 데이터를 전송합니다. 현대 시스템은 TLS 1.2 또는 TLS 1.3을 사용해야 하며 SSL 및 이전 버전의 TLS를 피해야 합니다. 이러한 새로운 TLS 구현은 일반적으로 AES-GCM 또는 ChaCha20-Poly1305와 같은 인증된 암호화 알고리즘을 사용합니다.

​테스트 시스템에서 대부분의 데이터 저장 및 데이터 전송 상황에서는 대칭 암호화를 사용하십시오.

​비대칭 암호화

​비대칭 암호화는 대칭 암호화보다 느리기 때문에, 큰 데이터에는 사용되지 않습니다. 일반적으로 인터넷 통신, 디바이스 대 서버 연결, 분산 시스템에 사용됩니다. 비대칭 암호화는 서로 다른 두 개의 수학적으로 관련된 키를 사용하여 데이터를 암호화하고 해독합니다. 이 두 가지 키를 퍼블릭 키(공유 가능)와 프라이빗 키(비밀 유지)라고 부릅니다. 대칭 암호화가 두 사람이 잠금을 해제할 수 있는 동일한 키를 가진 금고와 같다면, 비대칭 암호화는 누구나 편지를 넣을 수 있는 투입구가 있는 우편함과 같지만 (퍼블릭 키 사용), 소유자만 잠금을 해제하여 읽을 수 있습니다 (프라이빗 키 사용). 그림 5는 이 프로세스를 보여줍니다.

비대칭 암호화 프로세스, 암호화를 위해 퍼블릭 키와 해독을 위해 프라이빗 키를 사용

​그림 5: 비대칭 암호화

​퍼블릭 키는 일반적으로 퍼블릭 키가 유효한지 확인하는 인증서 파일과 함께 공개적으로 공유됩니다. 프라이빗 키는 소유자가 비밀로 유지합니다. 이렇게 하면 사전 신뢰 없이 안전하게 통신할 수 있습니다. 암호화를 수행하는 당사자가 키를 공유하도록 신뢰할 필요는 없습니다.

​가장 일반적인 두 가지 비대칭 암호화 알고리즘은 RSA와 ECC입니다. RSA는 더 큰 키를 가진 오래된 버전이지만, 현재 널리 사용되고 있습니다. 최소 2,048비트의 RSA 키 길이가 권장됩니다. 타원 곡선 암호화 (ECC)는 RSA보다 작고 빠르며, 최소 256비트의 키 길이로 현대 시스템에 권장됩니다. RSA와 ECC는 모두 FIPS 규제에 의해 허용되지만, 양자 컴퓨터 시대 이후에는 안전하지 않을 것으로 예상됩니다. 비대칭 알고리즘은 양자 이후 표준이 채택됨에 따라 발전할 것입니다.

​하이브리드 암호화 시스템은 오늘날 일반적으로 사용됩니다. 비대칭 암호화를 사용하여 공유 키를 생성한 후 실제 데이터의 대칭 암호화에 사용됩니다. 예를 들어, TLS는 초기 핸드쉐이크 도중 비대칭 암호화 (AES)를 사용하고, 데이터 전송에 대칭 암호화를 사용합니다.

암호 기술 어플리케이션

해싱 및 무결성

​암호화는 데이터 비밀을 유지하여 기밀성을 보호합니다. 보안 전송의 또 다른 요소는 데이터가 변경되지 않았음을 확인하는 것이며, 이는 해싱으로 수행됩니다.

​해시 함수는 파일, 메시지, 스트림 등 모든 입력을 취하여, 다이제스트라고 불리는 고정된 길이의 출력을 생성합니다. 해시 다이제스트는 입력 데이터의 크기에 관계없이 길이가 같으며, 데이터의 작은 변화가 있으면 완전히 다른 해시가 됩니다.

​해시의 일반적인 용도는 데이터 다운로드입니다. 발신자는 파일의 해시를 계산하고 수신자에게 이를 보냅니다. 수신자는 파일을 다운로드하고 해시를 계산합니다. 파일이 변경되지 않은 경우, 해시는 그대로 유지됩니다.

​해시는 데이터 다운로드 이상의 다양한 경우에 사용됩니다. 해시를 사용하여 디스크에서 파일이 변경되지 않았는지 확인할 수 있으므로, 어플리케이션은 데이터가 변경되지 않았는지 확신하면서 파일로부터 데이터를 반입할 수 있습니다. 해시는 컴퓨터 또는 OS 설정을 검증하고 변경 사항이 있으면 부팅을 차단하여 악의적인 당사자가 컴퓨터를 변조하지 못하게 할 수 있습니다.

​해싱은 암호화와 결합되어 시스템의 보안을 향상시킵니다. TLS는 해시를 사용하여 핸드쉐이크 정보를 확인하고 트랜잭션 중 교환된 키가 변경되지 않도록 합니다.

​가장 일반적인 해싱 알고리즘은 SHA (일반적으로 SHA256)입니다. MD5는 파일의 무결성을 확인하기 위해 파일 다운로드에도 일반적으로 사용되지만, 다른 용도로 알려진 취약점이 있습니다. MD5는 FIPS에서 승인되지 않았지만, SHA256은 FIPS에서 승인되었습니다.

​인증된 암호화

​암호화는 기밀성을 보호하지만 데이터가 수정되지 않았는지는 보장하지 않습니다. 따라서 현대 암호화 시스템은 인증된 암호화를 사용하며, 암호화와 무결성 보호 기능을 하나의 작업으로 통합합니다.

​인증된 암호화 알고리즘은 인증 태그와 함께 암호화된 데이터를 생성합니다. 수신자가 데이터를 해독하면, 인증 태그가 확인됩니다. 메시지의 일부가 변경된 경우, 해독에 실패하고 수정된 데이터가 거부됩니다.

​일반적인 인증된 암호화 알고리즘에는 AES-GCM, AES-CCM, ChaCha20-Poly1305가 있습니다. 이러한 알고리즘은 기밀성과 무결성을 제공하며 TLS를 포함한 현대 프로토콜에서 널리 사용됩니다.

​사용 가능한 경우, 인증된 암호화 모드는 암호화와 해싱을 개별적으로 결합하는 이전 접근 방식보다 선호되어야 합니다. 이는 올바르게 구현하기 쉽고 보안상 취약점의 위험을 줄이기 때문입니다.

​보안 프로토콜

​이전에 언급된 암호화 및 해싱 기술을 사용하여 현재 여러 보안 프로토콜이 사용되고 있습니다.

​TLS는 보안 네트워크 통신에 사용됩니다. 암호화, 인증, 데이터 무결성을 결합하여 네트워크를 통해 안전한 통신을 제공하는 프로토콜입니다. 이는 당사자 사이에서 전송되는 데이터가 비공개이고, 수정되지 않고, 올바른 수신자에게 전송되도록 합니다. TLS는 데이터를 암호화하며, 일반적으로 AES를 사용하여 데이터를 암호화하고, 해싱을 사용한 변조를 감지하고, 인증서를 사용하여 ID를 확인합니다.

​SSH는 네트워크를 통해 원격 시스템에 안전하게 접근하는 데 사용되는 프로토콜입니다. SSH는 SHA와 같은 해시 함수를 기반으로 메시지 인증 코드 (MAC)를 사용하여 데이터 무결성을 확인하고 로그인 시 사용자/서버 ID를 확인합니다. SSH 트랜잭션에서 서버는 퍼블릭 키를 제시합니다. 클라이언트는 일반적으로 초기 연결 후에 서버 퍼블릭 키를 저장하고 향후 연결에서 변경 사항을 확인합니다. 그 후 클라이언트는 AES 또는 ChaCha20 암호화로 서버와 클라이언트 사이의 데이터를 암호화하기 위해 서버와 키를 교환합니다.

​HTTPS (Hypertext Transfer Protocol Secure)는 TLS를 사용하여 클라이언트와 서버 간의 통신을 암호화하고 보호하는 HTTP의 버전입니다. HTTP는 웹 요청에서 데이터가 구조화되는 방식이며, TLS는 데이터가 보호되는 방식입니다. HTTPS는 오늘날 웹 브라우저에서 일반적으로 사용되고 웹 API, 클라우드 서비스, 산업용 또는 테스트 엔드포인트에서도 사용됩니다.

​HTTPS가 없으면 신뢰할 수 없는 네트워크를 통해 시스템 간에 데이터를 전송하는 동안 데이터가 가로채이거나 수정될 수 있습니다. HTTPS를 사용하면 데이터가 암호화되고, 확인되고, 변조로부터 보호됩니다. HTTPS는 FIPS 규정을 준수할 수 있지만, 그렇지 않을 수도 있습니다. 이는 프로토콜을 지원하는 데 사용되는 TLS 스택에 따라 달라집니다.

​HTTPS는 어플리케이션 계층에서 작동하며, 어플리케이션은 암호화를 수행합니다. IPsec (Internet Protocol Security)은 패킷을 암호화하고 인증하여 네트워크 계층에서 네트워크 통신을 보호하는 프로토콜 모음입니다. IPsec는 어플리케이션이 암호화를 처리할 필요 없이 시스템 간의 트래픽을 투명하게 처리합니다.

​IPsec의 예로는 VPN (Virtual Private Network)이 있습니다. VPN에서 모든 네트워크 트래픽은 전송될 때 암호화되고, 수신될 때 클라이언트에 의해 해독됩니다. 어플리케이션 소프트웨어가 데이터가 암호화된다는 것을 알지 못합니다.

​두 시스템 사이에서 모든 데이터를 암호화하려면 IPsec 도구를 사용하십시오. 어플리케이션에서 직접 암호화를 제어하려는 경우 TLS를 사용합니다.

​FIPS 암호화

​다양한 암호화 방법을 사용할 수 있는 경우, 어떤 암호화를 사용해야 합니까? 어느 수준의 암호화가 충분합니까? NIST는 미국 정부 어플리케이션에 대한 이 질문에 대답하기 위해 FIPS 140이라는 Federal Information Processing Standards (FIPS) 문서를 개발했습니다. 이는 현재 개정 버전 3이므로, FIPS 140-3이 최신 가이드입니다.

​공급업체가 암호화 모듈을 생성할 때, 해당 모듈은 FIPS 테스트 랩에서 테스트하여 FIPS 검증을 받을 수 있습니다. 이 등급의 모듈은 FIPS 140의 요구사항을 충족하도록 독립적으로 테스트 및 검증되었습니다. 검증된 모듈은 NIST Computer Science Resource Center의 Cryptographic Module Validation Program 페이지에 나열되어 있습니다.

​모듈은 소프트웨어 암호화 라이브러리 또는 하드웨어 보안 디바이스일 수 있습니다. 대부분의 어플리케이션은 어플리케이션에서 직접 구현하는 대신 FIPS로 검증된 모듈에 암호화 작업을 위임합니다.

​FIPS 검증 프로그램은 비용이 많이 들고 오랜 시간이 소요됩니다. FIPS 프로그램은 ChaCha20 및 BLAKE2와 같은 강력한 최신 암호화 알고리즘을 아직 검증하지 않았습니다. 이러한 이유로 암호화를 사용하는 제품을 개발하는 많은 공급업체는 FIPS 검증된 컴포넌트를 재사용할 수 있거나 FIPS 규정을 준수하는 것으로 알려진 알고리즘을 사용할 수 있기 때문에 FIPS 검증 모듈을 생성하지 않습니다. 

​FIPS 규정 준수의 필요성은 보안 팀이 Windows 컴퓨터를 FIPS 모드로 설정하도록 요구할 때 사용자에게 가장 흔히 발생합니다. 이 모드에서, Windows는 지원되는 암호화 API를 통해 FIPS 승인되지 않은 알고리즘을 사용하는 어플리케이션을 제한할 수 있습니다. Windows는 FIPS 검증을 확인하지 않고, 사용된 암호화 기술이 FIPS 140 프로그램에서 승인되었는지 확인합니다. 예를 들어, 프로그램이 MD5를 사용하는 경우 (보안되지 않은 것으로 알려진 이전의 해싱 알고리즘), Windows는 FIPS 모드가 활성화되면 해당 프로그램이 실행되지 않도록 차단합니다.

​NIST SP 800-171의 요구사항을 기반으로 하는 CMMC 프로그램은 FIPS 검증 모듈을 통해 구현된 암호화를 사용하여 통제된 비분류 정보(CUI)를 보호하도록 요구합니다. 원격 접근 세션은 이러한 요구사항이 적용되는 일반적인 시나리오 중 하나입니다.

LabVIEW 암호화

​LabVIEW 개발자는 스토리지 (유휴 상태인 데이터) 또는 전송(전송 중인 데이터)의 두 가지 사용 사례에서 암호화가 발생합니다.

​유휴 상태인 데이터의 암호화

​유휴 데이터는 전송되는 정보가 아닌 저장된 정보입니다. 설정 파일, 테스트 결과, 데이터베이스, 로그 파일, 교정 데이터, 암호화 키를 예로 들 수 있습니다. 악성 행위자가 저장 디바이스, 이동식 미디어 또는 복사된 백업 파일에 접근할 수 있는 경우, 실행 중인 어플리케이션에 접근하지 않고 암호화되지 않은 데이터를 읽을 수 있습니다.

​저장된 모든 데이터는 암호화가 필요하지 않습니다. 다음 정보를 저장할 때에는 암호화를 고려해야 합니다:

  • ​고객 또는 독점 정보
  • ​지식재산을 포함하는 테스트 데이터
  • ​인증 자격 증명
  • ​암호화 키
  • ​통제된 비분류 정보 (CUI)
  • 규제 요건을 따르는 정보

​많은 어플리케이션의 경우, Windows BitLocker와 같은 OS 보호 기능은 전체 스토리지 디바이스를 암호화하여 효과적인 첫 번째 보호 계층을 제공합니다. 전체 디스크 암호화는 컴퓨터나 드라이브가 손실되거나 도난될 경우 데이터를 보호하지만, 시스템이 실행되면 권한이 있는 사용자나 어플리케이션이 파일에 접근하는 것을 막지 않습니다. 전송 중인 암호화는 데이터가 저장된 후에는 보호되지 않으며, 유휴 상태인 암호화는 전송 중인 데이터를 보호하지 않습니다. 많은 시스템은 둘 다 필요합니다.

​민감한 파일의 경우, 어플리케이션은 디스크에 데이터를 쓰기 전에 데이터 자체를 암호화해야 할 수도 있습니다. 일반적인 방법으로는 다음과 같은 유형의 암호화가 있습니다.

  • ​AES-256을 사용하여 파일 암호화하기
  • ​데이터베이스 내용 또는 데이터베이스 필드 암호화하기
  • ​반출된 리포트 및 아카이브 암호화하기
  • ​백업을 저장하거나 전송하기 전에 암호화하기

​어플리케이션 데이터를 암호화할 때는 AES-GCM과 같은 인증된 암호화 알고리즘을 선호해야 합니다. 이는 기밀성 및 무결성 보호를 모두 제공하기 때문입니다. 암호화된 파일이 수정된 경우, 어플리케이션은 데이터를 해독할 때 변경을 감지할 수 있습니다.

​유휴 상태의 데이터에 대한 LabVIEW 고려사항

​일반적으로 LabVIEW 어플리케이션은 다음과 같은 형식으로 정보를 저장합니다.

  • ​TDMS 파일
  • ​설정 파일 (INI, JSON, XML)
  • ​SQLite 또는 다른 데이터베이스
  • ​로그 파일
  • ​직렬화된 데이터 파일

​이러한 포맷은 거의 또는 전혀 기본 암호화를 제공하지 않습니다. 보호가 필요한 경우, 디스크에 쓰기 전에 데이터를 암호화하거나 BitLocker와 같은 OS 도구로 보호되는 암호화된 볼륨 안에 저장하십시오.

​암호, 인증서 또는 암호화 키를 설정 파일에 직접 저장하지 마십시오. 중요한 비밀을 보호하려면 보호된 OS 키 저장소, 대칭 및 비대칭 키, 신뢰할 수 있는 플랫폼 모듈 (TPM) 또는 CryptProtectData와 같은 API를 사용하십시오.

​전송 중인 데이터의 암호화

​LabVIEW는 하위 레벨부터 상위 레벨까지 다양한 네트워크 통신 함수를 제공합니다. 대부분의 함수는 현재 암호화를 제공하지 않습니다. 에머슨 엔지니어는 현재 일부 네트워크 함수에 암호화를 추가하기 위해 작업하고 있으며, 이 기능은 LabVIEW의 향후 버전에서 발표될 예정입니다.

 

​표 2: LabVIEW 통신 함수

​암호화는 이러한 함수에 내장되어 있지 않지만, LabVIEW 데이터 전송을 위한 암호화를 구현하는 방법에는 여러 가지가 있습니다.

옵션 1: IPsec/VPN

​서버와 클라이언트 모두에서 VPN을 활성화하면 LabVIEW 데이터를 포함하여 두 컴퓨터 사이에서 전송되는 모든 데이터가 암호화됩니다. LabVIEW 어플리케이션은 VPN 연결에 대해 아무것도 알 필요가 없습니다. 모든 암호화는 데이터를 클라이언트에 전달하기 전에 VPN 소프트웨어에 의해 처리됩니다.

​WireGuard를 VPN로 사용할 것을 권장합니다. WireGuard는 무료, 빠르고 안전합니다. WireGuard는 Windows와 NI Linux RT 모두에서 지원되므로, 그림 6과 같이 리얼타임 디바이스에서 Windows 시스템으로 데이터를 전송하는 데 사용할 수 있습니다. WireGuard는 NI Linux RT 배포판에 포함되어 있습니다.

전송 시 암호화될 WireGuard를 통해 흐르는 데이터

​그림 6: WireGuard 데이터 전송

​내부 테스트에서 WireGuard를 빠르고 쉽게 설정할 수 있음을 확인했습니다. LabVIEW 코드 또는 시스템의 나머지 부분을 변경할 필요가 없습니다. WireGuard 클라이언트가 서버와 클라이언트 모두에서 반드시 실행되어야 합니다. 그러므로 시스템에 설계하기 전에 이것이 가능한지 확인하십시오.

​WireGuard가 FIPS 검증되지 않았습니다. FIPS 검증을 포함하는 규제 요건을 충족해야 하는 경우, FIPS 검증을 받은 다른 VPN을 사용할 수 있습니다.

​옵션2: 암호화 기능이 있는 LabVIEW 함수 사용

​일부 LabVIEW 함수에는 데이터 통신 함수에 암호화를 추가하는 기능이 있습니다.

​gRPC를 사용하여 디바이스 또는 서비스 사이에서 데이터를 통신하는 경우, TLS 암호화를 활성화할 수 있습니다. 서버와 클라이언트에 대해 TLS를 설정해야 합니다. 서버에 대해 X.509 인증서를 생성해야 합니다. LabVIEW에서 gRPC를 사용하는 방법에 대한 더 자세한 정보는 NI 소프트웨어 및 하드웨어에서 gRPC를 사용하는 방법을 참조하십시오.

​보안 FTP (SFTP) 함수를 사용하는 경우, 보안 FTP 서버를 설정해야 합니다. LabVIEW 함수를 사용하면 해당 서버로부터 송수신할 수 있습니다. 이러한 전송은 여러 암호화 알고리즘을 지원하는 SSH 프로토콜을 사용합니다. 사용되는 특정 알고리즘은 SFTP 서버의 설정에 따라 다르며, 별도로 설치해야 합니다. LabVIEW에서 SFTP를 사용하는 방법에 대한 더 자세한 정보는 LabVIEW 프로그래밍 참조 매뉴얼의 SFTP 섹션을 참조하십시오.

​내장된 LabVIEW 함수는 FIPS 검증되지 않지만, 일부 알고리즘은 FIPS 승인 알고리즘을 사용합니다. Windows는 FIPS 모드가 활성화된 상태에서 이를 차단하지 않습니다.

​LabVIEW 함수는 전송되는 데이터 패키지의 암호화를 제공하지 않습니다. 이러한 경우에는 다른 옵션 중 하나를 사용해야 합니다.

옵션 3: 타사 암호화 툴킷 사용

​Encryption Compendium for LabVIEW는 LVS Tools에서 이용할 수 있으며 LabVIEW용 암호화 함수의 전체 라이브러리를 제공합니다. 스크린샷은 그림 7과 같습니다. 이 툴킷은 NI 툴 네트워크 또는 LVS Tools에서 직접 이용할 수 있습니다.

​Encryption Compendium은 대칭 및 RSA 비대칭 암호화를 모두 지원합니다. 또한 LabVIEW에서 해싱과 TLS, DTLS, SSH 같은 여러 보안 프로토콜을 지원합니다. 이를 사용하면 데이터를 암호화하고 암호화된 형태로 저장할 뿐만 아니라 여러 프로토콜 중 하나로 데이터를 안전하게 전송할 수 있습니다.

Encryption Compendium 함수를 보여주는 LabVIEW 팔레트

​그림 7: Encryption Compendium 팔레트

​Encryption Compendium은 단일 VI로 암호화 작업을 줄이는 상위 레벨 함수를 제공합니다. 예를 들어, 그림 8과 같이, 대칭 암호화 VI는 모든 암호화 알고리즘을 사용하여 데이터를 암호화합니다.

Encryption Compendium 대칭 암호화를 보여주는 LabVIEW 다이어그램

​그림 8: Encryption Compendium 대칭 암호화 함수

​그림 9의 코드와 같이 하나의 함수가 해독을 지원합니다.

Encryption Compendium 대칭 해독을 보여주는 LabVIEW 다이어그램

​그림 9: Encryption Compendium 대칭 해독 함수

​Encryption Compendium은 보안 프로토콜뿐만 아니라 다른 다양한 암호 함수를 지원합니다. 그림 10의 예는 LabVIEW X.509 키를 생성하는 방법을 보여줍니다.

Encryption Compendium 인증서 생성을 보여주는 LabVIEW 다이어그램

​그림 10: Encryption Compendium X.509 인증서 생성

​Encryption Compendium은 FIPS 검증을 받지 않았지만 FIPS 호환성은 2026년 후반에 예정되어 있습니다.

​LVS Tools Encryption Compendium에 대해 자세히 알아보기

​옵션 4: LabVIEW가 아닌 암호화 모듈을 호출

​강력하고 최신 암호화를 제공하는 일반 프로그래밍 용도로 사용할 수 있는 암호화 모듈이 많습니다. LabVIEW 커뮤니티에서 제공하는 래퍼를 사용하여 이를 LabVIEW에서 사용할 수 있습니다. FIPS 140 표준에 포함되지 않은 암호화 알고리즘을 사용하지만 그만큼 또는 그 이상의 보안을 제공합니다.

​Bouncy Castle는 다양한 암호화 기능을 제공하는 오픈 소스 암호화 라이브러리입니다. 그림 11과 같이 해시를 생성하고, 키와 인증서를 생성하고, 데이터를 암호화할 수 있습니다. LabVIEW 사용자가 Bouncy Castle 함수에 대한 오픈 소스 래퍼를 만들었습니다. 또한 이러한 LabVIEW 래퍼를 사용하는 방법에 대한 길라잡이가 있습니다.

Bouncy Castle 래퍼를 사용한 암호화 및 해독을 보여주는 LabVIEW 다이어그램

​그림 11: Cannon Controls Bouncy Castle 래퍼를 사용한 암호화 및 해독

​옵션 5: FIPS 검증 암호화 모듈 호출

​LabVIEW에서 직접 FIPS 검증 암호화를 수행할 수는 없지만 FIPS 검증 모듈을 사용할 수 있는 몇 가지 옵션이 있습니다. 이 모듈은 CMMC 인증에 필요한 미국 정부가 통제하는 정보를 처리하기 위한 요구사항을 준수합니다.

​CryptProtectData (및 CryptUnprotectData)는 advapi32.dll에서 찾을 수 있습니다. 이 함수는 암호, 키, 설정과 같은 비밀 정보를 저장하는 데 사용될 수 있습니다. 이 함수의 사용에 대해서는 Windows 문서를 참조하십시오. 데이터를 바이트 배열로 전달해야 합니다. 또한 데이터를 함수에 보내기 전에 LabVIEW 어플리케이션에서 DATA_BLOB 구조체를 정의해야 합니다. 또한 이 함수를 호출하려면 LabVIEW에서 데이터 포인터를 전달하는 방법도 숙지해야 합니다.

​BCrypt API는 bcrypt.dll의 Windows API입니다. AES 대칭 암호화, 해싱, 키 파생과 같은 일반 암호화 태스크를 위한 Windows의 주요 최신 암호화 API입니다.

​올바르게 호출되면, 이러한 함수는 규정 준수를 위해 FIPS 검증 알고리즘을 호출합니다. 

​키 관리

​키는 암호화 시스템의 중요한 요소입니다. 누군가가 키를 가지고 있는 경우, 키가 보호하는 모든 것에 접근할 수 있습니다. 키를 공유하는 것은 악성 행위자가 보호된 시스템에 들어가는 일반적인 방법입니다. 키를 잃는 것은 데이터에 대한 접근을 잃는 일반적인 방법입니다.

​LabVIEW 프로그램이 정보를 암호화 또는 해독해야 하는 경우, 키를 처리해야 합니다. LabVIEW VI에 키를 하드코딩하지 마십시오. 해커가 접근하기가 너무 쉽습니다. 키를 PC의 일반 텍스트 파일에 저장하지 마십시오. 암호화 키, 암호 또는 인증서는 비공개 저장소를 포함한 소스 코드 저장소에 절대 저장하지 마십시오.

​Windows 도구로 키 관리

​Windows는 로컬 키를 보안 환경에 저장하는 방법을 제공합니다. Microsoft SecretStore는 PowerShell을 사용하여 로컬 머신에 키를 안전하게 저장하고 가져오는 방법입니다. LabVIEW에서 Microsoft Secret Store에 접근할 수 있는 오픈 소스 라이브러리는 https://gitlab.com/cannontim/secret-store-api에서 찾을 수 있습니다.

​또한 LabVIEW 라이브러리 호출 노드를 통해 CryptProtectData 함수를 호출하여 키를 저장할 수 있습니다.

​하드웨어 보안 모듈 (HSM)

​보안 환경에서는 HSM을 고려해야 할 수도 있습니다. 이러한 하드웨어 디바이스는 암호화, 해독 및 디지털 서명 작업을 수행하면서 암호화 키를 안전하게 생성, 저장 및 관리하는 전용 변조 방지 디바이스입니다. HSM은 소규모 어플리케이션에는 과도할 수 있지만 규제 요건을 충족해야 하는 대규모 어플리케이션에서는 이러한 디바이스가 필요할 수 있습니다.

​HSM은 개발자 팀을 지원하는 대형의 고가 네트워크 디바이스부터 단일 개발자를 위한 소형 휴대용 USB 디바이스까지 다양합니다. 일부는 컴퓨터 내부에 설치될 수 있습니다. 신뢰할 수 있는 플랫폼 모듈 (TPM)은 보안 부팅 및 네트워크 인증과 같은 작업의 키 관리를 위해 PC가 사용하는 특정 유형의 HSM입니다.

​HSM에는 일반적으로 LabVIEW와 같은 어플리케이션이 키 관리 기능에 접근할 수 있도록 하는 API가 있습니다.

​결론

​암호화는 최신 테스트 및 측정 시스템을 보호하기 위한 기본 기능이지만, 올바르게 설계된 보안 아키텍처의 일부로 구현된 경우에만 효과적입니다. 이 문서에서는 암호화가 작동하는 방식뿐만 아니라 실제 LabVIEW 시스템에서 전송 중인 데이터와 저장된 데이터를 보호하기 위해 암호화를 어떻게 적용해야 하는지도 설명했습니다.

​암호화의 핵심은 AES, RSA, SHA와 같은 알고리즘과 TLS, SSH, IPsec와 같은 프로토콜, 키 및 키 관리 방법의 조합에 의존합니다. 각각의 구성요소는 중요한 역할을 하지만, 시스템의 전반적인 보안은 단일 기술이 아닌 결합 및 구현 방식에 달려 있습니다.

​LabVIEW는 엔지니어가 코드를 기능적 측정 어플리케이션으로 시각화할 수 있도록 그래픽 방식을 제공합니다. 이 문서의 지침에 따라 이 어플리케이션에서 생성한 데이터를 보호하여 테스트 시스템의 기밀성 및 무결성을 보장할 수 있습니다.

ABA+B
000
101
011
110

Windows와 Bitlocker는 Microsoft 그룹의 상표입니다. 등록 상표 Linux®는 전 세계적으로 해당 상표를 소유한 Linus Torvalds의 독점 라이선스 보유자인 LMI로부터 받은 서브라이선스에 따라 사용됩니다.

​기능​기능​암호화
​TCP​낮은 손실, 핸드쉐이크 데이터 교환​없음
​UDP​고속 데이터 브로드캐스트, 손실 발생​없음
​네트워크 스트림TCP에 기반한 상위 레벨의 무손실 통신. 타입 안전.​없음
​공유 변수​LabVIEW VI 사이의 상위 레벨 통신​없음
​DataSocket​​레거시 데이터 통신​없음
​HTTP 보안​LabVIEW HTTP 클라이언트와 NI 웹 서비스 간의 안전한 통신.​인증 및 무결성 요청에 서명; 데이터를 암호화하지 않음
​WebDAV​HTTP/HTTPS를 사용하여 리얼타임 시스템과 파일을 주고받습니다. NI 하드웨어 관리자에서 타겟의 설정을 위해 WebDAV용 HTTPS를 활성화합니다.​HTTPS (TLS)
​SFTP​FTP 서버를 통해 안전한 FTP 파일 전송. SSH 프로토콜을 통해 암호화됩니다.​SFTP 서버에 따라 다름
​SSH​원격 시스템에서 SSH 세션을 위한 SSH 명령 열기​AES, ChaCha20, 기타
​웹 서비스​RESTful API, HTTP/HTTPS를 통해 데이터 제공​HTTPS, SSL/TLS, 인증, 접근 컨트롤
​gRPC​고성능, 낮은 지연 시간 통신 서비스​TLS 암호화