멋진 프로그램들을 만들어오신 개발자분들이 정말 많습니다. 현대적인 접근 방식도 취하고 계실거구요. 저희가 공유한 플루언트 UI 시리즈에서 현대화에 대한 내용을 많이 다루었죠. 비주얼이 정말 중요한데요. 아마도 네오-스큐어모피즘(Neo-skeuomorphism: 웹의 구성요소, 프레임, 화면 등을 디자인할 때 사용하는 스큐어모피즘이라는 기법을 현대적으로 변형한 방식)을 적용한 분들도 계실 것입니다. VCL에서는 어떤가요? 윈도우 10 다크 모드 / 라이트 모드 중 어떤 걸 선호하세요?
현대화를 하지 않았다면, 지금은 잘 작동하고 있을 수 있습니다…여러분의 앱 사용자들이 무언가를 바꾸려고 하지 않는다면 말이죠.

10만+ 다운로드된 앱을 설치하려고 할 때 표시되는 메시지입니다.

한 번 볼까요? 여러분의 프로그램 사용자들이 애플리케이션을 다운로드 받을 수 없다는 불만을 제기하기 시작합니다. 최신 웹 브라우저 보안에 대한 두려움이 있는 고객이라면, 이를 예방하기 위해 더 철저한 관리를 하게 됩니다. 그러다 보면 여러분의 앱은 윈도우 10에 의해 차단되거나, 기업 보안 정책에 따라 막힐 수도 있죠.

마지막으로 하나 더: 여러분의 코드가 트로이 목마와 같은 바이러스에 감염되지 않았음을 증명할 수 있는 코드 서명이 필요합니다.

코드 서명(Code-signing) 은 무엇일까요?

코드 서명은 수동으로 설정하는 작업으로, 애플리케이션 최종 빌드 시점 또는 그 직후에 나타나도록 할 수 있습니다. 설정해 놓으면, 디지털 서명이 포함된 exe 에 작은 리소스가 추가됩니다. 서명에는 코드 작성자 식별과 애플리케이션 exe 파일의 검사합(checksum)을 확인할 수 있는 정보들이 들어있습니다. 이 정보 – 코드 서명 -을 통해 애플리케이션을 실행한 사용자는 이 프로그램의 실행 파일이 개발자의 PC나 빌드 서버에서 만들어진 이후 수정되지 않았는지 확인할 수 있습니다. 예를 들어, 바이러스로 인해 exe를 변경하면 암호화 체크섬이 손상되어 사용자들은 문제가 발생했음을 알 수 있는 것입니다.

올바른 코드 서명이 되어 있는 프로그램의 화면
(참고: 이 이미지는 오래된 버전의 화면입니다. 최신 버전에는 만료 날짜도 표시됩니다.)

웹링크를 통해 앱을 배포하는 경우 코드 서명은 거의 필수입니다.

코드 서명은 본래 개발사 확인 뿐만 아니라 웹 사이트나 이와 비슷한 온라인 전달 매커니즘에서 프로그램을 다운로드 할 때도 중요한 역할을 합니다. 대부분의 브라우저 (아마 전부)는 웹 사이트에서 exe 파일을 다운로드할 때 경고 메세지를 띄웁니다. 특히 HTTPS를 사용하지 않는 경우라면 더더욱 그렇죠. 윈도우에서 마이크로소프트 엣지(Microsoft Edge)를 사용하는 환경에서 웹 사이트를 통해 exe 파일을 다운로드해 본 적 있으세요? 디지털 서명 – 코드 서명을 이렇게도 부르죠 – 이 없는 파일이면 정말 적극적으로 위험성을 알려줍니다.

서명이 없는 앱은 컴퓨터 바이러스처럼 보일 수 있습니다.

사용자가 여러 단계를 지나서 드디어 exe 파일을 컴퓨터에 다운로드 받았을 지라도, 마술처럼 다운로드된 파일이 없을 수 있습니다. 이는 기업 네트워크에서 막았기 때문인데요. 사용자가 신뢰할 수 있는 특정 애플리케이션만 실행할 수 있다는 규정이 적용되었기 때문입니다. 이런 경우는 정말 흔히 일어나는 일입니다. 코드 서명이 없다는 것은 일반적으로 해당 애플리케이션을 신뢰할 수 없음을 의미합니다. 더 나아가 이는 일반적이지 않다고 보는 경우도 많습니다. 어떤 사용자들은 애플리케이션들은 윈도우 서비스와 특히 서버용 애플리케이션들이라면 64비트여야 한다고 주장하는 경우도 있습니다. 기업 네트워크 관계자나 ITSec 관계자들은 많은 사용자들이 접속하는 스트리밍, 의심스러운 첨부 파일 열기, 실수로 악성 프로그램을 실수하는 등의 작업을 막을 수 있습니다. 이런 강요 조항이 있으면 사용자들은 당황할 수 있죠.

여러분의 애플리케이션이 혹시, 코드 서명이 없는 프로그램은 아닌가요? 만약 그렇다면, 여러분의 애플리케이션이 그들에게는 최악의 해커처럼 보일 수도 있다는 점을 기억하세요.

코드 서명은 블루칩(blue chip) 기업들만을 위한 것인가요?

코드 서명은 필수입니다. 특히 여러분이 작성한 코드로 수익을 창출하고자 하는 경우라면 필수 중의 필수입니다. 오픈 소스 또는 프리웨어인 경우일지라도 코드 서명이 있다면 여러분의 사용자들에게 도움이 될 것입니다.

단순히 실행 파일을 만들고 웹 서버에 올려놓기만 하는 시대는 이제 갔습니다. 여러분의 소프트웨어를 이런 예전 방식으로 제공한다면, 정말 슬프게도: 그 소프트웨어는 시대에 뒤떨어진 것이고, 현대화를 해야만 합니다. 곧 윈도우 운영 방식에 많은 변화가 있을 것입니다. UAC, HTTPS, 강제 디렉토리 보호 등 보안 향상 기능 측면에서 많은 변화가 있을 것이고 이는 일방적으로 바로 수행될 것입니다. 그리고 이미 수행되고 있는 것들도 많습니다.

질문 받은 것들 중 가장 많은 것이 바로 코드 서명이었던 것 같습니다. 그만큼 대단히 중요한 주제입니다. 개발자에게 있어 코드 서명은 선택 항목이 아니라는 이야기를 꼭 해드리고 싶습니다.

코드 서명에 대한 더 많은 정보들

코드 서명에 대해 알아두면 좋을 자료들은 아래 링크들을 참고해보세요:

다양한 코드 서명 유형들을 예제와 함께 설명해놓은 자료입니다. 비용 효율적인 코드 서명 인증서에 대한 내용도 있습니다: https://www.codedotshow.com/blog/delphi-10-3-rio-code-signing-provisioning-and-the-microsoft-app-store/

코드 서명이 필요한 이유를 확인할 수 있습니다: https://en.wikipedia.org/wiki/Code_signing

코드 서명을 활용하면 좋은 점들을 정리한 글입니다: https://www.encryptionconsulting.com/code-signing-top-5-benefits/ 그리고 https://www.globalsign.com/en/blog/the-importance-of-code-signing-redux

번호 제목 글쓴이 날짜 조회 수
공지 [DelphiCon 요약] 코드사이트 로깅 실전 활용 기법 (Real-world CodeSite Logging Techniques) 관리자 2021.01.19 24798
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 23094
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 25101
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 30989
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 32012
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 27412
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 48465
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 185420
1383 모바일 장비의 엔터프라이즈 데이터: 가장 많은 실수 TOP 5와 방지 요령 관리자 2021.06.24 1250
1382 TEdgeBrowser에서 스크립트 실행하기와 소스 보기 관리자 2021.06.22 2366
1381 C++빌더 VCL 애플리케이션에서 PYTHON4DELPHI 활용하기 관리자 2021.06.09 1504
1380 네이티브 IOS & 안드로이드 앱 만들기 첫 걸음 관리자 2021.06.09 1614
1379 [개발 예제] 웹 소켓 서버&클라이언트 채팅 프로그램 관리자 2021.06.08 3040
1378 C++빌더 컨테스트! 관리자 2021.06.04 560
1377 내가 델파이를 계속 선택하는 이유 관리자 2021.06.01 1358
1376 BDE/파라독스를 인터베이스(INTERBASE)로 마이그레이션 하기 관리자 2021.05.31 600
1375 이 달의 기술자료 - 2021년 06월 file 험프리 2021.05.27 623
1374 [오브젝트 파스칼을 처음 접하는 사람들을 위한] 무료 튜토리얼 비디오 (DEREK BANAS) 관리자 2021.05.25 608
1373 델파이 코드 정적 분석기 V2.4 출시 및 무료 다운로드 관리자 2021.05.25 1022
1372 [디버깅 작업] 코드사이트 – 무료 EXPRESS 에디션 활용하기 관리자 2021.05.20 483
» 코드 서명 – 여러분이 개발한 프로그램, 컴퓨터 바이러스처럼 보이지는 않나요? 관리자 2021.05.12 799
1370 인터베이스, 비주얼 스튜디오 지원 확장 관리자 2021.05.10 581
1369 NEW! 델파이 오브젝트 파스칼 스타일 가이드 관리자 2021.05.04 599
1368 [패치] RAD스튜디오 10.4.2, 델파이 컴파일러 관리자 2021.05.04 970
1367 API로 머신 러닝과 컴퓨터 비전 활용하기 관리자 2021.05.04 613
1366 머신 러닝: 윈도우 앱에 적용하는 5가지 방법(파이썬과 델파이) 관리자 2021.04.30 570
1365 이 달의 기술자료 - 2021년 05월 험프리 2021.04.29 507
1364 델파이/C++ 프로그램 현대화 – 패스트리포트(FASTREPORT)를 활용해 윈도우 HIGH DPI 지원 버전으로 마이그레이션하기 관리자 2021.04.26 483