• Save
오픈소스 라이선스 필요성 및 검증방법
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

오픈소스 라이선스 필요성 및 검증방법

  • 4,112 views
Uploaded on

<p>라이선스 검증 진행방안 소개</p><p>오픈소스 라이선스 검증 목적 및 필요성, 검증방법, 검토사항</p><p>김병선 블랙덕소프트웨어</p><p>2010공개SW개발자대회 기술세미나</p><p>주최: 지식경제부</p><p>주관: 정보통신산업진흥원, 한국공개SW협회</p>

<p>라이선스 검증 진행방안 소개</p><p>오픈소스 라이선스 검증 목적 및 필요성, 검증방법, 검토사항</p><p>김병선 블랙덕소프트웨어</p><p>2010공개SW개발자대회 기술세미나</p><p>주최: 지식경제부</p><p>주관: 정보통신산업진흥원, 한국공개SW협회</p>

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
No Downloads

Views

Total Views
4,112
On Slideshare
4,112
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
0
Comments
1
Likes
8

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. 2010 공개 SW 개발자 대회 라이선스 검증 진행방안 소개 Leading Solutions for Software Compliance Management Black Duck Software Korea Copyright © 2006 by Black Duck Software, Korea. ALL RIGHTS RESERVED.
  • 2. 목차 CONTENTS Page 1 라이선스 검증 목적 및 필요성 2 2 검증 시스템 소개 5 3 라이선스 검증 절차 7 4 라이선스 검증방법 10 5 라이선스 검증일정 13 6 검증관련 검토사항 14 - 주요 라이선스 - 프로젝트 라이선스 생성 및 적용 - 라이선스 의무사항 - 라이선스 양립성 - TOP 20 라이선스 사용비율 -1- Black Duck Software Korea
  • 3. 1. 라이선스 검증 목적 및 필요성 라이선스 검증 목적 공개 SW를 개발함에 있어서 활용되는 개별 오픈소스 라이선스 및 의무사항을 정확히 식별하여 배포정책에 부합된 오픈소스의 준법적 사용 복합지적재산권 소프트웨어 환경 라이선스 검증 오픈소스 활용가치 극대화 유연한 오픈소스 활용 및 기여 라이선스? 개발 생산성 향상 의무 사항? 오픈소스의 준법적 사용 -2- Black Duck Software Korea
  • 4. 1. 라이선스 검증 목적 및 필요성 라이선스 검증 필요성  오픈 소스 소프트에어에는 저작권이 있으며 다양한 라이선스가 존재함  개별 OSS 라이선스는 사용과 배포 등에 관련된 다양한 의무사항을 요구하고 있음 라이선스 주요 의무사항 사용권 고지의 의무 소스 코드 공개의 의무 저작권 고지의 의무 특허 포기의 의무 OSS의 체계적인 관리와 검증 사업위험 감소 관리체계를 통한 개발 생산성 증가 저작권 위반으로 인한 법적 책임 예방 오픈소스의 효과적 재사용을 통한 개발비용 절감 기업 이미지 손실 예방 내부 지적재산 관리 시정조치로 인한 출시지연 예방 신뢰성과 안정성 확보 사업철수, 리콜, 판매금지가처분, 손해배상 등으 풍부한 개방형 서비스 제공 및 구축 로 인한 금전적 손실 예방 -3- Black Duck Software Korea
  • 5. 1. 라이선스 검증 목적 및 필요성 라이선스 검증 필요성 오픈소스의 저작권 위험  GPL, LGPL, MPL, CPL, IBM, EPL, OSL, Qt 등이 해당됨 특정 오픈 소스  연결된 소프트웨어의 소스 코드 공개의무가 발생 반환 의무 라이선스의 소스  비공개 SW가 오픈 소스 SW로 변경될 수 있음 코드 공개 의무  특허, 영업비밀, 핵심기술 등의 외부 유출 가능성 존재  오픈 소스 라이선스 미 준수 시 저작자와 분쟁 가능 저작권 저작권법에 따른  협력업체가 저작권 위반 시 협력업체가 책임을 지더라도 법적 권리 보장 최종적으로 고객이 동의하지 않는 소스 코드 공개 등은 당사의 부담이 됨 오픈소스의 품질비용 위험 부실금액  이익을 극대화하기 위해서는 부실을 줄이고 품질비용을 품질비용 절감해야 함 부실 계약원가  품질비용을 절감하려면 예방 및 평가비용을 프로젝트 적정수준으로 올리고 실패비용을 대폭 제거해야 함 생산비용  개발 프로젝트에 오픈 소스를 적극적으로 재사용하는 위험비용을 예방비용 반영한 수주 상황에서 오픈 소스 라이선스 위반 및 보안취약점 등에 평가비용 따른 실패 비용을 능동적으로 관리해야 함 품질비용 실패비용  오픈 소스 라이선스 위반에 따른 브랜드 가치의 손상도 절감 실패비용으로 간주하여야 함 -4- Black Duck Software Korea
  • 6. 2. 검증 시스템 소개 검증 시스템 소개 개발 주기 별로 일체의 라이선스 관련사항을 확인하여 복합지적재산권 환경에서의 지적재산 권 분쟁 위험을 미연에 방지하는 오픈소스 관리 및 검증솔루션 오픈소스 라이선스 준법성 관리 솔루션 Start Manage Identify Review Report 프로젝트 등록 프로젝트 정책설정 콤포넌트 및 라이선스 콤포넌트 및 기록 및 문서화 및 분석 이슈 확인 및 식별 라이선스 승인 방대한 데이터베이스를 바탕으로 소프트웨어의 라이프사이클 전반에 걸쳐 자동화된 라이선스 추적 빠른 콤포넌트 검증 및 라이선스 의무사항 확인 개발시간 단축과 지적재산권 분쟁 위험 감소 -5- Black Duck Software Korea
  • 7. 2. 검증 시스템 소개 검증 시스템 소개 종합적인 오픈소스 DB 광범위한 메타 데이터  수백억 이상의 코드 라인  콤포넌트명, 상세설명, 버전, URL 등  250,000+ OSS 프로젝트들  라이선스, 프로그래밍 언어, OS  4,500개 이상의 사이트에서 수집  NVD(National Vulnerability Database)  1,900개 이상의 라이선스  암호문  40,000개 이상의 보안 취약점  소스/바이너리 코드 프린트  15,000개 이상의 암호화 라이브러리 및 알고리즘  기타 정보들  지속적으로 확장되고 있음(월 5천개 이상) Open Source  사용자 코드 콤포넌트 구축 Software  보안 취약점 경보  매월 2-3회의 업데이트 -6- Black Duck Software Korea
  • 8. 3. 라이선스 검증 절차 라이선스 검증 절차 코드 빌드 후 오픈소스 사용에 따른 지적재산권 문제를 최소화 하기 위해서는 프로젝트 기획 단계에서 프로젝트에 적용할 라이선스 정책을 수립하고 정책에 부합되는 오픈소스 라이선스 및 코드들을 선택 사용해야 함 검증 전 검토 사항 핵심 내용 정책수립 • 프로젝트에 대한 배포 • 공개되는 개발 프로젝트에 적용할 사용자 의무사항 정의 정책 수립 • 의무사항에 부합되는 라이선스 생성 및 적용 (GPL, LGPL, Apache 등) 콤포넌트 핵심 내용 기획 • 프로젝트 라이선스에 • 프로젝트에 적용한 라이선스 의무사항에 부합하여 상호 충돌 없이 적합한 오픈소스 프로 활용할 수 있는 오픈소스 라이선스 파악 젝트 식별 • 프로젝트 라이선스에 부합하여 활용 가능한 오픈소스 프로젝트 및 결합방식 검토 -7- Black Duck Software Korea
  • 9. 3. 라이선스 검증 절차 라이선스 검증 절차 빌드 된 프로젝트를 대상으로 코드를 분석하여 프로젝트에 사용된 오픈소스 코드를 식별하고 프로젝트에 적용한 라이선스와 충돌하는 오픈소스 코드 및 라이선스, 콤포넌트를 확인/시정조 치 프로젝트 핵심 내용 등록 • 검증 대상 프로젝트 라 • 검증 서버에 접속하여 클라이언트 SW 설치 이선스 적용 및 등록 • 클라이언트 SW를 통해 검증 서버에 접속하여 해당 프로젝트 등록 (프로젝트 라이선스 적용, 로컬 코드 디렉토리 연결) 핵심 내용 분석 • 검증 대상 프로젝트 분 • 등록된 프로젝트와 연결된 로컬 코드를 분석 석 • 분석 완료 후 프로젝트에 사용된 오픈소스 코드 확인 핵심 내용 확인 • 분석된 오픈소스 코드 • 분석결과 확인된 오픈소스 코드의 라이선스 및 출처 확인 의 라이선스 및 결합형 • 사용된 오픈소스 코드의 결합형태 확인(모듈, 라이브러리, 코드 수 태 확인 정 등) 핵심 내용 시정조치 • 부적절한 오픈소스 코 • 분석확인 결과 프로젝트 라이선스와 충돌하는 오픈소스 코드의 수 드의 수정 or 삭제 정 or 삭제 -8- Black Duck Software Korea
  • 10. 3. 라이선스 검증 절차 라이선스 검증 절차 콤포넌트 정책수립 기획 코드 빌드 산출물 일정에 맞추어 중간/최종 검증 시행 라이선스 검증 프로세스 Project Analyze No 프로젝트 프로젝트 오픈소스 라이선스 충돌 종료 등록 분석 확인 Yes 시정조치 Identification, 1. 충돌 코드에 대한 결합형태 및 개발자 의견요청 Review 개발자 2. Feed Back 블랙덕 소프트웨어 3. 검증결과 송부 -9- Black Duck Software Korea
  • 11. 4. 라이선스 검증 방법 라이선스 검증 방법 Protex 계정 발급 개발자 Black Duck Software Korea Protex Server Protex Code Client SW 다운로드 및 설치 Analysis Clients 프로젝트 등록 및 코드 분석 코드 검증 및 리뷰요청 리뷰 피드백 최종 검증 결과 보고서 Source Code Repository - 10 - Black Duck Software Korea
  • 12. 4. 라이선스 검증 방법 라이선스 검증 방법 • 로컬 분석 중 사용자의 코드 파일들에 대한 Code Prints가 생성되고 Black Duck Protex 서버에는 암호화 압축된 Code Print 정보가 송부됨 • 사용자 Code Print 정보와 Protex 서버에 구축 되어 있는 KnowledgeBase Code Print정보를 비교하여 라이선스 검증이 이루어 짐 • 사용자 코드가 Protex 서버에 업로드 되지 않음 로컬 사용자 Protex Server - 11 - Black Duck Software Korea
  • 13. 4. 라이선스 검증 방법 라이선스 검증 방법  Knowledge Base 콤포넌트들은 Code Prints로서 저장됨  KB안에 모든 파일의 요약된 Code Print가 있음  소스 파일들에서 단편 코드 프린트들(snippet Code Prints)을 추출 – *.c, *.java, *.pl, etc - 12 - Black Duck Software Korea
  • 14. 5. 라이선스 검증 일정 라이선스 검증 일정 일정은 가안 : 추후 안내예정 계정 및 매뉴얼 검증 결과 분석 의견 요청 Feed Back 발급 보고서 1차 분석: 8/20  1차 분석 완료:8/24  1차 분석 의견요청:  1차 피드백 : 9/5  1차 결과: 9/10 2차 분석: 9/20  2차 분석 완료:9/22 9/1  2차 피드백 : 10/3  2차 결과: 10/5 일정  2차 분석 의견요청: 10/1 1차 분석:전체 1차 분석:전체 1차 분석 의견 요청: 1차 피드백: 1차 결과: 2차 분석:1차 참여팀 2차 분석:1차 참여팀 분석 완료팀 분석 완료팀 분석 완료팀 대상 2차 분석:의견 요청: 2차 피드백: 2차 결과: 분석 완료팀 분석 완료팀 분석 완료팀 - 13 - Black Duck Software Korea
  • 15. 6. 검증관련 검토사항 주요 라이선스  주요 오픈소스 소프트웨어(OSS) 라이선스인 GPL, LGPL, CPL, MPL 등은 OSS 코드 뿐 아니라 자사 코드 공개의무 발생  OSS를 활용하면서 공개하기 어려운 코드를 보호하기 위해서는 적절한 라이선스 관리가 필요함 라이선스 주요 의무사항 공개 범위 및 특징  자유로운 사용, 복제, 배포 및 수정  GPL 코드와 연결된 모든 GPL  저작권 표시, 보증책임이 없다는 표시, GPL 명시 코드 (General Public License)  소프트웨어 수정 및 링크 시 모든 코드를 GPL에 의해 공개  자유로운 사용, 복제, 배포 및 수정 LGPL  저작권 표시, 보증책임이 없다는 표시, LGPL 명시  LGPL 코드와 연결된 모든 (Lesser General Public License)  소프트웨어 수정 및 링크 시 모든 코드를 LGPL에 의해 공개 코드 (단, 라이브러리 링크 시 공개하지 않음)  자유로운 사용, 복제, 배포 및 수정  MPL 코드와 연결된 해당 MPL  저작권 표시, 보증책임이 없다는 표시, MPL 명시 파일 (Mozilla Public License)  특허 보복조항(특허 SW사용시 특허권을 주장할 수 없음)  특허 SW시 특허권리 주장  소프트웨어 수정 및 링크 시 해당 파일을 공개 하지 못함  자유로운 사용, 복제, 배포 및 수정  EPL 코드와 연결된 해당 모 EPL  저작권 표시, 보증책임이 없다는 표시, MPL 명시 듈 (Eclipse Public License)  특허 보복조항(특허 SW사용시 특허권을 주장할 수 없음)  특허 SW시 특허권리 주장  소프트웨어 수정 및 링크 시 해당 모듈을 공개 하지 못함 - 14 - Black Duck Software Korea
  • 16. 6. 검증관련 검토사항 프로젝트 라이선스 생성 및 적용 1. Your Right to Distribute (배포에 대한 권한) 2. Distribution / Usage Level (배포/결합수준) 3. Your Right to Distribute Source Code / Enforced Sharing of Source (소스코드의 배포/소스의 강제적 공유에 대한 권한) 4. Recipient's Right to Copy (사용자의 복사에 대한 권한) 5. Recipient's Right to Modify(사용자의 수정에 대한 권한) 6. Recipient's Right to Reverse Engineer(사용자의 리버스 엔지니어에 대한 권한) • Black Duck Software가 분류한 라이선스 7. Discriminatory Restrictions (차별적 제한) 의무사항 • 21가지 라이선스 의무사항을 조합하여 프 8. Fees (수수료) 로젝트 라이선스 생성 및 적용 9. Patent Retaliation (특허 보복) • GPL 및 1,500여 개의 라이선스 의무사항 10. Express Patent License (특정 특허 라이선스) 리뷰 11. Anti-DRM Provisions (DRM 반대 조항) 12. Notice (고지) 13. Change Notice Required (필요한 변경사항 고지) 14. License Back 15. Warranty Disclaimer(s) Required (필요한 보증 거부) 16. Limitation of Liability Required (필요한 책임의 한계) 17. Indemnification Obligation (배상 의무사항) 18. Include License (라이선스 포함) 19. Promotion Restriction (프로모션 제약) 20. Share-alike / Reciprocity (상호나눔/ 상호기여) 21. Integration Level for Licensed Application ( 허가된 어플리케이션의 통합수준) - 15 - Black Duck Software Korea
  • 17. 6. 검증관련 검토사항 라이선스 의무사항 CPL/ 라이선스의 특징 및 의무사항 BSD Apache GPL2 GPL3 LGPL2 MPL CDDL EPL 복제.배포.수정의 권한 허여         배포 시 라이선스 사본 첨부        저작권 고지 사항 또는         Attribution 고지사항 유지 배포 시 소스코드 제공의무 * * * file file Module (Reciprocity)와 범위 조합저작물(Larger Work)작성 및       타 라이선스 배포허용 수정 시 수정내용 고지       명시적 특허라이선스의 허여      라이선시가 특허소송 제기 시     라이선스 종료 이름,상표,상호에 대한 사용제한     보증의 부인         책임의 제한         *GPL : 수정 및 사용된 파일, 라이브러리, Shared Memory 형태로 결합된 프로젝트 *LGPL : 수정 및 사용된 파일 형태로 결합된 프로젝트 - 16 - Black Duck Software Korea
  • 18. 6. 검증관련 검토사항 라이선스 의무사항 소스 코드 공개 경우에 따라 해당 오픈 소스의 소스 코드만 공개하거나(case 1) 해당 오픈 소스의 소스 코드를 수정 또는 추가한 부분만 공개하거나(case 2) 또는 해당 오픈 소스와 링크가 걸린 부분까지(case 3) 모두 공개해야 하는 의무를 명시하는 경우가 있다. 2. 소스 코드의 추가 및 수정된 부분 1. 오픈 소스 원본 소스 코드 3. 오픈 소스를 링크하여 이용하는 경우 링크 Case 1 : 1 만 공개 case 2 : 1+2를 공개 case 3 : 1+2+3 모두 공개 - 17 - Black Duck Software Korea
  • 19. 6. 검증관련 검토사항 라이선스 의무사항 소스 코드 공개 범위(GPL) • 수정한 내용에 대한 소스 공개 의무 발생, SW를 수정하거나 새로운 SW를 링크시키는 경우 하나의 프로세스로 동작하는 전체 프로그램의 소스 코드 공개 (동일한 실행 파일에 포함되는 경우, 공유주소영역(Shared address space) 에서 링크되어 실행되는 경우) • 소스 코드를 공개할 필요가 없는 경우 정상적인 리눅스 system call 을 사용, Class Path Exception 인 경우, 리눅스를 기반으로 개발된 Application, 커널 모듈 형태로 작성된 Loadable Device Driver, 2개의 프로그램이 파이프(pipe), 소켓(socket), command line arguments 형태로 통신하는 경우 GPL 라이선스 공개의 범위 - 녹색 부분 Machine 1 메인 프로그램 보조 프로그램2 Static Shared Static Library Memory Library Main Main function or function or class class Dynamic Dynamic Library Library Pipe 프로그램 3 RPC, RMI, SOAP, HTTP Machine 2 프로그램 4 프로그램 5 - 18 - Black Duck Software Korea
  • 20. 6. 검증관련 검토사항 라이선스 양립성 (Compatibility) 서로 다른 라이선스의 조합일 경우 • 서로 다른 오픈 소스 SW의 라이선스 의무조항이 상충하는 문제에 따라 이를 해결할 목적으로 타 라이선스의 수용 여부를 명시하는 조항 • 양립할 수 없는 경우 배포 불가능 + • 두 라이선스의 요구 = 조건이 서로 달라서 배포하는 것이 불가능 • 라이선스의 MPL(Mozilla public License) GPL(General public License) 양립성(compatibility) 다른 소스 코드와 결합하여 사용할 경우 다른 소스 코드와 결합하여 사용할 경우 문제 MPL 선언된 소스 코드만 공개하고 결합하는 모든 소스 코드를 공개해야 하고 • 타 라이선스 수용 여부를 MPL로 선언함 GPL로 선언해야 함 먼저 확인해야 함 - 19 - Black Duck Software Korea
  • 21. 6. 검증관련 검토사항 라이선스 양립성 (Compatibility) 개별 라이선스들은 서로 다른 라이선스와 결합 사용함에 있어서 제약조건을 가지고 있음 Latest Link from code with Release changes under License Author Publication date version a different license a different license Academic Free License Lawrence E. Rosen 3 2002 Yes Yes Apache Software Foun Apache License 2.0 2004 Yes Yes dation Apple Public Source License Apple Computer 2.0 August 6, 2003 Yes No Artistic License Larry Wall 2.0 2000 Yes With restrictions Berkeley Database License Oracle Corporation ? February 7, 2008 No No Regents of the Univers BSD license ? ? Yes Yes ity of California Boost Software License ? 1.0 August 17, 2003 Yes Yes Common Development and Sun Microsystems 1.0 December 1, 2004 Yes Yes Distribution License Common Public License IBM 1.0 May 2001 Yes No Cryptix General License Cryptix Foundation ? 1995 Yes Yes Eclipse Public License Eclipse Foundation 1.0 ? Yes No Educational Community Lice ? 1.0 ? Yes Yes nse Eiffel Forum License NICE 2 2002 Yes Yes IBM Public License IBM 1.0 August 1999 Yes Yes - 20 - Black Duck Software Korea
  • 22. 6. 검증관련 검토사항 라이선스 양립성 (Compatibility) Latest Link from code with Release changes under License Author Publication date version a different license a different license Free Software Fo GNU General Public License 3.0 June 2007 No No undation GNU Lesser General Public Licen Free Software Fo 3.0 June 2007 Yes No se undation Hacktivismo Enhanced-Source Hacktivismo/Cult ? November 26, 2002 ? ? Software License Agreement of the Dead Cow IBM Public License IBM 1.0 August 1999 Yes Yes 출처 : http://en.wikipedia.org/wiki/Comparison_of_free_software_licenses#General_comparison - 21 - Black Duck Software Korea
  • 23. 6. 검증관련 검토사항 라이선스 양립성 (Compatibility) 기타 라이선스와 GPL 양립성 License and specific version Compatible to the GPL Academic Free License No Apache License version 1 No Apache License version 1.1 No Apache License version 2 Yes2 Apple Public Source License version 1.x No Apple Public Source License version 2.0 No Artistic License 1.0 No Clarified Artistic License (draft 2.0) Yes Artistic License 2.0 Yes Berkeley Database License Yes original BSD license No modified BSD license Yes Boost Software License Yes Common Development and Distribution License No Common Public License No Creative Commons licenses (Tags: by & sa) No Creative Commons licenses (Tags: nc & nd) No Cryptix General License Yes Do What The Fuck You Want To Public License (WTFPL) Yes Eclipse Public License No Educational Community License ? Eiffel Forum License version 2 Yes GNU General Public License Yes3 GNU Lesser General Public License Yes - 22 - Black Duck Software Korea
  • 24. 6. 검증관련 검토사항 라이선스 양립성 (Compatibility) License and specific version Compatible to the GPL Hacktivismo Enhanced-Source Software License Agreement No IBM Public License No Intel Open Source License Yes Note 1: Was never revised. ISC license Yes Note 2: Compatible to version 3 of the GPL but not compatible to version 2. LaTeX Project Public License No Note 3: The original version of the MIT license Yes Artistic License is defined as non-free Mozilla Public License No because it is overly vague, not Netscape Public License No because the substance of the license. The FSF encourages projects to use Open Software License No the Clarified Artistic License instead.[1] OpenSSL license No Note 4: Listed as WTFPL PHP License No POV-Ray-License No Python Software Foundation License 2.0.1; 2.1.1 and newer Yes Q Public License No Sun Industry Standards Source License No Sun Public License No Sybase Open Watcom Public License ? W3C Software Notice and License Yes XFree86 1.1 License Yes2 zlib/libpng license Yes Zope Public License version 1.0 No Zope Public License version 2.0 Yes 출처 : http://en.wikipedia.org/wiki/Comparison_of_free_software_licenses#General_comparison - 23 - Black Duck Software Korea
  • 25. 6. 검증관련 검토사항 TOP 20 라이선스 사용비율 Rank License % 1. GNU General Public License (GPL) 2.0 49.67% 2. GNU Lesser General Public License (LGPL) 2.1 9.57% 3. Artistic License (Perl) 8.66% 4. BSD License 2.0 6.34% 5. GNU General Public License (GPL) 3.0 5.31% 6. Apache License 2.0 3.97% 7. MIT License 3.89% 8. Code Project Open 1.02 License 3.29% 9. Mozilla Public License (MPL) 1.1 1.24% 10. Microsoft Public License (Ms-PL) 1.11% 11. Common Public License (CPL) 0.58% 12. zlib/libpng License 0.46% 13. Eclipse Public License (EPL) 0.45% 14. Academic Free License 0.42% 15. GNU Lesser General Public License (LGPL) 3.0 0.41% 16. Open Software License (OSL) 0.33% 17. Mozilla Public License (MPL) 1.0 0.28% 18. Common Development and Distribution License (CDDL) 0.27% 19. PHP License Version 3.0 0.25% 20. Ruby License 0.24% 출처 : http://www.blackducksoftware.com/oss/licenses - 24 - Black Duck Software Korea
  • 26. 문의 ㈜블랙덕소프트웨어 코리아 김병선부장 briankim@blackducksoftware.co.kr (02)538-9227 - 25 - Black Duck Software Korea