데이터베이스를 관리하여 필요한 정보를 활용할 수 있도록 자동화한 시스템을 의미한다. 데이터베이스 시스템은 데이터베이스(DB), 데이터베이스 관리 시스템(DBMS), 사람과 시스템 간의 인터페이스를 제공하는 언어, 데이터를 사용하고 관리하는 사용자 및 관리자, 물리적인 하드웨어를 포함하는 개념이다.
데이터베이스 관리 시스템(DBMS; Database Management System) 이란?
응용프로그램과 데이터베이스의 중재자 역할을 통해, 응용 프로그램이 데이터를 공유할 수 있도록 데이터베이스를 관리해 주는 소프트웨어이다.
1. 데이터베이스 언어
데이터베이스 관리 시스템은 데이터베이스에 접근하여 원하는 정보를 얻고자 할 경우, 데이터 정의 언어(DDL), 데이터 조작 언어(DML), 데이터 제어 언어(DCL)을 통해서 처리한다.
1) 데이터 정의 언어(DDL; Data Definition Language)
DDL은 데이터베이스를 정의하거나 변경의 목적으로 사용된다. Create, Drop, Alter 등의 명령어가 있으며, 주로 DBA가 사용한다.
2) 데이터 조작 언어(DML; Data Manipulation Language)
DML은 사용자가 생성된 데이터베이스의 정보를 검색·삽입·삭제·수정 등의 처리를 수행할 목적으로 사용되며, 사용자와 데이터베이스의 인터페이스를 제공한다.
Select, Update, Delete, Insert 등의 명령어를 통해 데이터를 조작할 수 있는 언어이다.
3) 데이터 제어 언어(DCL; Data Control Language)
DCL은 데이터베이스를 제어관리하기 위한 목적으로 사용된다. 허가받지 않은 사용자로부터 데이터를 보호하기 위한 보안, 데이터 무결성, 시스템 장애 식 회복, 동시 접근 시 병행정 제어를 위한 명령어로 Grant, Revoke, Commit, Rollback, Set등이 있으며, 주로 DBA가 사용하는 언어이다.
2. 사용자
데이터베이스 시스템을 이용하는 사용자에는 일반 사용자(end user), 응용 프로그래머, 데이터베이스 관리자(DBA; Database Administrator)등이 있다.
1) 데이터베이스 관리자(DBA; DataBase Administrator)란?
데이터베이스의 원활한 기능을 수행하기 위해 데이터베이스 구성 및 관리운영 전반에 대한 책임을 지고 직무를 수행하는 사람을 말한다. DBA는 데이터베이스 설계 및 구축, 데이터베이스 운영관리, 데이터베이스 튜닝을 수행한다.
개발한 소프트웨어를 웹에 배포하여 사용자가 다운받아 설치하게 하거나, 백신 프로그램에 오탐지 되는 경우들을 위해, 소프트웨어에 코드사인(인증서로 서명)을 진행한다.
코드사인이란?
software에 디지털 서명(전자 서명)을 해서, 제작자 확인 및 프로그램이 변조되지 않았다는 것을 보장하는 것.
코드사인 인증서란, 설치하려는 프로그램이 신뢰할 수 있고 안전하다는 사실을 공인된 인증기관으로부터 입증받은 디지털 서명
코드사인을 하는 이유
윈도우의 스마트스크린 필터에서 자유로워지기 위해
웹에서 다운받은 프로그램을 실행 시, 명성치가 쌓이기 전까지 스마트 스크린 필터에 걸린다. (블루스크린이 뜨면서 위험한 파일이라고 실행하지 말라는 경고가 나온다.) => 프로그램이 바뀌면 매번 명성치를 다시 쌓아주어야 한다. => 경험상 약 30회정도 다운로드를 하고 개발자 센터에 신고를 하면 바로 명성치 반영이 되어 필터에 안걸리는 듯 하다. (평균 약 1일 소요)
코드사인을 하면, 해당 서명에 기반해 명성치가 쌓이게 되어 프로그램이 바뀌어도 명성치를 이어받을 수 있게 된다. (프로그램이 바뀔때마다 매번 명성치를 다시 쌓기 위해 다운로드 할 필요가 없음) => 경험상 서명에 기반한 명성치를 쌓아 필터에 안걸리게 되는 데 까지는 약 200회 정도 다운로드가 필요한 것이 아닌가 추측한다. (30회로는 안되었음.. 개별 파일보다 명성치를 쌓는 기준이 더 높은듯 싶다.)
백신 프로그램에 오탐지되는 경우를 위해
신규 소프트웨어가 백신 프로그램에 오탐지 되는 경우, 백신회사에 연락하여 탐지 제외 처리를 해주어야 한다.
이 역시 매번 프로그램이 바뀔때마다 다시 해주어야 하는데.. 코드사인을 하면 인증서 기반으로 탐지 제외 처리가 되어 한번만 처리 해주면 이후 같은 인증서로 서명한 프로그램은 오탐지 되지 않는다.
알면 간단한데, 처음 하는 경우 이것저것 찾아 헤맬 수 있어서 정리글을 올려본다.
코드사인 하는 전체 과정
1. 인증서 구매
인증서는 공인된 인증기관에서 구매하여 사용한다.
Sectigo(Comobo), digicert, ssl.com, VeriSign, Symantec 등.. 업체들이 굉장히 많다. 그 중 한군데를 선택하면 된다.
Warranty 등의 조건에 따라 가격이 달라지는데.. warranty 필요 없으면 저렴한 것을 구매해도 될 듯 싶다.
Windows 스마트 스크린 필터를 바로 해제해 준다고 EV 인증서라는 걸 팔기도 하는데.. 가격이 그냥 코드사인 인증서의 거의 3배다... 너무 상술이 심한듯...
일반 코드사인 인증서 구매해서 약 200회정도 다운로드 하니 명성치가 쌓여 스마트 스크린 필터에 안걸리더라.. (물론 추정치라 정확하진 않음.. 두 번 할게 아니라 검증을 해보지 못했음..) 급하지 않다면 일반 인증서 구매해서 명성 쌓아도 될듯 하다.
나는 개인적으로 Sectigo 인증서를 발급받았다. 국내에는 한국정보인증이라는 곳에서 구매 대행을 하는 듯 한데, 해외 대행 사이트를 이용하면 훨씬 저렴하다. (영어가 되면 채팅상담을 통해 도움을 많이 받을 수 있다.)
국내 대행업체 통하면 165,000/년 이었는데, 해외 대행 사이트를 이용해 $85/년 에 구매했다.(구매 시점 기준)
구매 신청을 하고 필요 서류들을 전송하면, 심사를 거치고 verification call을 받고 나서 인증서를 발급받을 수 있다. (약 1~2주 소요되는 듯)
순서는 간단한데.. spc 파일과 pvk 파일은 무엇이고 어디에 있는가?? 이걸 준비하는 과정이 아래와 같다..
코드사인에 필요한 파일 준비 과정
코드사인 인증서를 발급받았으면, 인증서로부터 SPC와 PVK 파일을 만들어 내야 한다. (인증기관에 따라서는 인증서와 함께 spc 파일을 보내주는 곳도 있는 듯 하다.)
SPC 파일이란?
OpenSSL 또는 Microsoft의 .NET Framework 파일 서명 도구 (Signcode.exe)와 같은 다양한 PKCS (공개 키 암호화 표준) 프로그램에서 생성 된 디지털 인증서. 개인 키를 사용하여 암호화 된 공개 키가 포함 된 디지털 서명이 포함되어 있다.
SPC 파일은 다운로드 된 파일 및 기타 웹 정보를 디지털로 서명하고 인증하는 데 사용된다.
PVK 파일이란?
개인 키 파일이다. 소프트웨어 개발자가 디지털 서명 응용 프로그램에 사용되며, 키를 작은 파일에 암호화 된 데이터의 세그먼트로 저장하고, 최종 사용자가 애플리케이션 번들을 인증 할 수 있도록 한다.
아래는 인증서가 저장소에만 설치되어 있는 경우, SPC와 PVK를 만들어 내는 과정이다.
1) 브라우저를 이용해 인증서를 PFX 파일로 내보내기
IE 실행 > 설정 > 인터넷 옵션 > 내용 > [인증서] 클릭 > 코드사인 인증서 선택 > [내보내기] 클릭
[예, 개인키를 내보냅니다] 에 체크 > 다음
개인 정보 교환 - PKCS #12(.PFX) 선택 (옵션은 기본으로 두면 된다.)
[암호]에 체크 후, 암호를 입력 후 [다음] 클릭
내보낼 파일을 저장할 경로와 이름을 입력 후 [다음] 클릭 > [마침] 클릭하면 인증서가 PFX 형식으로 저장된다.