【C++风云录】解锁智慧之门:物联网安全工具和库助力打造安全可靠的智能家居

本文主要是介绍【C++风云录】解锁智慧之门:物联网安全工具和库助力打造安全可靠的智能家居,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

物联网安全:保护智能家居和设备数据的关键

前言

随着物联网的快速发展,智能家居和物联网设备正成为我们日常生活中不可或缺的一部分。然而,随之而来的是对设备安全性的关注,因为这些设备存储了大量的个人和敏感数据。为了确保智能家居和物联网设备的安全性,我们需要借助安全性分析工具和加密算法等技术手段。本文将介绍一些重要的工具库和库,以帮助您加强智能家居和物联网设备的安全性。

欢迎订阅专栏:C++风云录

文章目录

  • 物联网安全:保护智能家居和设备数据的关键
      • 前言
      • 1. IoTa
        • 1.1 安全性分析工具库
        • 1.2 面向智能家居和物联网设备的安全性分析
        • 1.3 提供漏洞扫描和安全评估功能
      • 2. Mongoose IoT
        • 2.1 物联网设备开发的C++库
        • 2.2 支持安全通信和远程管理
        • 2.3 提供安全性措施和认证机制
      • 3. Paho
        • 3.1 MQTT 客户端库
        • 3.2 用于实现 IoT 设备与物联网通信
        • 3.3 提供可靠的消息传递和安全连接
      • 4. OpenSSL
        • 4.1 加密和安全套接字库
        • 4.2 提供加密通信和数字证书支持
        • 4.3 帮助确保物联网设备的通信安全
      • 5. libcoap
        • 5.1 轻量级的 CoAP 协议库
        • 5.2 用于物联网设备的通信和资源发现
        • 5.3 提供安全性支持和网络协议封装
      • 6. Micro-ecc
        • 6.1 微型椭圆曲线加密库
        • 6.2 用于物联网设备的轻量级加密算法
        • 6.3 提供高效的加密和安全功能
    • 总结

1. IoTa

1.1 安全性分析工具库

IoTa是一个功能强大的安全性分析工具库,旨在帮助开发者和用户提高智能家居和物联网设备的安全性。它提供了一系列功能和工具,用于发现潜在的安全漏洞和评估设备的安全性。

1.2 面向智能家居和物联网设备的安全性分析

IoTa专注于智能家居和物联网设备的安全性分析。它提供了针对这些设备的专门功能和算法,以帮助检测并解决可能存在的安全隐患。通过使用IoTa,开发者和用户可以确保其智能家居和物联网设备的数据和隐私得到充分保护。

1.3 提供漏洞扫描和安全评估功能

IoTa提供了强大的漏洞扫描和安全评估功能,用于检测设备中的潜在漏洞和弱点。以下是一个使用IoTa进行漏洞扫描的示例代码:

#include <iota/SecurityScanner.h>int main() {// 创建一个安全扫描器实例iota::SecurityScanner scanner;// 添加要扫描的设备scanner.addDevice("192.168.0.1");scanner.addDevice("192.168.0.2");// 开始扫描scanner.scanDevices();// 获取扫描结果std::vector<std::string> vulnerabilities = scanner.getVulnerabilities();// 打印漏洞信息for (const auto& vulnerability : vulnerabilities) {std::cout << "Device is vulnerable: " << vulnerability << std::endl;}return 0;
}

以上示例代码演示了如何使用IoTa的SecurityScanner类进行漏洞扫描。首先,我们创建一个SecurityScanner实例,并添加要扫描的设备的IP地址。然后,调用scanDevices方法开始扫描。最后,通过调用getVulnerabilities方法获取扫描结果,并将结果打印出来。

除了漏洞扫描功能,IoTa还提供了其他各种安全评估功能,如权限分析、网络流量分析等,以帮助开发者和用户全面评估设备的安全性。

总之,IoTa是一个功能强大的安全性分析工具库,专注于智能家居和物联网设备的安全性。通过使用IoTa,开发者和用户可以发现并解决设备中的安全隐患,保护用户的隐私和数据安全。

2. Mongoose IoT

2.1 物联网设备开发的C++库

Mongoose IoT是一个基于C++的开源库,专注于物联网设备的开发。它提供了一套简单而强大的API,帮助开发者轻松创建物联网设备应用程序。使用Mongoose IoT,开发者可以快速构建可靠、高效的物联网解决方案。

2.2 支持安全通信和远程管理

Mongoose IoT提供了安全通信和远程管理功能,确保物联网设备的通信和操作安全可靠。它支持使用TLS/SSL协议进行加密通信,保护设备数据的隐私和完整性。同时,它还提供了远程管理功能,允许开发者对设备进行远程配置、监控和维护。

2.3 提供安全性措施和认证机制

Mongoose IoT提供了一系列安全性措施和认证机制,确保设备的安全性。它支持基于令牌的认证机制,允许设备和应用程序进行安全的身份验证。此外,它还提供了用于数据加密和解密的API,确保设备的数据在传输过程中得到保护。

以下是一个使用Mongoose IoT进行设备通信的示例代码:

#include <iostream>
#include <mongoose.h>static const char* s_url = "tcp://localhost:1883";
static const char* s_topic = "devices/device1/data";static void publish_message(mg_connection* nc, const std::string& message) {mg_mqtt_puback(nc);mg_send_mqtt(&nc->send_mbuf, MG_MQTT_CMD_PUBLISH, MG_MQTT_QOS(1), MG_MQTT_RETAIN(1),s_topic,(uint16_t) strlen(s_topic),(const uint8_t *) message.data(),(uint16_t) message.length());
}static void ev_handler(mg_connection* nc, int ev, void* ev_data) {if (ev == MG_EV_POLL) {// 处理接收到的消息mg_mqtt_send_ping(nc);} else if (ev == MG_EV_MQTT_PUBLISH) {// 处理接收到的发布消息mg_mqtt_message* mm = (mg_mqtt_message*) ev_data;std::cout << "Received message: " << std::string(mm->payload, mm->payload_len) << std::endl;}
}int main() {// 初始化Mongoose IoTmg_mgr mgr;mg_mgr_init(&mgr, nullptr);// 连接到MQTT服务器mg_connection* nc = mg_mqtt_connect(&mgr, s_url, ev_handler);if (nc == nullptr) {std::cerr << "Failed to connect to MQTT server" << std::endl;return 1;}// 发布消息std::string message = "Hello, IoT!";publish_message(nc, message);// 等待事件循环退出while (true) {mg_mgr_poll(&mgr, 1000);}// 清理并关闭连接mg_mgr_free(&mgr);return 0;
}

在上面的示例中,我们使用Mongoose IoT库进行MQTT通信。首先,初始化Mongoose IoT,然后连接到MQTT服务器。接着,我们发布了一条消息,并通过ev_handler处理来自服务器的响应和接收到的消息。最后,通过启动事件循环,实现持续的设备通信。

总之,Mongoose IoT是一个功能强大的物联网设备开发库,提供了丰富的功能和工具,帮助开发者轻松构建可靠、安全的物联网解决方案。它支持安全通信和远程管理,提供了各种安全性措施和认证机制,确保设备数据的安全和可靠传输。

3. Paho

3.1 MQTT 客户端库

Paho是一个开源的MQTT(Message Queuing Telemetry Transport)客户端库,专门用于实现物联网设备与物联网通信。它提供了一套简单易用的API,帮助开发者方便地进行MQTT通信。

3.2 用于实现 IoT 设备与物联网通信

Paho库被广泛用于实现物联网设备与物联网平台之间的通信。它建立在MQTT协议之上,通过发布和订阅机制,实现设备与平台之间的数据传输和控制。开发者可以使用Paho库快速实现设备与平台之间的双向通信。

3.3 提供可靠的消息传递和安全连接

Paho库提供了可靠的消息传递机制,确保设备与平台之间的数据可靠性和一致性。它支持不同的QoS级别(Quality of Service),可以根据需求进行消息确认和传输可靠性的控制。

此外,Paho库还提供了安全连接的支持,支持使用TLS/SSL协议进行加密通信,保护设备的数据和通信安全。

以下是一个使用Paho库进行MQTT通信的示例代码:

#include <iostream>
#include <mqtt/async_client.h>const std::string serverAddress = "tcp://mqtt.eclipse.org:1883";
const std::string clientId = "paho_cpp_async_sample";
const std::string topic = "test/topic";class sample_callback : public virtual mqtt::callback
{
public:void connected(const std::string &cause) override{std::cout << "Connected." << std::endl;}void connection_lost(const std::string &cause) override{std::cerr << "Connection lost: " << cause << std::endl;}void message_arrived(mqtt::const_message_ptr msg) override{std::cout << "Message arrived: " << msg->to_string() << std::endl;}void delivery_complete(mqtt::delivery_token_ptr token) override{std::cout << "Delivery complete." << std::endl;}
};int main()
{mqtt::async_client client(serverAddress, clientId);mqtt::connect_options connOpts;connOpts.set_keep_alive_interval(20);connOpts.set_clean_session(true);sample_callback cb;client.set_callback(cb);try{mqtt::token_ptr conntok = client.connect(connOpts);conntok->wait();client.subscribe(topic, 0)->wait();std::cout << "Subscribed to topic: " << topic << std::endl;mqtt::message_ptr pubmsg = mqtt::make_message(topic, "Hello, Paho!");client.publish(pubmsg)->wait();std::cout << "Message published." << std::endl;client.disconnect()->wait();std::cout << "Disconnected." << std::endl;}catch (const mqtt::exception &exc){std::cerr << "Error: " << exc.what() << std::endl;return 1;}return 0;
}

在上面的示例中,我们使用Paho库进行MQTT通信。首先,我们创建了一个异步客户端mqtt::async_client,并设置连接选项mqtt::connect_options。然后,我们定义了一个回调函数,并通过set_callback方法将其与客户端关联。接着,我们使用connect方法连接到MQTT服务器,然后订阅一个主题,并发布一条消息。最后,我们使用disconnect方法断开与服务器的连接。

总之,Paho是一个高性能的MQTT客户端库,用于实现物联网设备与物联网通信。它提供了简单易用的API,支持可靠的消息传递和安全连接,帮助开发者快速构建可靠的物联网解决方案。

4. OpenSSL

4.1 加密和安全套接字库

OpenSSL是一个强大的开源加密和安全套接字库,用于保护物联网设备的通信和数据安全。它提供了各种密码学算法和安全性协议,如RSA、AES、TLS等,帮助开发者实现加密通信和数据保护。

4.2 提供加密通信和数字证书支持

OpenSSL可用于实现物联网设备之间的加密通信。它提供了SSL/TLS协议的支持,通过建立安全的通信通道和应用层加密,保护设备之间的数据传输和通信隐私。此外,OpenSSL还支持生成和验证数字证书,用于设备身份认证和密钥交换。

4.3 帮助确保物联网设备的通信安全

OpenSSL提供了一套全面的安全性功能和工具,帮助确保物联网设备的通信安全。它支持各种加密算法、散列函数和随机数生成器,能够满足不同的安全需求。开发者可以使用OpenSSL库来实现数据加解密、数字签名、安全握手和密钥管理等安全操作。

以下是一个使用OpenSSL进行加密通信的示例代码:

#include <iostream>
#include <openssl/ssl.h>const char *hostname = "www.example.com";
const char *port = "443";
const char *request = "GET / HTTP/1.1\r\nHost: www.example.com\r\nConnection: close\r\n\r\n";
const int max_buffer_size = 2048;int main() {// 初始化OpenSSL库SSL_library_init();SSL_CTX *ctx = SSL_CTX_new(TLS_client_method());// 创建SSL对象并建立连接SSL *ssl = SSL_new(ctx);int sockfd = socket(AF_INET, SOCK_STREAM, 0);struct sockaddr_in server_addr{};server_addr.sin_family = AF_INET;server_addr.sin_port = htons(atoi(port));inet_pton(AF_INET, hostname, &(server_addr.sin_addr));connect(sockfd, (struct sockaddr *)&server_addr, sizeof(server_addr));SSL_set_fd(ssl, sockfd);SSL_connect(ssl);// 发送请求并接收响应SSL_write(ssl, request, strlen(request));char buffer[max_buffer_size];memset(buffer, 0, sizeof(buffer));while (SSL_read(ssl, buffer, sizeof(buffer) - 1) > 0) {std::cout << buffer;memset(buffer, 0, sizeof(buffer));}// 关闭连接并清理资源SSL_shutdown(ssl);close(sockfd);SSL_free(ssl);SSL_CTX_free(ctx);return 0;
}

在上面的示例中,我们使用OpenSSL库进行安全通信,示例中使用HTTPS协议连接到一个Web服务器并发送GET请求。首先,我们初始化OpenSSL库,并创建SSL上下文。然后,我们通过socket建立一个TCP连接,并将SSL对象关联到该连接。接着,我们使用SSL_connect方法建立安全通信通道,并发送请求并接收响应数据。最后,我们关闭连接并清理资源。

总之,OpenSSL是一个功能强大、广泛使用的加密和安全套接字库,用于保护物联网设备的通信和数据安全。它提供了丰富的密码学算法和安全性协议,帮助开发者实现数据加密和传输安全,确保物联网设备之间的通信安全和隐私保护。

5. libcoap

5.1 轻量级的 CoAP 协议库

libcoap是一个轻量级的CoAP(Constrained Application Protocol)协议库,用于实现物联网设备之间的通信和资源发现。CoAP是一种特别设计用于受限环境下的应用层协议,具有低功耗、低带宽、简单和可靠的特点。

5.2 用于物联网设备的通信和资源发现

libcoap提供了一组简单而强大的API,用于实现物联网设备之间的通信和资源发现。它支持CoAP的核心功能,如请求-响应机制、观察机制和分组的传输。

通过使用libcoap,开发者可以轻松地实现CoAP客户端和服务器,实现设备之间的通信、资源的获取和修改。

5.3 提供安全性支持和网络协议封装

libcoap提供了对安全性的支持,可以通过使用DTLS(Datagram Transport Layer Security)协议,确保设备之间的通信安全性。

此外,libcoap还提供了对网络协议的封装和处理。它可以支持不同的网络协议栈,如IPv4和IPv6,并提供了多种传输方式,如UDP和TCP。

以下是一个使用libcoap进行CoAP通信的示例代码:

#include <stdio.h>
#include <stdlib.h>
#include <coap2/coap.h>static void message_handler(struct coap_context_t *ctx, coap_pdu_t *pdu, const coap_endpoint_t *local_interface, const coap_address_t *peer, coap_pdu_t *response_pdu, coap_session_t *session, coap_pdu_t *sent) {printf("Received response:\n");unsigned char data[1024] = {0};size_t data_len = 1024;if (coap_get_data(pdu, &data_len, data)) {printf("%.*s\n", (int) data_len, data);}
}int main() {coap_context_t *ctx = coap_new_context(NULL);if (!ctx) {printf("Failed to create CoAP context\n");return 1;}coap_address_t server_address;coap_address_init(&server_address);if (coap_address_set_host(&server_address, "localhost") == 0 && coap_address_set_port(&server_address, COAP_DEFAULT_PORT) == 0) {// 创建CoAP会话coap_session_t *session = coap_new_client_session(ctx, NULL, &server_address, COAP_PROTO_UDP);if (!session) {printf("Failed to create CoAP session\n");return 1;}// 创建CoAP请求coap_pdu_t *request_pdu = coap_pdu_init(COAP_MESSAGE_CON, COAP_REQUEST_GET, 0, COAP_MAX_PDU_SIZE);if (!request_pdu) {printf("Failed to create CoAP PDU\n");return 1;}// 设置CoAP请求选项coap_add_option(request_pdu, COAP_OPTION_URI_PATH, 4, (const uint8_t *) "test");// 发送CoAP请求coap_send(session, request_pdu);// 接收CoAP响应coap_run_once(ctx, 1000);// 注册CoAP响应处理程序coap_register_response_handler(ctx, message_handler);// 等待响应coap_run(ctx);// 清理资源coap_cleanup(ctx);} else {printf("Failed to set server address\n");return 1;}return 0;
}

在上面的示例中,我们使用libcoap库进行CoAP通信。首先,我们创建了一个CoAP上下文coap_context_t,然后初始化目标服务器地址,并创建一个CoAP会话coap_session_t。接着,我们创建了一个CoAP请求coap_pdu_t,设置请求选项,并使用coap_send方法发送请求。最后,我们注册了一个CoAP响应处理程序message_handler,并使用coap_run方法等待响应。

总之,libcoap是一个轻量级的CoAP协议库,用于实现物联网设备之间的通信和资源发现。它提供了简单而强大的API,支持CoAP的核心功能,并提供安全性支持和网络协议封装。通过使用libcoap,开发者可以实现可靠的CoAP通信,实现设备之间的数据传输和资源协作。

6. Micro-ecc

6.1 微型椭圆曲线加密库

Micro-ecc是一个用于物联网设备的轻量级椭圆曲线加密库。椭圆曲线加密算法提供了高度安全性和较小的密钥尺寸,使其成为受限环境中物联网设备的理想选择。

6.2 用于物联网设备的轻量级加密算法

Micro-ecc采用了一个高度优化的实现,针对物联网设备的资源受限环境进行了优化。它提供了椭圆曲线加密和签名算法的实现,包括ECDH(Elliptic Curve Diffie-Hellman)、ECDSA (Elliptic Curve Digital Signature Algorithm)等。

6.3 提供高效的加密和安全功能

Micro-ecc具有高效的加密和安全功能,适用于物联网设备的通信和数据保护。它提供了生成和管理密钥对的功能,支持密钥交换、数据加密和数字签名。

以下是一个使用Micro-ecc进行椭圆曲线加密和解密的示例代码:

#include <iostream>
#include <micro-ecc/uECC.h>int main() {// 使用secp256r1曲线生成密钥对uint8_t private_key[32];uint8_t public_key[64];uECC_make_key(public_key, private_key, uECC_secp256r1());const char* message = "Hello, Micro-ecc!";size_t message_len = strlen(message);// 进行消息的加密uint8_t encrypted[message_len + 16]; // 加上额外的16字节用于填充uECC_encrypt(public_key, (const uint8_t *) message, message_len, encrypted, uECC_secp256r1());// 进行消息的解密uint8_t decrypted[message_len];if (uECC_decrypt(private_key, encrypted, sizeof(encrypted), decrypted, uECC_secp256r1()) == message_len) {std::cout << "Decrypted message: " << decrypted << std::endl;} else {std::cout << "Failed to decrypt message" << std::endl;}return 0;
}

在上面的示例中,我们使用Micro-ecc库进行椭圆曲线加密和解密。首先,我们使用secp256r1曲线生成了密钥对,然后定义了一个待加密的消息。接着,我们使用公钥对消息进行加密,并将加密后的数据存储在encrypted数组中。最后,我们使用私钥对加密的数据进行解密,如果解密成功,就输出解密后的消息。

总之,Micro-ecc是一个用于物联网设备的轻量级椭圆曲线加密库,它提供了高效的加密和安全功能。通过使用Micro-ecc,开发者可以轻松地实现椭圆曲线加密和签名,保护物联网设备的通信和数据安全。

总结

保护智能家居和物联网设备的安全性对于保护个人隐私和数据至关重要。本文通过介绍几个关键的物联网安全工具库和库,展示了如何通过安全性分析、加密通信和安全连接等技术手段来加强设备的安全性。通过使用这些工具和库,开发者和用户可以发现和修复设备中的安全漏洞、实现可靠的通信和远程管理,并确保设备的通信和数据安全。

这篇关于【C++风云录】解锁智慧之门:物联网安全工具和库助力打造安全可靠的智能家居的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/924336

相关文章

【C++ Primer Plus习题】13.4

大家好,这里是国中之林! ❥前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看← 问题: 解答: main.cpp #include <iostream>#include "port.h"int main() {Port p1;Port p2("Abc", "Bcc", 30);std::cout <<

C++包装器

包装器 在 C++ 中,“包装器”通常指的是一种设计模式或编程技巧,用于封装其他代码或对象,使其更易于使用、管理或扩展。包装器的概念在编程中非常普遍,可以用于函数、类、库等多个方面。下面是几个常见的 “包装器” 类型: 1. 函数包装器 函数包装器用于封装一个或多个函数,使其接口更统一或更便于调用。例如,std::function 是一个通用的函数包装器,它可以存储任意可调用对象(函数、函数

C++11第三弹:lambda表达式 | 新的类功能 | 模板的可变参数

🌈个人主页: 南桥几晴秋 🌈C++专栏: 南桥谈C++ 🌈C语言专栏: C语言学习系列 🌈Linux学习专栏: 南桥谈Linux 🌈数据结构学习专栏: 数据结构杂谈 🌈数据库学习专栏: 南桥谈MySQL 🌈Qt学习专栏: 南桥谈Qt 🌈菜鸡代码练习: 练习随想记录 🌈git学习: 南桥谈Git 🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈�

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

高效录音转文字:2024年四大工具精选!

在快节奏的工作生活中,能够快速将录音转换成文字是一项非常实用的能力。特别是在需要记录会议纪要、讲座内容或者是采访素材的时候,一款优秀的在线录音转文字工具能派上大用场。以下推荐几个好用的录音转文字工具! 365在线转文字 直达链接:https://www.pdf365.cn/ 365在线转文字是一款提供在线录音转文字服务的工具,它以其高效、便捷的特点受到用户的青睐。用户无需下载安装任何软件,只

06 C++Lambda表达式

lambda表达式的定义 没有显式模版形参的lambda表达式 [捕获] 前属性 (形参列表) 说明符 异常 后属性 尾随类型 约束 {函数体} 有显式模版形参的lambda表达式 [捕获] <模版形参> 模版约束 前属性 (形参列表) 说明符 异常 后属性 尾随类型 约束 {函数体} 含义 捕获:包含零个或者多个捕获符的逗号分隔列表 模板形参:用于泛型lambda提供个模板形参的名

客户案例:安全海外中继助力知名家电企业化解海外通邮困境

1、客户背景 广东格兰仕集团有限公司(以下简称“格兰仕”),成立于1978年,是中国家电行业的领军企业之一。作为全球最大的微波炉生产基地,格兰仕拥有多项国际领先的家电制造技术,连续多年位列中国家电出口前列。格兰仕不仅注重业务的全球拓展,更重视业务流程的高效与顺畅,以确保在国际舞台上的竞争力。 2、需求痛点 随着格兰仕全球化战略的深入实施,其海外业务快速增长,电子邮件成为了关键的沟通工具。

安全管理体系化的智慧油站开源了。

AI视频监控平台简介 AI视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒,省去繁琐重复的适配流程,实现芯片、算法、应用的全流程组合,从而大大减少企业级应用约95%的开发成本。用户只需在界面上进行简单的操作,就可以实现全视频的接入及布控。摄像头管理模块用于多种终端设备、智能设备的接入及管理。平台支持包括摄像头等终端感知设备接入,为整个平台提

6.1.数据结构-c/c++堆详解下篇(堆排序,TopK问题)

上篇:6.1.数据结构-c/c++模拟实现堆上篇(向下,上调整算法,建堆,增删数据)-CSDN博客 本章重点 1.使用堆来完成堆排序 2.使用堆解决TopK问题 目录 一.堆排序 1.1 思路 1.2 代码 1.3 简单测试 二.TopK问题 2.1 思路(求最小): 2.2 C语言代码(手写堆) 2.3 C++代码(使用优先级队列 priority_queue)

2024网安周今日开幕,亚信安全亮相30城

2024年国家网络安全宣传周今天在广州拉开帷幕。今年网安周继续以“网络安全为人民,网络安全靠人民”为主题。2024年国家网络安全宣传周涵盖了1场开幕式、1场高峰论坛、5个重要活动、15场分论坛/座谈会/闭门会、6个主题日活动和网络安全“六进”活动。亚信安全出席2024年国家网络安全宣传周开幕式和主论坛,并将通过线下宣讲、创意科普、成果展示等多种形式,让广大民众看得懂、记得住安全知识,同时还