Home Blog Page 5

routing – Laptop computer linked to light-weight entry level through WLC to entry particular VLAN 10


topology

HELLO EVERYONE!

That is my community topology and the issue is with L2 which is succesfully linked to LAP which acquires ip deal with through DHCP from WLC’s DHCP pool for administration.

L2 can’t handle to accumulate ip deal with from R13’s dhcp pool for VLAN 10

MS3 has:
gi1/1/2 trunk

gi1/0/22-24 entry vlan 99

PC41 succesfully acquires dynamic ip deal with from R13’s dhcp pool

R12 can succesfully ping the WLC and the LAP and MS3

L2 can’t purchase dynamically acclaimed ip deal with from R13’s pool for VLAN 10 and likewise tried giving static ip deal with of 172.19.10.5/24 but it surely didnt work.

SORRY FOR MY BAD ENGLISH

Configuration for R13 is:
Constructing configuration…

Present configuration : 1821 bytes
!
model 15.1
no service timestamps log datetime msec
no service timestamps debug datetime msec
no service password-encryption
!
hostname R13
!
!
!
!
!
!
!
!
ip cef
no ipv6 cef
!
!
!
!
license udi pid CISCO2911/K9 sn FTX1524CM71-
!
!
!
!
!
!
!
!
!
!
!
spanning-tree mode pvst
!
!
!
!
!
!
interface GigabitEthernet0/0
ip deal with 10.0.0.25 255.255.255.252
duplex auto
velocity auto
!
interface GigabitEthernet0/1
ip deal with 10.0.0.22 255.255.255.252
duplex auto
velocity auto
!
interface GigabitEthernet0/2
no ip deal with
duplex auto
velocity auto
!
interface GigabitEthernet0/2.10
encapsulation dot1Q 10
ip deal with 172.19.10.1 255.255.255.0
!
interface GigabitEthernet0/2.20
encapsulation dot1Q 20
ip deal with 172.19.20.1 255.255.255.0
!
interface GigabitEthernet0/2.30
encapsulation dot1Q 30
ip deal with 172.19.30.1 255.255.255.0
!
interface GigabitEthernet0/2.80
encapsulation dot1Q 80
ip deal with 172.19.80.1 255.255.255.0
!
interface GigabitEthernet0/2.99
encapsulation dot1Q 99
ip deal with 172.19.99.1 255.255.255.0
!
interface Vlan1
no ip deal with
shutdown
!
router ospf 1
router-id 3.3.3.3
log-adjacency-changes
community 10.0.0.16 0.0.0.3 space 0
community 10.0.0.20 0.0.0.3 space 0
community 10.0.0.24 0.0.0.3 space 0
community 10.0.0.28 0.0.0.3 space 0
community 10.0.0.12 0.0.0.3 space 0
community 172.19.10.0 0.0.0.255 space 0
community 172.20.10.0 0.0.0.255 space 0
community 172.19.20.0 0.0.0.255 space 0
community 172.20.20.0 0.0.0.255 space 0
community 172.19.30.0 0.0.0.255 space 0
community 172.20.30.0 0.0.0.255 space 0
community 172.19.80.0 0.0.0.255 space 0
community 172.20.80.0 0.0.0.255 space 0
community 172.19.99.0 0.0.0.255 space 0
community 172.20.99.0 0.0.0.255 space 0
default-information originate
!
ip classless
!
ip flow-export model 9
!
!
!
!
!
!
!
line con 0
!
line aux 0
!
line vty 0 4
login
!
!
!
finish

Configuration for MS3 is:
Constructing configuration…

Present configuration : 1876 bytes
!
model 16.3.2
no service timestamps log datetime msec
no service timestamps debug datetime msec
no service password-encryption
!
hostname MS3
!
!
!
!
!
!
!
no ip cef
no ipv6 cef
!
!
!
!
!
!
!
!
!
!
!
!
!
!
spanning-tree mode pvst
!
!
!
!
!
!
interface GigabitEthernet1/0/1
!
interface GigabitEthernet1/0/2
!
interface GigabitEthernet1/0/3
!
interface GigabitEthernet1/0/4
!
interface GigabitEthernet1/0/5
!
interface GigabitEthernet1/0/6
!
interface GigabitEthernet1/0/7
!
interface GigabitEthernet1/0/8
!
interface GigabitEthernet1/0/9
!
interface GigabitEthernet1/0/10
!
interface GigabitEthernet1/0/11
!
interface GigabitEthernet1/0/12
!
interface GigabitEthernet1/0/13
!
interface GigabitEthernet1/0/14
!
interface GigabitEthernet1/0/15
!
interface GigabitEthernet1/0/16
!
interface GigabitEthernet1/0/17
!
interface GigabitEthernet1/0/18
!
interface GigabitEthernet1/0/19
!
interface GigabitEthernet1/0/20
!
interface GigabitEthernet1/0/21
!
interface GigabitEthernet1/0/22
switchport entry vlan 99
switchport mode entry
!
interface GigabitEthernet1/0/23
description CONNECTION_TO_WLC
switchport entry vlan 99
switchport mode entry
switchport nonegotiate
!
interface GigabitEthernet1/0/24
description CONNECTION_TO_LAP
switchport entry vlan 99
switchport mode entry
switchport nonegotiate
!
interface GigabitEthernet1/1/1
!
interface GigabitEthernet1/1/2
description CONNECTION_TO_R13
switchport trunk native vlan 80
switchport trunk allowed vlan 10,20,30,80,99
switchport mode trunk
switchport nonegotiate
!
interface GigabitEthernet1/1/3
!
interface GigabitEthernet1/1/4
!
interface Vlan1
no ip deal with
shutdown
!
interface Vlan99
mac-address 0001.4234.4601
ip deal with 172.19.99.2 255.255.255.0
!
ip default-gateway 172.19.99.1
ip classless
!
ip flow-export model 9
!
!
!
!
!
!
!
line con 0
!
line aux 0
!
line vty 0 4
login
!
!
!
!
finish

interface WLAN 10

WLC status

Your information to Day 1 of the 2025 Robotics Summit & Expo

0


Your information to Day 1 of the 2025 Robotics Summit & ExpoThe Robotics Summit & Expo is lastly right here! The present will convey collectively over 5,000 builders targeted on constructing robots for aerospace and protection, healthcare, logistics, manufacturing, and different markets.

The present begins at 9:00 a.m. ET on the Boston Conference and Exhibition Heart in Room 258ABC with two back-to-back keynotes. The primary, “Redesigning Atlas: Boston Dynamics on the Way forward for Humanoids,” will probably be from Aaron Saunders, chief know-how officer of Boston Dynamics.

Throughout this presentation, Saunders will talk about the brand new, electrical Atlas humanoid and share insights from being on the forefront of humanoid growth for years. He’ll discover the challenges and alternatives of constructing humanoids for real-world purposes, providing a behind-the-scenes have a look at how Boston Dynamics continues to innovate and push the bounds of robotics.

At 10:00 a.m., James Kuffner, the CTO at Symbotic, will kick off the second keynote, “The Way forward for Clever Automated Logistics.” He’ll talk about his current transition to Symbotic, which is delivering superior AI-powered logistics robotic fleets to the worldwide provide chain.

Kuffner will even discuss how progress in machine studying, notion, and computing energy has enabled a brand new technology of robots that may function reliably in semi-structured environments like warehouses. Modern algorithms for multi-robot movement and job planning are creating thrilling alternatives for the way forward for clever automated logistics.

Additionally at 10:00 a.m., the Robotics Summit & Expo present flooring will open. It consists of the Engineering Theater, the stay podcast studio, the RBR50 showcase space, and even a possibility to play pickleball with Tennibot. Learn on to see what else the day has in retailer.

Day 1 breakout periods

Breakout periods will begin at 11:30 a.m. upstairs from the present flooring. As we speak’s summit breakout discuss schedule is:

  • Constructing a World Robotics Enterprise – Case Research on Promoting and Scaling Globally: This discuss will begin at 11:30 a.m. in Room 259AB. Attendees can study from Avihou Barkay, the president and chief working officer of Plus One Robotics; Chloe Chong, the regional director of Americas on the Singapore Financial Growth Board; Jasmine Lombardi, the chief buyer officer at Locus Robotics; and Tung Meng Fai, the manager director of the Singapore Nationwide Robotics Programme.
  • Case Research: How Automation Is Altering the Warehouse: Led by Kait Peterson, the vp of product advertising and marketing at Locus Robotics, this session will begin at 11:30 a.m. in Room 256.
  • Cross Curler Bearings: Technical Benefits in Pressure Wave Gear Functions: Jim Leonard, vp of gross sales at Harmonic Drive, will communicate at at 11:30 a.m. in Room 257A.
  • Navigating Constraints When Designing Movement Management for Medical Robotic Joints: Jordan Schaeffler, a strategic enterprise engineer at Novanta, will current at 11:30 a.m. in Room 260.
  • The Robotics Scale-Up: Commercialization Journey: This panel will begin at 11:30 a.m. in Room 257B. It would function insights from Jennifer Apicella, the manager director on the Pittsburgh Robotics Community; Larry Jasinski, the CEO of Lifeward (previously ReWalk Robotics); and Karl Sanchack, chief working officer of Carnegie Foundry.
  • 3PL in Robotics: The Good, the Dangerous, and the Ugly: This session will begin at 1:45 p.m. in Room 256. It would function third-party logistics insights from Steve Fischer, the vp of engineering at Cart.com; Jordan Frank, co-founder and govt vp at Zion Options Group; and Jim Shaw, the founder and president at Zion Options Group.
  • Advancing Distant Surgical procedure: Tackling Latency, Precision, and Safety Points: Darran Porras, the market growth supervisor at Healthcare RTI, and Tom Amlicke, the technical director of robotics at MedAcuity, will discover surgical robotics at 1:45 p.m. in Room 260.
  • Key ROS 2 Options to Be taught as ROS 1 Sunsets: Geoffrey Biggs, CTO of the Open Supply Robotics Basis, will kick off this session at 1:45 p.m. in Room 257B.
  • Nuts and Bolts of Robotic Navigation: This dialogue begins at 1:45 p.m. in Room 257A. It would function Sonali Deshpande, a employees robotics software program engineer at Relay Robotics;, Andrea Okerholm Huttlin, a senior employees software program engineer at Collaborative Robotics; William Sitch, the chief enterprise officer at Primary Avenue Autonomy; Garrett Place, enterprise growth supervisor of robotic notion applied sciences at ifm USA; and Mike Oitzman, senior editor at The Robotic Report.
  • Elevating Capital in Robotics: Scaling Your Imaginative and prescient on Your Phrases: Beginning at 1:45 p.m. in Room 259AB, this session will probably be led by Logan Fahey Franz, the CEO of Graze Robotics, and Jonathan Stidd, chief advertising and marketing officer at DealMaker.
  • Constructing Robots that Scale for Giant Firms: Kyle Betts, a senior technical product supervisor of manipulation robotics at Amazon Robotics, will communicate at 2:45 p.m. in Room 257B.
  • How Cell Manipulators are Redefining Logistics: Led by Jan Zizka, the co-founder and CEO of Brightpick, this session will kick off at 2:45 p.m. in Room 256.
  • Threat Is Totally different with AI: Methods for Resilient Robots: SK Gupta, the co-founder and chief scientist at GrayMatter Robotics, plans to research challenges and greatest practices at 2:45 p.m. in Room 259AB.
  • Surgical Robotic Haptics and Power Interplay: Robert Brooks, the founder and CEO at ForceN, will begin this summit session at 2:45 p.m. in Room 260.
  • Digital Twins for Humanoid Robotics: This panel will begin at 2:45 p.m. in Room 257A. Eugene Demaitre, editorial director of The Robotic Report, will reasonable a dialog with Stéphane Sireau, the vp of high-tech business at Dassault Systèmes, and Pras Velagapudi, CTO of Agility Robotics.
  • Advancing Robotic Studying with Power Sensing & Bodily Intelligence: At 4:15 p.m. in Room 259AB, Klajd Lika, the founder and CEO of Bota Programs, will study these applied sciences.
  • Methods to Get Your First Robotic into the Manufacturing unit: Jan Hennecke, low-cost automation product supervisor at igus, will share ideas at at 4:15 p.m. in Room 256.
  • MassRobotics Accelerator Showcase: Beginning at 4:15 p.m. in Room 260, attendees will hear from MassRobotics‘ newest Accelerator cohort, which features a numerous group of know-how startups from throughout the U.S.
  • Planetary Pivot – Scaling Cell Robotics with Trendy Actuator Ideas: Alessandro Forino, the top of robotic drive programs at maxon, will clarify current developments at 4:15 p.m. in Room 257A.
  • The State of Humanoids: This panel will begin at 4:15 p.m. in Room 257B. It would function Aaron Prather, the director of robotics and autonomous programs at ASTM Worldwide; Al Makke, the director of engineering at Schaeffler; Mike Oitzman, senior editor at The Robotic Report; and Pras Velagapudi, CTO of Agility Robotics.

What’s taking place within the Engineering Theater

Six periods will run within the Robotics Engineering Theater on the present flooring:

  • Making Autonomous Bipedals Steady and Protected: Tackling the Security and Actual-world Interfacing Challenges of Bodily AI: Nikolai Ensslen, the CEO of Synapticon, will current at 11:00 a.m.
  • A New World of Software program-Outlined Robotics, Alternatives and Dangers: Sreedhar Tumma, the worldwide senior product advertising and marketing supervisor at QNX, plans to discover rising subjects at 11:45 a.m.
  • Robotic Fingers — Modern Drive Programs for This Important Interface: Rolf Schmideder, the top of enterprise growth at FAULHABER Drive Programs, will begin this discuss at 1:15 p.m.
  • Shaken and Stirred: Understanding and Managing Vibration for Longer Robotic Life: This 2:00 p.m. panel will embrace Adam Bahret, the founding father of Apex Ridge Reliability Consulting; Thomas Dutremble, the CEO of Acorn Product Growth; and Dan McGinnis, the director of Unified.
  • Get a Grip: Enabling Robotic Dexterity With Tactile Sensors: This summit session will begin at 2:45 p.m. with Heba Khamis, the co-founder of Contactile.
  • Assembly Warehouse Calls for: Robotics, Movement Management, and Gearbox Methods for Smarter Automation: Craig Van den Avont, the president of GAM Enterprises, will talk about this subject at 3:30 p.m.

Community on the Robotics Summit

Along with the expo corridor, which will probably be open till 5:00 p.m., cubicles will hand out free drinks for a tailgate from 3:30 to 4:15 p.m. Come calm down and meet up with your mates within the business whereas additionally getting caught up with the most recent developments from our exhibitors.

After the present flooring closes, we’ll be holding the Robotics Combine & Mingle Reception in Room 258ABC from 5:00 to 7:00 p.m. This can be a ticketed occasion that’s free to add-on to your Full Convention cross.

The RBR50 Robotics Innovation Awards Reception & Gala will begin at 6:00 p.m. This can be a ticketed occasion, with very restricted seats. It will likely be held in Room 253BC.

Bear in mind to obtain the Robotics Summit App to plan your private schedule, community with fellow attendees, discover reveals, and extra.

Defending mutable state with Mutex in Swift – Donny Wals


When you begin utilizing Swift Concurrency, actors will primarily turn into your normal selection for safeguarding mutable state. Nevertheless, introducing actors additionally tends to introduce extra concurrency than you meant which may result in extra advanced code, and a a lot more durable time transitioning to Swift 6 in the long term.

While you work together with state that’s protected by an actor, you need to to take action asynchronously. The result’s that you just’re writing asynchronous code in locations the place you would possibly by no means have meant to introduce concurrency in any respect.

One method to resolve that’s to annotate your for instance view mannequin with the @MainActor annotation. This makes certain that every one your code runs on the principle actor, which implies that it is thread-safe by default, and it additionally makes certain that you could safely work together together with your mutable state.

That mentioned, this may not be what you are searching for. You would possibly wish to have code that does not run on the principle actor, that is not remoted by world actors or any actor in any respect, however you simply wish to have an old school thread-safe property.

Traditionally, there are a number of methods by which we are able to synchronize entry to properties. We used to make use of Dispatch Queues, for instance, when GCD was the usual for concurrency on Apple Platforms.

Just lately, the Swift crew added one thing known as a Mutex to Swift. With mutexes, we now have an alternative choice to actors for safeguarding our mutable state. I say different, but it surely’s probably not true. Actors have a really particular function in that they shield our mutable state for a concurrent surroundings the place we would like code to be asynchronous. Mutexes, then again, are actually helpful after we don’t desire our code to be asynchronous and when the operation we’re synchronizing is fast (like assigning to a property).

On this submit, we’ll discover how you can use Mutex, when it is helpful, and the way you select between a Mutex or an actor.

Mutex utilization defined

A Mutex is used to guard state from concurrent entry. In most apps, there will likely be a handful of objects that may be accessed concurrently. For instance, a token supplier, an picture cache, and different networking-adjacent objects are sometimes accessed concurrently.

On this submit, I’ll use a quite simple Counter object to verify we don’t get misplaced in advanced particulars and specifics that don’t influence or change how we use a Mutex.

While you increment or decrement a counter, that’s a fast operation. And in a codebase the place. the counter is accessible in a number of duties on the similar time, we would like these increment and decrement operations to be secure and free from information races.

Wrapping your counter in an actor is sensible from a idea viewpoint as a result of we would like the counter to be shielded from concurrent accesses. Nevertheless, after we do that, we make each interplay with our actor asynchronous.

To considerably stop this, we may constrain the counter to the principle actor, however that implies that we’re at all times going to must be on the principle actor to work together with our counter. We would not at all times be on the identical actor after we work together with our counter, so we might nonetheless must await interactions in these conditions, and that is not superb.

So as to create a synchronous API that can also be thread-safe, we may fall again to GCD and have a serial DispatchQueue.

Alternatively, we are able to use a Mutex.

A Mutex is used to wrap a bit of state and it ensures that there is unique entry to that state. A Mutex makes use of a lock underneath the hood and it comes with handy strategies to be sure that we purchase and launch our lock rapidly and accurately.

After we attempt to work together with the Mutex‘ state, we now have to attend for the lock to turn into out there. That is just like how an actor would work with the important thing distinction being that ready for a Mutex is a blocking operation (which is why we must always solely use it for fast and environment friendly operations).

This is what interacting with a Mutex appears to be like like:

class Counter {
    personal let mutex = Mutex(0)

    func increment() {
        mutex.withLock { rely in
            rely += 1
        }
    }

    func decrement() {
        mutex.withLock { rely in
            rely -= 1
        }
    }
}

Our increment and decrement capabilities each purchase the Mutex, and mutate the rely that’s handed to withLock.

Our Mutex is outlined by calling the Mutex initializer and passing it our preliminary state. On this case, we cross it 0 as a result of that’s the beginning worth for our counter.

On this instance, I’ve outlined two capabilities that safely mutate the Mutex‘ state. Now let’s see how we are able to get the Mutex‘ worth:

var rely: Int {
    return mutex.withLock { rely in
        return rely
    }
}

Discover that studying the Mutex worth can also be performed withLock. The important thing distinction with increment and decrement right here is that as an alternative of mutating rely, I simply return it.

It’s completely important that we hold our operations inside withLock quick. We don’t wish to maintain the lock for any longer than we completely must as a result of any threads which can be ready for our lock or blocked whereas we maintain the lock.

We are able to increase our instance somewhat bit by including a get and set to our rely. This can permit customers of our Counter to work together with rely prefer it’s a standard property whereas we nonetheless have data-race safety underneath the hood:

var rely: Int {
    get {
        return mutex.withLock { rely in
            return rely
        }
    }

    set {
        mutex.withLock { rely in
            rely = newValue
        }
    }
}

We are able to now use our Counter as follows:

let counter = Counter()

counter.rely = 10
print(counter.rely)

That’s fairly handy, proper?

Whereas we now have a kind that is freed from data-races, utilizing it in a context the place there are a number of isolation contexts is a little bit of a problem after we opt-in to Swift 6 since our Counter doesn’t conform to the Sendable protocol.

The great factor about Mutex and sendability is that mutexes are outlined as being Sendable in Swift itself. Because of this we are able to replace our Counter to be Sendable fairly simply, and without having to make use of @unchecked Sendable!

closing class Counter: Sendable {
    personal let mutex = Mutex(0)

    // ....
}

At this level, we now have a fairly good setup; our Counter is Sendable, it’s freed from data-races, and it has a completely synchronous API!

After we attempt to use our Counter to drive a SwiftUI view by making it @Observable, this get somewhat difficult:

struct ContentView: View {
    @State personal var counter = Counter()

    var physique: some View {
        VStack {
            Textual content("(counter.rely)")

            Button("Increment") {
                counter.increment()
            }

            Button("Decrement") {
                counter.decrement()
            }
        }
        .padding()
    }
}

@Observable
closing class Counter: Sendable {
    personal let mutex = Mutex(0)

    var rely: Int {
        get {
            return mutex.withLock { rely in
                return rely
            }
        }

        set {
            mutex.withLock { rely in
                rely = newValue
            }
        }
    }
}

The code above will compile however the view gained’t ever replace. That’s as a result of our computed property rely is predicated on state that’s not explicitly altering. The Mutex will change the worth it protects however that doesn’t change the Mutex itself.

In different phrases, we’re not mutating any information in a method that @Observable can “see”.

To make our computed property work @Observable, we have to manually inform Observable after we’re accessing or mutating (on this case, the rely keypath). This is what that appears like:

var rely: Int {
    get {
        self.entry(keyPath: .rely)
        return mutex.withLock { rely in
            return rely
        }
    }

    set {
        self.withMutation(keyPath: .rely) {
            mutex.withLock { rely in
                rely = newValue
            }
        }
    }
}

By calling the entry and withMutation strategies that the @Observable macro provides to our Counter, we are able to inform the framework after we’re accessing and mutating state. This can tie into our Observable’s common state monitoring and it’ll permit our views to replace after we change our rely property.

Mutex or actor? How you can determine?

Selecting between a mutex and an actor isn’t at all times trivial or apparent. Actors are actually good in concurrent environments when you have already got a complete bunch of asynchronous code. When you do not wish to introduce async code, or while you’re solely defending one or two properties, you are in all probability within the territory the place a mutex makes extra sense as a result of the mutex won’t power you to write down asynchronous code wherever.

I may fake that it is a trivial determination and you need to at all times use mutexes for easy operations like our counter and actors solely make sense while you wish to have a complete bunch of stuff working asynchronously, however the determination normally is not that simple.

When it comes to efficiency, actors and mutexes do not fluctuate that a lot, so there’s not an enormous apparent efficiency profit that ought to make you lean in a single path or the opposite.

In the long run, your selection ought to be based mostly round comfort, consistency, and intent. When you’re discovering your self having to introduce a ton of async code simply to make use of an actor, you are in all probability higher off utilizing a Mutex.

Actors ought to be thought of an asynchronous software that ought to solely be utilized in locations the place you’re deliberately introducing and utilizing concurrency. They’re additionally extremely helpful while you’re attempting to wrap longer-running operations in a method that makes them thread-safe. Actors don’t block execution which implies that you’re utterly fantastic with having “slower” code on an actor.

When unsure, I wish to strive each for a bit after which I stick to the choice that’s most handy to work with (and infrequently that’s the Mutex…).

In Abstract

On this submit, you have realized about mutexes and the way you need to use them to guard mutable state. I confirmed you ways they’re used, once they’re helpful, and the way a Mutex compares to an actor.

You additionally realized somewhat bit about how one can select between an actor or a property that is protected by a mutex.

Making a selection between an actor or a Mutex is, for my part, not at all times simple however experimenting with each and seeing which model of your code comes out simpler to work with is an effective begin while you’re attempting to determine between a Mutex and an actor.

Kieran Norton, Deloitte’s US Cyber AI & Automation chief – Interview Sequence

0


Kieran Norton a principal (accomplice) at Deloitte & Touche LLP, is the US Cyber AI & Automation Chief for Deloitte. With over 25 years of in depth expertise and a strong expertise background, Kieran excels in addressing rising dangers, offering shoppers with strategic and pragmatic insights into cybersecurity and expertise danger administration.

Inside Deloitte, Kieran leads the AI transformation efforts for the US Cyber observe. He oversees the design, improvement, and market deployment of AI and automation options, serving to shoppers improve their cyber capabilities and undertake AI/Gen AI applied sciences whereas successfully managing the related dangers.

Externally, Kieran helps shoppers in evolving their conventional safety methods to help digital transformation, modernize provide chains, speed up time to market, scale back prices, and obtain different essential enterprise targets.

With AI brokers turning into more and more autonomous, what new classes of cybersecurity threats are rising that companies could not but absolutely perceive?

The dangers related to utilizing new AI associated applied sciences to design, construct, deploy and handle brokers could also be understood—operationalized is a unique matter.

AI agent company and autonomy – the flexibility for brokers to understand, determine, act and function unbiased of people –can create challenges with sustaining visibility and management over relationships and interactions that fashions/brokers have with customers, knowledge and different brokers.  As brokers proceed to multiply throughout the enterprise, connecting a number of platforms and providers with growing autonomy and resolution rights, this can develop into more and more tougher. The threats related to poorly protected, extreme or shadow AI company/autonomy are quite a few. This could embrace knowledge leakage, agent manipulation (by way of immediate injection, and many others.) and agent-to-agent assault chains.  Not all of those threats are here-and-now, however enterprises ought to take into account how they are going to handle these threats as they undertake and mature AI pushed capabilities.

AI Id administration is one other danger that ought to be thoughtfully thought of.  Figuring out, establishing and managing the machine identities of AI brokers will develop into extra complicated as extra brokers are deployed and used throughout enterprises. The ephemeral nature of AI fashions / mannequin parts which are spun up and torn down repeatedly below various circumstances, will end in challenges in sustaining these mannequin IDs.  Mannequin identities are wanted to observe the exercise and conduct of brokers from each a safety and belief perspective. If not carried out and monitored correctly, detecting potential points (efficiency, safety, and many others.) might be very difficult.

How involved ought to we be about knowledge poisoning assaults in AI coaching pipelines, and what are one of the best prevention methods?

Information poisoning represents considered one of a number of methods to affect / manipulate AI fashions throughout the mannequin improvement lifecycle. Poisoning usually happens when a nasty actor injects dangerous knowledge into the coaching set. Nevertheless, it’s necessary to notice that past specific adversarial actors, knowledge poisoning can happen as a result of errors or systemic points in knowledge technology.  As organizations develop into extra knowledge hungry and search for useable knowledge in additional locations (e.g., outsourced handbook annotation, bought or generated artificial knowledge units, and many others.), the potential of unintentionally poisoning coaching knowledge grows, and will not all the time be simply recognized.

Focusing on coaching pipelines is a main assault vector utilized by adversaries for each refined and overt affect. Manipulation of AI fashions can result in outcomes that embrace false positives, false negatives, and different extra refined covert influences that may alter AI predictions.

Prevention methods vary from implementing options which are technical, procedural and architectural.  Procedural methods embrace knowledge validation / sanitization and belief assessments; technical methods embrace utilizing safety enhancements with AI strategies like federated studying; architectural methods embrace implementing zero-trust pipelines and implementing strong monitoring / alerting that may facilitate anomaly detection. These fashions are solely pretty much as good as their knowledge, even when a company is utilizing the most recent and best instruments, so knowledge poisoning can develop into an Achilles heel for the unprepared.

In what methods can malicious actors manipulate AI fashions post-deployment, and the way can enterprises detect tampering early?

Entry to AI fashions post-deployment is often achieved via accessing an Software Programming Interface (API), an software by way of an embedded system, and/or by way of a port-protocol to an edge machine. Early detection requires early work within the Software program Improvement Lifecycle (SDLC), understanding the related mannequin manipulation strategies in addition to prioritized menace vectors to plot strategies for detection and safety. Some mannequin manipulation entails API hijacking, manipulation of reminiscence areas (runtime), and gradual / gradual poisoning by way of mannequin drift. Given these strategies of manipulation, some early detection methods could embrace utilizing finish level telemetry / monitoring (by way of Endpoint Detection and Response and Prolonged Detection and Response), implementing safe inference pipelines (e.g., confidential computing and Zero Belief ideas), and enabling mannequin watermarking / mannequin signing.

Immediate injection is a household of mannequin assaults that happen post-deployment and can be utilized for numerous functions, together with extracting knowledge in unintended methods, revealing system prompts not meant for regular customers, and inducing mannequin responses which will forged a company in a damaging gentle. There are number of guardrail instruments out there to assist mitigate the chance of immediate injection, however as with the remainder of cyber, that is an arms race the place assault strategies and defensive counter measures are continuously being up to date.

How do conventional cybersecurity frameworks fall brief in addressing the distinctive dangers of AI methods?

We usually affiliate ‘cybersecurity framework’ with steering and requirements – e.g. NIST, ISO, MITRE, and many others. A number of the organizations behind these have printed up to date steering particular to defending AI methods which might be very useful.

AI doesn’t render these frameworks ineffective – you continue to want to handle all the standard domains of cybersecurity — what it’s possible you’ll want is to replace your processes and packages (e.g. your SDLC) to handle the nuances related to AI workloads.  Embedding and automating (the place attainable) controls to guard in opposition to the nuanced threats described above is probably the most environment friendly and efficient manner ahead.

At a tactical degree, it’s price mentioning that the total vary of attainable inputs and outputs is usually vastly bigger than non-AI functions, which creates an issue of scale for conventional penetration testing and rules-based detections, therefore the concentrate on automation.

What key components ought to be included in a cybersecurity technique particularly designed for organizations deploying generative AI or massive language fashions?

When creating a cybersecurity technique for deploying GenAI or massive language fashions (LLMs), there is no such thing as a one-size-fits-all strategy. A lot is dependent upon the group’s general enterprise targets, IT technique, business focus, regulatory footprint, danger tolerance, and many others. in addition to the particular AI use instances into consideration.   An inner use solely chatbot carries a really totally different danger profile than an agent that might influence well being outcomes for sufferers for instance.

That mentioned, there are fundamentals that each group ought to deal with:

  • Conduct a readiness evaluation—this establishes a baseline of present capabilities in addition to identifies potential gaps contemplating prioritized AI use instances. Organizations ought to establish the place there are present controls that may be prolonged to handle the nuanced dangers related to GenAI and the necessity to implement new applied sciences or improve present processes.
  • Set up an AI governance course of—this can be internet new inside a company or a modification to present danger administration packages. This could embrace defining enterprise-wide AI enablement features and pulling in stakeholders from throughout the enterprise, IT, product, danger, cybersecurity, and many others. as a part of the governance construction. Moreover, defining/updating related insurance policies (acceptable use insurance policies, cloud safety insurance policies, third-party expertise danger administration, and many others.) in addition to establishing L&D necessities to help AI literacy and AI safety/security all through the group ought to be included.
  • Set up a trusted AI structure—with the stand-up of AI / GenAI platforms and experimentation sandboxes, present expertise in addition to new options (e.g. AI firewalls/runtime safety, guardrails, mannequin lifecycle administration, enhanced IAM capabilities, and many others.) will have to be built-in into improvement and deployment environments in a repeatable, scalable style.
  • Improve the SDLC—organizations ought to construct tight integrations between AI builders and the chance administration groups working to guard, safe and construct belief into AI options. This contains establishing a uniform/commonplace set of safe software program improvement practices and management necessities, in partnership with the broader AI improvement and adoption groups.

Are you able to clarify the idea of an “AI firewall” in easy phrases? How does it differ from conventional community firewalls?

An AI firewall is a safety layer designed to observe and management the inputs and outputs of AI methods—particularly massive language fashions—to stop misuse, defend delicate knowledge, and guarantee accountable AI conduct. In contrast to conventional firewalls that defend networks by filtering visitors based mostly on IP addresses, ports, and identified threats, AI firewalls concentrate on understanding and managing pure language interactions. They block issues like poisonous content material, knowledge leakage, immediate injection, and unethical use of AI by making use of insurance policies, context-aware filters, and model-specific guardrails. In essence, whereas a standard firewall protects your community, an AI firewall protects your AI fashions and their outputs.

Are there any present business requirements or rising protocols that govern using AI-specific firewalls or guardrails?
Mannequin communication protocol (MCP) shouldn’t be a common commonplace however is gaining traction throughout the business to assist deal with the rising configuration burden on enterprises which have a have to handle AI-GenAI resolution variety. MCP governs how AI fashions alternate data (together with studying) inclusive of integrity and verification. We are able to consider MCP because the transmission management protocol (TCP)/web protocol (IP) stack for AI fashions which is especially helpful in each centralized, federated, or distributed use instances. MCP is presently a conceptual framework that’s realized via numerous instruments, analysis, and tasks.

The area is transferring rapidly and we will count on it would shift fairly a bit over the subsequent few years.

How is AI reworking the sector of menace detection and response right now in comparison with simply 5 years in the past?

We’ve got seen the business safety operations heart (SOC) platforms modernizing to totally different levels, utilizing large high-quality knowledge units together with superior AI/ML fashions to enhance detection and classification of threats. Moreover, they’re leveraging automation, workflow and auto-remediation capabilities to cut back the time from detection to mitigation.  Lastly, some have launched copilot capabilities to additional help triage and response.

Moreover, brokers are being developed to satisfy choose roles throughout the SOC.  As a sensible instance, we’ve got constructed a ‘Digital Analyst’ agent for deployment in our personal managed providers providing.   The agent serves as a degree one analyst, triaging inbound alerts, including context from menace intel and different sources, and recommending response steps (based mostly on in depth case historical past) for our human analysts who then assessment, modify if wanted and take motion.

How do you see the connection between AI and cybersecurity evolving over the subsequent 3–5 years—will AI be extra of a danger or an answer?
As AI evolves over the subsequent 3-5 years, it might probably assist cybersecurity however on the similar time, it might probably additionally introduce dangers. AI will develop the assault floor and create new challenges from a defensive perspective.  Moreover, adversarial AI goes to extend the viability, velocity and scale of assaults which is able to create additional challenges. On the flip aspect, leveraging AI within the enterprise of cybersecurity presents vital alternatives to enhance effectiveness, effectivity, agility and velocity of cyber operations throughout most domains—finally making a ‘battle hearth with hearth’ situation.

Thanks for the good interview, readers might also want to go to Deloitte.

ios – Crash when importing or deleting photographs with AWSS3Manager in Swift 6 – attainable completion block problem?


I am working with AWS S3 in an iOS app utilizing Swift 6. I’ve a singleton class AWSS3Manager that handles importing and deleting photographs, movies, and different recordsdata. Nonetheless, after migrating to Swift 6, I am experiencing random crashes when importing or deleting a number of photographs. The difficulty appears to be associated to completion blocks being referred to as inappropriately or a number of occasions, particularly throughout picture add or when iterating by means of uploadImages.

@MainActor
class AWSS3Manager{

    static let shared = AWSS3Manager() // 4
    non-public init () {
        initializeS3()
    }
    let bucketName = "Bucket_Name" //5

    func initializeS3() {
        if S3Key == "" || S3SecretKeyName == "" {
//            if let topVC = UIApplication.topViewController() {
//                topVC.showError("One thing went unsuitable!")
//            }
            debugPrint("AWS initialisation Error")
            return
        }
        let credentials = AWSStaticCredentialsProvider(accessKey: S3Key, secretKey: S3SecretKeyName)
        let configuration = AWSServiceConfiguration(area: AWSRegionType.USEast1, credentialsProvider: credentials)

        AWSServiceManager.default().defaultServiceConfiguration = configuration
    }

    func uploadImages(photographs: [UIImage], paths: [String], completion: @escaping(_ response: Any?, _ error: Error?) -> Void){

        if photographs.rely == 0 || InternetConnectionManager.isConnectedToNetwork() == false {
            completion(nil, nil)
        }
        if AWSServiceManager.default().defaultServiceConfiguration == nil {
            initializeS3()
            let error = NSError(area: "AWS", code: 1001, userInfo: [NSLocalizedDescriptionKey: "AWS is not initialized."])
            completion(nil, error)
            return
        }
        var counter: Int = 0
        photographs.enumerated().forEach { i,picture in
            let imageName: String = String(paths[i].cut up(separator: "/").final ?? "(UUID().uuidString).jpeg")
            if let imageData = picture.jpegData(compressionQuality: 0.3),
               let localUrl = attempt? saveDataToTempFolder(information: imageData, fileName: imageName){
                self.uploadfile(fileUrl: localUrl, fileName: paths[i], contenType: "picture", progress: nil) { response, error in
                    counter += 1
                    if counter == paths.rely {
                        completion(nil, error)
                    }
                }
            }else{
                counter += 1
                if counter == paths.rely {
                    completion(nil, nil)
                }
            }
        }
    }

    func deleteImage(path: String){
        if AWSServiceManager.default().defaultServiceConfiguration == nil {
            initializeS3()
            if let topVC = UIApplication.topViewController() {
                topVC.showError("One thing went unsuitable!")
            }
            return
        }
        let s3 = AWSS3.default()
        guard let deleteObjectRequest = AWSS3DeleteObjectRequest() else {
            return
        }
        deleteObjectRequest.bucket = S3BucketName
        deleteObjectRequest.key = path
        s3.deleteObject(deleteObjectRequest).continueWith { (process:AWSTask) -> AnyObject? in
            if let error = process.error {
                debugPrint("Error occurred: (error)")
                return nil
            }
            debugPrint("Deleted efficiently.")
            return nil
        }
    }

    func deleteAllImagesForUser(userID: String) {
        if AWSServiceManager.default().defaultServiceConfiguration == nil {
            initializeS3()
            if let topVC = UIApplication.topViewController() {
                topVC.showError("One thing went unsuitable!")
            }
            return
        }
        let s3 = AWSS3.default()
        let folderPath = "Receipts/(userID)/"

        let listObjectsRequest = AWSS3ListObjectsRequest()
        listObjectsRequest?.bucket = S3BucketName
        listObjectsRequest?.prefix = folderPath

        s3.listObjects(listObjectsRequest!).continueWith { (process) -> AnyObject? in
            if let error = process.error {
                debugPrint("Error occurred whereas itemizing objects: (error)")
                return nil
            }

            if let listObjectsOutput = process.outcome, let contents = listObjectsOutput.contents {
                for object in contents {
                    let deleteObjectRequest = AWSS3DeleteObjectRequest()
                    deleteObjectRequest?.bucket = S3BucketName
                    deleteObjectRequest?.key = object.key

                    s3.deleteObject(deleteObjectRequest!).continueWith { (deleteTask) -> AnyObject? in
                        if let error = deleteTask.error {
                            debugPrint("Error occurred whereas deleting object (object.key ?? ""): (error)")
                        } else {
                            debugPrint("Deleted (object.key ?? "") efficiently.")
                        }
                        return nil
                    }
                }
            } else {
                debugPrint("No objects present in folder (folderPath)")
            }
            return nil
        }
    }

    // Add video from native path url
    func uploadVideo(videoUrl: URL, progress: progressBlock?, completion: completionBlock?) {
        let fileName = self.getUniqueFileName(fileUrl: videoUrl)
        self.uploadfile(fileUrl: videoUrl, fileName: fileName, contenType: "video", progress: progress, completion: completion)
    }

    // Add auido from native path url
    func uploadAudio(audioUrl: URL, progress: progressBlock?, completion: completionBlock?) {
        let fileName = self.getUniqueFileName(fileUrl: audioUrl)
        self.uploadfile(fileUrl: audioUrl, fileName: fileName, contenType: "audio", progress: progress, completion: completion)
    }

    // Add recordsdata like Textual content, Zip, and so on from native path url
    func uploadOtherFile(fileUrl: URL, conentType: String, progress: progressBlock?, completion: completionBlock?) {
        let fileName = self.getUniqueFileName(fileUrl: fileUrl)
        self.uploadfile(fileUrl: fileUrl, fileName: fileName, contenType: conentType, progress: progress, completion: completion)
    }

    // Get distinctive file identify
    func getUniqueFileName(fileUrl: URL) -> String {
        let strExt: String = "." + (URL(fileURLWithPath: fileUrl.absoluteString).pathExtension)
        return (ProcessInfo.processInfo.globallyUniqueString + (strExt))
    }

    //MARK:- AWS file add
    // fileUrl :  file native path url
    // fileName : identify of file, like "myimage.jpeg" "video.mov"
    // contenType: file MIME sort
    // progress: file add progress, worth from 0 to 1, 1 for 100% full
    // completion: completion block when uplaoding is end, you'll get S3 url of add file right here
    non-public func uploadfile(fileUrl: URL, fileName: String, contenType: String, progress: progressBlock?, completion: completionBlock?) {
        if AWSServiceManager.default().defaultServiceConfiguration == nil {
            initializeS3()
            if let topVC = UIApplication.topViewController() {
                topVC.showError("One thing went unsuitable!")
            }
            let error = NSError(area: "AWS", code: 1001, userInfo: [NSLocalizedDescriptionKey: "AWS is not initialized."])
            completion?(nil, error)
            return
        }
        // Add progress block
        let expression = AWSS3TransferUtilityUploadExpression()
        expression.progressBlock = {(process, awsProgress) in
            guard let uploadProgress = progress else { return }
            DispatchQueue.major.async {
                uploadProgress(awsProgress.fractionCompleted)
            }
        }
        // Completion block
        var completionHandler: AWSS3TransferUtilityUploadCompletionHandlerBlock?
        completionHandler = { (process, error) -> Void in
            DispatchQueue.major.async(execute: {
                if error == nil {
                    let url = AWSS3.default().configuration.endpoint.url
                    let publicURL = url?.appendingPathComponent(self.bucketName).appendingPathComponent(fileName)
                    let presignedURL = self.getPreSignedURL(S3DownloadKeyName: fileName)
                    if let completionBlock = completion {
                        completionBlock(fileName, nil)
                    }
                } else {
                    if let completionBlock = completion {
                        completionBlock(nil, error)
                    }
                }
            })
        }
        // Begin importing utilizing AWSS3TransferUtility
        let awsTransferUtility = AWSS3TransferUtility.default()
        awsTransferUtility.uploadFile(fileUrl, bucket: bucketName, key: fileName, contentType: contenType, expression: expression, completionHandler: completionHandler).continueWith { (process) -> Any? in
            if let error = process.error {
                debugPrint("error is: (error.localizedDescription)")
            }
            if let _ = process.outcome {
                // your uploadTask
            }
            return nil
        }
    }
}