기업이라면 침입탐지시스템(Intrusion Detection System, IDS)를 사용해 네트워크를 모니터링하고 의심스러운 활동을 신고하거나 잠재적인 악성 트래픽을 자동으로 막아야 한다. 이번 기사에서는 5가지 최고의 오픈소스 IDS를 살펴보자.

Credit: Getty Images Bank

사이버보안 전문가로서 공격자가 네트워크에 액세스하는 것을 막으려고 노력하지만 모바일 기기, 분산된 팀, IoT(Internet of Things)의 등장으로 기하급수적으로 늘어난 경계를 보호하는 것은 쉽지 않다. 불편한 진실은 공격자가 가끔은 내부에 들어올 것이라는 점과 이 공격을 발견하는 데 오래 걸릴수록 데이터 유출 비용은 증가한다는 것이다. 강력한 사고 대응 계획의 일환으로 견고한 IDS를 사용함으로써 침해의 잠재적 피해를 줄일 수 있다.

IDS는 일반적으로 2가지로 분류할 수 있다. 알려진 악의적인 트래픽 패턴과 경고를 검색하는 시그니처 기반의 IDS가 있으며, 시그니처가 아닌 표준과의 편차를 표시하기 위한 기준선을 보는 비정상 행위 기반의 IDS가 있다.

데이터와 시스템을 보호하려면 내부 서버에서 데이터센터, 퍼블릭 클라우드 환경에 이르기까지 네트워크에 IDS를 배포하는 것이 중요하다. IDS는 내부자 위협과 하루종일 넷플릭스 스트리밍을 즐기거나 페이스북 메신저를 통해 채팅하는 등의 직원의 태만 행동을 적발할 수 있다. 다행히도 살펴볼 만한 오픈소스 IDS가 많이 있으며, 그 가운데 5가지를 알아보자.

1. 스노트(Snort)
스노트는 IDS의 사실상 표준으로 매우 가치있는 도구다. 이 리눅스 유틸리티는 배포하기 쉽고 침입 시도와 로깅에 대한 네트워크 트래픽을 모니터링하고 침입 시도가 탐지됐을 때 특정 행동을 수행하도록 구성할 수 있다. 가장 널리 배포된 IDS 도구 가운데 하나이며, 침입 방지 시스템(Intrusion Prevention System, IPS) 역할도 한다. 

스노트는 1998년으로 거슬러 올라간다. 그리고 매우 활동적이고 유익한 커뮤니티가 큰 지원을 제공한다. 여기에는 GUI와 관리 콘솔이 없지만 스노비(Snorby)나 베이스(Base)와 같은 다른 오픈소스 툴을 사용하면 그 차이를 좁힐 수 있다. 스노트가 제공하는 높은 수준의 사용자 정의는 많은 조직에게 좋은 선택지가 된다.

스노트를 사용하고 싶지 않다면 수리카타(Suricata)가 강력한 대안이다.

2. 브로(Bro)
트래픽을 일련의 이벤트로 변환하는 분석 엔진으로 구동되는 브로는 의심스러운 시그니처와 비정상적 행위를 탐지할 수 있다. 브로 스크립트(Bro-Script)를 사용하면 정책 엔진에 대한 작업을 만들 수 있으므로 더 많은 작업을 자동화하려는 사람이라면 누구에게나 효용성이 있다. 

예를 들어, 이 도구는 네트워크에 있는 의심스러운 파일을 자동으로 다운로드하고 분석을 위해 보내고, 문제가 되는 것이 발견되면 관련 사용자에게 알리고, 소스를 블랙리스트에 올리고, 다운로드한 기기를 종료할 수 있다.

브로의 단점은 가중치를 최대로 끌어내기 위한 가파른 학습 곡선에 있으며 설정하는 것이 복잡할 수 있다는 것이다. 그러나 커뮤니티가 점점 더 성장해 많은 도움을 제공하고 있다. 브로는 다른 침입 탐지 도구가 놓칠 수 있는 예외와 패턴을 탐지할 수 있다.

3. 키스멧(Kismet)
무선IDS의 표준인 키스멧은 대부분의 기업에서 필수적인 도구다. 와이파이 및 블루투스를 포함한 무선 프로토콜에 초점을 맞추고 직원이 실수로 쉽게 생성할 수 있는 무단 액세스 포인트를 추적한다. 기본 네트워크 또는 구성 간격을 탐지할 수 있으며, 채널을 도약할 수 있지만 네트워크를 검색하는 데 오랜 시간이 걸리고 최상의 결과를 얻으려면 범위가 제한적이다. 

키스멧은 안드로이드와 iOS를 포함한 여러 플랫폼에서 실행되지만 윈도우 지원은 제한적이다. 추가 도구를 위해 통합하기 위한 다양한 API가 있으며, 작업 효율을 위해 다중 스레드 패킷 디코딩을 제공한다.

4. 오섹(OSSEC)
호스트 기반 IDS 또는 HIDS를 살펴본다면 오섹을 찾게 된다. 오섹은 가장 완벽한 기능의 HIDS다. 확장성이 뛰어나 윈도우, 리눅스, 맥OS, 솔라리스(Solaris) 등 대부분의 주요 운영체제에서 실행된다. 분석을 위해 중앙 서버에 경고 및 로그를 전송하는 클라이언트 서버 아키텍처가 있다. 

이는 호스트 시스템이 오프라인 상태로 되거나 완전히 해킹당한 경우에도 경고가 진행된다는 걸 의미한다. 또한 이 아키텍처를 사용하면 여러 에이전트를 중앙에서 관리할 수 있으므로 배포가 간편해진다.

작은 인스톨러이기 때문에 한번 실행하고 나면 시스템 자원에 미치는 영향이 미비하다. 또한 사용자 정의가 가능하며 실시간 자동적으로 작동하도록 구성할 수 있다. 오섹은 커다란 커뮤니티를 보유하고 있으며, 이를 통해 많은 자원을 활용할 수 있다. 중앙 서버이기 때문에 잠시 멈추는 경우, 삼하인 랩(Samhain Labs)을 호스트 기반의 대안으로 고려해 볼 수 있지만 에이전트로부터 여러 출력 방법을 제공한다.

5. 오픈 DLP(Open DLP)
데이터 유출 방지(Data Loss Prevention, DLP)는 오픈DLP의 목표다. 데이터베이스나 파일 시스템에서 데이터를 검색하는 동안 데이터를 검사할 수 있다. 오픈 DLP는 조직과 관련된 주요 데이터를 검색해 해당 데이터의 무단 복사 및 전송을 발견한다. 이는 악의적인 내부자 또는 무능한 직원이 자신이 해서는 안되는 데이터를 보내는 행위들을 발견하는데 유용하다. 윈도우에서는 잘 작동할뿐만 아니라 리눅스도 지원하며 에이전트를 통해 또는 에이전트리스 도구로 배포할 수 있다. 

지금까지 설명한 우수한 무료 오픈소스 침입 탐지 도구는 전체 목록은 아니지만 시작하기 좋은 선택지가 될 것이다. editor@itworld.co.kr  



원문보기: 
http://www.itworld.co.kr/news/111187#csidxe8c11a9e95cfdd2a13992c10cac01a6 

프라이빗 클라우드(Private cloud)는 정부 표준 기구와 민간 클라우드 업계가 모두 동의하는, 명확하게 정의된 용어다. 프라이빗 클라우드 사용이 줄어들고 있다는 의견도 있지만 최근 분석 결과를 보면, 기업의 프라이빗 클라우드 투자는 여전히 맹렬한 속도로 증가 중이다.

Credit: Getty Images Bank

IDC는 한 연구에서 2018년 2분기 프라이빗 클라우드 시장 규모는 2017년 같은 기간에 비해 28.2% 증가한 46억 달러를 돌파할 것으로 내다봤다. 기업 조직이 이처럼 프라이빗 클라우드에 몰려드는 이유는 무엇일까.

프라이빗 클라우드란 무엇인가
미국 국립표준기술연구소(National Institute for Standards and Technology, NIST)에 따르면, 클라우드에는 퍼블릭, 커뮤니티, 하이브리드, 프라이빗의 네 가지 유형이 있다.

NIST는 나머지 클라우드와 구분되는 프라이빗 클라우드의 뚜렷한 특징을 다음과 같이 설명했다. "클라우드 인프라는 복수의 소비자(예: 사업부)로 구성된 단일 조직에 의해 독점적으로 사용되도록 프로비저닝된다. 이 인프라는 해당 조직, 서드파티 또는 이 둘의 조합이 소유, 관리 및 운영할 수 있으며 회사 내부 또는 외부에 위치할 수 있다."

이것이 NIST가 정의하는 프라이빗 클라우드의 특징이지만 다른 클라우드와 공유하는 5가지 공통점도 있다.

첫째, 온디맨드 셀프 서비스(on-demand self-service)다. 이는 최종 사용자가 IT에 도움을 요청하지 않고 직접 컴퓨팅 리소스를 프로비저닝할 수 있음을 의미한다.

둘째는 폭넓은 액세스(broad access)다. 워크스테이션부터 노트톱, 태블릿, 스마트폰에 이르기까지 모든 유형의 디바이스를 통해 클라우드의 리소스에 액세스할 수 있어야 한다.

셋째, 리소스 풀링(resource pooling)이다. 리소스 풀링은 컴퓨팅 리소스 사용의 전반적인 효율성을 높여주는데, 이는 다양한 테넌트가 동적으로 할당되는 리소스를 공유함을 의미한다. 프라이빗 클라우드에서는 조직의 여러 사업부가 리소스를 공유하는 것을 의미하지만 어쨌든 해당 조직만 독점적으로 리소스를 사용한다. 멀티 테넌시 서비스와 달리 다른 회사와 리소스를 공유하지 않는다.

넷째는 탄력성(rapid elasticity)이다. 이를 통해 필요에 따라 용량을 늘리거나 줄이고 필요한 다른 부서에서 사용할 수 있도록 리소스를 풀 수 있다.

마지막 다섯 번째는 측정(measured service)이다. 공급자와 사용자는 다양한 리소스(스토리지, 프로세싱, 대역폭, 사용자 계정 수 등)를 얼마나 사용하는지 측정해 리소스를 최적으로 할당할 수 있다.

시각화는 프라이빗 클라우드의 일부분일 뿐
서버에 하이퍼바이저를 올려 시각화(virtualization)를 활용한다고 해서 프라이빗 클라우드 컴퓨팅이 되는 것은 아니다. 시각화는 클라우드 컴퓨팅의 중요 구성 요소지만 그 자체가 클라우드는 아니다.

시각화 기술은 조직에서 리소스를 풀링하고 할당할 수 있게 해준다. 이는 두 가지 모두 NIST의 클라우드 정의에 포함된다. 그러나 기술적으로 클라우드 환경으로 간주되기 위해서는 셀프 서비스 및 리소스 확장 기능과 관련된 다른 특성이 필요하다.

퍼블릭 또는 하이브리드 클라우드와 비교할 때 프라이빗 클라우드는 구체적으로 단일 조직에 의해 사용되는 리소스, 또는 조직의 클라우드 기반 리소스가 완전히 격리되어 있는 상태를 가리킨다.

프라이빗 클라우드의 경제학
프라이빗 클라우드에 관한 가장 큰 오해 중 하나는 비용 절감이다. 물론 비용을 절감할 수 있고 실제로 절감하는 경우도 자주 있지만 프라이빗 클라우드 자체가 비용 절감에 유리한 것은 아니다.

우선 경우에 따라 초기 비용이 상당히 크다. 예를 들어 프라이빗 클라우드 네트워크의 중요한 부분인 자동화 기술을 구현하는 데는 대다수 IT 조직이 감당하기 어려운 막대한 비용 투자가 필요할 수 있다. 자동화 기술을 구현하면 리소스를 더 효율적으로 재할당하고 신규 하드웨어를 위한 설비 투자를 줄여 비용 절감을 할 수도 있다. 그러나 전체적인 비용 절감이 보장되지는 않는다.

가트너 분석가들은 프라이빗 클라우드 모델을 도입하는 주된 목적은 비용 절감이 아니라 민첩성과 동적 확장성의 향상이어야 한다고 말했다. 이를 통해 프라이빗 클라우드 기술을 활용하는 기업에서는 제품 출시 시간을 단축할 수 있다.

프라이빗 클라우드는 퍼블릭 클라우드에 구현 가능
많은 사람은 프라이빗 클라우드라고 하면 무조건 조직의 프라이빗, 온프레미스 데이터센터에 위치하고 퍼블릭 클라우드는 외부 서비스 제공업체로부터 받는 것이라고 생각한다. 그러나 NIST에 따르면, 프라이빗 클라우드는 프라이빗 조직에 의해 소유, 관리 및 운영될 수 있지만 그 인프라는 조직 외부에 위치할 수 있다.

많은 업체가 오프프라미스(off-premise) 프라이빗 클라우드를 제공한다. 이는 물리적 리소스가 외부 시설에 위치하면서 단일 고객 전용으로 제공될 수 있음을 의미한다. 여러 고객 사이에서 다중 테넌트로 리소스를 풀링하는 퍼블릭 클라우드와 달리 이런 리소스는 공유되지 않는다. 가트너 분석가 톰 비트맨은 "프라이빗 클라우드 컴퓨팅을 규정하는 요소는 위치나 소유권 또는 관리 책임이 아니라 프라이버시"라고 말했다.

클라우드 제공업체와 거래할 때는 보안의 명확성에 주의를 기울여야 한다. 예를 들어 일부 공급업체는 데이터센터 운영을 각 고객별로 전용 하드웨어를 배치할 수 없는 코로케이션 시설로 아웃소싱한다. 또는 여러 고객을 대상으로 리소스를 풀링하면서 VPN을 사용해 분리함으로써 프라이버시를 보장하다고 주장하기도 한다. 비트맨은 오프프라미스 프라이빗 클라우드의 경우 세세한 부분까지 잘 확인해야 한다고 조언했다.

프라이빗 클라우드는 IaaS 이상
서비스형 인프라(Infrastructure as a service, IaaS)는 프라이빗 클라우드 아키텍처를 도입하는 주요 이유지만 프라이빗 클라우드의 유용성이 서비스형 인프라에만 있는 것은 결코 아니다. 비트맨은 IaaS가 가장 빠르게 성장하는 분야라고 말했지만 서비스형 소프트웨어와 플랫폼 역시 중요하다.

비트맨은 "IaaS는 가장 낮은 수준의 데이터센터 리소스를 소비하기 쉬운 방식으로 제공할 뿐이며 IT의 운영 방식을 근본적으로 바꾸지는 않는다"고 말했다. 서비스형 플랫폼(PaaS)에서는 조직이 클라우드 인프라에서 실행되도록 맞춤형 애플리케이션을 만들 수 있다. PaaS에도 퍼블릭 또는 프라이빗 형태가 있다. 각 형태에 따라 애플리케이션 개발 서비스가 온프레미스 데이터센터에 호스팅되거나 업체가 제공하는 전용 환경에 호스팅된다.

프라이빗 클라우드가 항상 프라이빗은 아니다
프라이빗 클라우드는 많은 조직에서 클라우드 네트워크를 향한 자연스러운 첫 단계다. 퍼블릭 클라우드와 관련된 보안에 대한 우려 없이(그 우려에 실체가 있든 없든) 민첩성, 확장성, 효율성과 같은 클라우드의 이점을 제공하기 때문이다. 그러나 비트맨은 클라우드 시장이 계속 발전하면서 기업 조직도 퍼블릭 클라우드 리소스를 자연스럽게 받아들이게 될 것으로 예상했다. 앞으로 서비스 수준 협약과 보안 수단은 성숙해지고 가동 중단과 다운타임의 영향은 최소화된다.

가트너는 프라이빗 클라우드 환경이 결국 대부분 하이브리드 클라우드로 변형될 것으로 예상했다. 이는 퍼블릭 클라우드 리소스를 활용함에 따라 지금의 프라이빗 클라우드가 미래에는 하이브리드 클라우드가 될 수 있음을 의미한다.

비트맨은 "프라이빗 클라우드로 시작하면서 IT 부서는 프라이빗, 퍼블릭, 하이브리드 또는 전통적인 형태를 불문하고 기업을 위한 모든 서비스의 중개자 역할을 하게 된다"면서, "프라이빗 클라우드는 하이브리드, 또는 퍼블릭 클라우드로 진화하면서 셀프 서비스의 소유권을 유지할 수 있으며 따라서 고객과 인터페이스를 유지할 수 있다. 이것이 가트너에서 '하이브리드 IT'로 지칭하는 IT의 미래 비전 중 일부다"고 말했다.

클라우드 송환
기업에서 워크로드와 리소스를 퍼블릭 클라우드로 옮긴 다음 다시 프라이빗 클라우드 또는 비 클라우드 환경으로 되돌리는 경우를 두고 클라우드 송환(cloud repatriation)이라고 한다.

451 리서치(451 Research)의 2017년 설문에 따르면, 응답자의 39%는 최소한 일부 데이터 또는 애플리케이션을 퍼블릭 클라우드에서 다른 곳으로 옮겼다고 답했으며 가장 큰 이유는 성능과 가용성 문제였다. 451 리서치는 이 연구에 관한 블로그 글에서 "응답자가 선택한 이유 가운데 상당수는 기업이 애초에 퍼블릭 클라우드로 전환하기로 결정한 이유와 동일하다"고 전했다.

설문 응답자들이 선택한 상위 5개 이유는 성능/가용성 문제(19%), 온프레미스 클라우드의 개선(11%), 데이터 주권 관련 규제의 변화(11%), 예상보다 높은 비용(10%), 지연 문제(8%), 보안 침해(8%)다.

이 설문 결과가 IT 의사 결정자들이 퍼블릭 클라우드를 버리고 프라이빗 클라우드를 선택했음을 보여주는 것은 아니다. 이보다는 각 조직에서 클라우드 환경은 지속적으로 발전하며, 많은 조직이 프라이빗과 퍼블릭 클라우드를 모두 포용하는 하이브리드 클라우드를 구축하고 있음을 나타낸다. 451 설문 응답자의 과반수(58%)는 "온프레미스 시스템과 오프프레미스 클라우드/호스팅되는 리소스를 통합된 방식으로 모두 활용하는 하이브리드 IT 환경을 추진 중"이라고 답했다. editor@itworld.co.kr 





원문보기: 
http://www.itworld.co.kr/news/111148#csidx6b12067c3fd04ea90c6debaca549176 

블록체인상에서의 모든 거래는 블록체인에 포함되기 위해서 유효한 서명이 있어야 하고 이러한 서명은 유효한 디지털 키가 있어야 합니다.

키는 개인키(Private key), 공개키(Public key)  쌍으로 구성되는데, 공개키는 은행의 계좌번호에 해당하고, 개인키는 계좌의 비밀번호(PIN 번호)에 해당됩니다.

블록체인의 지갑에는 이와같이 개인키/공개키의 쌍이 저장되며, 여러개가 동시에 저장이 될수 있습니다.

지갑주소는 공개키를 사용하여 생성이 되며, 생성순서는 다음과 같습니다.


Private키를 사용하여 타원곡선 곱셈함수를 통해 Public 키를 생성하고, Public 키를 Hash 함수를 통해 bitcoin 주소를 생성합니다.

각각의 변환은 단방향으로 각각 역방향으로의 디코딩이 불가능합니다.

즉, Bitcoin 주소를 통해 Public 키를 추출하는것이 불가능하고, Public 키를 통해 Private 키를 추출하는것이 불가능하다는 것입니다.


[참조 : Mastering Bitcoin]


1. 개인키(Private key)


Private 키는 무작위로 추출한 단순한 숫자로 구성되어 있습니다.

Private 키로 사용할 256비트의 난수는 프로그래밍 언어가 제공하는 단순한 난수 생성기를 사용하지 말고, 암호학적으로 안전한 의사난수생성기를 사용하여 생성되어야 합니다.

절대 중복되지 않음을 보장해야 하며, 비트코인에서 키를  생성하는 작업은 1에서 사이의 숫자를 선택하는것과 동일합니다.

따라서 Private 키는 256비트 길이의 숫자로 생성되며, 다음과 같이 64개의 16진수로 표현됩니다.


  Private key : 1E99423A4ED27608A15A2616A2B0E9E52CED330AC530EDCC32C8FFC6A526AEDD


Private 키는 다음과 같이 3가지의 포맷으로 나누어지고, 3개 포맷은 서로 쉽게 변환이 가능합니다.


 유형

접두부 

설명 

 Hex

없음

 64개의 16진수

  ex) 1E99423A4ED27608A15A2616A2B0E9E52CED330AC530EDCC32C8FFC6A526AEDD

 WIF

 5

 Base58Check 엔코딩

  ex) 5J3mBbAH58CpQ3Y5RNJpUKPE62SQ5tfcvU2JpbnkeyhfsYB1Jcn

 WIF-압축형

 K 또는 L

 Base58Check 엔코딩, 인코딩전 접미부 0x01 추가

  ex) KxFC1jmwwCoACiCAWZ3eXa96mBM6tb3TYzGmf6YwgdGWZgawvrtJ



2. 공개키(Publick key)


Public 키는 타원곡선 곱셈함수를 통해 Private 키로부터 계산됩니다.




K = k * G  (K : Public 키, k : Private 키, G : 생성포인트 상수)


위의 식으로 타원곡선곱셈함수를 통하면 Public 키가 계산됩니다.

 

  K = 1E99423A4ED27608A15A2616A2B0E9E52CED330AC530EDCC32C8FFC6A526AEDD * G


계산을 통해 K는 다음과 같이 정의됩니다.


  K = (x, y)

   x = F028892BAD7ED57D2FB57BF33081D5CFCF6F9ED3D3D7F159C2E2FFF579DC341A

   y = 07CF33DA18BD734C600B96A72BBC4749D5141C90EC8AC328AE52DDFE2E505BDB



즉 공개키는 한쌍의 (x, y) 좌표로 구성된 점으로 타원곡선상에 존재하고 최종적으로 다음과 같이 표현됩니다.

접두부 04로 시작하고 연속된 256비트의 x,y 숫자 2개로 표현됩니다.


  K = 04F028892BAD7ED57D2FB57BF33081D5CFCF6F9ED3D3D7F159C2E2FFF579DC341A↵

   07CF33DA18BD734C600B96A72BBC4749D5141C90EC8AC328AE52DDFE2E505BDB


위의 포맷으로 구성될 경우 하나의 Public 키는 520비트의 공간이 사용되는데, 대부분의 거래에는 비트코인 소유주의 자격을 검증하고 비트코인을 소비하는데 필요한 공개키가 포함됩니다.

따라서 저장공간을 줄이기 위해서 공개키 포인트의  x좌표만 저장하고, y좌표는 생략해서 저장공간을 줄이는 방식으로 Public 키를 표현하고 있습니다.

y좌표는 다음의 수식으로 계산이 될수 있기 때문입니다.



비압축 공개키는 04의 접두어를 가지는 반면, 압축  공개키는 02, 03 의 접두어를 가지게 됩니다.

방정식이 y의 제곱으로 구성되어 있기 때문에 x 값은 음수와 양수 2개의 값을 가질수 있기 때문입니다.


다음은 위의 비압축 공개키를 03 접두어를 사용하는 압축 공개키로 표현한것입니다. 


  K = 03F028892BAD7ED57D2FB57BF33081D5CFCF6F9ED3D3D7F159C2E2FFF579DC341A 



3. 비트코인 주소(Address)


하나의 Private 키를 통해서 압축 Public 키는 2개가 만들어질수 있으며, 각각의 Public 키를 통해서 2개의 비트코인 주소가 만들어질수 있습니다.

즉 하나의 Private  키를 통해 2개의 비트코인 주소가 만들어질수 있지만, 각각의 주소는 동일한 Private  키에 대응된다고 볼수 있습니다.


공개키로부터 비트코인 주소를 만드는데 사용하는 알고리즘은 보안해시 알고리즘(SHA)과 RACE Integrity Primitives Evaluation Message Digest(RIPEMD) 입니다.

비트코인에서는 다음과 같이 Public 키를 사용하여 SHA256 해시를 구하고, 그 결과값의 RIPEMD160 해시값을 산출합니다.


  A = RIPEMD160(SHA256(K)) : K = Public 키 


이렇게 구한 160비트의 해시값은 Base58Check 인코딩을 통하여 사용자들에게 제공됩니다.

Base58Check 인코딩은 58개의 문자와(123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz) Checksum 을 이용하여 사람이 읽을수 있는 문자로 바꾸어 혼란을 방지하고, 거래의 표기나 항목에 대한 에러가 발생하지 않도록 합니다.


이렇게 구한 값이 다음과 같이 숫자 '1'로 시작되는 비트코인의 지갑주소 입니다.


  1thMirt546nngXqyPEz532S8fLwbozud8



전체과정을 그래픽적으로 표현한 주소생성기를 참고로 전체과정을 표현하면 다음과 같습니다.




+ Recent posts