멋진 프로그램들을 만들어오신 개발자분들이 정말 많습니다. 현대적인 접근 방식도 취하고 계실거구요. 저희가 공유한 플루언트 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 14390
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 13023
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 15532
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 21064
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 22297
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 17933
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 38228
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 173741
383 [업데이트][핫픽스][10.2.2] RTL 호환성패치 및 안드로이드 애니메이션 문제 해결 - 2018년 2월 패치 file 험프리 2018.02.20 561
382 [시애틀] 스타일북 컴포넌트에 여러개의 플랫폼 스타일을 담을 수 있습니다. Humphery 2015.09.04 561
381 [10.4 시드니 신기능 Deep Dive] 겟잇 패키지 매니저의 새로운 기능들 관리자 2020.06.22 559
380 주요 OS 시장 점유율 - 윈도우와 안드로이드! file 관리자 2019.11.19 559
379 그라데이션이 적용된 멋진 스타일을 적용하고 싶다면 - 스텔라(Stellar) FMX 스타일 관리자 2019.09.17 558
378 [도서/PDF/소스코드] 델파이 Begin...End - 17장. DataSnap REST 관리자 2019.08.20 558
377 기술자료 TOP 7 - 개발자들이 가장 많이 클릭한 기술자료는? (2019년 상반기) 관리자 2019.06.25 558
376 프로젝트 경험을 통해 터득한 효과적인 마이그레이션 프로세스 file 험프리 2020.01.22 557
375 [10.3 리오] 기타 컴파일러, 데이터, RTL 개선사항 험프리 2018.12.06 555
374 [10.4 시드니][업데이트 2] What's NEW! 신기능 자세히 보기 관리자 2021.02.26 554
373 도커(Docker) 제대로 활용하기 험프리 2020.02.07 554
372 [10.3 리오][업데이트 2] 새로운 RAD서버 관리 콘솔 관리자 2019.08.28 554
371 [베를린 U1] TGrid가 네이티브 렌더링을 지원해 더 부드럽고 강력한 기능을 제공합니다. file 험프리 2016.09.20 554
370 RAD 스튜디오에서 iOS 12에 대응 험프리 2018.09.27 553
369 [도서/PDF] 한 번에 개발하는 안드로이드&iOS 앱 with 델파이 1편 - 8장(실습). TFrame [1] 관리자 2020.02.04 551
368 [다음 버전 정보] C++11을 32비트 윈도우 앱 개발에서 사용할 수 있습니다. Humphery 2015.08.25 551
367 [다시보기] RAD Studio 10 시애틀 딥다이브 세션 다시보기(영문) Humphery 2015.10.02 549
366 [데모 영상] 델파이 프로젝트에 구글 시트 연동하기 (엔터프라이즈 커넥터 활용) 관리자 2019.11.08 549
365 리팩토링 2-수퍼 클래스(인터페이스) 추출하기 file 김원경 2017.02.23 548
364 이 달의 기술자료 - 2017년 10월 file 험프리 2017.09.26 548